基于Modbus_RTU的远程输入输出接口设备的设计

时间:2022-09-27 07:56:36

基于Modbus_RTU的远程输入输出接口设备的设计

【摘要】介绍了Modbus通信协议的特点,简述了远程输入输出接口设备在分布式控制系统中的作用,提出了一种具有Modbus_RTU接口的远程输入输出接口设备的设计,并对软硬件设计进行了详细阐述,该设计利用了Modbus_RTU协议的开放性和易用性,在单片机运行、端口隔离等方面进行了抗干扰设计,对完善分布式控制系统功能具有促进作用。

【关键词】远程;Modbus;输入输出;单片机;抗干扰

引言

Modbus通信协议是Modicon公司开发的一种通信协议,它采用主从问答方式工作,是一种真正开放、标准的、免收许可费的网络通信协议[1]。Modbus通信协议广泛应用于过程控制系统,是实现控制主站(例如可编程控制器)与分站(例如远程输入输出接口)、传感器通信的一种常用协议。在分布式控制系统中,控制主站实现逻辑控制功能,但系统中存在远程的数据采集点和远程控制输出点,需要通过现场总线的方式实现数据互联,由于Modbus协议简单开放的特点,在这种情况下经常应用。远程输入输出接口是分布式控制系统的一个重要组成部分,兼容Modbus接口能够很好地提高设备的易用性和性价比。Modbus通信模式分为ASCII和RTU两种,RTU是最常用的模式,本文提出了一种具有Modbus_RTU通信接口的远程输入输出接口的设计方法,能够满足分布式控制系统的应用需求。

1.Modbus协议简介

Modbus通信协议具有开放性好、易实现、扩展性好、可靠性高等优点, 因而具有广阔的应用前景,被越来越多的设备厂商所支持。不同厂商生产的控制设备可以连成Modbus工业网络,由Modbus通信的主站对 现场设备和仪表进行远程监控,实现非常好的监控效果和系统性能[2]。

Modbus没有规定物理层,它只规定了可以被通信节点识别的数据结构[3]。Modbus规定了数据的结构、命令和应答的形式,数据通信采用主从方式,主站可以向特定的从站发起读写命令,也可以向所有从站发起广播命令。在同一个通信网络中,所有通信节点(包括主站和从站)都必须设置相同的通信参数,包括波特率、数据位、停止位和校验位,而字符超时、回复超时等保护参数每个通信节点可以不尽相同。

Modbus通信模式分为ASCII和RTU两种,两者的不同主要在于数据格式,两者的数据格式分别如表1和表2所示。

表1

位置 起始位 设备地址 功能码 数据 LRC校验 结束符

字符个数 1 2 3 n 2 2

表2

位置 起始位 设备地址 功能码 数据 CRC校验 结束符

位数 静止时段 8bit 8bit N*8bit 2*8bit 静止时段

Modbus功能码可以是1-255范围内任何整数值,有些功能码适用于所有的通信设备,有些则只适用于特定的控制器,还有一些用于功能的扩展。

主站通过时间间隔的方式判断的通信帧的结束,从站在收到主站的命令后,需要至少间隔3.5个字符周期才能回复数据,如果时间间隔不够,主站将无法区分主站的数据帧和从站的数据帧。如果一帧数据在完成之前有一个1.5字符周期的停顿,则接收端会认为数据损坏而丢弃数据。尤其当通信波特率不大于19.2kbps时,对1.5字符周期和3.5字符周期有严格要求,当通信波特率大于19.2kbps时,1.5字符周期固定为750us,3.5字符周期固定为1.75ms。从机必须保证同步主机的时序,否则无法正确接受主机的数据。同时,从机还要有合理的收发转换时间,间隔至少3.5字符周期,否则会导致主机和其他从机误判,但收发转换周期也不能超过主机的回复超时时间,否则主机会做出超时判断。

2.硬件设计

基于Modbus_RTU的远程输入输出接口的硬件电路框图如图1所示。硬件电路主要包括处理器(单片机)、输入输出隔离器件和RS485收发器三个部分。

图1 硬件电路框图

单片机是输入输出接口设备的核心,其接收来自总线的数据命令,根据命令的形式,控制相应的端口输出或将采集到的端口信息进行回复。单片机的电路部分又可以分为电源、晶振、看门狗三个部分,电源是数字电路工作的必须部分,通常单片机的电源是一个降压稳压电路,通用单片机的工作电压一般为3.3V或5V,而普通开关电源或AC-DC模块的输出电压一般为12V或24V,所以需要降压。为了保证单片机工作的稳定,需要在降压器件的输出侧加稳压二极管和电容,以保证电压的稳定和降低纹波。晶振为单片机工作提供时基,晶振分为内部晶振和外部晶振两种,外部晶振具有更好的精度和稳定性。单片机工作在工业环境中,容易受到各种干扰,会导致控制程序出现异常,看门狗电路可以将出现异常的程序及时拉回到正常状态,防止出现事故。看门狗的原理是定时接收单片机发出的周期信号,当一定时间内没有收到周期信号后,将单片机热复位,让程序重新运行,而这个过程单片机的RAM不会发生改变,保证控制功能可以继续。

在工业控制环境中,各种干扰会冲击传输线路,这就需要对单片机的端口进行隔离,将干扰阻挡在隔离器件之外,首先保证单片机的安全。常用的隔离器件有光耦和磁耦,光耦传输速率相对较低,可以在输入输出端口隔离中使用,磁耦的传输速率相对较高,可以在通信隔离中使用。

单片机的串口一般只支持TTL电平,如果需要连接Modbus总线(物理层为RS485),则需要RS485总线收发器,RS485收发器将接收到的RS485差分信号转换为单片机可以识别的TTL电平信号,将单片机发出的TTL电平信号转换为RS485差分信号,以实现Modbus总线与单片机信号的互联。

3.软件设计

软件设计流程图如图2所示。初始化部分主要完成单片机的初始配置,包括晶振的设置、定时器的设置、Modbus_RTU协议栈的设置和端口的输入输出设置。采集端口信息部分完成对单片机输入端口的电平采集,端口的电平状态需要进行滤波,防止状态出现频繁跳动,滤波采用平均滤波法,即在一定时间内采集数次端口的电平,数次电平一致,则认为电平已稳定,将稳定的电平值定期存储在Modbus_RTU寄存器中,以备Modbus主站读取。Modbus数据处理部分采用中断的形式,当总线上收到来自主站的命令时,触发一次中断,置中断标识。在中断处理程序中,首先判断收到的命令是读命令还是写命令,如果是读命令,则根据Modbus_RTU协议规则,把主站想要读取的寄存器的值回复给主站,如果是写命令,则改变相应的寄存器的值,进而根据内部寄存器与外部端口的映射关系,将相应的单片机端口置位。整个软件设计实现了主站对远程输入输出接口设备的输入口信息的采集和主站对远程输入输出接口设备的输出口的控制,主站具有总线控制权,可以随时采集端口信息和控制端口输出。

图2 软件流程图

4.结语

按照上述方法设计的远程输入输出接口设备能够实现控制主站对远端输入端口的数据采集,同时控制主站可以实时控制远端执行机构动作,软硬件设计均进行了抗干扰处理,能够有效应对复杂的工业控制环境。此设计已在实际应用中得到验证,对完善分布式控制系统功能具有促进作用。

参考文献

[1]吕国芳,唐海龙,李进.基于Modbus RTU的串口调试软件的实现[J].计算机技术与发展,2009,19(9):236-238.

[2]何志勇,张茂青,钱伟清.PLC主站对Modbus网络的监控方法[J].计算机网络与通信,2007,29(2):26-28.

[3]舒凯.基于MODBUS-RTU协议的PLC多路数据采集系统[J].水电自动化与大坝监测,2008,32(2):66-69.

作者简介:谢印钊(1988―),男,黑龙江鹤岗人,主要研究方向:电气自动化。

上一篇:《现代启示录重生版》:黑暗史诗 下一篇:论高职应用电子技术专业职业能力提高的课程设...