从站地址 | 功能码 | 起始地址(高位) | 起始地址(低位) | 数量(高位) | 数量(低位) | 校验码(低位) | 校验码(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x03 | 0x00 | 0x04 | 0x00 | 0x04 | CRCL | CRCH |
基于485总线的modbus读卡器, YW-630MA, YW-631MA,使用modbus rtu协议。RS485是一种半双工总线,我们必须了解modbus协议,这样在项目中更容易分析问题和解决问题。
MODBUS协议支持多种功能码,不同的功能码有不同的功能
功能码 | 功能 |
---|---|
0x01 | 读线圈状态 |
0x02 | 读离散输入状态 |
0x03 | 读保持寄存器 |
0x04 | 读输入寄存器 |
0x05 | 写单个线圈 |
0x06 | 写单个保持寄存器 |
0x0F | 写多个线圈 |
0x10 | 写多个保持寄存器 |
我们主要使用的功能码是0x03,0x06和0x10
一、功能码0x03,读保持寄存器,读外部寄存器
YW-630MA和YW-631MA用于读的功码就是0x03,PLC发送的数据帧:
从站地址 | 功能码 | 起始地址(高位) | 起始地址(低位) | 数量(高位) | 数量(低位) | 校验码(低位) | 校验码(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x03 | 0x00 | 0x04 | 0x00 | 0x04 | CRCL | CRCH |
从站地址:Modbus读卡器的站地址,YW-630MA和YW-631MA默认地址都是1.
功能码:
0x03,读寄存器
起始地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器数量:
需要读取的寄存器的数量,读卡号一般2个字节,有部分需要读4个字节,这里4个字节为例,所以是4,高位是0,地位是4.
CRC:
CRC校验是标准算法,PLC里自动计算,所以不用考虑。
YW-630MA和YW-631MA收到PLC发送的03指令后,回复的数据帧:
从站地址 | 功能码 | 字节数 | 数据1(高位) | 数据1(低位) | 数据n(高低位) | 校验码(低位) | 校验码(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x03 | 0x08 | 0x93 | 0xAE | ... | CRCL | CRCH |
从站地址:Modbus读卡器的站地址,YW-630MA和YW-631MA默认地址都是1.
功能码:
0x03,读寄存器
字节数:
8个字节,读了4个寄存器,共8个字节,这里注意是字节的数量,不是寄存器的数量.
数据:
每个寄存器先高位,后低位,依次输出,4个寄存器共8个字节。
CRC:
CRC校验是标准算法,自动计算,所以不用考虑。
二、功能码0x06,写单个寄存器
YW-630MA和YW-631MA用于写的功码就是0x06和0x10,先说0x06,PLC发送的数据帧:
从站地址 | 功能码 | 寄存器地址(高位) | 寄存器地址(低位) | 寄存器值(高位) | 寄存器值(低位) | 校验码(低位) | 校验码(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x06 | 0x00 | 0x04 | 0x00 | 0x00 | CRCL | CRCH |
从站地址:Modbus读卡器的站地址,YW-630MA和YW-631MA默认地址都是1.
功能码:
0x06,写单个寄存器
寄存器地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器值:
2个字节,一个寄存器2个字节,高位在前,低位在后.
CRC:
CRC校验是标准算法,PLC里自动计算,所以不用考虑。
YW-630MA和YW-631MA收到PLC发送的06指令后,回复的数据帧与收到的数据帧完全相同。这里就不解析了
三、功能码0x10,写多个寄存器
YW-630MA和YW-631MA支持写多个寄存器,功能码0x10,PLC发送的数据帧:
从站地址 | 功能码 | 寄存器开始地址(高位) | 寄存器开始地址(低位) | 寄存器个数(高位) | 寄存器个数(低位) | 要写的字节数 | 值(要写的n个字节) | 校验码(低位) | 校验码(高位) |
---|---|---|---|---|---|---|---|---|---|
0x01 | 0x10 | 0x00 | 0x04 | 0x00 | 0x04 | 0x08 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 | CRCL | CRCH |
从站地址:Modbus读卡器的站地址,YW-630MA和YW-631MA默认地址都是1.
功能码:
0x10,写多个寄存器
寄存器地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器数量:
4个寄存器,从40004到40007,高位在前00,低位在后04.
字节数:
8个字节,4个寄存器共8个字节
值:
对应8个字节的值,对卡号清零,就写8个0
CRC:
CRC校验是标准算法,PLC里自动计算,所以不用考虑。
YW-630MA和YW-631MA收到PLC发送的指0x10指令后,回复的数据帧:
从站地址 | 功能码 | 寄存器开始地址(高位) | 寄存器开始地址(低位) | 寄存器个数(高位) | 寄存器个数(低位) | 校验码(低位) | 校验码(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x10 | 0x00 | 0x04 | 0x00 | 0x04 | CRCL | CRCH |
从站地址:Modbus读卡器的站地址,YW-630MA和YW-631MA默认地址都是1.
功能码:
0x10,写多个寄存器
寄存器地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器数量:
4个寄存器,从40004到40007,高位在前00,低位在后04.
CRC:
CRC校验是标准算法,PLC里自动计算,所以不用考虑。
上一篇:如何修改ModbusTCP读卡器的IP地址
下一篇:Modbus TCP协议分析
Modbus读卡器,PLC读卡器,Modbus RTU, Modbus TCP,modbus接口IC卡读卡器,Modbus接口RFID读卡器 微信扫一扫联系我们 |
1 |
RFID读写器产品手册下载 |
2 |
读写器开发SDK下载 |
3 |
WEB读卡器开发指南 |
4 |
Windows读卡器开发指南 |
5 |
Android读卡器开发指南 |
6 |
Wince读卡器开发指南 |
7 |
PLC读卡器开发指南 |
8 |
Linux读卡器开发指南 |
9 |
单片机读卡器开发指南 |
10 |
PCSC读卡器开发指南 |