优秀的编程知识分享平台

网站首页 > 技术文章 正文

ABB机器人Modbus RTU通讯协议 abb机器人udp通讯

nanyue 2024-12-20 17:45:19 技术文章 4 ℃

一、定义Modbus通信协议,最主要的是Modbus RTU (RS-485总线)转232接线ABB的COM口,Modbus ASCII和Modbus TCP(以太网)三种。Modbus RTU协议,一般大家说的基于串口通信的Modbus通信协议都是指Modbus RTU通信协议。Modbus ASCII协议:报文使用 ASCII 字符。ASCII 格式使用纵向冗余校验和。Modbus ASCII 报文由冒号 (“:”)开始 和换行符 (CR/LF) 结尾构成。Modbus TCP协议,则是在RTU协议上加一个MBAP报文头,并且由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码的,所以就常用一句比较通俗的话来说:Modbus TCP协议就是ModbusRTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码字节就OK。通讯模式:轮询(读0.1s,写0.1s)二、协议



  • 存储区

读写特性

数据类型

只读线圈

读写线圈

只读寄存器

读写寄存器

只读不可写

线圈(BOOL)

输入线圈

输出线圈

输入寄存器

输出寄存器

可读可写

寄存器(num)

1区

0区

3区

4区

寄存器地址范围

存储区类型

相对地址

长地址

短地址

1区

0-65535

100001-165535

10001-19999

0区

0-65535

000001-065535

00001-09999

3区

0-65535

300001-365535

30001-39999

4区

0-65535

400001-465535

40001-49999




  • 通讯格式

波特率:4800 9600 19200数据位:8校验位:O/E/N停止位:1奇校验ODD(奇数个1为0)偶校验EVEN(偶数个1为0)无校验NONE

起始

1

2

3

4

5

6

7

8

奇偶

停止

0

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

1




  • 发送格式

发送格式:设备地址+功能代码+数据(起始寄存器+寄存器数量)+校验(CRC)



接受格式:设备地址+功能代码+数据(字节计数+具体数据)+校验(CRC)





  • 功能码

Modbus的功能码使用16进制

读取输出线圈

读取输入线圈

读取输出寄存器

读取输入寄存器

写入单个线圈

写入单个寄存器

写入多个线圈

写入多个寄存器

0X01

0X02

0X03

0X04

0X05

0X06

0X0F

0X10

三、CRC校验在RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC - Cyclical RedundancyChecking) 算法的错误检验域。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。.

ABB机器人Modbus RTU通讯协议

http://bbs.plcjs.com/forum.php?mod=viewthread&tid=501564&fromuid=1

(出处: PLC论坛-全力打造可编程控制器专业技术论坛)

#非标自动化#

Tags:

最近发表
标签列表