基于LABVIEW的无线数据采集系统上位机
2018-08-10林奕林蔡文祥
林奕林,蔡文祥
(南京理工大学机械工程学院,江苏南京210094)
LABVIEW是美国国家仪器(NI)公司开发的一款图形化编程语言(G语言),该语言采样数据流和可视化编程方式编程,同时封装了基础功能[1-5]。LABVIEW把编程人员从繁重的代码编辑中解放出来,专注于编程方法和编程结构的设计。利用LABVIEW DAQmax测试人员不需要太多的学习,很快便能写出一个简易的采集软件用于简易测试。通过深入学习和理解LABVIEW编程思维,工程测试人员便能编辑出适用于工程测试的性能良好的采集软件[6-9]。
近些年,国内外有很多文献研究,都使用LABVIEW用于各种测试、控制和嵌入式等领域[10-13]。
1 总体框架设计
无线数据采集系统上位机设计框架如图1所示。
“生产者消-费者循环”是LABVIEW中的一种高效的编程模式,在While循环中加入事件结构,用于接收和发送用户事件,组成生产者循环;在While循环中加入条件结构,用于处理用户命令,组成消费者循环。生产者和消费者之间,使用队列传输数据。上位机设计框架使用自定义数据类型作为队列的传输数据类型,该自定义类型使用簇,包装枚举命令、枚举的控制模块和变体数据。使用自定义类型,可以大大减少后期修改程序的困难,只需对自定义类型做出修改,而不必对所有使用到该自定义的地方都做出修改。枚举的命令,能够使得消费者循环的条件选择结构的分支具有固定的数量,使不确定错误发生的几率大大减少。枚举的控制模块,能够使得程序能控制多个下位机模块的同时,大大简化分支。
该上位机设计模式,不仅在经典的“生产者-消费者”循环上,使用自定义类型作为数据传输类型。还添加了用户事件,当用户通过弹出框选择退出程序的时候,消费者循环里便会将“用户退出”送人队列,使消费者循环进入“用户退出”分支。“用户退出”分支产生用户事件并退出消费者循环,用户事件会触发事件结构,退出生产者循环。用户事件的加入,使得该上位机的“生产者-消费者“循环的退出更加稳定。该模式的用户事件,使用了枚举变量,作为生产者循环的数据类型,同时也是生产者循环的一个移位寄存器数据类型。移位寄存器能够保存上一次或者几次循环的数据,使用它能够确定采集系统处于何种工作状态,并能根据工作状态,选择性的过滤一些无法在忙碌时候处理的事件,这使得该结构更加的完善和合理。
图1 上位机设计框架
2 通讯命令格式
无线数据采集系统,具有上位机和多个下位机,其通讯使用TTL-32-1W串口无线通信单元组建通讯网络,上位机使用LABVIEW仪器IO中的串口模块编写接收和处理下位机信号的模块[14-16]。下位机传来的是一连串的字符,上位机想要从字符中解析出有意义的信息,这就需要两者都要按照一定的标准去发送和解析数据。具体通讯格式如下所示:
1)无线通讯测试
格式:指令代码(0000)+测试用数据(500 Byte)+截止符( )
回复:指令代码(0000)+接收到的数据(500Byte)+截止符( )
2)模块在线查询
格式:指令代码(0001)+截止符( )
回复:指令代码(0001)+模块号(XX)+截止符( )
3)无线模块开关
格式:指令代码(0010)+指令(00关/01开)+截止符( )
回复:指令代码(0010)+指令(00/01)+截止符( )
4)新建文件
格式:指令代码(0011)+指令(新建文件编号:XX)+截止符( )
回复:指令代码(0011)+指令(新建文件编号:XX)+截止符( )
5)删除文件
格式:指令代码(0100)+指令(删除文件编号:XX)+截止符( )
回复:指令代码(0100)+指令(删除文件编号:XX)+截止符( )
6)参数设置
格式:指令代码(0101)+指令(采样频率(5Byte)+采样点数(6Byte)+通道选择(8Byte)+触发方式(1Byte))+截止符( )
7)模块自检
格式:指令代码(0110)+指令(0000)+截止符( )
8)软件开始
格式:指令代码(1000)+指令(0000)+截止符( )
9)无线模块参数设置
格式:指令代码(1001)+指令(6Byte指令)+截止符( )
10)无线数据读取
格式:指令代码(1010)+指令(通道号)+截止符( )
11)模块重启
格式:指令代码(1011)+指令(0000)+截止符( )
3 无线数据采集系统上位机设计
3.1 界面设计
具体无线数据采集系统的需求可以控制8个无线数据采集模块,每个无线数据采集模块具有8个采样通道。每个模块需要单独控制新建文件、删除文件、数据传输、通讯检测、低功耗待机和模块重启等功能;还需要单独的采集设置、零点设置和电量检测及显示等功能;对于模块的通用设置在界面的右侧,模块指示灯可以指示模块使用与否状态,通讯指示灯用于指示上位机和模块之间的通讯状态。具体上位机界面如图2所示。
图2 上位机界面
3.2 多通道事件的精简
对于本文所研究的是8模块8通道的数据采集模块,若是每一个模块、每一个事件都要对应一个事件结构分支和一个命令处理分支,那么所需要的事件结构和命令处理分支太多、程序也太过于臃肿。因此将采集设置打包成簇,只响应簇的值变化事件,并通过比较簇原值和新值的变化,确定簇中何值变化,并做出相应控制,如果是“参数设置”按钮按下事件,便会将参数设置(包括模块选择)命令发到消费者循环。而消费者循环中也只需一个条件结构分支便可以分别处理各模块中的相同操作。
3.3 上位机流程图及编写
具体的上位机,按图4所示的流程图编写,由于已经具有了总体框架,只需对流程图中的流程,分别编写“生产者”循环的事件结构命令和“消费者”循环中的条件分支处理 命令,并注意按照上一节中的方式简化,便可以高效的编写完成无线数据采集系统的上位机。
下位机传输过来的数据是一连串的具有固定格式数据,上位机将按照约定好的数据格式,解析并转换成TDMS格式的波形数据,自动保存。在程序运行完成之后,使用LABVIEW中的文件I/O中的XML模块,将采集参数设置和模块选择等参数使用xml格式保存,在下一次开机时候,使用该数据初始化上位机程序。
图3 消费者循环中命令处理分支的简化
图4 上位机流程图
4 实验验证
上位机和下位机在独立编写完成之后,对其进行实地通讯调试。实验表明上位机能够和下位机能够稳定通讯、上位机能够稳定工作,上位机能够稳定快速控制下位机无线采集模块,上位机能稳定的读取、存储下位机传回的实验采集数据。如图5所示,是无线数据采集系统以5 kHZ采样频率,采集并获得的实验曲线。实验表明,上位机和下位机能稳定通讯,并能正确接收及解析数据。
图5 落锤试验曲线
5 结束语
本文介绍了一种无线一种基于LABVIEW的上位机高效开发方案。并实际应用于一种多模块多通道的无线数据采集系统的上位机的编写中。基于无线数据采集系统,定义了一种固定的通讯格式,使得上位机和下位机的编写能够分别独立的进行,且能够在上位机和下位机完成编写后,快速调试和整合,大大减少了系统开发时间。在上位机的编写过程中,使用簇打包,简化了“生产者循环”事件分支和“消费者循环”条件结构选择分支,大大减少了上位机编写时间。通过试验验证总体框架,在无线数据采集系统开发过程中达到了预期要求,具有较好运用价值。