基于STC12单片机的工业物联网数据采集终端设计

2024-04-18 12:06罗家毅赵瑞雪潘小波夏兴国宁平华
关键词:数据采集单片机

罗家毅 赵瑞雪 潘小波 夏兴国 宁平华

【摘   要】   针对多过程量的远程监控系统中使用PLC模拟量模块进行数据采集时成本较高、信号易干扰易衰减、系统难扩展等问题,提出一种基于单片机设计的工业物联网数据采集终端。终端包含8路输入通道,可以将小电流模拟量信号转换为合适范围内的电压信号,经过单片机的A/D采集及数据处理后,终端作为从机,由RS485标准通信接口与工业物联网通用的Modbus RTU协议与上位端主机之间实现长线传输。通过与PC端串口调试助手软件工具的通信测试,该数据采集终端的经济性、可靠性、实时性和准确性均得到了验证。

【关键词】   单片机;工业物联网;数据采集;Modbus

Design of Data Acquisition Terminal for Industrial

Internet of Things Based on STC12 MCU

Luo Jiayi1,Zhao Ruixue2,Pan Xiaobo1,Xia Xingguo1,Ning Pinghua1

(1.Ma′anshan Technical College, Ma′anshan 243031, China;

2. Hefei Technical College, Hefei 230012, China)

【Abstract】    Aiming at such problems as high cost, easy signal interference, easy signal attenuation, and difficult system expansion when PLC analog module is used to collect data in multi-process remote monitoring system, an industrial internet of things data acquisition terminal is proposed based on MCU. The terminal contains 8 input channels for converting low-current analogue into voltage signals within the appropriate range. After the A/D acquisition and data processing of the microcontroller, the terminal acts as a slave and transmits through long line via RS485 standard communication interface with the upper computer as a master, by using Modbus RTU protocol, which is generic in industrial internet of things. Through the communication test with the software tool of serial port debugging assistant for PCs, the economy, reliability, real-time and accuracy of this data acquisition terminal have been verified.

【Key words】     microcontroller; industrial internet of things; data acquisition; Modbus

〔中图分类号〕  TP23                 〔文献标识码〕  A              〔文章编号〕 1674 - 3229(2024)01- 0064 - 07

0     引言

工业自动化控制系统离不开温度、液位、压力等过程信号的监控,此类模拟量信号多采用电压或电流的形式进行传输,现场一般通过PLC控制系统对其进行采集、处理和通讯。如高平等[1]在油库油量监测系统中,使用PLC模拟量输入模块来实现5个油罐的液位监测;陈芳等[2]通过在PLC系统中扩展多个模拟量采集模块,以采集注塑机的多段温度和位移、压力等过程量;王斐[3]提出了一种使用分布式PLC组成工业以太环网的形式,每台PLC配置6路AI通道以采集分布式矿用空压机的温度、压力、振动等模拟量参数;赵慧娟[4]在温室大棚的智能监测中采用PLC实时读取温室内温湿度、光照度、CO2浓度等环境参数。

多过程量的测控系统在模拟量数目较多、传感器分布式排列、信号传输距离较远等场合,传统的PLC控制需要添加较多的模拟量输入模块,成本增加的同时还会出现信号易干扰、易衰减等问题,且系统后续不便扩展,故提出一种基于单片机设计的工业物联网数据采集终端。该终端可以实时采集现场多路分布式仪表的模拟量信号,经过数据转换和处理后由RS485通信接口以工业物联网通用的Modbus RTU协议进行长线传输,便于系统组网及上位扩展,具有经济性、开放性好等优点。

1     系統总体设计

基于单片机的工业物联网数据采集终端包括信号采集、信号处理和信号传输三个部分。信号采集通过8路I/V转换电路将传感器及变送器输出的4~20 mA电流信号实时转换为单片机片内ADC可以采集的0~5 V电压信号。信号处理部分使用单片机对多通道电压信号进行A/D转换,并对转换后的数字信号进行量程变换、浮点数计算、CRC校验等处理,生成符合通用Modbus RTU协议格式的数据报文。最后数据信号通过单片机串行口由RS485通信电路进行传输。RS485通信接口支持扩展级联,后级可选择与组态软件、触摸屏等上位端,或PLC、Modbus网关、串口服务器等不同厂商设备以RS485标准进行Modbus通信。系统结构如图1所示。

2     系统硬件设计

数据采集终端的硬件电路主要包括输入信号采集电路、单片机最小系统电路和RS485通信接口电路。

2.1   信号采集电路设计

为了信号能够远传,用于温度、液位、压力等过程量检测的传感器及变送器多以4~20 mA电流小信号输出,需要经I/V线性转换成符合单片机ADC采样的电压信号。单通道采集电路具体设计如图2所示。

电路首先使用低温漂(±25 PPM/℃)、高精度(0.1%)的250 Ω电阻对4~20 mA输入电流进行采样,获取的1~5 V范围内采样电压经线性光耦送至ADC通道。电路采用成本较低的高线性度模拟光电耦合器HCNR200,它的内部包含一个高性能稳定输出的LED和两个能够同时接收光信号的光敏二极管PD1和PD2,线性光耦的光电隔离作用可以有效地抑制共模干扰。根据产品数据手册,可以匹配各电阻的大小。

首先,根据光耦内部LED的导通管压降[Uf]和工作电流[If]的参数值可以得出[R3]的大小。

[R3=Vin-UfIf]            (1)

式(1)中,[Vin]为输入采样电压1~5 V。

再根据光耦内部发光管LED与光敏管PD1的线性值[ K1=0.5%],可以计算出R2的值。

[IPD1=If?K1R2=VinIPD1]        (2)

最后,由于线性光耦内两个光敏二极管电流比值[K3]是常数1,结合集成运放A2的I/V转换电路功能,联立可以得出ADC采集的输出电压与输入取样电压之间的关系。

[K3=IPD2IPD1Vout=IPD2?R4Vin=IPD1?R2]       (3)

[   VoutVin=K3?R4R2]           (4)

由于发光二极管独立稳定的输出特性,电路中输出电压与输入采样电压的比值不变,可以通过[R4]与[R2]电阻的比值大小来调节该线性度。

2.2   STC12C5A60S2控制器

数据采集终端采用STC12C5A60S2单片机作为主控制器。STC12C5A60S2是我国宏晶公司生产的基于8051内核的增强型MCU,具有速度快、功耗低、抗干扰能力强、价格低廉等优点。片内存储器包含1280 B RAM及60 KB Flash ROM,集成了双UART串口、2通道PWM和8通道ADC等片内资源。电源电路采用微功耗、低压差的线性电源芯片TPS7350实现9 V变5 V的稳压,电路简单、外围元件少,并具有过流、过压、电压反接等保护。

2.3   通信接口电路设计

基于STC12C5A60S2单片机现有的片内串行通信资源,为了实现远距离传输和多机联网通信,采集终端的设计包括一个RS485通信接口,支持数据以Modbus RTU协议由半双工异步串行通信方式与后级设备进行长线通讯。

通信电路采用MAX485芯片实现单片机TTL电平与RS485标准电平的转换。MAX485是常用的低功耗RS485/RS422半双工通信收发器,内部集成了具有启用使能控制的驱动器和接收器各一个,数据传输速率可高达2.5 Mbps,最多支持32個节点的总线拓扑。

通信接口电路如图3所示。当单片机进行数据发送时,若MCU_TX置低电平,三极管Q1截止,方向控制引脚RE和DE被上拉为高电平,此时MAX485执行发送模式,发送DI为数据0;若MCU_TX置高电平,Q1导通,MAX485执行接收模式,此时高阻态输出的A、B引脚因外部有上下拉电阻而呈现差分数据1。当单片机不发送数据时,MCU_TX默认为高电平,MAX485通过RO引脚执行接收模式,从而实现自动收发控制的双向通信。

3     软件设计

数据采集终端作为通信从机,通过RS485标准接口以Modbus RTU协议进行数据传输,支持上位通信参与者作为主机发送数据读取的请求命令。采集终端以命令/应答的半双工通信方式,及时应答主机请求并发送采集到的实时数据。具体软件设计主要包括主程序、模拟信号采集与处理、Modbus RTU协议下的命令接收与数据应答等中断服务程序或功能子程序。

3.1   主程序

主程序首先对A/D采集、串行通信、定时器等片内外设资源进行初始化,并允许相应中断。其中,A/D采集中断完成8通道模拟量的分时转换;串行中断实现命令帧字节的接收和数据帧字节的发送;T0定时中断用于判断主机命令帧是否接收完结。通道采集数据经A/D转换后,需根据传感器的量程进行线性量化和浮点数的转换,并在接收到主机命令帧后实时发送符合读取请求的数据帧,上述工作均在主程序中循环调用。主程序流程如图4所示。

3.2   信号采集与处理

采集终端的8路输入通道将I/V转换后的采样信号送至单片机内置的高速ADC进行多路分时采集与转换,A/D采集中断流程如图5所示。

中断返回后,主程序对A/D转换结果进行线性量化和浮点数转换。线性量化指根据传感器的量程范围,通过算术运算将A/D转换结果线性化为浮点数类型的工程值,例如液位传感器的线性量化公式为:

[H=Hmax-Hmin1024-204*(VAD-204)]+[Hmin]    (5)

式(5)中,[H]为实际采集的液位值,[ Hmax]和[ Hmin]分别为传感器的量程上下限,1024和204分别是上下限量程对应的A/D转换值。

线性量化后的实时工程值是一个单精度浮点数,而Modbus RTU协议的报文格式均是以两位十六进制的字节传输,所以需要依据IEEE 754标准将该浮点数转换为多字节形式。由于IEEE 754标准中的浮点数算术转换方法比较复杂,转换子函数在具体设计时使用的方法是取RAM中该浮点数存儲的当前地址,并顺序赋值给一个四字节长度的字符型数组。这里需要注意的是,Keil C51编译器中单精度浮点数转换为多字节的存储为大端模式,即数据的低位保存在内存的高地址中,所以后续数据发送时还需要对32位浮点数的四字节进行高低位交换。

3.3   命令接收与数据应答

采集终端以Modbus RTU协议遵从主/从通信模式,当接收到如PLC、IPC、HMI等上位主机发来的命令帧请求后,终端作为从机及时应答,并发送包含工程值的数据帧。根据Modbus RTU协议的通用帧格式,对采集终端支持的寄存器和功能码进行自定义,具体如表1所示。

Modbus RTU协议报文的帧格式中每个数据均为单个字节,无论是命令帧的接收还是数据帧的发送都采用单片机片内UART异步串行通信中断来完成单字节收发,具体程序流程如图6所示。

为了判断主机请求命令帧是否接收完结,采用1 ms的定时中断来周期性监听当前时刻是否处于命令帧结束后的空闲时间,并在命令帧接收完结后置位完成标志,便于其他子程序的判断,定时中断流程如图7所示。

根据命令帧的数据读取要求,程序需要及时组织形成应答数据帧。根据自定义支持的Modbus功能码及寄存器地址,采集终端需要按Modbus RTU协议通用的应答报文格式来组织应答数据帧。

图8是应答数据帧的组织子函数流程,程序采用多分支函数结构,支持后续其他功能码的扩展支持,图中字符型数组RX_BUF[]用于存放接收到的命令帧,TX_BUF[]数组组织存放待发送到的数据帧,n为命令帧请求读取的寄存器数量。

应答数据帧组织完成后,程序利用发送子函数对TX_BUF[]数组中的帧消息数据逐字节安排发送,数据帧的字节长度为4n+5,具体流程如图9所示。

4     实验测试

根据上述硬件及软件设计的工业物联网采集终端作为Modbus通信从机,主机选用PC端串口调试助手软件工具,采集终端的RS485接口通过一个485-USB双向转换器与PC端相连。

实验测试时,使用8个4~20 mA电流信号发生器来模拟0~5 m量程的液位传感器,分别与数据采集终端的8路输入通道相连接。根据从机软件中设定的通讯参数,主机端串口调试助手软件工具中配置串行通信的帧格式为:1位起始位、8位数据位、无校验位、1位停止位、波特率9600 bps。

根据图10所示Modbus RTU协议通用的应答报文格式要求,结合自定义的功能码及寄存器,PC端可以使用串口助手工具发送主机命令以读取任意单个或连续多个通道实时采集的工程值大小。

测试时,首先调节电流发生器,设置8路通道的输入电流分别为4 mA、6 mA、8 mA、10 mA、12 mA、14 mA、16 mA、20 mA,用于模拟液位传感器输出信号。为了读取数据采集终端CH0-CH8路通道采集的工程值,PC端串口调试助手发送十六进制命令请求帧为01 04 00 00 00 10 F1 C6。该串报文是指通过04功能码读取设备地址为01的从机中以0000H开始的16个字类型输入寄存器值,但该采集终端的设计是将采集工程值以单精度浮点数形式存储,故该命令帧报文也可以是指请求读取从机中0000H(30001)、0002H(30003)、……、000EH(30015)8个寄存器中的32bit浮点数值。从机接受命令后,实时发送返回符合协议标准的应答数据帧到串口调试助手的接收缓冲区,串口调试助手收发数据具体如图11所示。

根据图10所示Modbus RTU应答报文的通用格式,图11所示的从机应答数据帧不难解析出8路通道的实时采样工程值大小(保留三位小数),具体见表2所示。

本文设计的数据采集终端还支持主机端根据通讯协议规定的报文格式读取任意单个或连续多个通道的工程值大小,如图12所示。

5     结论

本文提出的基于STC12C5A60S2单片机设计的工业物联网数据采集终端,在多过程量远程监控系统中,该数据采集终端能够替代传统PLC模拟量输入模块的数据采集功能,方便系统组网及上位扩展,经济性、开放性好。该数据采集终端通过I/V转换电路将输入模拟量的小电流信号转换为能够被单片机A/D采集的电压信号,经过数据运算及处理后,作为从机由RS485标准通信接口以通用的Modbus RTU协议与上位端主机之间实现长线传输。通过与PC端串口调试助手软件工具通信测试,设计的数据采集终端的可靠性、实时性和准确性均得到了验证。

[参考文献]

[1] 高平,张宏乐,陆海东.S7-200PLC在油库油量监测系统中的应用[J].工业仪表与自动化装置,2016(5):103-106.

[2] 陈芳,刘佳,傲起,等.基于PLC的注塑机多段温度控制系统设计[J].合成树脂及塑料,2020,37(1):85-87.

[3]  王斐.基于PLC的分布式矿用空压机智能监控[J].能源与节能,2023(1):79-81+212.

[4]  赵慧娟.基于PLC的农业温室大棚智能监测设备应用[J].农机化研究,2021,43(6):214-218.

[5]  王鹏.基于Modbus协议的数据采集系统的研究[D].合肥:合肥工业大学,2020.

[6]  邓元生.基于单片机的MODBUS总线协议实现技术研究[D].长沙:中南大学,2009.

[7] 谢昊飞,刘代雄,吴禹霜.面向工业互联网的Modbus浸入式教学实验项目设计[J].实验技术与管理,2022,39(5):171-175.

[8] 宋雪松.手把手教你学51单片机[M].北京:清华大学出版社,2020:341-352.

[9] 李能菲,常辉,黄琼,等.基于LabVIEW漏水检测监控系统的设计[J].廊坊师范学院学报(自然科学版),2023,23(1):34-38.

猜你喜欢
数据采集单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
基于单片机的平衡控制系统设计
CS5463在植栽用电子镇流器老化监控系统中的应用
大数据时代高校数据管理的思考
基于广播模式的数据实时采集与处理系统
通用Web表单数据采集系统的设计与实现
基于开源系统的综合业务数据采集系统的开发研究