楼主: xiaocaihong

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

  [复制链接]
  • TA的每日心情
    奋斗
    昨天 20:18
  • 签到天数: 1408 天

    连续签到: 9 天

    [LV.10]以坛为家III

    发表于 2020-6-11 14:04:07 | 显示全部楼层
    分享到:
    我司目前用的传感器就是用的MOBUS协议的,请问这种协议安全性如何?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-8-17 11:16
  • 签到天数: 131 天

    连续签到: 1 天

    [LV.7]常住居民III

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:43
  • 签到天数: 2291 天

    连续签到: 373 天

    [LV.Master]伴坛终老

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:43
  • 签到天数: 2291 天

    连续签到: 373 天

    [LV.Master]伴坛终老

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

    使用道具 举报

  • TA的每日心情
    开心
    2022-8-6 16:18
  • 签到天数: 72 天

    连续签到: 1 天

    [LV.6]常住居民II

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

    使用道具 举报

    该用户从未签到

    发表于 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校验来做帧的校验检测。
    对主机来将,发出去的帧丢了的话,过了超时时间,没有回来应答,那就需要重发。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-15 00:00 , Processed in 0.257418 second(s), 33 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.