Modbus通信协议在ARM7环境监测系统中的应用

2010-03-13 08:54张姣姣李丽宏陈金兵
电子设计工程 2010年8期
关键词:通信协议中断报文

张姣姣,李丽宏,陈金兵

(太原理工大学 信息工程学院,山西 太原030024)

在环境监测中,需要做到实时监控、统一管理,为此需将各分散站点的环境监测设备互联形成网络,实现环境监测的网络化、智能化、人性化。为了节约成本,提高效率,采用RS485总线做传输设备,Modbus协议为通信协议,ARM7系列的微处理器LPC2214为环境监测仪表的主芯片。

环境监测系统将Modbus协议成功地应用到ARM7系统中,实现了经典协议与高效系统的完美结合。研制了网络化的环境监测系统,完成了监控中心对各分散站点的统一监测和管理。

1 监控系统整体方案

环境监测系统采用网络化模式将各个分站的信息统一传送到监控中心计算机上。上位机软件接收到各分站的信息后自动分析、处理、显示和保存,如果分站的采集值超标会产生报警信号。系统的整体结构如图1所示。

图1系统结构图Fig.1 Block diagram of system

RS485总线采用EIA/TIA-485标准的2线制电气接口,该RS485总线具有抗共模干扰能力强,多机通信和组建现场总线网络的功能。Modbus协议是主从式网络结构,设置监控中心服务器为主站 (总线上只能有一个主站),最多可挂接247个从站。主站可以对任一从站进行查询和控制,从站只有收到主站的请求时,才会传送数据。环境监测仪表采集温度、湿度、风速、风向、大气压力、雨量等6个环境参数,主站会间隔读取各个从站的信息,各从站接收到命令后,把当前的环境信息发送给主站,主站接收到从站的数据校验正确后将信息显示并保存起来。

2 Modbus通信协议

Modbus协议是由Modicon公司开发的,由于其功能比较完善,容易实现,现已成为通用的工业标准。不同厂家生产的工业控制设备遵循该协议标准连接成网络,进行集中监控[1]。

2.1 串行链路通信协议

Modbus串行链路协议是主—从协议,RTU模式在相同波特率下比ASCII模式有更高的数据吞吐量,故环境监测系统采用RTU模式。在Modbus协议的串行链路上,所有分站的传输模式相同。RTU消息帧包括地址域、功能域、数据域、CRC校验域。RTU模式是通过判断时间间隔来区分字符和报文帧的,时长至少为3.5个字符时间的空闲间隔将报文帧区分开。同时,整个报文必须以连续的字符流发送,帧内2个字符之间的间隔小于1.5个字符时间[2]。表1为RTU报文帧的结构,起始和结束表示一帧数据与另一帧数据之间时间间隔。

表1RTU报文帧Tab.1 RTU message frame

2.2 功能码

当消息从主设备发往从设备时,从设备根据功能码来确定执行哪种操作,例如读一个线圈的状态,或读一组寄存器的数据内容等[3]。当从设备响应时,功能码用来指示是正常回应或异常回应。对正常回应,从设备仅回应相应的功能码;对异常回应,从设备返回一个等同于正常回应的代码,但最高位的值置为逻辑1,比如正常功能码为“00010101”,在异常回应的情况下回应“10010101”[4]。

2.3 CRC校验

CRC字段校验整个报文的内容。无论单个字符报文使用何种奇偶校验方式,均应有这种CRC校验。CRC包含2个8位字节组成的16位值,并作为报文的最后字段附加到报文上,先附加低字节,再附加高字节。

发送设备计算CRC值,并附加到报文帧上。接收设备在接收报文过程中,重新计算CRC值,并将计算值与接收到的实际CRC值相比较。若两个值不相等,则表示出现错误。

3 嵌入式处理器LPC2214

LPC2214是一款支持实时仿真和跟踪的32位ARM7TDMI-S内核的微控制器,并带有256 KB嵌入的高速片内Flash存储器。通过片内PLL可实现最大60 MHz的CPU操作频率。8路10位A/D转换器,2个32位定时器(带4路捕获和4路比较通道),6路脉冲宽度调制PWM,实时时钟,看门狗,2个16C550工业标准UART,高速I2C接口,2个SPI接口,9个外部中断源,2个低功耗模式:空闲模式和掉电模式[5]。此芯片外设功能强大,功耗低,抗干扰能力强,非常适用于智能仪表和工业嵌入式控制系统。

4 系统硬件设计

系统传输线路采用RS485总线形式,由于ARM7系列芯片工作电压为3.3 V,故选用SP3485低功耗芯片做电平转换,TLP521实现信号隔离。LPC2214的TXD0和RXD0通过光耦分别连接SP3485的DI和RO引脚,完成串口的发送与接收工作。RS485的A、B两端采用差分输入,LPC2214的2个串口都具有串口中断方式,支持CPU与外设之间的异步串行数字通信,支持5~8位串行数据传送与接收以及在传送与接收时的双向握手,每一个通道有2个内部16位FIFO,系统采用串口接收的中断方式。在串口通信中接收每帧数据包后,会在接收状态寄存器中相应的标志位置位,产生中断请求,判断是否接收Modbus数据帧,进一步对该数据帧进行解析[6]。图2为串行通信接口电路。

图2串行通信接口电路Fig.2 Serial communication interface circuit

5 系统软件设计

Modbus协议简单易用,兼容性强,应用广泛,但是将Modbus协议应用到ARM系列单片机系统的设计较少。而该环境监测系统则实现Modbus协议在ARM7系统中的应用。

RTU模式通过判断1.5个字符和3.5个字符的时间来确定报文帧传输的正确性,所以在程序处理过程中使用定时器中断处理。当波特率低于19 200 b/s时,定时时间必须严格按照波特率计算出1.5个字符和3.5个字符的时间。环境监测仪的频率为 11.059 2 MHz(大于19 200 b/s时),如果按照波特率来计算字符时间间隔会使CPU负担加重,所以定时器使用2个固定值:1.5个字符为750 μs,3.5个字符为1.75 ms。

系统运行后,主站点依次向总线发送读取从站信息的命令,避免了多个从站同时向总线发送信息而造成信息冲突。从站监控仪表在接收到完整的消息帧后先读取地址码,判断是否为发往本机的消息,是则检验命令信息无误后,响应命令,并返回相应的信息,否则清空接收缓存器,重新进入等待接收状态。

环境监测系统主要使用的是04功能码 (读输入寄存器),寄存器地址占2个字节,从00开始,连续读取6组寄存器的值(输入寄存器的数量也占2个字节),再加上2个字节的CRC校验码,一个完整的消息帧为xx 04 00 00 00 06 xx xx。

在RTU模式下最关键的是区分报文帧间隔和字符间隔时间。系统采用串口接收中断和定时器中断判断帧间隔和字符间隔时间的大小。报文帧的传送报文要求帧内间隔小于1.5个字符,帧间间隔大于3.5个字符。因为采用串口接收中断,检验的是2个字符的停止位间的时间,可以用2.5个字符和4.5个字符的间隔来判断报文帧传输的正确性,取其公约数0.5个字符作为定时器的定时时间,定义一个全局变量timer0_cn,timer0_cn在定时中断中做加1运算,判断timer0_cn的2个关键值5和9即可。串口中断和定时器中断程序流程图如图3,图4所示,通过串口中断、定时器中断和变量timer0_cn相配合完成报文帧的正确接收。

图3串口中断程序流程图Fig.3 Flow chart of serial interrupt program

图4定时器中断程序流程图Fig.4 Flow chart of timer interrupt program

6 结 论

环境监测系统将Modbus协议成功地运用到ARM7TDMI-S系统中,实现了环境监测系统同时监测多个地域、多个分站的网络化管理,使用简单、方便,数据传输准确无误,延时时间短,非常适合小型的环保或气象监测站使用。

[1]潘长清,蒋大明,欧阳劲松.基于S3C44BOX处理器Modbus通信协议的实现[J].仪器仪表标准化与计量,2007,23(2):26-28.PAN Chang-qing, JIANG Da-ming, OUYANG Jin-song.The implementation of Modbus communication protocol based on S3C44BOX processor [J].Instrument Standardization and Meter Volume, 2007,23 (2) :26-28.

[2]GB/T 19582.2-2008基于Modbus协议的工业自动化网络规范,第2部分:Modbus协议在串行链路上的实现指南[S].北京:中国标准出版社,2008.

[3]GB/T 19582.1-2008基于Modbus协议的工业自动化网络规范,第1部分:Modbus应用协议[S].北京:中国标准出版社,2008.

[4]廖明燕,王宏伟.基于Modbus协议的加气站多机通讯系统[J].自动化仪表,2008,29(9):44,54,64.LIAO Ming-yan,WANG Hong-wei.Based on Modbus protocol is scheduled for multi-machine communication system[J].Automation Instrumentation, 2008,29 (9):44,54,64.

[5]周立功,王祖麟,陈明计,等.ARM与嵌入式系统基础教程[M].广州:广州周立功单片机发展有限公司,2004.

[6]陈建,蒋海峰,丁伟智.Modbus协议在隧道监测系统中的应用[J].现场总线,2009(7):34-35,50.CHEN Jian,JIANG Hai-feng, DING Wei-zhi.The application of Modbus protocol in the tunnel monitoring system[J].Field bus, 2009(7):34-35,50.

猜你喜欢
通信协议中断报文
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
基于Z-Stack通信协议栈的红外地温采集电路设计
跟踪导练(二)(5)
千里移防,卫勤保障不中断
ATS与列车通信报文分析
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
RSSP-I、RSSP-Ⅱ及SAHARA三种安全通信协议实现技术简介