进程数据对象 (PDO)
与 CANopen 一样,使用 Modbus 时,可以为输入和输出值配置进程映像。此映像仅包含一个或多个对象的数据值,而不含其他信息,如长度、索引或子索引。因此可使用单条消息同时读取或写入多个对象。
配置
映像的配置称为“映射”,并写入以下对象中:
- 3502h 用于 Modbus Rx(主站 → 从站)PDO 映射
- 3602h 用于 Modbus Tx(从站 → 主站)PDO 映射
可通过 Modbus 函数代码 2Bh 的消息写入对象 3502h 和 3602h。
传送
将数据按顺序写入消息,无间断和对齐。
如果需要对齐(如 16 位对齐),则可在消息中包含额外的“虚拟对象”。只有数据值为“0”时才会传送虚拟对象。下表中列出了这些对象。
索引 | 数据类型 |
---|---|
0002h | 有符号整数(8 位) |
0003h | 有符号整数(16 位) |
0004h | 有符号整数(32 位) |
0005h | 无符号整数(8 位) |
0006h | 无符号整数(16 位) |
0007h | 无符号整数(32 位) |
映射如下:
- PDO RX 映像从 Modbus 寄存器地址 6000d (1770h) 开始。
- PDO TX 映像从 Modbus 寄存器地址 5000d (1388h) 开始。
示例
将在映射中设定以下对象:
- 3602h:00h =“6h”(映射 6 个值)
- 3602h:01h =“60410010h”(对象 6041h:00h,映射长度 16 位)
- 3602h:02h =“00050008h”(虚拟对象 0005h:00h,映射长度 8 位)
- 3602h:03h =“60610008h”(对象 6061h:00h,映射长度 8 位)
- 3602h:04h =“60640020h”(对象 6064h:00h,映射长度 32 位)
- 3602h:05h =“60440010h”(对象 6044h:00h,映射长度 16 位)
- 3602h:06h =“60FD0020h”(对象 60FDh:00h,映射长度 32 位)
为对象 6061h:00h 映射后,将插入虚拟对象,从而可将下一个对象 6064h:00h 对齐到 32 位。
Rx 消息:主站向从站发送以下消息:
Tx 消息:从站向主站发送以下响应: