基于LabVIEW开发环境下的农田智能精准灌溉系统设计
2017-03-21王福平焦方桐赵正军北方民族大学电气信息工程学院银川7500北方民族大学创新创业学院银川7500
潘 杰,王福平,焦方桐,赵正军(.北方民族大学电气信息工程学院,银川 7500;.北方民族大学创新创业学院,银川 7500)
我国的淡水资源丰富,但人均水资源占有量约2 300 m3,只占世界人均水平1/4,是全球人均淡水资源最为缺乏的国家之一[1]。其中农业用水占总供水的70%左右,而且农业灌溉用水的利用率非常低。在水资源紧缺的条件下,要实现灌溉农业的可持续发展,就需要农业灌溉更加精确智能,按照农作物需水要求准确及时地预报,并实现水量的自动控制,精确施予。设计中采用LabVIEW图形化编程语言,具有编程简单方便,界面形象直观,缩短开发周期,并可根据用户的需要对系统做出快速更改等[2],缺点是NI公司的数据采集卡比较贵,对于中小企业来说是一笔不小的开销。所以本设计提出STC单片机和LabVIEW的数据采集系统设计方案,从而实现一种在LabVIEW开发环境下的低成本数据采集系统[3]。
1 系统总体结构设计
系统总体结构框图如图1所示。
本系统采用上位机和下位机两部分,上位机由LabVIEW面板组成,负责接收节点上传的土壤湿度数据并将湿度数据实时显示(数值与波形图显示)并保存在Excel文件中,以备历史数据查询。如果湿度数据超阀值,将点亮LED灯报警。下位机则采用STC系列单片机作为节点控制土壤湿度数据采集,STM32系列单片机作为主控处理土壤湿度数据,并根据LabVIEW显示湿度调整电磁阀开关或其他用电设备。
图1 系统总体结构框图
2 系统硬件设计
系统硬件分为上位机和下位机两部分,其中上位机由LabVIEW构成,功能是显示实时土壤湿度和存储历史数据,硬件部分由一般PC机即可实现功能。下位机硬件电路设计包括子节点控制器设计和主控制器设计,主控制器主要功能是接收节点上传的数据,分析处理、按钮状态控制、给节点发送控制指令等功能[4]。节点主要实现功能是数据采集、处理、上传、与主控制器的RS485通信、继电器控制输出等模块的设计。
(1)节点控制器设计。节点控制器模块采用STC12C5A60S2主控芯片,通信方面,经过TTL转RS-485模块和其他设备通信。模块挂接有继电器、土壤水分传感器和ModBus总线。STC12单片机引脚与继电器信号引脚连接,继电器与电磁阀连接。STC12单片机通过TTL转RS485模块与主控制器和按键面板通信,同时通过另一不在总线上的TTL转RS485模块,向SM2801土壤水分传感器发送指令,获取湿度数据。
节点主控芯片STC12上电后,等待电源和传感器稳定。随后读取继电器状态,对继电器状态进行保存。读取水分传感器数据,对水分传感器数据进行校验、保存。主控系统传来读取指令,并上传数据给主控制器。如果是控制信息,则判断是按键面板传来的指令还是主控制器传来的指令,并对继电器进行设置和和回应指令。
(2)主控制器设计。主控制器主要负责与子节点、按键通信和数据处理,对节点通信、数据采集、工作状态上传等进行调度。在整个嵌入式系统中,主控制器是唯一的调度者,分配着所有现场设备、控制器等的工作。主控制器系统采用ST公司生产的STM32F103RCT6作为控制核心,通过TTL转RS485模块,TTL转RS485模块之间使用ModBus总线式连接,实现和子节点、按键面板控制器相连接。STM32单片机通过控制EL817光耦电阻,从而控制24~220 V继电器,进而控制施肥装置、变频器、水泵。STM32单片机引脚控制三极管,进而直接控制主控制器上的蜂鸣器。而施肥状态引脚、水泵状态引脚则经过10K电阻后,各自直接与STM32单片机引脚相连接。
3 系统软件设计
3.1 下位机单片机软件设计
下位机单片机软件设计包括主控制器、节点数据采集、处理和通信三大部分的功能模块的设计。
3.1.1 主控制器数据处理
主控制器数据处理流程图如图2所示,该部分主要通过核心芯片STM32F103RTC16的USART1串口接收处理节点和主控制器的数据,并对指令进行处理显示或发送主控制器的指令给节点作出相应操作。
图2 主控制器数据处理流程图
3.1.2 节点数据处理
节点程序流程框图如图3所示,该部分由节点电路核心芯片STC12C5A处理数据,主要功能是完成对传感器发送指令,判断收到传感器反馈回的指令集后进行相应处理,可直接上传至上位机LabVIEW或者主控制器分析处理显示。
图3 节点程序流程框图
3.2 上位机LabVIEW软件设计
上位机采用LabVIEW开发环境下主要实现对下位机节点上传的土壤湿度数据在主控制端进行定时采集并经过处理后实时显示[5],并将采集数据保存在Excel文件中,供用户调用查看历史数据或灌溉规律等,总体设计该上位机具有土壤湿度实时查询、采集、转换、显示、控制、报警、储存、历史数据采集等操作。
3.2.1 LabVIEW前面板程序设计
上位机LabVIEW运行主界面(前面板)如图4所示。
图4 LabVIEW运行主界面(开始采集前界面)
主界面包括串口通信参数配置、运行控制选项、实时数据显示及实时曲线显示、湿度超限报警、历史数据显示部分。串口通信参数设置用于设置上位机与下位机RS485通信相关参数(串口号、波特率、数据位、停止位及奇偶校验位等)。当采集到的数据超过设定的报警门限值时,运行控制选项用于启动或停止下位机数据采集[6]、数据存储以及数据回放等功能。数据显示用于显示某采集通道的实时数据,实时曲线用于显示采集的实时数据曲线。
3.2.2 LabVIEW程序面板设计
系统主程序结构如图5所示。
图5 系统主程序功能模块结构图
系统结构在经典状态机结构的基础上改进,主程序结构为开始进入一个While循环,然后在While循环中定义了一个事件结构(即事件驱动方式),在事件结构中定义了4种事件,分别为开启数据采集、停止数据采集、退出数据采集及读取历史数据。在While循环中实时检测驱动事件的发生,如驱动事件发生,则转入到定义好的驱动事件程序去执行。在接收数据的过程中,如果单击停止数据采集按钮,则下位机停止数据采集,同时上位机停止接收采集数据,退出接收下位机采集数据While循环结构。如果单击读取历史数据选项,则将保存到指定路径中的数据在前面板以波形图和Excel表格显示出来[7,8]。需要注意的是开始采集前,要确认数据停止采集按钮处于未被按下状态,读取历史数据前要将停止数据采集按钮按下。
4 测试与结果分析
如图6所示为系统某段时间湿度数据采集的LabVIEW数据显示情况。
图6 某段时间LabVIEW主界面数据显示情况
由采集湿度数据波形显示曲线窗口可以看出,在浇水后的一段时间内,土壤湿度会维持在一个固定值范围之间变化(但幅度变化较小),且该时段土壤湿度一直较高,已经超过预设湿度最高阀值,故可以看到湿度数据显示窗口湿度过高灯点亮。历史数据显示部分,采集到的是某天灌溉以后从15:37到22:21的数据,可以明显看到土壤湿度随时间缓慢下降,历史数据表格显示为存储在Excel中的湿度数据。
5 结 语
按照设计预期,本系统主要实现对土壤湿度实时查询、采集、显示、控制、储存等功能,设计的数据采集 系统,经实际验证,上位机LabVIEW与下位机节点可以正常通信,能够实现土壤湿度的采集与实时监测,可以根据情况选择路径在前面板以波形图和表格的形式显示出来,且整套系统运行实时、稳定。在其他应用中,本系统设计中的状态机整体结构和串口监测、写数据、CRC-16循环冗余校验,正常显示转化、数据保存、波形图时间显示等子VI程序,可以直接应用于其他类似程序中具有较强的移植性,稍加修改,即可应用于其他领域的数据采集控制,具有一定的参考价值和实用性[9]。
[1] 苗 硕.中国淡水资源现状与保护措施探讨[J].现代商贸工业,2010,(17):19-21.
[2] 顾建华,严国军.远程控制农田自动灌溉系统研制[J].软件,2012,33(6):6-7.
[3] 申焱华,王汝杰,雷振山.LabVIEW入门与提高范例教程[M].北京:中国铁道出版社,2006.
[4] 王永虹,徐 炜,郜立平. STM32F系列 ARM微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.
[5] 顾亚雄,朱翠英,许方华.基于LabVIEW 的单片机多路数据采集系统的设计[J].自 动 化技术与应用,2009,28(10):46-48.
[6] 林 静,林振宇,郑福仁. LabVIEW虚拟仪器程序设计从入门到精通[M].北京:人民邮电出版社,2010.
[7] Robert H.Bishop National Instruments,著. 乔瑞萍,林 欣,译.LabVIEW实践教程[M].北京:电子工业出版社,2014.
[8] 彭 勇,潘晓晔,谢龙汉.LabVIEW虚拟仪器设计及分析[M].北京:清华大学出版社,2011.
[9] 李红刚,张素萍.基于单片机和LabVIEW的多路数据采集系统设计[J]. 国外电子测量技术,2014,33(4):62-67.