Modbus TCP协议分析


基于以太网总线的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 0x010x00 0x000x060xFF0x030x00 0x040x00 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 0x010x00 0x000x060xFF0x030x040xA5 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 0x010x00 0x000x060xFF0x060x00 0x040x00 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 0x010x00 0x000x100xFF0x060x00 0x040x00 0x040x080x00,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 0x010x00 0x000x060xFF0x100x00 0x040x00 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读卡器
北京友我科技有限公司 版权所有 (C)2015-2023
客户服务中心信箱:coodor#126.com(将#改为@) 热线直拨: 13691531038 18910685939 QQ: 896163157,1403463073
京ICP备14016005号
微信扫一扫联系我们

微信扫一扫联系我们

友我科技


1
RFID读写器产品手册下载
2
读写器开发SDK下载
3
WEB读卡器开发指南
4
Windows读卡器开发指南
5
Android读卡器开发指南
6
Wince读卡器开发指南
7
PLC读卡器开发指南
8
Linux读卡器开发指南
9
单片机读卡器开发指南
10
PCSC读卡器开发指南