工业RFID应用之技术篇(三):巧用TCP/IP自定义协议提高RFID读卡器通讯效率
产品简介
详细信息
如今的工业生产已经向着智能化、自动化发展,因此对设备之间的通信质量要求也越来越高,像是Modbus、Profinet、Canopen、Ethernet都是常用的通信协议。
而除了这些常用的通讯协议之外,我们还可以根据工程项目的需求来自定义协议(Free Procotol),为什么放着现成的不用而要去自定义呢?
开发过程中晨控系列高频RFID读卡器具备同时支持Modbus TCP和TCP/IP自定义协议的功能,使用Modbus TCP协议的好处是:大部分品牌的PLC都集成了该协议,用户不需要关心底层数据结构,只需要直接调用相关的指令块就能得到相应寄存器的数据,易连接,易调试,易维护。
但是对于一些使用PC开发上位机软件、对自由度要求更高的用户来说,当使用到的RFID数量不大,数据内容又比较固定的情况下,使用TCP/IP自定义协议就能编程更简单,通讯效率更好,保密性更优秀。
用HTTP举个简单的例子,但是由于HTTP本身结构的设定,你必须将“请求方法”、“HTTP版本”,“状态码”以及“header信息”等等一起发送出去。
这样子整个消息加起来可能有几十个字节,但实际对你有用的只有“0x11”这一个字节而已,使用Free Procotol就能尽可能的精简从而节省带宽,从而提高数据传输质量。
OSI是国际标准化组织ISO为了更好地促进互联网络的研究和发展,制定网络互连的七层框架的一个理论参考模型,称为开放系统互连参考模型,简称OSI。
目前还没有合乎OSI的通信协议问世,而TCP/IP则是我们实际应用泛的一种网络的模型。
TCP/IP网络模型对应OSI参考模型
自定义协议工作于TCP/IP模型的应用层,基于TCP协议开发,因为省略了很多不必要的数据结构,比起其它应用层通信协议更加简洁,高效,更加满足RFID高频读写器通讯要求。
OSI和TCP/IP的模型具体细节暂且不表,我们先从实际应用来了解自定义协议
设备:
晨控CK-FR08-E00高频读写器
PC系统Windows10
CK自由协议测试工具V1.1
CK-FR08-E00使用M12标准电缆插头,通过以太网连接到PC或PLC,通讯协议集成了Modbus TCP和自由协议(Free Procotol)。
CK高频读写器E00系列在生产中已经写入了我司编写的自由协议,用户在使用时只需对上位机组态即可与RFID高频读写器通讯。为测试方便,现在我们在PC机上运行“自由协议测试工具V1.1”测试自由协议是否能够配合读写器正常读写数据。
CK-FR08-E00对自由协议命令的支持如下:
0x00---心跳包
0x01---获取设备信息
0x02---获取电子标签UID
0x03---读电子标签的数据区
0x04---写电子标签的数据区
电子标签数据总线是16位,每次操作必须是2个字节并且地址是双字节偏移如:0、2、4等,标签的UID码地址(只读):0x00、0x02、0x04、0x06,用户数据区(可读写):0x08、0x0A、0x0C、0x0E等。
协议结构:
定义 | 帧头1 | 帧头2 | 消息帧序列ID | 消息类型ID | 数据长度(16位) | 数据内容 |
描述 | 0X81 | 0XC0 | 每次发送加1 | (00 01 02 03 04) |
0x00心跳包:
若是发送:“81 C0 02 00 01 00 05”则可更改心跳定时器时间,“05”表示5秒收不到心跳包(3次收不到)则断开连接。
上电连接后心跳包默认关闭,连接后上位机可发送心跳包打开心跳或调整心跳包定时器时间。
心跳包是上位机和读卡器之间确定在线的方式,读卡器每隔一段时间向上位机发送一个心跳包,同时启动一个定时器,定时器结束前收到上位机的数据回复则删除定时器,否则就断开与上位机的连接。
0x01获取读卡器信息:
TX数据中:读取读卡器信息。
RX数据中:“43 6B 2D 46 52 30 38 2D 45 30 30 00 00 00 00 00”为产品名字,“56 32 2E 30 00 00 00 00 ”为读写器软件版本。
0x02读取标签UID码:
TX数据中:读取UID码。
RX数据中:长度为“08 00”个字节的UID码是“ 0A 20 A4 5F 50 01 04 E0”。
0x03读电子标签的数据区:
TX数据中:读取标签起始地址为0x00,长度为0x10=16个字节的数据区。
RX数据中:读取到的16个字节为“0A 20 A4 5F 50 01 04 E0 11 22 33 44 55 66 00 44 ”
0x04写电子标签的数据区:
行的TX数据中:将“11 22 33 44 55 66”写入标签起始地址0x08,长度6个字节的数据区。
第二行的RX数据中:读卡器返回数据“00 00”表示写入成功。
第三行的TX数据中:读取标签起始地址0x08开始的6个字节。
第四行的RX数据中:从标签数据区读取到的6个字节为“11 22 33 44 55 66”,数据写入正确。
如果要使用PLC来完成自由协议的命令发送,例如西门子可以使用TCON连接上位机进行组态,使用TSEND来发送数据,TRCV接收数据。
通过TCON指令连接设备
TCON指令块“Properties(属性)”> “Configuration(组态)”>“Connection parameter(连接参数)”中设置连接的Partner地址,TSEND“DATA”用以储存发送的数据,TRCV“DATA”储存从Partner处收到的数据。
通过TSEND通信连接发送数据
通过TRCV通信连接接受数据
支持自定义协议的RFID高频读写器优势:
1、适用性强,扩展性好:用户可根据现场项目需求编写自定义协议,针对性完善,调试方便,语义明确,如果以后需要修改协议,和老的客户端兼容性比较好
2、提高通信质量,提升生产效率:我们使用自定义的通讯协议可以减少不必要的数据产生,数据比较小,速度快,可以减轻通讯的负担,性能会比使用复杂的通讯协议更好。
3、安全性好,保密性强:非协议,数据通信更安全,如果要分析协议的漏洞就必须先破译你的通讯协议,有效保护客户数据信息。
更多关于TCP/IP通讯的技术和RFID高频读写器的应用与问题解决方案请关注微信公众号或者登陆晨控查询,晨控智能期待您的咨询与合作。