论文部分内容阅读
【摘 要】LabVIEW是一个使用图形符号来编写程序的编程环境。基于图形化编程语言的LabVIEW可以高效、快速地编写出相应的应用程序。本文就是采用LabVIEW平台,编程实现了数据采集、实时显示以及数据存储等功能。
【关键词】虚拟仪器 LabVIEW 多路数据采集 Modbus ASCII协议
一、LabVIEW概述
虚拟仪器是当前测控领域的技术热点,它代表了未来仪器技术的发展方向。
“软件就是仪器”这种说法充分的说明了虚拟仪器软件的重要作用,通过它的软件开发平台,开发者不需要了解过多的仪器专业知识,就可方便、快捷地开发出满足应用的虚拟仪器。LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程平台) 是目前多数虚拟仪器系统所采用的开发软件。
二、Modbus ASCII协议简介
Modbus通讯协议是一个一般的行业标准,此协议,我们可以快速实现网络和集中控制的不同部分的控制设备。在配置每台控制器时,用户须选择通讯模式以及串行口的通讯参数。所有设备应具有相同的通信模式在Modbus串行通信参数。
(一)Modbus ASCII模式
当控制器的Modbus通信总线在ASCII模式下,每一个消息8位字节的ASCII码(两个十六进制字符)传输,这种模式的主要优点是可以允许最多至1秒,没有错误的字符之间的时间间隔。
每个ASCII码字节格式:
编码系统:十六进制,ASCII字符0-9,AF,每个ASCII字符表示一个十六进制字符。
数据位:
·1 位起始位
·7位数据位,低位先发送,高位后发送
·1位奇偶校验位(本文中采用偶校验)
·1位停止位
错误校验区:纵向冗余校验
(二)Modbus ASCII帧
在ASCII模式中,以“:”冒号(ASCII 3AH)表示信息开始,以回车换行键(CRLF)(ASCII 0D,0AH)表示信息结束。
对其它的区,允许发送的字符为十六进制字符0-9,A-F。网络中设备不断检测并接收到一个冒号“:”时,每台设备对地址区解码,找出要寻址的设备。
字符之间的最大时间间隔为1s,若大于1s,则接收设备认为出现了一个错误。典型的信息帧为:开始(‘:’)+地址(2字符)+功能(2字符)+数据(n字符)+校验和(2字符)+结束(回车换行)。
(三)Modbus ASCII校验方式(LRC校验)
在ASCII模式中,采用纵向冗余校验方式,即LRC校验。差错校验码是一个8位二进制数,也就是两个ASCII字符。校验和计算,只有地址,功能码,数据位参与经营,开始位“:”和结束位CRLF均不参与运算。由发送设备计算LRC校验码,然后和该块数据一起传送到接收端。所述的接收装置,用于接收这些信息来计算LRC代码,并与接收到的LRC代码相比,假如两个是完全不一样的,则说明该数据块在传输过程中产生错误。
校验和的具体计算步骤为:
1.将设备地址、功能码、数据位的每个ASCII字符用十进制表示出来,并将它们相加起来。
2.将上一步所得结果对256求余。
3.用255减去上一步所得结果,再加1,结果用十六进制表示。
三、基于LabVIEW的简单串行通信的实现
LabVIEW函数功能>>仪器I/O》VISA库中的模板包含了许多功能模块的串行通信操作:
VISA节点调用,你可以很容易地和迅速地实现实时监控系统主机到下一个机器。串口通信程序的实现采用平铺式顺序结构,逐步执行串口的参数设置、发送数据、接收数据、关闭串口等操作。具体步骤如下:
1.请致电VISA配置串行端口节点完成设置串口参数,包括序列号,波特率,数据位,停止位,奇偶校验位。
2.在顺序结构的第一个框图中,调用VISA Write节点将数据发送到指定的串口中。延时200ms,使得下位机能够有合适的时间作出响应。
3.在顺序结构的第二个框图中,调用VISA Read节点将数据读取到缓冲区。
4.调用VISA Close节点关闭串口。
四、数据采集系统的实现
数据采集系统前面板如下图1所示。
图1 数据采集系统前面板
(一)地址搜索
先设置搜索的初始地址和结束地址,然后用while循环在此区间内挨个搜索,发出指令后,有回复的设备即为搜到的设备。每一次循环中,先计算LRC校验和,然后信息帧格式将指令发送到指定串口,等待200ms,读取设备响应的数据,将地址分离出来,用索引数组显示。采用索引数组时,若设备有响应,则显示此设备地址;若设备无响应,则为空字符串。
将索引数组中的空字符串过滤掉,得到地址数组。若搜到的设备数量(地址数组大小)与指定的设备数量不相等,则结束程序;若相等,则将搜到的地址依次显示在不同的显示控件中。
(二)浓度采集
整体结构采用for循环结构实现。将地址数组连接至for循环中的地址输入端,启用索引。计算校验和,将读取浓度的指令发送到指定串口,等待200ms,读取设备回复的数据。从此数据中分离出浓度数据,并显示。
(三)温度采集
采集浓度和采集温度的程序采用平铺式顺序结构实现。在顺序结构的一个框图中为浓度采集的程序,在顺序结构第二个框图中为温度采集的程序。温度采集和浓度采集的程序基本相同。不同点仅在于:
1.把浓度采集程序中发送的指令中的000A换成0003。
2.温度采集时,分离出的温度数据转换为十进制后,需再除以10。
(四)数据保存
检测文件夹“数据采集系统”是否存在,若存在,则在此文件夹下创建新路径;若不存在,则先创建文件夹“数据采集系统”,然后再在此文件夹下创建路径。数据保存程序块采用事件结构,当按下数据保存按钮时,各个传感器当前浓度和温度均被保存。保存完数据后,返回原来的程序继续执行。
五、结束语
本文通过LabVIEW软件平台,实现了多路数据采集系统的设计。通过接入实际设备测试,该设计方案可以方便、快捷地进行浓度与温度的采集、实时显示,并保存当前数据。若有需要,也可以很方便地实现仪器校准与控制等功能。
参考文献:
[1]林静,林振宇,郑福仁.LabVIEW虚拟仪器程序设计从入门到精通[M]. 北京:人民邮电出版社,2010年.
[2]王水鱼,,李 宁.基于LabV IEW的ModbusASCII串行通信的实现[J].陕西理工学院学报,2008(02):31-03
基金项目:
本文系郑州大学全国大学生创新创业训练计划资助项目。
【关键词】虚拟仪器 LabVIEW 多路数据采集 Modbus ASCII协议
一、LabVIEW概述
虚拟仪器是当前测控领域的技术热点,它代表了未来仪器技术的发展方向。
“软件就是仪器”这种说法充分的说明了虚拟仪器软件的重要作用,通过它的软件开发平台,开发者不需要了解过多的仪器专业知识,就可方便、快捷地开发出满足应用的虚拟仪器。LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程平台) 是目前多数虚拟仪器系统所采用的开发软件。
二、Modbus ASCII协议简介
Modbus通讯协议是一个一般的行业标准,此协议,我们可以快速实现网络和集中控制的不同部分的控制设备。在配置每台控制器时,用户须选择通讯模式以及串行口的通讯参数。所有设备应具有相同的通信模式在Modbus串行通信参数。
(一)Modbus ASCII模式
当控制器的Modbus通信总线在ASCII模式下,每一个消息8位字节的ASCII码(两个十六进制字符)传输,这种模式的主要优点是可以允许最多至1秒,没有错误的字符之间的时间间隔。
每个ASCII码字节格式:
编码系统:十六进制,ASCII字符0-9,AF,每个ASCII字符表示一个十六进制字符。
数据位:
·1 位起始位
·7位数据位,低位先发送,高位后发送
·1位奇偶校验位(本文中采用偶校验)
·1位停止位
错误校验区:纵向冗余校验
(二)Modbus ASCII帧
在ASCII模式中,以“:”冒号(ASCII 3AH)表示信息开始,以回车换行键(CRLF)(ASCII 0D,0AH)表示信息结束。
对其它的区,允许发送的字符为十六进制字符0-9,A-F。网络中设备不断检测并接收到一个冒号“:”时,每台设备对地址区解码,找出要寻址的设备。
字符之间的最大时间间隔为1s,若大于1s,则接收设备认为出现了一个错误。典型的信息帧为:开始(‘:’)+地址(2字符)+功能(2字符)+数据(n字符)+校验和(2字符)+结束(回车换行)。
(三)Modbus ASCII校验方式(LRC校验)
在ASCII模式中,采用纵向冗余校验方式,即LRC校验。差错校验码是一个8位二进制数,也就是两个ASCII字符。校验和计算,只有地址,功能码,数据位参与经营,开始位“:”和结束位CRLF均不参与运算。由发送设备计算LRC校验码,然后和该块数据一起传送到接收端。所述的接收装置,用于接收这些信息来计算LRC代码,并与接收到的LRC代码相比,假如两个是完全不一样的,则说明该数据块在传输过程中产生错误。
校验和的具体计算步骤为:
1.将设备地址、功能码、数据位的每个ASCII字符用十进制表示出来,并将它们相加起来。
2.将上一步所得结果对256求余。
3.用255减去上一步所得结果,再加1,结果用十六进制表示。
三、基于LabVIEW的简单串行通信的实现
LabVIEW函数功能>>仪器I/O》VISA库中的模板包含了许多功能模块的串行通信操作:
VISA节点调用,你可以很容易地和迅速地实现实时监控系统主机到下一个机器。串口通信程序的实现采用平铺式顺序结构,逐步执行串口的参数设置、发送数据、接收数据、关闭串口等操作。具体步骤如下:
1.请致电VISA配置串行端口节点完成设置串口参数,包括序列号,波特率,数据位,停止位,奇偶校验位。
2.在顺序结构的第一个框图中,调用VISA Write节点将数据发送到指定的串口中。延时200ms,使得下位机能够有合适的时间作出响应。
3.在顺序结构的第二个框图中,调用VISA Read节点将数据读取到缓冲区。
4.调用VISA Close节点关闭串口。
四、数据采集系统的实现
数据采集系统前面板如下图1所示。
图1 数据采集系统前面板
(一)地址搜索
先设置搜索的初始地址和结束地址,然后用while循环在此区间内挨个搜索,发出指令后,有回复的设备即为搜到的设备。每一次循环中,先计算LRC校验和,然后信息帧格式将指令发送到指定串口,等待200ms,读取设备响应的数据,将地址分离出来,用索引数组显示。采用索引数组时,若设备有响应,则显示此设备地址;若设备无响应,则为空字符串。
将索引数组中的空字符串过滤掉,得到地址数组。若搜到的设备数量(地址数组大小)与指定的设备数量不相等,则结束程序;若相等,则将搜到的地址依次显示在不同的显示控件中。
(二)浓度采集
整体结构采用for循环结构实现。将地址数组连接至for循环中的地址输入端,启用索引。计算校验和,将读取浓度的指令发送到指定串口,等待200ms,读取设备回复的数据。从此数据中分离出浓度数据,并显示。
(三)温度采集
采集浓度和采集温度的程序采用平铺式顺序结构实现。在顺序结构的一个框图中为浓度采集的程序,在顺序结构第二个框图中为温度采集的程序。温度采集和浓度采集的程序基本相同。不同点仅在于:
1.把浓度采集程序中发送的指令中的000A换成0003。
2.温度采集时,分离出的温度数据转换为十进制后,需再除以10。
(四)数据保存
检测文件夹“数据采集系统”是否存在,若存在,则在此文件夹下创建新路径;若不存在,则先创建文件夹“数据采集系统”,然后再在此文件夹下创建路径。数据保存程序块采用事件结构,当按下数据保存按钮时,各个传感器当前浓度和温度均被保存。保存完数据后,返回原来的程序继续执行。
五、结束语
本文通过LabVIEW软件平台,实现了多路数据采集系统的设计。通过接入实际设备测试,该设计方案可以方便、快捷地进行浓度与温度的采集、实时显示,并保存当前数据。若有需要,也可以很方便地实现仪器校准与控制等功能。
参考文献:
[1]林静,林振宇,郑福仁.LabVIEW虚拟仪器程序设计从入门到精通[M]. 北京:人民邮电出版社,2010年.
[2]王水鱼,,李 宁.基于LabV IEW的ModbusASCII串行通信的实现[J].陕西理工学院学报,2008(02):31-03
基金项目:
本文系郑州大学全国大学生创新创业训练计划资助项目。