概述
CK-FR03-B01|CK-FR08-B01工业高频读写器读写头的通讯是以 MODBUS RTU通讯协议为基础的,包括读卡器的站号ID、波特率、读卡模式等的配置,以及对标签的读写操作,都可以通过MODBUS 通讯指令实现。
在没有特殊配置的情况下,读卡器默认为 MODBUS RTU从站。因此只要连接没有问题,通讯设置没有问题,并且知道从站站号(或者使用广播地址 0) ,读卡器总是可以被MUDBUS主机找到。读卡器在配置为其他工作模式时,通讯模式将作为主站,但仍可以以MODBUS从机的模式接收配置信息。
在读卡器配置为非标准MODBUS模式情况下,可用过我司配套的配置软件重新配置,或者自行通过MODBUS发送配置命令更改设置。
本读卡器通信协议说明适用于以下表格中的型号:
表格 1‑1 读卡器通信协议适用型号
通信接口 | 型号 |
RS485 | CK-FR01-A01、CK-FR03-A01、CK-FR08-A01 |
RS232 | CK-FR03-B01、CK-FR08-B01 |
1、通讯数据帧
在MODBUS RTU 通讯模式下,主站需要通过时间来判断 RTU 帧的开始和结束。主站监视总线上的通讯数据,如果发现总线有超过 4.5 个字符时间(时间绝对值随字符传送波特率的变化而变化)的空闲,则认为一个帧已经结束(如果存在) ,同时认为下一个字符为下一帧的开始。
完整的 RTU 帧应该是下面的格式(不论是主站发起还是从站应答) :
表格 2‑1 通讯数据帧格式
空闲 | 地址 | 功能码 | 数据 | CRC 校验 | 空闲 |
-- | 1 字节 | 1 字节 | N 字节 | 2 字节 | -- |
1.1、 地址
MODBUS 协议的站地址由一个字节组成,站地址用来指示哪个从设备来应答主站的通讯报文。在总线上,每个从设备必须指定一个唯一的站地址,只有当通讯报文中地址与该从设备地址相同时, 该从设备才能应答主站的通讯报文。 从设备应答的通讯报文也必须包含该地址,以告知主站,这个通讯报文是哪个从设备应答的。广播报文的地址是零,所有的从站可以根据广播报文进行相应的动作,但是一般不能应答该广播报文。
1.2、 功能码
功能码指示从设备执行相应的操作,从设备回复相应的数据。用户可通过功能码03查询地址为0x05的寄存器状态来获取上一个操作是否正常执行。做为从站,目前 F系列读卡器只使用了部分常用的 MODBUS 通讯功能码:
1、03 读保持寄存器(Read holding register)
2、06 写单个寄存器(Preset single register)
3、16 写多个寄存器(Preset multiple registers)
1、3、 数据区
数据区是主站需要发送给从站的数据, 或者是从站需要返回给主站的数据。 数据的具体含义由功能码来定义。特别的,有些功能码不包含数据区,数据区大小可以为 0。
1.4、 校验码
校验码让接收数据方来检查通讯的传输过程中是否有错误发生。
在 MODBUS 中,RTU 模式必须采用 CRC16 校验码。在单片机中实现一般有两种方法,查表法或者运算法,实现方法可以查阅相关的资料。
2、读卡器通信操作示例
2.1、功能码03读取操作
2.1.1、获取读卡器配置信息
读卡器的配置信息保存在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 |
2.1.2、 读取标签UID信息
标签的UID信息保存在0x0006,0x0007,0x0008,0x0009在4个寄存器中。
主机发送:02 03 00 06 00 04 A4 3B
发送 | |
段名 | 例子(HEX格式) |
从机地址 | 02 |
功能码 | 03 |
开始地址(高字节) | 00 |
开始地址(低字节) | 06 |
数量(高字节) | 00 |
数量(低字节) | 04 |
CRC校验(高字节) | A4 |
CRC校验(低字节) | 3B |
读卡器应答(读卡成功): 02 03 08 BB 2B A4 5F 50 01 04 E0 85 F7
应答 | |
段名 | 例子(HEX格式) |
从机地址 | 02 |
功能码 | 03 |
字节数 | 08 |
数据(寄存器0x0006高字节) | BB |
数据(寄存器0x0006低字节) | 2B |
数据(寄存器0x0007低字节) | A4 |
数据(寄存器0x0007高字节) | 5F |
数据(寄存器0x0008低字节) | 50 |
数据(寄存器0x0008高字节) | 01 |
数据(寄存器0x0009低字节) | 04 |
数据(寄存器0x0009高字节 | E0 |
CRC校验(高字节) | 85 |
CRC校验(低字节) | F7 |
2.1.3 读写状态查询命令
每次进行读写操作时,读写状态均保存在0x0005寄存器中,可通过查询0x0005寄存器数值获取读写操作状态。
读写状态查询命令为02 03 00 05 00 01 94 38,即只查询0x0005寄存器。
该命令用于查询上一条除读写状态查询命令外的读写命令状态,即该寄存器不记录该读写状态查询命令的状态。
主机发送02 03 00 05 00 01 94 38
发送 | |
段名 | 例子(HEX格式) |
从机地址 | 02 |
功能码 | 03 |
开始地址(高字节) | 00 |
开始地址(低字节) | 05 |
数量(高字节) | 00 |
数量(低字节) | 01 |
CRC校验(高字节) | 94 |
CRC校验(低字节) | 38 |
读卡器应答(上一次的操作无误): 02 03 02 00 00 FC 44
读卡器应答(上一次读操作出错): 02 03 02 00 01 3D 84
读卡器应答(上一次写操作出错): 02 03 02 00 02 7D 85
注:当读操作中包含读写状态寄存器时,返回的数值中,读写状态寄存器状态均为上一次读写操作(非读写操作查询命令操作)的状态。
2.2、 功能码06/16写寄存器操作
2.2.1、功能码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 |
2.2.2、 功能码16写多个寄存器
将数据写入RFID标签0x000A, 0x000B,0x000C,0x000D四个寄存器中。
主机发送:02 10 00 0A 00 04 08 00 01 00 02 00 03 00 04 75 A0
接收 | |
段名 | 例子(HEX格式) |
从机地址 | 02 |
功能码 | 10 |
起始地址(高字节) | 00 |
起始地址(低字节) | 0A |
寄存器数量(高字节) | 00 |
寄存器数量(低地址) | 04 |
字节数 | 08 |
数据(寄存器0x000A高字节) | 00 |
数据(寄存器0x000A低字节) | 01 |
数据(寄存器0x000B高字节) | 00 |
数据(寄存器0x000B低字节) | 02 |
数据(寄存器0x000C高字节) | 00 |
数据(寄存器0x000C低字节) | 03 |
数据(寄存器0x000D高字节) | 00 |
数据(寄存器0x000D低字节) | 04 |
CRC校验(高字节) | 75 |
CRC校验(低字节) | A0 |
读卡器应答:02 10 00 0A 00 04 E1 FB
更多关于CK-FR03-B01|CK-FR08-B01工业高频读写器读写头RS232通讯ModbusRTU通信协议说明,华翔天诚科技欢迎您光临本站交流!
最后
以上就是大胆洋葱为你收集整理的CK-FR03-B01|CK-FR08-B01工业高频读写器读写头RS232通讯ModbusRTU通信协议说明的全部内容,希望文章能够帮你解决CK-FR03-B01|CK-FR08-B01工业高频读写器读写头RS232通讯ModbusRTU通信协议说明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复