MBAP报头 | PDU报文体 | |||||
---|---|---|---|---|---|---|
事务标示2字节 | 协议标示2字节 | 长度(总长度-6) | 从站地址 | 功能码 | 起始地址2字节 | 读取数量2字节 |
0x00 0x01 | 0x00 0x00 | 0x06 | 0xFF | 0x03 | 0x00 0x04 | 0x00 0x02 |
基于以太网总线的modbus读卡器, YW-630NA, YW-641NA,使用modbus tcp协议。Modbus TCP是一种基于TCP/IP的一种协议,报文结构包括MBAP报文头和PDU报文体,报头用于区分不同的报文,功能码决定报文的功能。
MODBUS TCP协议支持多种功能码,不同的功能码有不同的功能
功能码 | 功能 |
---|---|
0x01 | 读线圈状态 |
0x02 | 读离散输入状态 |
0x03 | 读保持寄存器 |
0x04 | 读输入寄存器 |
0x05 | 写单个线圈 |
0x06 | 写单个保持寄存器 |
0x0F | 写多个线圈 |
0x10 | 写多个保持寄存器 |
我们主要使用的功能码是0x03,0x06和0x10
一、功能码0x03,读保持寄存器,读外部寄存器
YW-630NA和YW-641NA用于读的功码就是0x03,PLC发送的数据帧:
MBAP报头 | PDU报文体 | |||||
---|---|---|---|---|---|---|
事务标示2字节 | 协议标示2字节 | 长度(总长度-6) | 从站地址 | 功能码 | 起始地址2字节 | 读取数量2字节 |
0x00 0x01 | 0x00 0x00 | 0x06 | 0xFF | 0x03 | 0x00 0x04 | 0x00 0x02 |
事务标示2字节:PLC用于标示那一条报文,从机应答会保持一致。
协议标示2字节:目前都是00 00
长度:从站地址到报文结束的字节长度,相当于报文总长度-6.
从站地址:Modbus读卡器的站地址,PLC默认都是0xFF
功能码:
0x03,读寄存器
起始地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器数量:
需要读取的寄存器的数量,读卡号一般2个字节,有部分需要读4个字节,这里4个字节为例,所以是4,高位是0,地位是4.
YW-630NA和YW-641NA收到PLC发送的03指令后,回复的数据帧:
MBAP报头 | PDU报文体 | |||||
---|---|---|---|---|---|---|
事务标示2字节 | 协议标示2字节 | 长度(总长度-6) | 从站地址 | 功能码 | 数据字节数 | 数据 |
0x00 0x01 | 0x00 0x00 | 0x06 | 0xFF | 0x03 | 0x04 | 0xA5 0x34 0x88 0x01 |
事务标示2字节:从机应答会与主机发出来的标示保持一致。
协议标示2字节:目前都是00 00
长度:从站地址到报文结束的字节长度,相当于报文总长度-6.
从站地址:Modbus读卡器的站地址
功能码:
0x03,读寄存器
数据字节数:
1个字节,用于回复读取的字节数,一般是寄存器数量的2倍
数据值:
所有的数据
二、功能码0x06,写单个寄存器
YW-630NA和YW-641NA用于写的功码就是0x06和0x10,先说0x06,PLC发送的数据帧:
MBAP报头 | PDU报文体 | |||||
---|---|---|---|---|---|---|
事务标示2字节 | 协议标示2字节 | 长度(总长度-6) | 从站地址 | 功能码 | 寄存器地址2字节 | 寄存器值2字节 |
0x00 0x01 | 0x00 0x00 | 0x06 | 0xFF | 0x06 | 0x00 0x04 | 0x00 0x02 |
事务标示2字节:PLC用于标示那一条报文,从机应答会保持一致。
协议标示2字节:目前都是00 00
长度:从站地址到报文结束的字节长度,相当于报文总长度-6.
从站地址:Modbus读卡器的站地址,PLC默认都是0xFF
功能码:
0x06,写单个寄存器
寄存器地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器值:
要写的寄存器的值,2个字节,高位前,地位在后.
YW-630NA和YW-641NA收到PLC发送的06指令后,回复的数据帧与收到的数据帧完全相同。这里就不解析了
三、功能码0x10,写多个寄存器
YW-630NA和YW-641NA支持写多个寄存器,功能码0x10,PLC发送的数据帧:
MBAP报头 | PDU报文体 | |||||||
---|---|---|---|---|---|---|---|---|
事务标示2字节 | 协议标示2字节 | 长度(总长度-6) | 从站地址 | 功能码 | 寄存器起始地址2字节 | 寄存器个数2字节 | 寄存器数据字节数1字节 | 寄存器数据n字节 |
0x00 0x01 | 0x00 0x00 | 0x10 | 0xFF | 0x06 | 0x00 0x04 | 0x00 0x04 | 0x08 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 |
事务标示2字节:PLC用于标示那一条报文,从机应答会保持一致。
协议标示2字节:目前都是00 00
长度:从站地址到报文结束的字节长度,相当于报文总长度-6.
从站地址:Modbus读卡器的站地址,PLC默认都是0xFF
功能码:
0x10,写多个寄存器
寄存器地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器数量:
4个寄存器,从40004到40007,高位在前00,低位在后04.
字节数:
8个字节,4个寄存器共8个字节
值:
对应8个字节的值,对卡号清零,就写8个0
YW-630NA和YW-641NA收到PLC发送的指0x10指令后,回复的数据帧:
MBAP报头 | PDU报文体 | |||||
---|---|---|---|---|---|---|
事务标示2字节 | 协议标示2字节 | 长度(总长度-6) | 从站地址 | 功能码 | 寄存器地址2字节 | 寄存器值2字节 |
0x00 0x01 | 0x00 0x00 | 0x06 | 0xFF | 0x10 | 0x00 0x04 | 0x00 0x04 |
事务标示2字节:PLC用于标示那一条报文,从机应答会保持一致。
协议标示2字节:目前都是00 00
长度:从站地址到报文结束的字节长度,相当于报文总长度-6.
从站地址:Modbus读卡器的站地址,PLC默认都是0xFF
功能码:
0x10,写多个寄存器
寄存器地址:
2个字节,如40004,实际地址是4,高位是0,低位是4.
寄存器数量:
寄存器数量,2个字节,高位前,地位在后.
上一篇:Modbus RTU协议分析
下一篇:Modbus读卡器如何读取IC卡卡号
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读卡器开发指南 |