APP下载

基于LabVIEW的自动灌溉控制系统的上位机监测子系统设计

2018-10-22韩新风

长春师范大学学报 2018年10期
关键词:PC机数组土壤湿度

韩新风

(安徽科技学院电气与电子工程学院,安徽凤阳 233100)

LabVIEW是美国NI公司推出的虚拟仪器开发平台[1-2],采用图形化的编程语言——G语言,产生的程序是框图的形式,易学易用。与传统的编程语言相比,G语言能够节省程序的开发时间,具有高运行速度和极高的效率。可以使开发者不必去记忆令人眼花缭乱的文本程序代码,而能够集中精力去解决具体的应用问题。

笔者设计了一个基于ZigBee无线网络的自动灌溉控制系统,采用ZigBee CC2530单片机完成自动灌溉控制系统的土壤湿度信息的采集和灌溉水泵的控制,相关信息通过协调器经串口发送至上位PC机,系统结构图如图1所示。以虚拟仪器LabVIEW为开发平台[3-4](2012版),完成上位PC机的程序设计,主要功能是完成PC机实时读取协调器采集的土壤湿度信息和水泵状态,并实时显示出相关数值和状态。

图1 基于ZigBee无线网络的自动灌溉控制系统结构图

由于PC机系统采用串口与下位机(即自动灌溉系统的协调器)发送命令或接收数据,因此要完成该程序还需要安装NI MAX来管理PC机串口硬件设备。

基于LabVIEW的程序设计可分为两部分,第一部分为程序框图设计,第二部分是前面板设计[4]。在进行框图设计之前先进行系统流程图设计,确定系统的总体设计方案与流程,以指导程序框图的设计。

图2 程序设计流程图

1 系统设计流程

系统的流程如图2所示。系统开始运行,首先对串口进行初始化,然后通过串口发送命令——要求协调器上传1号终端节点的测量数据,延时500 ms后(由于串口数据传输速率低,故需要延时)读取串口数据(此时串口的数据为1号终端节点的数据,如果未经过延时直接读取串口,则有可能读取的将是串口缓冲器中原有的数据),将数据在前面板上显示出来(为保证能够准确无误的显示数据,在显示前要先进行判断,如果数据正确则显示,不正确则丢弃,等待下一次的“读取——判断——显示”);然后,写串口命令读取2号终端节点的数据,延时,读串口。以此类推,读取所有终端节点的数据。然后进行下一次循环,读取并实时显示各端点数据。

2 程序前面板设计

该系统的数据来源自对PC机串口数据的读取,因此在前面板设计中要添加1个串口资源检测控件(查找控件的路径为:控件/新式/VISA资源名称),程序运行时,单击箭头,即可选取串口号。为了执行关闭程序命令,需要添加1个停止按钮控件(查找控件的路径为:控件/新式/布尔/停止按钮),改名为STOP。

测控系统中有4个终端节点,故采用4个“波形图表”控件[5](查找控件的路径:控件/新式/图形/波形图表),用图表形式直观显示土壤湿度值随着时间的变化;采用4个“仪器显示”控件(查找控件的路径:控件/新式/仪表),用指针仪表形式直观显示当前的土壤湿度测量值;4个“数值显示”控件(查找控件的路径:控件/新式/数值显示控件),用数值形式显示当前土壤湿度测量值;4个“布尔显示”控件(查找控件的路径:控件/新式/布尔/圆形指示灯)显示对应测量端点的水泵开关状态。

2.1 LabVIEW中串口的初始化

LabVIEW中串口的初始化如图3所示。采用VISA串口通信函数中的配置函数,配置函数的查找路径:函数/编程/仪器I/O /串口/VISA配置串口,函数名称为:VISA Configure Serial Port。该函数需要设置的参数为:波特率、数据位、停止位。其中,波特率设置为9600(与下位机约定好的),数据位为8位,停止位设为“10”表示停止位为1位。

图3 串口配置图

程序框图又称为后面板,实际上就是编写框图形式的源程序[6]。

2.2 添加循环结构(函数/编程/结构/while循环)

由于系统需要实时的显示测控系统的测量结果,因此采用循环结构。即启动程序后,会一直循环运行下去。

2.3 添加层叠式顺序结构(函数/编程/结构/层叠式顺序结构)(记为第1个层叠式结构)

在循环结构中添加层叠式顺序结构,将其设置为2帧(序号0~1)(图4),其中第0帧用于延时500 ms,如图4(a)所示(图左侧部分为串口配置,详见图3);第1帧的主要作用是用于发送读取命令,读取串口数据并显示。

图4 层叠式顺序结构的第0帧

2.4 添加层叠式顺序结构(记为第2个层叠式结构)

为了完成第1帧“用于发送读取命令,读取串口数据并显示”的目的,故在该帧中再次添加层叠式顺序结构(记为第2个层叠式结构),将其设置为12帧。其中该层叠式顺序结构的第0帧用于发送“读取1号端点的指令”,如图4(b)所示(图左侧部分为串口配置,详见图3);第1帧用于延时500 ms(由于串口数据传输速率低,如果不设置延时,将会出现读取数据错误)。第2个层叠式结构的第1帧同图4(a),不再赘述。第2帧用于读取串口的数据(即读取1号端点的数据)并显示,如图5所示。后面的3至11帧完成对2、3、4号端点进行发送读取命令,延时,读取数据。设计方法与0~2帧相同,不再赘述。

图5 第2个层叠式结构的第2帧-条件结构的第1帧

2.5 层叠式结构的第0帧用于发送“读取端点的指令”程序设计

根据与下位机的通信协议要求,“读取1号端点的指令”格式:3A 00 02 14 01 23,其中第5个字节的“01”为端点号,如果其替换为“02”,得到指令:3A 00 02 14 02 23,即为“读取2号端点的指令”。因此在程序设计时采用了LabVIEW中“数组插入”(函数/编程/数组/数组插入)的方式,在数组“3A 00 02 14 23”中的第4个位置插入端点号“01”,得到“3A 00 02 14 01 23”。将该数组通过VISA写入函数将以上指令写入串口,如图4(b)所示。采用相同方法,可以获得读取2号端点指令或读取其他端点的指令。

2.6 层叠式结构的第2帧接收串口的数据并显示的程序设计

接收串口的数据并显示的程序设计如图5所示。下位机上传来的数据,共4个字节,分别为:端点号,土壤湿度测量值,水泵开关状态,当前湿度阈值。通过labVIEW软件的“VISA读取”函数,从串口读取字符串,经过“字符串至字节数组转换”函数,将串口读来的数据变换为数组。将该数组进行解析:其中数组的第0个元素为端点号,第1个元素为土壤湿度测量值,第2个元素为水泵的开关状态,第3个元素为预设的阈值。因此,通过LabVIEW中“索引数组”(函数/编程/数组/索引数组)的方法,从数组中分别获得4个元素的数值,并与对应的显示器件相连接。

为了保证读取到的数据与实际需要显示的数据一致(对比前后端点号,一致即可),利用LabVIEW的条件结构,以端点号作为判断条件,例如,要显示1号端点的数据,利用数组的第0个元素(即端点号)作为判断条件,若第0个元素为1,则满足条件,将数组的第1个元素(即1号端点的土壤湿度测量值)显示,如图5所示;若不满足条件(即第0个元素不为1,也就是数据并非来自1号端点),则丢弃数据,不显示,具体设计图与图5的区别在于条件结构框中为空白(默认0,不执行任何操作),然后等待下一次循环中“读取—判断—显示”。

需要说明的是,以上讨论的数组第2个元素为水泵的开关状态,但是该值为十六进制数,与该值连接的显示控件却是布尔型的,因此在连接至水泵开关状态显示控件之前,需要将该数据经“数值至布尔数组转换”并取出第0个元素,即为水泵的状态。

3 系统测量结果

在实验前,查找到串口端点号为COM17(也可能为其他),然后在图6右下角“VISA资源名称”的下拉列表中选择COM17,然后启动程序运行。实验测量结果如图6所示。本系统有4个测量节点,在实际应用中,可以根据实际情况增加测量节点数量。经过实时测量对比发现,自动灌溉控制系统的相关数据都可以完整地通过上位机的程序界面显示出来。

图6 实验测量结果

4 结语

自动灌溉控制系统主要由下位机测量子系统和上位机监测显示子系统两部分组成,二者通过PC机的串口进行通讯。上位机监测显示子系统的实现方法有多种,笔者选用了基于虚拟仪器技术的开发软件——LabVIEW,设计上位机监测显示子系统。由于LabVIEW软件采用图形化的编程语言,使得设计过程简单高效、操作方便,有效节省了开发的时间。该系统将来自PC机串口的数据进行采集,并通过图表等多种形式直观形象地显示出来。实验结果表明,系统的设计方案切实可行,能够方便有效地对自动灌溉控制系统进行实时监测。

猜你喜欢

PC机数组土壤湿度
JAVA稀疏矩阵算法
土壤湿度传感器在园林绿化灌溉上的应用初探
JAVA玩转数学之二维数组排序
基于51单片机控制花盆土壤湿度
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
Excel数组公式在林业多条件求和中的应用
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
四川盆地土壤湿度时空分布及影响因子分析
中国不同气候区土壤湿度特征及其气候响应