模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762
25 MODBUS RTU指令
编号 指令名 参数1 参数2 参数3 参数4 参数5 说明
1 modbusrtum K K Sn MODBUS RTU主初始化指令
2 modbusrtumrw K K K Dn K MODBUS RTU主读写指令
Dn Dn Dn Dn Dn
3 modbusrtuc K K K Sn MODBUS RTU从初始化指令
4 modbusrtuclose MODBUS RTU关闭指令
1 modbusrtum为MODBUS RTU主初始化指令:
参数1为串口编号,取值0或者2;
参数2为串口波特率;
参数3,当串口数据接收完成时会置位Sn;
例: modbusrtum 0 115200 s0 //初始化串口0,波特率为115200
2 modbusrtumrw为MODBUS RTU主读写指令:
参数1为从机的PLC NO号,取值1-255;
参数2为功能码,支持1,3,5,6,16这几个功能码;
参数3为从设备的寄存器地址;
参数4根据功能码的不同,当为读时,Dn保存读的数据,当为写时,Dn为要写
的数据;
参数5,为要读写的数据长度,注意modbus一个数据长度有2个字节;但是在功
能码1时,数据长度单位是位;
例: mov 65280 d0 //d0存入65280(16进制FF00),使用功能码5置位输出口时,
//必须写65280
modbusrtumrw 1 5 16 d0 1 //1为从机PLC站号,5为位写功能码,16
//为位地址即Y0,D0=65280,表示把Y0置1;最
//后的1在功能码为5时不起作用,写个1就可以了
mov 0 d0 //d0存入0,使用功能码5复位输出口就写0
modbusrtumrw 1 5 16 d0 1 //1为从机PLC站号,5为位写功能码,16
//为位地址即Y0,D0=0,表示把Y0清0;最后的
//1在功能码为5时不起作用,写个1就可以了
modbusrtumrw 1 1 0 d0 11 //从机站号1,功能码1,读取地址0,读
//取到D0寄存器,共读取11位;这样就把X0-10
//一次性全部读取 到D0中,D0的第0-10位依次是
//输入口X0-10的电平值。
modbusrtumrw 1 1 16 d1 13 //从机站号1,功能码1,读取地址16,读
//取到D1寄存器,共读取13位;这样就把Y0-12一次
//性全部读取到D1中,D1的第0-12位依次是输出口
//Y0-10的电平值。
modbusrtumrw 1 3 100 d1 2 //从机站号1,功能码3,读取地址100,读
//取到D1寄存器,长度为2,即读取4个字节,实际
//就是读取D50的值到D1中;
modbusrtumrw 1 16 100 d1 2 //从机站号1,功能码16,写入地址100,
//写入数据为D1寄存器,长度为2,即读取4个字节, //实际就是把D1的值写到D50中;
modbusrtumrw 1 6 100 d1 1 //从机站号1,功能码6,写入地址100,写
//入数据为D1寄存器,长度固定为1。实际就是把D1 //的低2字节值写到D50中;
3 modbusrtuc为MODBUS RTU从初始化指令:
参数1为从PLC NO号,取值1-255;
参数2为串口编号,取值0或者2;
参数3为串口波特率;
参数4,当串口数据接收完成时会置位Sn;
例: modbusrtuc 0 115200 s0 //初始化串口0,波特率为115200
4 modbusrtuclose为MODBUS RTU关闭指令:
下表列出了IO口及Dn数据寄存器对应的地址及功能码:
IO口 |
操作 |
触摸屏对应地址 |
PLC对应地址 |
功能码 |
|
位读 |
位写 |
||||
X0 |
只读 |
0x1 |
0 |
1 |
|
X1 |