通信格式
单位定义
下面介绍了示例和表格中使用的一些符号:
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 Bytes | 2 Bytes | 2 Bytes | 1 Byte | n Bytes |
示例(使能伺服) | 0x00 0x01 | 0x00 0x02 | 0x00 0x03 | 0x0B | 0x08 0x01 |
响应命令格式
格式 | 事务标识 (u16) | 协议 (u16) | 长度 (u16) | 寄存器(u8) | 状态位(u8) | 回复参数 (参照各指令说明) |
---|---|---|---|---|---|---|
长度 | 2 Bytes | 2 Bytes | 2 Bytes | 1 Byte | 1 Byte | n Bytes |
示例(使能伺服) | 0x00 0x01 | 0x00 0x02 | 0x00 0x02 | 0x0B | 0x00 | none |
响应指令格式的状态位
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
---|---|---|---|---|---|---|---|
保留 | 1存在错误0 正常 | 1 存在警告0 正常 | 1不可执行运动0正常 | 保留 | 保留 | 保留 | 保留 |
注意:
(1) 事务标识:一般每次通信之后就要加1以区别不同的通信数据报文。 (2) 协议标识符:0x00 0x02表示ModbusTCP协议。 (3) 长度:表示接下来的数据长度,单位为字节。 (4) 寄存器:设备地址
关于用户使用通信协议组织数据的大小端问题:
Modbus-TCP 控制协议:
- 报文头区的事务标识 (u16 )按大端序解析。
- 报文头区的协议标识 (u16)按大端序解析。
- 报文头区的长度 (u16) 按大端序解析。
- 参数区 32 位数据类型 (fp32, int32) 按小端序解析。
- 参数区涉及 GPIO 操作的 (u16 )按大端序解析。
自动上报数据解析:
- 整型数据 (16/32 位 ) 按大端序解析。
- 浮点型 (fp32) 数据按小端序解析。
示例
假设变量 x 的类型为 int,位于地址 0x100 处,有一个十六进制的数 0x12345678(高 位为 0x12,低位为 0x78),地址范围为 0x100-0x103 的字节顺序依赖于机器的类型:
大端法:
0x100 | 0x101 | 0x102 | 0x103 | ||
---|---|---|---|---|---|
... | 0x12 | 0x34 | 0x56 | 0x78 | ... |
小端法:
0x100 | 0x101 | 0x102 | 0x103 | ||
---|---|---|---|---|---|
... | 0x78 | 0x56 | 0x34 | 0x12 | ... |