Skip to content

通信格式

单位定义

下面介绍了示例和表格中使用的一些符号:

U8: 1 Byte, 8位无符号整型
U16: 2 Bytes,16位无符号整型
FP32: 4 Bytes, 浮点数
str: 字符串

系统重置: 用户刚刚进入模式切换后的状态或更改了一些设置(如 TCP 偏移、灵敏度等)。它将终止机器人正在进行的移动并清除所有缓存命令,这与 STOP 状态相同。

TCP私有协议格式

tcp私有协议:

私有协议是一种应用层消息传输协议,包括 ASCII、RTU 和 TCP 三种消息类型。标准 Modbus 协议物理层接口包括 RS232、RS422、RS485 和以太网接口,采用主/从通信。 私有协议流程: (1)建立 TCP 连接 (2)准备 modbus 报文 (3)使用 send 命令发送报文 (4)在同一连接下等待应答 (5)使用 recv 命令读取报文,完成一次数据交换 (6)通信任务结束时,关闭 TCP 连接

参数

默认 TCP 端口:502 协议:0x00 0x02 控制(当前只有这一个)

请求指令格式:

格式事务标识 (u16)协议 (u16)长度 (u16)寄存器 (u8)参数 (参照各指令说明)
长度2 Bytes2 Bytes2 Bytes1 Byten Bytes
示例(使能伺服)0x00 0x010x00 0x020x00 0x030x0B0x08 0x01

响应命令格式

格式事务标识 (u16)协议 (u16)长度 (u16)寄存器(u8)状态位(u8)回复参数 (参照各指令说明)
长度2 Bytes2 Bytes2 Bytes1 Byte1 Byten Bytes
示例(使能伺服)0x00 0x010x00 0x020x00 0x020x0B0x00none

响应指令格式的状态位

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
保留1存在错误0 正常1 存在警告0 正常1不可执行运动0正常保留保留保留保留

注意

(1) 事务标识:一般每次通信之后就要加1以区别不同的通信数据报文。 (2) 协议标识符:0x00 0x02表示ModbusTCP协议。 (3) 长度:表示接下来的数据长度,单位为字节。 (4) 寄存器:设备地址

关于用户使用通信协议组织数据的大小端问题:

Modbus-TCP 控制协议:

  1. 报文头区的事务标识 (u16 )按大端序解析。
  2. 报文头区的协议标识 (u16)按大端序解析。
  3. 报文头区的长度 (u16) 按大端序解析。
  4. 参数区 32 位数据类型 (fp32, int32) 按小端序解析。
  5. 参数区涉及 GPIO 操作的 (u16 )按大端序解析。

自动上报数据解析:

  1. 整型数据 (16/32 位 ) 按大端序解析。
  2. 浮点型 (fp32) 数据按小端序解析。

示例

假设变量 x 的类型为 int,位于地址 0x100 处,有一个十六进制的数 0x12345678(高 位为 0x12,低位为 0x78),地址范围为 0x100-0x103 的字节顺序依赖于机器的类型:

大端法:

0x1000x1010x1020x103
...0x120x340x560x78...

小端法:

0x1000x1010x1020x103
...0x780x560x340x12...