MODBUS指令使用说明
- 格式:doc
- 大小:122.50 KB
- 文档页数:5
MODBUS指令使用说明
一、指令形式(都为16位指令,常开/闭、边缘触发):
功能码 功能 MODBUS指令 操作数
01H 读线圈指令 COLR OP0:从站站号
OP1:MODBUS线圈地址
OP2:线圈个数
OP3:本地线圈地址
02H 读输入线圈指令 INPR OP0:从站站号
OP1:MODBUS线圈地址
OP2:线圈个数
OP3:本地线圈地址
03H 读寄存器内容 REGR OP0:从站站号
OP1:MODBUS寄存器地址
OP2:寄存器个数
OP3:本地寄存器地址
04H 读输入寄存器内容 INRR OP0:从站站号
OP1:MODBUS寄存器地址
OP2:寄存器个数
OP3:本地寄存器地址
05H 写单个线圈指令 COLW OP0:从站站号
OP1:MODBUS线圈地址
OP2:本地线圈地址
06H 写单个寄存器指令 REGW OP0:从站站号
OP1:MODBUS寄存器地址
OP2:本地寄存器地址
10H 写多个寄存器指令 MRGW OP0:从站站号
OP1:MODBUS寄存器地址
OP2:寄存器个数 OP3:本地寄存器地址
0FH 写多个线圈指令 MCLW OP0:从站站号
OP1:MODBUS线圈地址
OP2:线圈个数
OP3:本地线圈地址
注:当从站站号填写0时,以广播模式进行发送。
二、MODBUS通讯协议:
RTU格式
三、通讯变量的地址分配:
位元件 Modbus地址
(16进制) 字元件 Modbus地址
(16进制)
M0~M1535 0000H~05FFH D0000~D7999 1000H~2F3FH
X0~X377 4000H~40FFH D8000~D8255
3000H~30FFH
Y0~Y377 4800H~48FFH T0~T255 3C00H~3CFFH
S0~S999 5000H~53E7H C0~C199 3E00H~3EC7H
M8000~M8255 6000H~60FFH C200~C255 (32位) 3F00H~3F37H
T0~T255(线圈) 6C00H~6CFFH
C0~C255(线圈) 6E00H~6EFFH
T0~T255(触点) 6D00H~6DFFH
C0~C255(触点) 6F00H~6FFFH
四、MODBUS指令占用寄存器:
资源占用 用途
自由协议相关寄存器被占用
D7000~D7199 报文收发区
D7994 通讯状态编码显示
D7995 从站正确返回的报文个数 D7996 从站错误返回/超时的报文个数
D7997 最后一个不能正常通讯的从站地址
D7998 本站站号设置(000-为主站,001-254为从站)
M8128 成功通讯状态位
M8129 失败通讯状态位
五、MODBUS通信状态编码(D7994记录)
编码(16进制) 含义
00H 正常状态
01H 功能码错误
02H 非法变量地址
03H 错误数据
(读写个数与字节数不匹配情况;写单个线圈时数据≠oxff00或ox0000)
04H 变量个数越界(从站响应)
(读写个数=0或>最大个数或起始地址+个数>上限地址情况)
11H 发送校验错误(从站响应)
81H 从站号错误
82H 变量个数越界
83H 通信超时
84H 接收校验错误
六、使用MODBUS指令需知:
1. 在第一个扫描周期对通讯参数进行设置(D8120),对本站站号进行设置(D7998)。
D8120可设置参数如下:
H040X: 波特率57600
H043X: 波特率9600
H044X: 波特率38400
H045X: 波特率19200 X = 7: 8数据位,偶校验,1停止位
X = 3: 8数据位,奇校验,1停止位
X = 9: 8数据位,无校验,2停止位
X = 1: 8数据位,无校验,1停止位
X = E: 7数据位,偶校验,2停止位
X = A: 7数据位,奇校验,2停止位
X = 6: 7数据位,偶校验,1停止位
X = 2: 7数据位,奇校验,1停止位
X = 8: 7数据位,无校验,2停止位
主站设置示意图:
从站设置示意图:
2. 在第一个扫描周期所有MODBUS指令均不会被执行。
3. 变量个数限制:位型变量200个,字型变量32个。
4. 若用户使用MODBUS功能,梯形图禁止使用:
① 梯形图自由协议功能函数及其资源区;
② RS485通讯协议网络;
③ MODBUS接收区/发送区。
如不遵循以上规则,可能导致MODBUS通讯出错。
5. 通信方式
① 广播模式(同步性较好):
注:广播站号为0,所有下位机响应但是不会回复,注意广播不能进行读操作。
广播模式状态显示寄存器无相关记录(D7994~D7997)
② 指令顺序缓存方式(最大缓存12条指令)
③ 步序方式(推荐方式)
注:需要通过M8128/M8129的状态来确认当前MODBUS指令是否执行完毕,
读取状态后需复位M8128/M8129
MCLW X0
K0 K1000 K3 M10