Modbus功能码示例:
分类功能说明:
1、读位:一次读512 位(64BYTE)最多,最少16 位(但会读入2 个BYTE)
2、写位:一次只能写1 位(针对具体地址写)
3、读字:一次最多可读32 个字(64BYTE)
4、写字:一次最多可写32 个字(64BYTE)
支持的功能码(16 进制表示):
01——读位COIL,对应PLC 的DO 状态
02——读位INPUT,对应PLC 的DI 状态
03——读字,对应PLC 的AO 状态
04——读字,对应PLC 的AI 状态
05——写位,只写一位COIL,对应PLC 的DO 输出10——写字,写多字,对应PLC 的AO 输出
范例:
01 功能码:例读DO,2#0X/88(二号站,88 号0X 线圈,此处88 位十进制)
发出:02 01 00 50 00 10 3D E4
意思:站号02,功能玛01,起始地址0050(十六进制,相当于十进制80),读位长度(0010,相当于十进制16),3DE4 为CRC 校验(先低字节后高字节)
回答:02 01 02 80 00 9C 3C 意思:站号02,功能玛01,后面数据(字节)长度02,数据字节1(低字节)80,数据字节2(高字节)00,数据字节先低后高,最后CRC 校验9C3C
02 功能玛,读DI 位,例:读1#1X/2,
发出:01 02 00 00 00 10 3D C6
意思:起始地址0000,一次读入一个字(16 位)长度0010
回:01 02 02 FF FF B8 08
03 功能玛:例读2#4X/88
发出:02 03 00 57 00 01 35 E9
回答:02 03 02 00 01 3D 84
注意:此功能玛下读入的数据字节排列为先高后低,表明4X/88 的数值为0001
04 功能玛:读字AI,例1#3X/3
发出:01 04 00 02 00 01 90 0A
表示:读入的字长度为0001(1 个字)
回:01 04 02 10 00 B4 F0 表示3X/3 的值为HEX1000 即十进制4096,先高字节后低字节
05 功能玛:例写2#0X/88
发出:02 05 00 57 FF 00 3D 9D,“FF 00”表示写“1”,“00 00”表示写“0”
回应:02 05 00 57 FF 00 3D 9D,表明写“1”成功
10 功能玛:例2#0010 和0011,写连续多字,例写2#0010 和0011 发出:02 10 00 10 00 02 04 XX XX XX XX XX XX 字长字节长CRC
回:02 10 00 10 00 02 XX XX 字长CRC
例:写-3 到1#4X/1
发出:01 10 00 00 00 01 02 FF FD 26 21,负数采用补码
回:01 10 00 00 00 01 01 C9。