基于LabVIEW与Modbus协议的多点温度采集实验设计
2023-08-30梁新武陈飞谢雨欣谢启徐惠钢
梁新武 陈飞 谢雨欣 谢启 徐惠钢
摘 要 为培养学生工业通信协议应用能力,设计一种基于LabVIEW与Modbus协议的多点温度采集实验。该实验以LabVIEW为上位机,以TAM-18B20-8L模块实现对温度信号的采集;上位机通过485通信接口及Modbus协议读取温度数据进行处理并显示,通过Database Connectivity工具包完成Access数据库的建立及数据存储。学生可以通过该实验更好地掌握Modbus协议、数据库建立访问的设计方法和工程实现方法。
关键词 LabVIEW;Modbus协议;多点温度采集实验;TAM-18B20-8L温度采集模块
中图分类号:G642.423 文献标识码:B
文章编号:1671-489X(2023)01-0039-04
0 引言
在工业4.0时代以及“新工科”背景下,我国的工程教育迎来了难得的发展机遇。地方应用型大学培养应用型人才更应该注重工程应用、工程技术的培养[1]。在科技快速发展的背景下,智能化设备已经占据制造业的主导地位,在智能化设备上,各种通信端口的应用,实现了各设备之间的通信,同时也为各设备提供了更多的可拓展空间,创造了无限的可能性[2]。
在工业中,常用的通信协议有Modbus协议、TCP/IP协议、MPI通信、串口通信等。Modbus协议作为工业自动化领域应用最为广泛的通信协议之一,已经被广泛应用到工业设备上,是自动化类、电子信息类学生必须掌握学习的知识。在传统实践教学中,Modbus协议的教学往往是容易忽略的一点,学生对此协议的掌握也相对薄弱[3]。
温度作为国际单位制的七个基本量之一,是工业现场一种需要重点监控的参数,通过虚拟仪器技术进行检测是自动化领域中常用的方法。LabVIEW是NI公司推出的一种虚拟仪器开发平台,采用可视化的图形编程语言编程,具有鲜明的行业特征,在测试测量行业有着其独特优势。
鉴于此本文设计了一种基于LabVIEW与Modbus协议的多点温度采集实验,旨在培养学生将运用LabVIEW实现工业协议——Modbus协议的能力,加深对LabVIEW数据采集、通信、數据库操作工程实现方法的理解。
1 系统硬件设计
本系统的硬件连接图如图1所示。选用稳定性较好、分辨率较高的DS18B20温度传感器,该传感器测温范围是-55~125 ℃,可满足多种情况下的测温需求。该模块使用的是Modbus通信协议,最多可同时采集8路信号,能满足学生日常实验学习需求。
系统以LabVIEW作为上位机,TAM-18B20-8L温度采集模块通过RS-485转USB 模块连接到电脑。在此设置485通信波特率是9600,无奇偶位校验,因此将TAM-18B20-8L温度采集模块中的10位拨码开关B1~B10设置为0000100000,并将模块内部的跳线帽接到485接口的位置。在此电路连接中,为了实现温度采集模块与通信转换器有统一的电源基准,需将其GND引脚接在一起[4]。
2 系统软件设计
本软件部分主要包括:Modbus通信协议、LabVIEW读取温度数据、LabVIEW与Access数据库的交互。系统软件设计将LabVIEW 2018作为主要开发平台。软件设计程序流程图如图2所示。本系统以冷箱出厂时的冷藏室、冷冻室温度变化是否符合要求的测试为例进行软件设计。首先需对测温时长及合格温度进行设置;继而采集温度;当测温时间到时则对所采集到的温度数据进行处理,并做出是否合格的判定;同时将测试的数据存储到数据库中以便追溯。LabVIEW软件并行机制的一些程序同时具有选择数据查询或停止系统运行的功能,当选择数据查询时则调用数据库显示历史的测试数据,当选择停止时则退出整个程序。
2.1 Modbus通信协议
软件设计首先要掌握Modbus通信协议[5]。该通信协议是工业上常用的通信协议、通信约定,是一种单主站的主/从通信模式,用于不同类型总线或网络设备之间提供主站设备/从站设备通信,同一主站可对应多个从站。本实验中采用485接口Modbus协议实现上位机LabVIEW与TAM-18B20-8L温度采集模块的通信。
实验中采用传输效率较高的Modbus RTU通信模式,属于异步串行通信模式,主站请求帧和从机响应帧格式如表1、表2所示。
实验中采用一块TAM-18B20-8L温度采集模块(共可接8路温度传感器),设置其模块地址码为01;若主站要读取温度采集模块上的数据,由表1知其功能码为03;温度采集模块接了三路温度传感器(其对应的寄存器地址为0x0000~0x0003),因此,寄存器的起始地址为 0x0000;寄存器数量为3;CRC校验采用的CRC-16校验,通过计算得到其CRC校验结果为05BC,从而得到主机请求帧为:0103 0000 0003 05CB。
2.2 LabVIEW读取温度数据
实验中使用了3个DS18B20传感器,由图1知3个传感器接至TAM-18B20-8L温度采集模块的通道0到通道2上。LabVIEW通过Modbus协议读取TAM-18B20-8L温度采集模块的数据并进行处理,温度数据读取流程如图3所示。
1)通信参数初始化为:波特率:9600、数据位:8位、奇偶校验位:None、停止位:1位、流控制:无;
2)LabVIEW向TAM-18B20-8L温度采集模块写主机请求帧:0103 0000 0003 05CB;
3)延时200毫秒后读取温度采集模块的响应帧,由表2知响应帧为11个字节,其中第4~9字节为温度信息;
4)若读取到11字节后对其进行CRC校验码计算;
5)CRC校验正确则提取温度信息。
将接收到的从机响应帧中的前9个字节,即不包括校验码,进行CRC-16校验码计算,其程序流程图如图4所示。实验中的Modbus通信CRC-16校验,采用的校验多项式为X16+X15+X2+1,即1 1000 0000 0000 0101,用前9个数据帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码,利用LabVIEW编程就是先预置1个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器;然后把第一个8位二进制数据(即第一个字节)与16位的CRC寄存器的低8位相异或,把结果放在CRC寄存器里面,高8位的数据保持不变;再把CRC寄存器的内容右移一位(朝低位移),用0填补最高位,并检查右移后的移出位;如果移出位是0则再次右移一位;如果移出位为1,则CRC寄存器与多项式A001(1010000000000001)进行异或;重复上述步骤,直到右移8次,这样整个8位数据就全部都进行了处理;重复以上步骤,进行通信信息帧下一个字节的处理;将所有字节按上述步骤计算完成后,将计算得到的16位CRC寄存器的高、低字节进行交换位置;最后得到的CRC寄存器内容即为CRC校验码。将得到的CRC校验码与接收到CRC码(第10、11两个字节)进行比较,若相等则接收到的数据正确。
实验中将三路温度传感器采集到的温度数据,以25%、25%、50%的加权进行数据处理,令三路传感器采集到的温度分别为T1、T2、T3,则最终得到的温度为:
T=0.25T1+0.25T2+0.5T3 (1)
由式(1)得到的最终温度与设定的合格温度进行对比,假设低于设定的合格温度则为合格,反之为不合格。
2.3 LabVIEW与Access数据库的交互
在工业实际应用中,为做到检测信息可追溯都会用到数据库,为使学生了解和掌握LabVIEW的数据库操作,本实验要求使用Access数据库进行温度数据的存储与查询。
LabVIEW本身并不具有数据库的功能,本实验要求通过Database Connectivity Toolkit工具包以及Access Database Engine数据引擎,连接Access数据库实现写入数据、读取数据的功能,也可以通过ActiveX调用Microsoft ADO控件实现访问或者通过第三方工具包LabSQL完成访问[6]。
先建立起一个可调用的Access模板,填充测试时间、温度等表头名称,通过拆分路径的方式生成数据库文件,在使用数据库文件时,若检测到数据库未建立,则自动复制前面创建的数据库模板。本次使用的是相对方便灵活地连接字符串连接数据库,常见的连接方式还有DSN、UDL等。完成数据库建立之后,需要将相关数据写入数据库,将需要的信息建立成一个簇,将相关数据提取到簇中,在此基础上,不断更新数据[7]。
当检测到查询数据指令时,系统将会执行打开数据库和数据读取两个操作。系统会判断链接的文件路径是不是测试数据库文件,若是,则正常打开数据库。读取数据库,会将Access中的数据读取到LabVIEW前面板中显示。
3 實验运行
连接好硬件电路,打开程序测试系统前面板如图5所示配置,测试时间为5分钟,设定温度为25 ℃,经判定当前温度为低于设定温度,因此判定结果为合格。通过选项卡的切换可以进行测试数据的查询,如图6所示。
4 结束语
本文设计了基于LabVIEW与Modbus协议的多点温度采集实验。选用TAM-18B20-8L温度采集模块进行多点温度信息的采集,LabVIEW通过Modbus协议读取温度采集模块的温度信息并进行处理显示,同时将温度数据等存储到Access数据库中。本实验设计面向应用型人才的培养,与工业实际联合起来。该实验为虚拟仪器技术课程的实践环节提供了典型案例,学生可在此基础上进行二次开发。
1)在数据处理方面,本实验中采用简单的加权计算,存在一定的误差,可利用误差理论与数据处理等知识进行误差判定并得到更准确的温度值。
2)可找一应用场合,在实验中加入PID调温。
3)可考虑使用其他工业中的协议进行替换[8]。
通过实验使学生更好地掌握理论知识,提高工程实践能力,同时实验中较多的可拓展处可激发学生的学习热情与创新意识。本实验也可为类似系统的设计提供一定的参考。
5 参考文献
[1] 马云阔,罗瑶嘉.“新工科”背景下地方高水平大学工程类本科应用型人才培养研究[J].佳木斯大学社会科学学报,2018,36(4):165-167,173.
[2] 楚敬敬,张伟,孙晓,等.基于Modbus RTU协议的PLC通信实验平台开发[J].山东化工,2021,50(18):219-223.
[3] 张加宏,杨天民,刘恒,等.一种嵌入式PID恒温控制的教学实验设计[J].实验技术与管理,2020,37(10):211-215,219.
[4] 黄靖博.RS485通讯连接方式及其应用[J].大众用电,2008(9):22-23.
[5] 艾博,许向阳,贾月明.基于Modbus RTU协议的数据采集平台设计与实现[J].电子工业专用设备,2021,50(5):46-49.
[6] 苏同发,张朴.基于LabVIEW与Access的多通道数据采集存储系统设计与实现[M]//2019中国自动化大会(CAC2019)论文集.中国自动化学会会议论文集.2019.
[7] 宁芬,周庆华,唐立军,等.基于LabVIEW与Access的虚拟实验教学系统[J].智能计算机与应用,2016,6(5):81-84.
[8] 吴兰.面向测控专业的信号处理类课程的教学改革与实践[J].教育教学论坛,2017(11):85-86.