产线自动化应用CK-UR08-B01超高频RFID读写头|读写器RS232(Modbus RTU)通讯协议与操作实例

产线自动化应用超高频RFID读写头|读写器CK-UR08-B01是以RS232 MODBUS RTU通讯协议为基础的,包括读卡器的站号ID、波特率、读卡模式等的配置,以及对标签的读写操作,都可以通过MODBUS 通讯指令实现。

在没有特殊配置的情况下,读卡器默认为 MODBUS RTU从站。因此只要连接没有问题,通讯设置没有问题,并且知道从站站号(或者使用广播地址 0) ,读卡器总是可以被MUDBUS主机找到。读卡器在配置为其他工作模式时,通讯模式将作为主站,但仍可以以MODBUS从机的模式接收配置信息。

在读卡器配置为非标准MODBUS模式情况下,可用过我司配套的配置软件重新配置,或者自行通过MODBUS发送配置命令更改设置。

读卡器通讯协议

通讯数据帧

在MODBUS RTU 通讯模式下,主站需要通过时间来判断 RTU 帧的开始和结束。主站监视总线上的通讯数据,如果发现总线有超过 4.5 个字符时间(时间绝对值随字符传送波特率的变化而变化)的空闲,则认为一个帧已经结束(如果存在) ,同时认为下一个字符为下一帧的开始。

完整的 RTU 帧应该是下面的格式(不论是主站发起还是从站应答) :

表格 2‑1 通讯数据帧格式

空闲

地址

功能码

数据

扫描二维码关注公众号,回复: 12502393 查看本文章

CRC 校验

空闲

--

  1 字节

1 字节

N 字节

2 字节

--

 

地址

MODBUS 协议的站地址由一个字节组成,站地址用来指示哪个从设备来应答主站的通讯报文。在总线上,每个从设备必须指定一个唯一的站地址,只有当通讯报文中地址与该从设备地址相同时, 该从设备才能应答主站的通讯报文。 从设备应答的通讯报文也必须包含该地址,以告知主站,这个通讯报文是哪个从设备应答的。广播报文的地址是零,所有的从站可以根据广播报文进行相应的动作,但是一般不能应答该广播报文。

功能码

功能码指示从设备执行相应的操作,从设备回复相应的数据。用户可通过功能码03查询地址为0x05的寄存器状态来获取上一个操作是否正常执行。做为从站,目前 F系列读卡器只使用了部分常用的 MODBUS 通讯功能码:

1、03 读保持寄存器(Read holding register)

2、06 写单个寄存器(Preset single register)

3、16 写多个寄存器(Preset multiple registers)

数据区

数据区是主站需要发送给从站的数据, 或者是从站需要返回给主站的数据。 数据的具体含义由功能码来定义。特别的,有些功能码不包含数据区,数据区大小可以为 0。

校验码

校验码让接收数据方来检查通讯的传输过程中是否有错误发生。

在 MODBUS 中,RTU 模式必须采用 CRC16 校验码。在单片机中实现一般有两种方法,查表法或者运算法,实现方法可以查阅相关的资料。

读卡器通信操作示例

功能码03读取操作

获取读卡器配置信息

读卡器的配置信息保存在0x0000, 0x0001, 0x0002, 0x0003四个地址中(详细功能说明见开发手册)。

主机发送:02 03 00 00 00 04 44 3A

发送

段名

例子(HEX格式)

从机地址

02

功能码

03

开始地址(高字节)

00

开始地址(低字节)

00

数量(高字节)

00

数量(低字节)

04

CRC校验(高字节)

44

CRC校验(低字节)

3A

读卡器应答:02 03 08 00 02 00 05 00 01 00 01 E5 53

应答

段名

例子(HEX格式)

从机地址

02

功能码

03

字节数

08

数据(寄存器0x0000高字节)

00

数据(寄存器0x0000低字节)

02

数据(寄存器0x0001高字节)

00

数据(寄存器0x0001低字节)

05

数据(寄存器0x0002高字节)

00

数据(寄存器0x0002低字节)

01

数据(寄存器0x0003高字节)

00

数据(寄存器0x0003低字节)

01

CRC校验(高字节)

E5

CRC校验(低字节)

53

读取标签EPC信息

标签的EPC信息保存在0x0010,0x0011,0x0012,0x0013,0x0014,0x0015在6个寄存器中。

主机发送:02 03 00 10 00 06 C4 3E

发送

段名

例子(HEX格式)

从机地址

02

功能码

03

开始地址(高字节)

00

开始地址(低字节)

10

数量(高字节)

00

数量(低字节)

06

CRC校验(高字节)

C4

CRC校验(低字节)

3E

读卡器应答(读卡成功): 02 03 0C E2 00 00 16 16 05 90 70 87 88 14 50 62 37

应答

段名

例子(HEX格式)

从机地址

02

功能码

03

字节数

0C

数据(寄存器0x0010高字节)

E2

数据(寄存器器0x0010低字节)

00

数据(寄存器器0x0011高字节)

00

数据(寄存器器0x0011低字节)

16

数据(寄存器器0x0012高字节)

16

数据(寄存器器0x0012低字节)

05

数据(寄存器器0x0013高字节)

90

数据(寄存器器0x0013低字节)

70

数据(寄存器器0x0014高字节)

87

数据(寄存器器0x0014低字节)

88

数据(寄存器器0x0015高字节)

14

数据(寄存器器0x0015低字节)

50

CRC校验(高字节)

62

CRC校验(低字节)

37

功能码06/16写寄存器操作

功能码06写单个寄存器

更改读卡器站号ID,读卡器的站号ID保存在0x0000寄存器中。

主机发送02 06 00 00 00 03 C9 F8

发送

段名

例子(HEX格式)

从机地址

02

功能码

06

写入地址(高字节)

00

写入地址(低字节)

00

写入数据(高字节)

00

写入数据(低字节)

03

CRC校验(高字节)

C9

CRC校验(低字节)

F8

读卡器应答:02 06 00 00 00 03 C9 F8

应答

段名

例子(HEX格式)

从机地址

02

功能码

06

写入地址(高字节)

00

写入地址(低字节)

00

写入数据(高字节)

00

写入数据(低字节)

03

CRC校验(高字节)

C9

CRC校验(低字节)

F8

 

功能码16写多个寄存器

将数据写入RFID标签0x0016, 0x0017,0x0018,0x0019四个寄存器中。

主机发送:02 10 00 16 00 04 08 00 01 00 02 00 03 00 04 A4 4F

接收

段名

例子(HEX格式)

从机地址

02

功能码

10

起始地址(高字节)

00

起始地址(低字节)

16

寄存器数量(高字节)

00

寄存器数量(低地址)

04

字节数

08

数据(寄存器0x0016高字节)

00

数据(寄存器0x0016低字节)

01

数据(寄存器0x0017高字节)

00

数据(寄存器0x0017低字节)

02

数据(寄存器0x0018高字节)

00

数据(寄存器0x0018低字节)

03

数据(寄存器0x0019高字节)

00

数据(寄存器0x0019低字节)

04

CRC校验(高字节)

A4

CRC校验(低字节)

4F

读卡器应答:02 10 00 0A 00 04 20 3D

更多关于产线自动化应用超高频RFID读写头|读写器CK-UR08-B01通讯协议与操作实例,欢迎交流!

猜你喜欢

转载自blog.csdn.net/Alex88389516/article/details/110882750