APP下载

基于Modbus RTU协议的数据采集平台设计与实现

2021-12-02许向阳贾月明

电子工业专用设备 2021年5期
关键词:校验码机软件电流值

艾 博,许向阳,贾月明

(中国电子科技集团公司第四十五研究所,北京100176)

在数据采集和监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统,因其开放、集成方便等特点,如今成为工业领域全球最流行的通信协议[1-3]。为实现液氮补给装置自动控制,需实时采集和监视液氮杜瓦罐内的温度、液位及周边氧气浓度数据,并将采集结果发送给上位机。

本设计的数据采集平台是基于RS-485总线和Modbus RTU协议,通过ADAM4117获取各传感器的模拟量电流值,实现实时监测液氮杜瓦罐内的温度值、液氮液位值及装置周边的氧气浓度值。同时,该平台除具有完成数据采集、数据分析和处理功能外,还需具有提供数据采集接口和人机交互接口的功能。

1 系统设计

图1为液氮补给装置数据采集平台的设计示意图。在本系统设计中ADAM4117作为系统核心,由ADAM4117的通道0、通道1和通道2获取温度传感器、液位传感器和氧气传感器实时反馈的数据,并通过串口Modbus RTU协议与上位机通信,在上位机软件实现3个通道的数据采集、分析和处理。

图1 数据采集系统设计示意图

其中,ADAM4117是16位A/D、8通道的模拟量输入模块,可以采集电压、电流等模拟量输入信号,并且为所有通道提供了独立的可编程的输入范围。在工业测量和监控的应用中,ADAM4117具有良好的性价比。它不仅能够用于恶劣的环境中,而且还具有更加坚固型的设计。本系统中ADAM4117设置为采集4~20 mA电流量程,将电流信号转换为RS-485信号,传输到上位机,Modbus协议读到的数值为16进制的整数,数值从0~65 535,分别对应量程的上下限。例如,当量程为4~20 mA时,输入的电流值为12 mA,则读取到的Modbus数值为32 767。

2 Modbus RTU协议及通信模式

Modbus是一种串行通讯协议,是由Modicon公司于1979年提出,允许多个设备连接在同一个网络上进行通信。本文使用的RTU格式传输效率高,在相同速率下具有更大的数据流量,得到了广泛认可与使用。Modbus通信是主从通信机制,主机将消息帧发送给从机,从机在接收到消息后,返回相应的应答帧,其主从关系如图2所示[4]。

图2 Modbus主从关系

Modbus RTU消息帧结构如表1所示[5]。本文中读取ADAM4117输入寄存器的电流值,使用0x04功能码控制。

表1 Modbus RTU消息结构

3 上位机软件的设计与实现

上位机程序在VS2010环境中编写,软件实现流程如图3所示。

图3 上位机软件实现流程图

3.1 初始化串口

//串口控制块

DCB dcb;/

/串口超时控制参数

COMMTIMEOUTS timeouts={100,1,500,1,100};

//串口名称或设备路径

m_hComm=CreateFile(szPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPE

N_EXISTING,0,NULL);

//获取串口DCB设置参数

GetCommState(m_hComm,&dcb);

//设置波特率、位、停止位、校验方式

dcb.BaudRate=9600;dcb.ByteSize=8;

dcb.StopBits=ONESTOPBIT;dcb.Parity=NOPARITY;

//设置DCB参数

SetCommState(m_hComm,&dcb);

//设置超时参数

SetCommTimeouts(m_hComm,&timeouts)。

3.2 功能码(0x04)

ADAM4117的设备地址为0x01,通过04功能码读取输入寄存器电流数据。8通道的模拟量输入采集电流模拟量输入信号,通过Modbus寄存器地址40001~40008来读取CH0~CH7的数值。以读取CH0为例,其请求指令如表2所示,返回帧如表3所示。

表2 读取CH0请求指令

部分代码如下:

3.3 CRC校验

主机向从机发送信息帧时,将CRC(Cyclic Redundancy Check)校验码一并发送。CRC校验码包含2个字节,即16位二进制。CRC校验码由主机计算,放置于发送信息的尾部。从机再重新计算接收到信息的CRC校验码,比较计算得到的CRC校验码是否与接收到的相符,如果两者不相符,则表明出错[6]。计算CRC16校验码的函数如下:

3.4 测试数据

通过RS-485总线将ADAM4117连接到工控机的COM2口,读取温度传感器、液位传感器和氧气浓度传感器数值,上位机软件界面如图4所示。

图4 软件界面

打开上位机调试程序,对ADAM4117通讯进行测试,可以正确读取ADAM4117返回的电流值,经过数据处理转换为相对应的数值,如表4所示。

表4 采集的数据

4 结束语

本文针对芯片测试设备的液氮补给自动控制系统的数据采集需求,在VS2010环境下设计开发了基于Modbus RTU协议的数据采集平台,实现上位机与ADAM4117数据采集模块的Modbus协议通信,采集各传感器的电流数据。经过对数据采集平台的测试,软件运行稳定、可靠,能够实时采集读取各传感器反馈的数据。

猜你喜欢

校验码机软件电流值
制冷剂与润滑油混合物对空调器泄漏电流影响分析及研究
放疗中CT管电流值对放疗胸部患者勾画靶区的影响
变压器差动斜率保护计算方法
基于Excel实现书号校验码的验证
光伏发电系统谐波监测与评估研究
道岔监测系统上位机软件设计
基于正交试验法的北斗用户机软件测试用例设计
PCI-e高速数据采集卡的驱动与上位机软件设计
基于FPGA的循环冗余校验码设计
身份证号码中的数学