golang modbus 通信(一)modbus rtu和modbus ascii介绍

一、什么是modbus rtu 和modbus ascii

百度百科:

1  Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。

2 大多数Modbus设备通信通过串口EIA-485物理层进行。

3 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。

 我的理解:modbus就是一种通信协议,它规定了协议的格式,即生成的命令格式,读取的格式。在使用485串口进行通信的设备中,只要读取,写入(一发,一收)都遵循协议的格式就可以正常通信。

如图:

二、区别与联系

用一张表格来展示主要的异同(我以我接触到的modbus 通信格式为例)。

 

开始符

地址位

功能码

数据区

校验码

结束符

modbus rtu

相同

相同

相同

CRC

modbus ascii

:(英文冒号)

相同

相同

相同

LRC

CR,LF(回车加换行)

以一条命令示例:

rtu   010300010002CRC
ascii :010300010002LRCCR/LF

相同点:

01设备地址位 

03 功能码

0001数据区

0002 数据区

不同点

ascii有开始符合结束符,rtu的校验方式的crc,ascii的校验方式是lrc。

三、crc和lrc

他们是modbus对一条消息的校验。以上面的命令为例'010300010002CRC'比如rtu模式, 设备A在生成一条命令时会使用'010300010002'生成crc校验码,然后将'010300010002'和'CRC'拼成一条完整的命令。发送给设备B,设备B也会用'010300010002'生成crc校验码,当生成的校验码和消息中的校验码相同,则接受这条消息,否则不接受。类似jwt中的token,都是对一段信息进行处理然后拼起来组成一条完整的消息,接收方会使用相同的方式,检验消息的内容是否正确。

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值