学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?
博客写作背景----项目中解决的问题
最近遇到一个基于Arduino与LabVIEW的智能大棚监控系统,可以实现农作物生长环境参数的实时采集以及上位机监测软件的数据分析和远程监测。数据采集终端设备采用Arduino作为控制核心,上位机软件采用LabVIEW,两者通过RS-485总线实现通信。只需要在田垄之间进行RS-485布线,即可实现组网通信。初步定为使用labview编写上位机程序进行处理。为啥用labview呢,因为LabVIEW是美国国家仪器公司(NI)的创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics Language,图形化编程语言)的测试系统软件开发平台。LabVIEW并不局限于虚拟仪器的开发,它的作用是为大型复杂测试系统提供通用的软件开发平台。目前,LabVIEW已经成为测试领域应用最广泛和最有前途的软件开发平台之一。
下面是我最近写程序的一些知识,进行了部分的整理,发出来和大家一起分享,也方便我以后查找自己的编程过程。
编程知识点----LabVIEW程序设计
LabVIEW上位机部分需要完成如下功能:根据所选择的节点向RS-485总线上发送不同节点号的温度、湿度、光照、水分的数据采集命令,Arduino控制器通过串口和MAX485模块从RS-485总线上接收上位机命令,然后判断接收的命令中的节点号是否与自己的节点号匹配,如果匹配则实现相应的数据采集之后并将采集的数据回传,LabVIEW软件将回传的数据显示在前面板上;如果不匹配则舍弃当前接收的上位机命令,重新等待下次命令的到来。
1.LabVIEW前面板设计
LabVIEW前面板分为节点选择、工作指示灯和数据显示模块,节点选择用于选择当前监测的节点,将其数据显示在显示模块上;工作指示灯用于该节点是否正常工作;显示模块主要用于显示当前的数据,包括温度、湿度、光照和水分情况。
基于Arduino与LabVIEW的智能农业监控系统的LabVIEW上位机前面板,如图所示。
2.LabVIEW程序框图设计
采用条件结构+移位寄存器的状态机来实现LabVIEW上位机主程序,将主程序划分为5个状态:0状态为串口初始化,1状态为温度测量,2状态为湿度测量,3状态为光照测量,4状态为水分测量,且初始状态为0状态(串口初始化)。
为了更好地实现通信,制定如下的通信协议:帧头+节点代号+操作码。0x55为帧头,节点代号有0xA1为节点0的代号,0xA2为节点1的代号,0xA3为节点2的代号,0xA4为节点3的代号,0xA5为节点4的代号,操作码有0x10为温度采集,0x20为湿度采集,0x30为光照采集,0x40为水分采集。
在0状态中,通过设置的串口号来初始化串口通信,如图所示;
在1状态中,读取温度数据并显示,如图
所示;在2状态中,读取湿度数据并显示,如图
所示;在3状态中,读取光照数据并显示,如图所示
在4状态中,读取水分数据并显示,如图
关闭串口通信。