查看: 17222|回复: 69

大咖问答09期: 对modbus协议打破沙锅问到底,制定通信协议

  [复制链接]

该用户从未签到

发表于 2020-6-9 18:12:30 | 显示全部楼层 |阅读模式
分享到:

本期有幸邀请到大咖嘉宾许孝刚老师@许孝刚,参加电路城论坛第九期大咖问答(6月 8日 ~6月 21日)。

大咖个人简介:
许孝刚,山东大学工程硕士,副高职称,技术总监,10 余年嵌入式系统开发经验,国家软考“嵌入式系统设计师”

本期话题:
modbus到嵌入式开发涉及的各类通信协议

本期话题涉及的内容:
1、什么是通信协议,通信协议的作用是啥。
2、什么是modbus通信协议,modbus通信协议有何作用。
3、modbusRTU 协议和 modbus TCP协议的应用场景。
4、嵌入式开发中如何制定通信协议。
5、制定通信协议需要考虑哪些问题。
6、其它通信协议的讨论交流。

本期大咖问答由论坛用户SquallBest(丹东汉唐网络科技)赞助3个调试器,将在问答结束后挑选3名参与人免费赠予 5343.jpg
下面欢迎大家就modbus与通信协议方面的问题向@许孝刚,请直接在本主题贴底下回帖提问。
或者有其他相关modbus与各类通信协议方面的问题,也欢迎大家积极提问,大咖嘉宾会尽快给予回答。

往期《大咖问答》栏目内容:






回复

使用道具 举报

该用户从未签到

发表于 2020-6-11 10:37:16 | 显示全部楼层
bloong 发表于 2020-6-10 14:06
@许孝刚
大神能讲讲 ModBus在PLC和变频器上的应用吗?

目前我的modbus的应用都是在单片机上。但是对协议来讲,都是一样的,无非是寄存器的读写。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 10:37:16 | 显示全部楼层
Q向涵Q 发表于 2020-6-10 16:09
市面上的ModBus协议千万种,有没有哪种是标准协议的呢

关于modbus协议,我们国家有标准。
GB/T 19582-2008 <<基于Modbus协议的工业自动化网络规范>>
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 10:37:16 | 显示全部楼层
Q向涵Q 发表于 2020-6-10 16:10
modbusRTU 协议和 modbus TCP协议用的是那种校验可靠呢,有的是用和校验,异或校验,16位CRC校验,32位CRC校验

modbus RTU 协议用的是 16位CRC校验,比较可靠。
modbus TCP 协议,应用层没有校验,是靠的TCP协议底层的校验,也是可靠的。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 10:37:16 | 显示全部楼层
Q向涵Q 发表于 2020-6-10 16:11
希望能有标准协议参考,让我的通讯更加规范!求参考资料

标准协议,就是国家标准那三本。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 10:37:16 | 显示全部楼层
dadaddy 发表于 2020-6-10 16:13
怎样才能快速理解modbus呢

1、网上搜索下modbus协议,有个大概影响。
2、安装modbus协议模拟软件,进行指令的收发测试,帮助理解。
3、阅读国家标准,深入理解。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 10:37:16 | 显示全部楼层
Q向涵Q 发表于 2020-6-10 16:17
modbus协议接收校验不通过,是否直接丢弃数据?重新等待补发数据?

对modbus 从机来讲,校验不通过,丢弃。

对modbus主机来讲,接收的数据校验不通过,重发。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 13:02:41 | 显示全部楼层
lvxuehua 发表于 2020-6-11 11:14
请问许老师,在现在暖气热力表上的那个是用的MODBUS的总线吗?

不知道你说的表是啥样的,不清楚。
注意有的暖气热力表是mbus,这个不是modbus,别搞混了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 13:02:41 | 显示全部楼层
SquallBest 发表于 2020-6-11 11:10
我在使用过程当中发现,很多公司的设备在ModBus协议实现方面都有不同的取舍。请问如何去辨别设备对协议实现的区别?

建议你说的更清楚些,我没明白你的意思
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 13:02:41 | 显示全部楼层
Q向涵Q 发表于 2020-6-11 11:19
许老师,我想问下单片机串口有9位数据,可以做奇偶校验,但是几年几乎都看不到用奇偶校验了,是否用奇偶校验会增强modbus通讯的可靠性?并且奇偶校验可以代替CRC16校验?

奇偶校验有一点点作用,它的作用是对一个字节进行校验。
CRC16 是对一帧数据进行校验。

奇偶校验远远代替不了CRC16,目前很多通信都是无奇偶校验,但是CRC校验是有的。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 13:02:41 | 显示全部楼层
SquallBest 发表于 2020-6-11 11:19
如果想对ModBus传输数据进行加密传输,请问有没有什么好的推荐?

可以讲modbus协议中的数据加密,比如2字节的寄存器,加密之后还是2字节,这是属于应用程序层面加密。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-11 13:02:41 | 显示全部楼层
EricCheng 发表于 2020-6-11 11:38
ASCII传输方式和RTU传输方式有什么优缺点?分别应用在哪里?

RTU输出的效率高,ASCII效率低,比如一个电压 220V,如果使用ASCII传输,需要传输3个字符,‘2’,‘2’,‘0’,一共3个字符,也就是3个字节。而使用RTU的话,就是一个字节0xDC。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-12 13:43:45 | 显示全部楼层
1597685605 发表于 2020-6-11 13:02
我想问一下那个16 CRC效验原理,一般这种效验是否合理,有什么数学上的依据,不同的数据会不会效验的结果是一样的

CRC16 网上都有算法,这个是数学计算,我也只是会用,没法给你讲明白,详细的计算,网上查查。
对于不同的数据,会有一定的概率生成的校验码一样,这叫“CRC 碰撞”,16位的CRC,碰撞的概率比较小,在我们日常的计算中,基本是够用的。
想降低碰撞的话,可以采用CRC32,甚至更高bit的算法,比如CRC128,等等。
我们都知道,bit数越多,发生碰撞的概率越小。

至于为何我们使用CRC16呢,因为这个是最低廉的算法工具了,复杂度低,计算开销小,同时能够满足我们的日常计算需要。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-12 13:43:45 | 显示全部楼层
云中飞啊飞 发表于 2020-6-11 14:04
我司目前用的传感器就是用的MOBUS协议的,请问这种协议安全性如何?

标准的modbus协议是没有加密的,建议你们在应用中加密,比如对寄存器数据进行加密。
考虑用AES等加密算法。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-12 13:43:45 | 显示全部楼层
yangshoot 发表于 2020-6-11 19:26
modbus是属于半双工。按照标准协议,判断数十ms后总线上没有数据,才算数据处理完成。总线利用率比较低。
就这个问题,大家有没有不同的理解?

准确来讲“modbus是属于半双工”这个说法是错的。
modbus 是协议层的概念,双工是物理层的概念,通常我们使用485做物理层,因此就形成了您说的提法。

modbus RTU运行在RS232上,232是双工的。modbus运行在以太网上,以太网是双工的。

主要是因为modbus 采用了一问一答的方式,导致协议效率低一些。
至于您说的“判断数十ms后总线上没有数据,才算数据完成”,这个串行链路上取决于通信的波特率,不一定非得这么长时间。

点评

谢谢许老师回答。  发表于 2020-6-21 20:37
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-12 13:43:45 | 显示全部楼层
yinwuqing 发表于 2020-6-12 09:53
许工,您好!控制器能设置为两种传输模式,即ASCII与RTU。那么在一个Modbus网络上,设备在使用的时候传输模式可以自由设置吗?这两者传输模式有什么区别呢?其优劣势体现在哪些方面?

使用的时候,一般不会自由设置,通信双方一般都在通信前做好约定,到底是RTU还是ASCII。
传输区别,你看下前面的回复,主要是传输效率的差别。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-12 13:43:45 | 显示全部楼层
yinwuqing 发表于 2020-6-12 10:06
标准的Modbus串行网络采用哪些错误检测机制?数据传输中一旦丢帧会报错吗?如果数据校验失败,协议中会提示重新发送吗?

串行链路中用CRC16校验来做帧的校验检测。
对主机来将,发出去的帧丢了的话,过了超时时间,没有回来应答,那就需要重发。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-12 13:43:45 | 显示全部楼层
wdzfd-25908 发表于 2020-6-12 13:09
老师你好,在Modbus系统有多个站点(可能多个主站和多个从站)需要互联通信的应用中有没有什么好的办法保证可靠通信?

什么传输链路?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-12 13:43:45 | 显示全部楼层
ALTIUM2 发表于 2020-6-10 22:44
徐老师您好,想请教几个问题:

1.现如今工控安全性越来越重要,目前比较成熟的modbus加密方案有哪些;

目前我接触到的大部分应用,数据都没有加密,如果需要加密的话,可以采用AEC算法对寄存器进行加密。
比如对10个寄存器加密,加密之后数据还是20个字节,这样在应用中,进行解密。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-15 10:20:11 | 显示全部楼层
wdzfd-25908 发表于 2020-6-12 13:09
老师你好,在Modbus系统有多个站点(可能多个主站和多个从站)需要互联通信的应用中有没有什么好的办法保证可靠通信?

485这块,想保证可靠性需要:
1、做好硬件接口的保护。
2、提高软件的可靠性。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-16 16:55:54 | 显示全部楼层
yinwuqing 发表于 2020-6-16 12:55
一条RTU协议的命令可以转化为ASCII协议的命令吗?数据存储方式是大端还是小端存储方式?

可以进行转换,大端
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-19 17:14:45 | 显示全部楼层
archimedas 发表于 2020-6-19 14:32
modbus是否可以以光纤作为导线或者说市面上有没有类似的设备,来延长通讯距离的

您所说的这个,与modbus协议无关,modbus仅是协议层的东西
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-19 17:15:10 | 显示全部楼层
archimedas 发表于 2020-6-19 14:23
用于ModBus的测试软件有哪些

modbus poll,modbus slave
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-6-19 17:16:44 | 显示全部楼层
wdzfd-25908 发表于 2020-6-17 09:46
老师你好! 可否具体描述下要考虑的地方或者有实战的做法,我这考虑多主机的通信冲突解决就感觉比较麻烦,因为485是半双工的,有时还得考虑通信效率和实时性等影响。

可以加qq 308777087,充分的实时交流
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-3-16 21:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-7-15 12:52:59 | 显示全部楼层
    ALTIUM2 发表于 2020-6-10 22:44
    徐老师您好,想请教几个问题:

    1.现如今工控安全性越来越重要,目前比较成熟的modbus加密方案有哪些;

    加密要用自定义的协议了,如果用modbus传加密的协议意义不大,正常AES128是16字节一包,AES256是32字节一包,加上封装就大了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-5-31 10:17
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-6-10 14:06:08 | 显示全部楼层

    回帖奖励 +1 与非币

    @许孝刚
    大神能讲讲 ModBus在PLC和变频器上的应用吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-3-5 09:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2020-6-10 16:09:17 | 显示全部楼层
    市面上的ModBus协议千万种,有没有哪种是标准协议的呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-3-5 09:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2020-6-10 16:09:48 | 显示全部楼层
    modbusRTU 协议和 modbus TCP协议的区别是那些呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-3-5 09:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2020-6-10 16:10:52 | 显示全部楼层
    modbusRTU 协议和 modbus TCP协议用的是那种校验可靠呢,有的是用和校验,异或校验,16位CRC校验,32位CRC校验
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-3-5 09:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2020-6-10 16:11:59 | 显示全部楼层
    希望能有标准协议参考,让我的通讯更加规范!求参考资料
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-2-25 17:02
  • 签到天数: 15 天

    连续签到: 2 天

    [LV.4]偶尔看看III

    发表于 2020-6-10 16:13:02 | 显示全部楼层
    怎样才能快速理解modbus呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-3-5 09:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2020-6-10 16:14:09 | 显示全部楼层
    modbusRTU 协议和 modbus TCP协议的应用场景分别是哪些?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-3-5 09:29
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2020-6-10 16:17:05 | 显示全部楼层
    modbus协议接收校验不通过,是否直接丢弃数据?重新等待补发数据?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-9-28 22:37
  • 签到天数: 456 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2020-6-10 22:44:12 | 显示全部楼层
    徐老师您好,想请教几个问题:

    1.现如今工控安全性越来越重要,目前比较成熟的modbus加密方案有哪些;
    2.哪种modbus加密方案在性能和加密性中比较均衡,可以实现用较少的性能实现较好的加密效果,适合性能一般的产品用;

    灰常感谢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 20:52 , Processed in 0.509496 second(s), 85 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.