Modbus通信基础知识总结

Modbus通信基础知识总结

参考资料:
MThings 软件使用说明:(C:\Users\Tony\D\work\program\QT\serve_moter\MThings)
https://blog.csdn.net/zhoutanliang/article/details/106441890
DS5L1系列伺服驱动器用户手册。
http://m.xinje.com/upload/202304/11/202304111045237246.pdf

5.1 Modbus通信协议

Modbus是主从方式通信,其通讯模式半双工,不能同步进行通信。大致分为以下几种:
Modbus-RTU
Modbus-ASCII(ASCII多了帧头和帧尾,也就是说可以有用这个头尾判断一帧字节来判断是否结束,两帧之间要大于3.5个字节时间间隔)
Modbus-TCP
以上三种协议,一个设备只会有一种协议。RTU是主要的,其他是备用。

5.1.1 字符结构

伺服驱动器默认数据格式为:1 位起始位,8 位数据位,1 位停止位。那就是无校验位。
在这里插入图片描述

在这里插入图片描述

下面是国标要求的。

在这里插入图片描述

奇校验:原始码流+校验位 总共有奇数个1
偶校验:原始码流+校验位 总共有偶数个1

5.1.2 帧结构

在这里插入图片描述

帧结构 = 地址 + 功能码+ 数据 + 校验
地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址。
功能码:占用一个字节,常见功能码如下:
查询功能码0x03,读
修改功能码0x06,写
批量修改功能码0x10(修改多个寄存器)

在这里插入图片描述

示例:
主机发送: 01 03 00 00 00 01 84 0A
从机回复: 01 03 02 19 98 B2 7E

在这里插入图片描述

在这里插入图片描述

手册中的示例:
功能码03H:读出寄存器内容
例如:读出U0-05寄存器地址H1005内容(母线电压)。

在这里插入图片描述

在这里插入图片描述

MODBUS 使用一个‘big-Endian’ 表示地址和数据项。这意味着当发射多个字节时,首先发送最高有效位。例如:
16 – 比特 0x1234 发送的第一字节为 0x12 然后 0x34

5.1.2.1 常用功能码详细介绍:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1.2.2 报文间隔

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1.3 CRC校验计算方法

RTU模式:双字节16进制数。
在 RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC - Cyclical Redundancy Checking) 算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。
CRC 包含由两个 8 位字节组成的一个 16 位值。
CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC 高字节为报文发送的最后一个子节。附加在报文后面的 CRC 的值由发送设备计算。接收设备在接收报文时重新计算 CRC 的值,并将计算结果于实际接收到的 CRC 值相比较。如果两个值不相等,则为错误,丢弃该消息帧,并不作任何回应,继续接收下一帧数据。
CRC 的计算, 开始对一个 16 位寄存器预装全 1。 然后将报文中的连续的 8 位子节对其进行后续的计算。只有字符中的 8 个数据位参与生成 CRC 的运算,起始位,停止位和校验位不参与 CRC 计算。
CRC 的生成过程中, 每个 8–位字符与寄存器中的值异或。然后结果向最低有效位(LSB)方向移动(Shift) 1 位,而最高有效位(MSB)位置充零。 然后提取并检查 LSB:如果 LSB 为 1, 则寄存器中的值与一个固定的预置值异或;如果 LSB 为 0, 则不进行异或操作。
这个过程将重复直到执行完 8 次移位。完成最后一次(第 8 次)移位及相关操作后,下一个 8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复 8 次。当所有报文中子节都运算之后得到的寄存器忠的最终值,就是 CRC。当 CRC 附加在报文之后时,首先附加低字节,然后是高字节。

在这里插入图片描述

CRC算法介绍:
https://blog.csdn.net/qq_42446721/article/details/127054205
http://outputlogic.com/?page_id=321
https://github.com/txzing/modbus_crc_verilog

OutputLogic.com 可以自动生成所需校验。

5.2 RS485通信

RS485接口组成的半双工网络,一般是两线制,多采用屏蔽双绞线传输,这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。特点:
1)RS-485的电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
2)RS-485的数据最高传输速率为10Mbps
3)RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。
4)RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米,另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。
5)因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。因为RS485接口组成的半双工网络,一般只需二根连线,
RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。“使能”端是用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。当 RS485_DE 为高电平时,SP3485 处于发送过程;当RS485_DE 为低电平时,SP3485 处于接收过程
接收器也作与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV至6V之间。

单工、半双工和全双工的定义:
1、如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。
2、如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。
3、如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。

在这里插入图片描述
在这里插入图片描述

信捷伺服驱动

默认为偶校验,1个停止位。19200bps
位置模式分内部和外部,外部是通过驱动器上的端子设置的。
在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值