当前位置:首页 >> 信息与通信 >>

数据采集系统中Modbus协议的实现


数采与监测
文章编号:1008- 0570(2007)10- 1- 0068- 02

中文核心期刊《微计算机信息》 ( 测控自动化 )2007 年第 23 卷第 10-1 期

数据采集系统中 Mo d b u s 协议的实现
Ap p lica tio n o f Mo d b u s Pro to co l in

Da ta Acq u is itio n S ys te m
(江苏大学)薛海涛

和卫星 陈晓平

XUE HAITAO HE WEIXIGN CHEN XIAOP ING 摘要: 本文主要介绍了 Modbus 通信协议。 给出了单片机 RS- 485 通信电路的设计方案。 阐述了在 VB6.0 编程环境下通过 RS- 485 总线实现主控台 PC 机对智能仪表的控制。并且指出了在软件设计方面需要注意的问题。 关键词:Modbus 协议; 串行通信; 智能仪表 RS- 485; 文献标识码:B 中图分类号:TP273 Abstr act:This paper represents Modbus Protocol. The design of Rs- 485 interface circuit is presented too.The methods of how to con- trol the intelligent instrument by pc using RS- 485 serial port is described through the VB6.0.And it also points out the questions which should be paied attention to in sofeware design. Key wor ds:Modbus Pr otocol, Rs485, er ial communication, intelligent instr ument

技 术 创 新

1 引言
当前, 越来越多的企业开始向生产和管理自动化转变。各 种智能仪表不断地应用到生产生活的各个领域。在工业控制方 面, 由于 RS- 485 总线以差分平衡方式传输信号, 所以具有抗干 扰性好、 传输距离远等特点, 非常适用于组成工业级的多机通 是目前 信系统。Modbus RTU 规约是 Modicon 公司的注册商标, 国际智能化仪表普遍采用的主流通信协议之一。目前国内许多 生产商已在他们的产品和系统中遵循该协议的标准。在各个工 业仪器仪表大量使用的今天, 基于 RS- 485 的 Modbus RTU 通信 协议得到了最广泛的应用。本文主要从应用的角度介绍在一个 工业控制系统中, 实现该技术的具体方案。

发送, 采用纵向冗长检测(LRC) 校验。这种方式的主要优点是字 在 RTU 模式下, 采 符发送的时间间隔可达到 1s 而不产生错误。 用字节数据传输和 CRC 校验。这种方式的主要优点是, 在同样 的波特率下可比 ASCII 方式传送更多的数据。 所列。对于主控制器, 至少要 RTU 模式的消息结构如表(1) 以 3.5 个字符时间的间隔作为消息发送的开始。从机在接收到 第一个字节后, 都判断是否与本机的地址相吻合。在最后一个传 输字符之后, 必须要有至少 3.5 个字符的停顿时间来标定一帧消 倘若校 息的结束。 结束之后从机对接收到的消息进行 CRC 校验。 验结果与消息包含的 CRC 校验码吻合, 则表示通信正常, 否则返 回例外代码, 表示此帧通信存在错误, 通知主机重发命令帧。 表 1 RTU 模式的消息结构

2 Modbus RTU 通信协议简介
允许一台主机和多台从机 Modbus 协议采用主从工作方式, 通信采用 通信, 每台从机地址由用户设定, 地址范围为 1 ̄ 255。 每一种命令帧都对应一个应答帧。命令帧由主 命令/应答方式, 机发出, 所有从机都将收到报文, 但只有被寻址的从机才会响 应相应命令, 返回相应的应答帧。 图(1) 是一个完整的主从查询- 回应周期。如果报文中寻址地址为 0 则视为全局广播, 所有主 机把它当一条命令执行, 不返回应答帧。

3 系统的配置
上位机通过在 COM 口上串接 MOXA A51 带光电隔离的 RS- 232/485 转换模块以添加 RS- 485 通信口。前端通信接口选 用的芯片是 TI 公司的 SN75176 总线驱动器,将逻辑电平转换 为 485 差分信号传输, 电路图如图 2 所示。RS- 485 总线在抗干 扰、 自适应、 通信效率等方面仍存在缺陷。在实际工程中一些细 节处理不当常会导致通信失败甚至系统瘫痪等故障。因此在电 路设计中应该注意以下几个问题: 单片机在复位时, 所以在系统设计时应 I/O 口为高电平, (1) 该保证上电复位时 SN75176 的 DE 端电位为“ , 这种接法有效 0” 的解决了复位期间分机“ 咬” 线的问题。

(1) 查询- 回应周期表 标准的 Modbus 协议有两种传输方式:ASCII 模式和 RTU 模 式。在 ASCII 模式下, 消息中的每个 8B 都作为两个 ASCII 字符 薛海涛: 硕士研究生 基金项目: 江苏省高校自然科学基金资助项目(03KJ B510025)
- 68-

隔离光耦电路的电阻参数的选择, 必须根据不同的光耦 (2) 元件选取。过大将会使光耦的发光二极管由截止进入饱和变得 较慢, 过小则退出饱和很慢。所以两只电阻的数值要精心选取, 不同型号的光耦及驱动电路使得这两个电阻的数值略有差异, 这 一点在电路设计中要特别慎重, 不能随意, 通常可以由实验来定。 《现场总线技术应用 200 例》

360 元 / 年 邮局订阅号: 82-946

您的论文得到两院院士关注

数采与监测

图(2) (3)输出电路的设计要充分考虑到线路上的各种干扰及线 路特性阻抗的匹配。首先在电路设计中采用稳压管 D1,D2 组成 的吸收回路, 能够抗浪涌等干扰。为了防止总线中其他分机的 通信受到影响,在 75176 的 485 信号输出端串联了两个 20 欧 姆的电阻 R10、 。这样本机的硬件故障就不会使整 R11(如图 2) 个总线的通信受到影响。另外由于通信载体使用双绞线, 它的 特性阻抗为 120 欧姆左右, 所以线路设计时, 在 RS- 485 网络传 输线的始端和末端各应接 1 只 120 欧姆的匹配电阻 R8, 以减少 线路上传输信号的反射。

图(3) tmNewframe 定时器事件流程图 (REVOK:处理 mbEvent 所代表的事件; 正常接收; 通信超时; mbEvent=1, mbEvent=2, mbEvent=3, 例外响应; mbEvent=4, CRC 校验错误。)

5 下位机通讯程序的编写
Modbus 协议的数据流完全依靠每个报文的间隔来区分和 同步。下位机只有解决了实时接收和应答才能够在网络中可靠 工作。在实际具体运用中, 需要注意以下问题: (1)接收必须采用中断方式以保证实时性接收并且在中断 处理函数中不应该进行大量运算。 整个 Modbus 消息帧必须作为一个连续的流传输。如果 (2) 在帧完成之前有 1.5 个字符的间隔时间,接收设备将刷新不完 整的消息并假定下一个字节是一个新消息的地址字节。 同样地, 如果一个新消息在小于 3.5 个字符时间内接着前个消息开始, 接收的设备将认为它是前一消息的延续。这将导致一个错误, 因为在最后的 CRC 字节的值不可能是正确的。 在实际通讯过程中由于每帧消息不定长, 所以程序中最 (3) 主要的问题是如何找到 Modbus 消息帧的开始和结束时间点。 程序不断循环检测已接收的字节数目,每接收到一个新的字节 数据就重新启动定时器计时。当超过设定的帧内最大间隔时间 时, 定时器中断, 并在中断中设定一个标志位, 当主程序查询到 这个标志位时暂停定时器的工作并处理接收到的数据。 (4) CRC 校验需要占用软件时间,它将影响终端的应答速 度。 所以采用查表法计算 CRC 速度非常快, 能够满足系统需求。 由于中断处理函数中不应该进行大量运算。因此将协议的 核心部分编制为 checkModbus 函数,作为通信模块和主程序的 接口。图 4 为 checkMoodbus 函数流程图。

4 上位机通信控件的实现
主机为主动通信方式, 通信开始后主机依次查询各从机并 等待从机的应答, 主机发出某一询问码后, 必须在一段时间内 接收到对应从机的应答。如果主机在规定的接收时间内没有收 到对应从机的任何有效的应答, 则应重发该询问报文, 若在规定 重发次数后, 仍没有有效的应答时, 则可以认为该从机通信故 障,从下一个从机继续询问。主机向实际并未存在的从机发送 信息也会引起超时出错信号。 上位机的通信软件采用 VB6.0 的开发环境。在 VB6.0 中对 串口进行编程可以使用 Mscomm 控件加快开发进度。在 VB 的 窗体中至少要包含一个 MSComm 和两个 Timer 基本控件。使用 使用两个 Timer MSComm 控件可实现对串口的数据发送和接收, 定时器控件 tmNewframe 和 tmTimeout 可分别判断新帧和判断超 时。 在这里对接收到的数 tmNewframe 定时器事件是程序的核心, 据帧进行有效性判别和应答。该段程序流程图如图(3) 所示。 上位机软件的核心是如何读取和处理现场仪表的实时数 据, 编程时应注意以下几个问题: 从机从应答到发送数据并 1.主机采用轮询方式访问从机, 返回回应消息有一定的时间间隔, 一般设定为 3~ 4秒 发送和接收共用同一物 2.由于 RS- 485 通信是一种半双工通信, 理通道, 在任何时刻只允许一台单片机处于发送状态, 因此一 方发送数据时另一方必须等待接收, 因此在发送非周期性命令 时, 必须停止轮询, 否则就会发生总线冲突, 使整个系统的通信 瘫痪, 无法正常工作。 要有报警设置, 提示通讯出错, 3.主机呼叫从机无应答时, 一般设置 3 次呼叫无应答后, 即可停止呼叫, 提示通讯出错, 跳 过此从机继续执行。 应可自动跳过对此从机轮询, 以节 4.当从机故障或停运时, 省轮询时间, 并在显示窗口提示, 同时写入故障记录。 《P LC 技术应用 200 例》

技 术 创 新

图(4) checkmodbus 函数流程图

(下转第 281 页)

邮局订阅号: 82-946 360 元 / 年 - 69 -

您的论文得到两院院士关注

软件天地
数学与计算机科学学院助教,福州大学数学与计算机科学学 院在读硕士研究生。主要从事分布式应用及工业自动化方面 的研究和开发。 Biogr aphy:Hong Zhong, male , bom in 1979 , Han nationality, Fuzhou FuJian. He is currently a teaching assistant at FJNU, and working on his master ’ s degree at FZU. His research inter-

Observer 模式中目标(Subject)的角色。每个 IAlarmSource 实例的 即对其感 内部都组合了一个报警器(IAlarm)对象的集合 alarms, 兴趣的观察者对象列表。为了能够在运行时动态的维护该集 定义了用于向 alarms 集合中动态添加 合, 在 IAlarmSource 中, 还 (AttachAlarm)和移除(DetachAlarm)报警器对象的操作。此外, 定义了在目标状态发生改变时用于通知集合中的所有报警器触 并通过顺序遍历 alarms 集合中的每个元 发报警的操作(Notify), 素来实现了这一机制。 而 IAlarm 作为所有报警器都要实现的抽 象接口,定义了 triggerAlarms 操作供 IAlarmSource 对象在通知 时调用,并由其子类具体去实现了与特定报警方式相关的操 它就会调用自身的 作。 当 IAlarmSource 实例的状态发生改变时, Notify 方法以通知其 alarms 列表中的 IAlarm 对象,进而通过顺 序调用每个 IAlarm 对象的 triggerAlarm 方法,触发与之相关联 的特定报警。 在降低报警源与 在组态软件中, 通过使用 Observer 模式, 报警器之间的耦合的同时,实现了从报警源到报警器之间的 一种动态的一对多的通知机制,极大的提高了报警组态部分 的可用性。

est includes distributed processing and industrial automation. (350007 福建福州 福建师范大学数学与计算机科学学院)洪中 (350002 福建福州 福州大学数学与计算机科学学院)洪中 (School of Mathematics and Computer Science, Fujian Nor - Fuzhou 350007, China)Zhong Hong mal Univer sity, (School of Mathematics and Computer Science, Fuzhou Uni- ver sity, Fuzhou 350002, China) Zhong Hong 通讯地址:(350004 福建省福州市台江区学军路怡丰花园 C 座 101 室)洪中
(收稿日期:2007.9.13)(修稿日期:2007.10.15)

(上接第 69 页)

6 结束语
对于通信较小并且要求可靠性比较高的系统, Modbus 不失 为一种很好的解决方案。尤其近来 Modicon 公司免费开放了 Modbus 协议,更是促进了广泛应用。本数据采集系统采用 并且可 Modbus 协议可靠地实现了上位机和下位机的相互通信, 以实现多达 32 台从机的小型组网, 很好地满足了工业现场的要 求。在生产活动自动化、 通信协议规范化、 信息交流国际化的今 天,充分利用现有的成熟而规范的通信协议能最大限度地节约 图3 Observer 模式的应用实例 成本、 降低开发风险、 提高系统的兼容性和可移植性。 Modbus RTU 规约作为智能仪器仪表领域大量使用的国际化通信协议, 必将得到更加普遍的推广和应用。 作者的创新观点: 本文重点介绍了数据采集仪中上位机和 下位机编程所要注意的问题, 并且介绍了 Modbus 通信协议。 项目的经济效益:23 万元 参考文献 [1]新华控制工程公司.标准 Modbus 协议[Z].2001 Bob Reselman, Richard Peasley. 实用 Visual Basic 6 教程. [2](美) 清华大学出版社.2001.3 师 勇 . ModBUS 协 议 通 讯 的 应 用 . [J] 微 计 算 机 信 [3] 祝 木 田 , 息 .2003.11 [4 ] 胡 平 平 , 王 东 兴 . Modbus 协 议 在 无 线 监 控 系 统 中 的 应 用 . 2005 . 1 作者简介 : 薛海涛, 男, 汉, 江苏南通人, 硕士 1982 年 9 月出生, 男, 研究生, 研究方向:信号的采集与传输;和卫星, 1958 年 3 月 出生, 汉, 江苏大学电气信息工程学院教授 研究方向:信号处理 Biogr aphy:Xue Haitao ,male,born in 1982.9,the Han nationality, postgraduate of Master of Engineering.Major in data collection and transmission;He Weixing,male,the Han nationality, associate professor of Jiangsu University ,mainly engage in signal disposal. (212013 江苏 江苏大学电气学院)薛海涛 和卫星 陈晓平 通讯地址: (212013 江苏 镇江 江苏大学电气学院)薛海涛
(收稿日期:2007.7.23)(修稿日期:2007.8.25)

技 术 创 新

3 结论
通过在组态软件的设计中引入设计模式, 不仅可以降低组 态软件开发的复杂性, 还保证了组态软件的通用性、 灵活性和 可靠性, 使其能够适应不同应用场合下的组态, 并能有效应对 可能出现的变更。事实上, 除了本文介绍的几种设计模式以外, 在面向对象的组态软件开发中, 还有大量的其它模式可以采用, 由于篇幅所限, 无法一一罗列。从应用层面看, 在组态软件设计 中引入设计模式, 都收到了良好的效果。 本文作者创新点: 通过应用 Adapter、 Bridge、 Observer 三种 设计模式成功解决了工业组态软件中通信组态、 界面组态和报 警组态部分的设计难点, 降低了组态软件开发的复杂性, 既实现 了组态软件的通用性和灵活性, 同时又保证了其可用性, 对同类 软件的开发有一定的借鉴意义。 参考文献 [1]Gamma E, Helm R, Johnson R, et al.Design Patterns Elements of Reusable Object- Oriented Software.Addison Wesley, 1995 James Trott.Design Patterns Explained: A New [2]Alan Shalloway, Perspective on Object - Oriented Design (2nd Edition).Addison - Wesley, 2004 李超良, 组态软件架构的研究与设计 . 微计算机信息, [3]刘耀, 2005, (8):86- 87 作者简介 : 洪中 (1979- ), 男 (汉族 ), 福建福州人, 福建师范大学 《P LC 技术应用 200 例》

邮局订阅号: 82-946 360 元 / 年 - 281 -


相关文章:
数据采集系统的历史与发展
1 数据采集系统的发展与通信协议 施耐德电信公司的 Modicom 产品早在 1978 年...1989 年推出的世界上第一个对等的工业控制网络 modbus plus,实现了数据 的高速...
基于MODBUS数据采集系统的设计
三.设计任务及要求 设计并实现基于 Modbus 协议的数据采集系统。系统具有以下基本...发展产生重要影响,而本设计所运用的 Modbus 协议更是现场总线中应用较 为广泛的...
应用Modbus协议实现机房空调等数据采集的编程
机房精密空调等设备,通过 MODBUS 通信协议,应用 C#编程语言,进行温湿度等环境数据的采集编程方法,同时也介绍了空调 的通讯协议使用方法及通信协议编程过程中可能存在...
数据采集
数据采集系统是结合基于 计算机或者其他专用测试平台的测量软硬件产品来实现灵活的...线路上分散 配置,采用地址码进行区分,可以直接接入 MODBUS RTU 协议的组态软件。...
基于MODBUS数据采集系统的设计
三.设计任务及要求 设计并实现基于 Modbus 协议的数据采集系统。系统具有以下基本...发展产生重要影响,而本设计所运用的 Modbus 协议更是现场总线中应用较 为广泛的...
数据采集与处理技术
所有通讯都采用了 Modbus RTU 协议,实现了700多 个数据的可靠通讯。 FW248在整个 DCS 系统中的作用如图2所示。 (四)多人组态 针对大型炼油装置规模大、工段多...
基于ARM9的通用数据采集系统
ARM9 处理器模块,该系统的核心,基于在 Linux 操作系统的基础上,可实现系统 I...UART 接口是用于之间进行通信数据采集板和 ARM9 系统板(使用 MODBUS 通讯协议)...
基于Modbus的数据采集终端设计
本文主要介绍是基于Modbus协议下的数据采集器设计, 能实现信号的采集与 显示,并...从 70 年代起,数据 采集系统发展过程中逐渐分为两类,一类是实验室数据采集系统...
数据采集模块MODBUS协议说明
数据采集模块MODBUS协议说明_信息与通信_工程科技_专业资料。数据采集模块MODBUS协议说明大连理工大学电子与信息工程学院计算机与控制研究所 电话:0411-4708975 数据采集模...
更多相关标签:
modbus协议实现 | modbus 工业数据采集 | modbus数据采集 | modbus数据采集软件 | modbus远程数据采集 | modbus采集器 | 数字量采集模块modbus | modbus通讯协议 |