Modbus那些事

Modbus在江湖上已经有三十多年的历史了,最早由莫迪康(Modicon)于1979年发明,因其简单实用,且易开发,迅速赢得了工程师的喜爱,已应用到成千上万的控制器中,目前也成为我国国家标准工业通信协议中的重要一员。

记得第一次接触Modbus是在08,09年间,那时正值新能源发电大力兴起之时,为了响应国家节能减排的号召,一时间,大量的单位开始研发光伏发电,Modbus也成了光伏逆变器必配的一种通讯协议。当第一次面对开发这个协议软件的时候,我是手足无措,因为不懂,所以无知,于是就晚上大量查阅网上资料,白天写程序调试,最后终于成功将Modbus协议引入逆变器。自此,对Modbus有了初步的认识。其实软件的流程图就在协议的文档中,只要扎实理解了协议的描述,就能开发出Modbus通讯软件。

Modbus具有以下几个特点:

(1)标准、开放,用户可以免费、放心地使用Modbus协议,目前,支持Modbus的厂家超过几百家,支持Modbus的产品超过几百种。

(2)Modbus可以支持多种电气接口,如RS-232,RS422,RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

MODBUS 是一个请求/应答协议,并且提供功能码规定的服务。常用的有

Modbus ASCII,

Modbus RTU,

Modbus TCP/IP

RTU是必须要支持的,其余可选,Modbus RTU 帧最大为 256 字节。

如果你留意就会发现,其实市场上的产品,好多并不是完全遵守Modbus标准,有的硬件工程师对电气标准也不是很清楚,其实Modbus对电缆规格,长度,以及波特率,终端电阻,接地,连接器,通信状态的LED指示,都有电气标准,我一直有一个观点,如果有既有的标准,那么你的开发就应该建议按照标准来执行。

有兴趣的童鞋可以看看你接触到的是否按照了标准来执行,举个简单的例子,标准中对LED指示的要求。

在RTU模式的软件实现上,

默认的通信配置是波特率9600bps,8位数据位,偶校验,一位停止位。

奇校验和无校验是可选的。系统必须支持默认的配置,并且对配置错误有异常管理。

由发送设备将 Modbus报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。在RTU模式,报文帧由时长至少为 3.5 个字符时间的空闲间隔

在软件的实现上,主要是对帧开始,帧结束的中断,串口接收中断的实现,在高波特率的情况下,必须严格按照标准的要求实现帧检测,协议文档中都有状态机和流程图供开发工程师参考,每种波特率,对发送方,要求其精度必须高于1%,而对接收方,必须允许2%误差。Modbus报文帧格式如下:

另外一点需要注意的就是Modbus是大端模式,就是比如一个16位的电流有效值,是先发送高字节,在发送低字节,但在CRC校验域切记是先发送低字节,在发送高字节,每个字节是先发送低位在发送高位,如下图所示。

对异常诊断的管理是每一个通讯协议都要求的,经常会有工程师只注意实现正常通信的功能,对异常的管理不重视,这样在通信异常的时候,就不便主机的诊断。

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2015-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏农夫安全

通过HTTP请求方法进行Fuzz绕过测试

“ 今天碰到一个网站,明明是GET传输,却使用了REQUEST接收,其实这也没什么,但是发现某waf的安全级别好像低了很多.这给我激动爬起来就是一顿怼(本地测...

280120
来自专栏友弟技术工作室

工欲善其事,必先利其器之------MAC工具类

前面分享了一篇《工欲善其事,必先利其器之------Ubuntu工具类》,今天分享MAC的工具。 由于我是一个程序员可能,工具偏开发一点。 ? 通用类的工具 ...

37680
来自专栏FreeBuf

周末娱乐:讲真,这才是我所说黑客的定义!

看到一篇挺好玩的文章,哈哈,翻译过来你们感受一下这geekstyle的魔性。 我一基友,在俄罗斯bash.org上po了一个帖子,贼6!所以我决定转一下,po到...

19850
来自专栏潇涧技术专栏

Head First Stanford NLP (3)

(深入浅出Stanford NLP 可视化篇) 本文介绍与Stanford NLP相关的一些可视化工具。

15710
来自专栏北京马哥教育

动画演示9个超有趣的Linux命令

作者 | 佚名 来源 | 51CTO 糖豆贴心提醒,本文阅读时间6分钟,文末有秘密! Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是...

42790
来自专栏FreeBuf

警惕SNMP默认团体名导致的网络入侵

*本文作者:ipenox;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

25920
来自专栏黑白安全

思科智能安装协议遭到滥用,数十万关键基础设施倍感压力

外媒 4 月 6 日消息,思科发布安全公告称其智能安装(SMI)协议遭到滥用,数十万设备在线暴露。目前一些研究人员已经报告了用于智能安装客户端(也称为集成分支客...

10940
来自专栏小白课代表

WPS Office Play版

25130
来自专栏IT平头哥联盟

webpack4配置详解之慢嚼细咽

  经常会有群友问起webpack、react、redux、甚至create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中,也...

11140
来自专栏Albert陈凯

网络IO(NIO)之阻塞、非阻塞、同步、异步总结

网络IO之阻塞、非阻塞、同步、异步总结 1、前言   在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型...

30940

扫码关注云+社区

领取腾讯云代金券