dev
Modbus 地址表
让 PLC 直接驱动虚拟机台,用于「PLC 逻辑先在虚拟设备上跑通」。
开启
设置 → 接口 → Modbus TCP,默认监听 0.0.0.0:502,Unit ID = 1。
502 端口在 Windows 上需要管理员权限。装到非标准端口(如 5020)更省事, 大多数 PLC 侧都能配端口。
数据类型约定
| 项 | 约定 |
|---|---|
| 字节序 | 大端(Modbus 标准),32 位量高字在前 |
| 位置量 | int32,单位 0.001 mm(即 120500 = 120.500 mm) |
| 角度量 | int32,单位 0.0001 deg |
| 速度量 | int32,单位 0.001 mm/s |
| 布尔量 | 线圈 / 离散输入 |
统一用定点整数而不是浮点:不同 PLC 对 IEEE754 的字序处理不一致, 用整数能彻底躲开这个经典麻烦。
线圈(读写,功能码 01/05/15)
| 地址 | 名称 | 说明 |
|---|---|---|
| 00001 | CMD_HOME_ALL |
上升沿触发全轴回零 |
| 00002 | CMD_STOP_ALL |
置 1 立刻停止所有轴 |
| 00003 | CMD_RESET |
上升沿清报警 |
| 00011 | CMD_X_MOVE |
上升沿按 40011 的目标值运动 |
| 00012 | CMD_Y_MOVE |
同上,目标在 40013 |
| 00013 | CMD_Z_MOVE |
同上,目标在 40015 |
| 00021 | CMD_GRAB |
上升沿抓一帧 |
| 00031–00046 | DO_01–DO_16 |
数字输出 |
离散输入(只读,功能码 02)
| 地址 | 名称 | 说明 |
|---|---|---|
| 10001 | ST_READY |
所有轴已回零且无报警 |
| 10002 | ST_BUSY |
有轴在运动 |
| 10003 | ST_ALARM |
有报警未清除 |
| 10004 | ST_ESTOP |
急停被按下 |
| 10011 | ST_X_INPOS |
X 到位 |
| 10012 | ST_Y_INPOS |
Y 到位 |
| 10013 | ST_Z_INPOS |
Z 到位 |
| 10031–10046 | DI_01–DI_16 |
数字输入 |
保持寄存器(读写,功能码 03/06/16)
| 地址 | 名称 | 类型 | 说明 |
|---|---|---|---|
| 40011–40012 | X_TARGET |
int32 | X 目标位置,0.001 mm |
| 40013–40014 | Y_TARGET |
int32 | Y 目标位置 |
| 40015–40016 | Z_TARGET |
int32 | Z 目标位置 |
| 40021–40022 | SPEED |
int32 | 运动速度,0.001 mm/s |
| 40031 | CALIB_PROC |
uint16 | 1=C1 2=C2 3=C3 4=C4 5=C5 6=C6 |
| 40032 | CALIB_CMD |
uint16 | 1=开始 2=中止 |
输入寄存器(只读,功能码 04)
| 地址 | 名称 | 类型 | 说明 |
|---|---|---|---|
| 30011–30012 | X_POS |
int32 | X 当前位置,0.001 mm |
| 30013–30014 | Y_POS |
int32 | Y 当前位置 |
| 30015–30016 | Z_POS |
int32 | Z 当前位置 |
| 30021 | ALARM_CODE |
uint16 | 当前报警码,0 = 无 |
| 30031 | CALIB_STATE |
uint16 | 0=空闲 1=运行 2=通过 3=失败 |
| 30032–30033 | CALIB_DEV_UM |
int32 | 最近一次标定偏差,µm |
一个完整的 PLC 侧流程
1) 等 ST_READY = 1
2) 写 X_TARGET = 120500, Y_TARGET = 96000
3) CMD_X_MOVE ↑, CMD_Y_MOVE ↑
4) 等 ST_X_INPOS = 1 且 ST_Y_INPOS = 1
5) CMD_GRAB ↑
6) 写 CALIB_PROC = 1, CALIB_CMD = 1
7) 等 CALIB_STATE ≥ 2
8) 读 CALIB_DEV_UM,与容差比较
【坑】上升沿触发的命令位,PLC 侧必须自己复位。
一直保持为 1 不会重复触发,但会让 ST_BUSY 的时序看起来很怪。
最后更新: 2026/9/21
这页有帮助吗?