LabVIEW是基于图形化的程序设计语言,程序的核心代码是类似于流程图的方框图和线条的连接。属于
数据流编程,交互性不好。每个方框图代表一个功能模块即子VI,程序执行过程是条件满足方式,当一个功能模块的所有输入都齐备后,此功能模块产生输出,传送给下一个模块。
3.1 串行通讯程序设计
首先是对串口的初始化设置:波特率为默认值9600,8位数据位,1位停止位,无校验位,串口号为3。当系统开启时,通过VISA Write.vi向单片机发送“发送请求命令”由于LabVIEW的串行通信子VI只允许对字符串的读写,因此在数据处理时,必须进行字符串与数字之间的正确转换,在这里通过调用1个“组串”子VI实现此转换。在收到上位机的发送请求命令后,单片机则进入中断发送所采集的数据,上位机通过VISA Read.vi节点读取单片机送来的数据,并且判断是否收到4位来控制Case结构中的是执行False还是执行True,这里使用Case结构是为了避免单片机的丢位现象发生。如果有丢位现象发生,则执行True读取前面所读到的数据。如果没有丢位现象发生,则执行False读取数据。由于采用12位的SARADC将标准的模拟信号(电流,电压)转换为数字信号,因此需要用2个字节来表示1个数据。这里采用1个子vi来进行转换。读完1个数据,用实时趋势图控件Wave—form Chart显示完后执行下一个循环。图3给出了上位机对单片机进行读、写操作的框图程序。

3.2 前面板设计
LabVIEW中的前面板就是图形化用户界面,用于设置输入数值和观察输出量。在这个采集系统中由于任务繁多,不能采用1个用户界面来实现时,可将1个完整的测试系统按完成的具体任务不同分成几个功能模块,每个功能模块分别设计成为不同的子VI,并且每个子VI都有自己的用户界面。将这些个子VI放入一个事件结构中,用不同的按钮来调用不同的子VI实现不同的功能。本系统在前面板中不但设置波特率、串口号为控件,用实时趋势图控件Waveform Chart显示下位机实时采集到的数据。同时对采出数据进行处理后得到生物发酵过程优化所必需的CET,OUT,RQ曲线并将其实时显示出来。而且还放置了许多功能按钮来实现不同的功能。如图4所示,给出本系统的前面板设计。

4 结 语
这个设计已经通过实验验证,最后达到了预期的目的,能对发酵的整个过程进行在线检测和分析,为以后实施发酵过程的在线最优控制提供了先决条件。具有很强的工程实用性,可广泛应用于测试控制领域。