馮韶霞
(山西機(jī)電職業(yè)技術(shù)學(xué)院 數(shù)控工程系,山西 長(zhǎng)治 046000)
射頻識(shí)別(Radio Frequency Identification,RFID)技術(shù)是一種利用射頻通信技術(shù)實(shí)現(xiàn)的非接觸式自動(dòng)識(shí)別技術(shù)。與傳統(tǒng)的條形碼、磁卡等接觸式識(shí)別技術(shù)相比,RFID可實(shí)現(xiàn)非可視、多目標(biāo)識(shí)別,其突出優(yōu)點(diǎn)是防磁、壽命長(zhǎng)、容量大、信息可加密、內(nèi)容可更改。如今RFID 技術(shù)已經(jīng)廣泛應(yīng)用于人們的日常生活和生產(chǎn)制造中。PLC作為一類(lèi)可靠性高的控制器,可以與RFID進(jìn)行通信,從而實(shí)現(xiàn)各種控制功能。
一個(gè)完整的RFID系統(tǒng)是由標(biāo)簽、讀寫(xiě)器、主機(jī)(上位機(jī)、工控機(jī)、服務(wù)器、PLC)組成的,如圖1所示。其中,標(biāo)簽存儲(chǔ)數(shù)據(jù)及信息,通常放置在被識(shí)別的物體上;讀寫(xiě)器包括讀或者讀/寫(xiě)裝置,一般帶有附加的接口,如USB、RS232、RS485等,方便將所獲得的數(shù)據(jù)傳輸給主機(jī)系統(tǒng);主機(jī)通常使用PLC控制器與讀寫(xiě)器通信,根據(jù)控制要求,控制讀寫(xiě)器對(duì)標(biāo)簽內(nèi)的信息進(jìn)行讀或?qū)懖僮?,并?shí)現(xiàn)數(shù)據(jù)交換。
圖1 射頻識(shí)別系統(tǒng)的基本組成
RFID系統(tǒng)根據(jù)工作頻率的不同可分為低頻、高頻、超高頻系統(tǒng)。低頻系統(tǒng)主要包括125 kHz和134 kHz兩種,用于短距離傳輸,如門(mén)禁卡、校園卡。高頻系統(tǒng)主要是13.56 MHz,是目前被廣泛使用的頻段,用于生產(chǎn)管理、運(yùn)輸、圖書(shū)。超高頻系統(tǒng)主要包括915 MHz、2.4 GHz、5.8 GHz等,可應(yīng)用于需要較長(zhǎng)讀寫(xiě)距離的場(chǎng)合,如高速公路收費(fèi)等系統(tǒng)中。
本文以思谷SG-HR-I2讀寫(xiě)器為例,該讀寫(xiě)器是一款一體式的高頻RFID讀寫(xiě)設(shè)備,其工作頻率為13.56 MHz,符合ISO-15693標(biāo)準(zhǔn),支持RS-485/RS-232通信(本文以RS485通信為例),能夠操作遵守ISO-15693協(xié)議的電子標(biāo)簽。讀寫(xiě)器與主機(jī)之間的控制指令均為一次性執(zhí)行,讀寫(xiě)器接收到控制指令后,無(wú)論執(zhí)行結(jié)果如何,均會(huì)返回消息以確認(rèn)指令的執(zhí)行情況。
思谷高頻讀寫(xiě)器通過(guò)訪問(wèn)不同的命令碼,從而實(shí)現(xiàn)不同的指令,并返回相應(yīng)的數(shù)據(jù),其命令碼如表1所示。
表1 高頻讀寫(xiě)器命令碼
表1中,UID 數(shù)據(jù)區(qū)為RFID標(biāo)簽的出廠ID存放區(qū),數(shù)據(jù)為只讀,UID長(zhǎng)度為 8 byte,地址范圍 0x800E~0x8 011。
主機(jī)與讀寫(xiě)器之間通信遵循的協(xié)議如表2所示。
表2 主機(jī)與讀寫(xiě)器通信協(xié)議
協(xié)議的字段說(shuō)明如下:
(1) 幀頭(Header):長(zhǎng)度為1 byte,取固定值0xFF。
(2) 包長(zhǎng)度(Len):長(zhǎng)度為1 byte,包含Len、Cmd、Data字段。
(3) 命令碼(Cmd):長(zhǎng)度為1 byte,參照表1。
(4) 用戶(hù)數(shù)據(jù)(Data):長(zhǎng)度為Nbyte。
(5) CRC校驗(yàn):長(zhǎng)度為2 byte,含Header、Len、Cmd、Data字段的CRC校驗(yàn)。其中Data格式如表3所示。
對(duì)Data段的說(shuō)明如下:
(1) CtrlFlg:為2 byte,其中Bit0表示ReaderID,Bit1~Bit14默認(rèn)取0,Bit15置位,表示此幀為響應(yīng)幀,Bit15復(fù)位,表示此幀為請(qǐng)求幀。
(2) CtrlFlg 參數(shù)包括:
Status:為1 byte, 表示命令執(zhí)行狀態(tài), 當(dāng)CtrlFlg 的Bit15置位,此字段出現(xiàn),此幀為響應(yīng)幀,如果請(qǐng)求指令發(fā)送成功,則該字段取值為0x00, 請(qǐng)求指令發(fā)送失敗,該字段取值為非0x00; Bit15復(fù)位,此字段不出現(xiàn),此幀為請(qǐng)求幀。
ReaderID:為1 byte,Bit0:ReaderID 置位,此字段出現(xiàn),此時(shí)只有讀寫(xiě)器 ID 與 ReaderID 一致, 讀寫(xiě)器才響應(yīng); Bit0:ReaderID 復(fù)位,此字段不出現(xiàn),讀寫(xiě)器ID與ReaderID默認(rèn)值為0x00。
(3) 命令參數(shù):Mbyte,根據(jù)各個(gè)功能來(lái)定義。
主機(jī)到讀寫(xiě)器的指令為請(qǐng)求幀,讀寫(xiě)器到主機(jī)的指令為響應(yīng)幀,在響應(yīng)幀指令中CtrlFlg除最高位置位,其他與請(qǐng)求幀保持一致,ReaderID同樣與請(qǐng)求幀一致。
表3 Data格式
2.3.1 主機(jī)讀取UID值
命令編碼:0x01。
功能說(shuō)明:讀取天線場(chǎng)范圍內(nèi)標(biāo)簽的UID,不支持多標(biāo)簽讀取。
(1) 首先主機(jī)向讀寫(xiě)器發(fā)送讀取請(qǐng)求指令,格式如下:
FF 05 01 0001 00 78D8
其中: FF表示幀頭;05表示包長(zhǎng)度;01表示命令碼;0001表示CtrlFlg;00表示ReaderID;78D8表示CRC校驗(yàn)碼。
(2) 命令執(zhí)行完成,讀寫(xiě)器響應(yīng)數(shù)據(jù)的格式為:
FF 0E 01 8001 00(成功) 00 (797FBB39500104E0) 7D79
或
FF 06 01 8001 80(失敗) 00 6930
其中:FF/FF表示幀頭;0E/06表示包長(zhǎng)度;01/01表示命令碼;8001/8001表示CtrlFlg;00(成功)/ 80(失敗)表示Status;00/00表示ReaderID;797FBB39500104E0表示UID值;7D79/6930表示CRC校驗(yàn)碼。
2.3.2 主機(jī)按字節(jié)讀取數(shù)據(jù)
命令編碼:0x11。
功能:按照字節(jié)讀取標(biāo)簽內(nèi)存,需要配置字節(jié)的起始地址和字節(jié)數(shù)量。
(1) 首先主機(jī)向讀寫(xiě)器發(fā)送讀取請(qǐng)求指令,讀地址 01 長(zhǎng)度為 8 的請(qǐng)求數(shù)據(jù),格式如下:
FF 08 11 0001 00 0001 06 3572
其中:0001為2 byte,表示讀取寄存器的起始地址;06為1 byte,表示讀取的字節(jié)數(shù)量。
(2) 命令執(zhí)行完成,讀寫(xiě)器返回的指令格式為:
FF 0C 11 8001 00(成功) 00 (AA AA AA AA AA AA) 9AB5
或
FF 06 11 8001 80(失敗) 00 AAF1
其中:AAAAAAAAAAAA表示請(qǐng)求的數(shù)據(jù)。
2.3.3 主機(jī)按字節(jié)寫(xiě)入數(shù)據(jù)
命令編碼:0x12。
功能:按字節(jié)的形式寫(xiě)標(biāo)簽內(nèi)存。
(1) 首先主機(jī)向讀寫(xiě)器發(fā)送寫(xiě)數(shù)據(jù)指令,從 0 地址開(kāi)始寫(xiě) 5 個(gè)字節(jié)數(shù)據(jù),格式如下:
FF 0D 12 0001 00 0000 05 (0001020304)66ED
其中:0000表示寫(xiě)入寄存器的起始地址;05表示寫(xiě)入的字節(jié)數(shù)量;0001020304表示需寫(xiě)入的數(shù)據(jù)。
(2) 命令執(zhí)行完成,讀寫(xiě)器返回的指令格式為:
FF 06 12 8001 00(成功) 00 6AD4
或
FF 06 12 8001 80(失敗) 00 AAB5
本文使用西門(mén)子S7-1200型號(hào)為1215C的PLC作為主機(jī)與思谷SG-HR-I2讀寫(xiě)器進(jìn)行RS-485通信,通信板使用CM 1241。博途軟件包中包含串行通信指令:Port_Config、Send_P2P、Receive_P2P。
在博途的硬件目錄下選擇 1215C 型號(hào)的 CPU 和 CM 1241 通信板進(jìn)行硬件組態(tài)。雙擊 CM 1241 通信板查看其硬件標(biāo)識(shí)符為271。配置Port_Config、Send_P2P、Receive_P2P的參數(shù),新建全局?jǐn)?shù)據(jù)塊DB102和DB104,DB102用于直接與讀寫(xiě)器傳輸數(shù)據(jù),DB104用于給DB102賦值。Port_Config指令模塊如圖2所示。
圖2 Port_Config指令模塊
從DB102.DBB22~DB102.DBB42共21個(gè)字節(jié),表示需要發(fā)送給RFID讀寫(xiě)器的數(shù)據(jù),如圖3所示。
圖3 發(fā)送數(shù)據(jù)模塊
從DB102.DBB0~DB102.DBB20共21個(gè)字節(jié),表示RFID讀寫(xiě)器響應(yīng)的數(shù)據(jù)需要存儲(chǔ)的數(shù)據(jù)塊地址,如圖4所示。
從DB104.DBB0~DB102.DBB20共21個(gè)字節(jié),表示PLC發(fā)送給讀卡器讀取標(biāo)簽UID值的指令,如圖5所示。其中DB104.DBB0~DB102.DBB7對(duì)應(yīng)發(fā)送指令為:
FF 05 01 0001 00 78D8
從DB104.DBB22~DB102.DBB42共21個(gè)字節(jié),表示PLC發(fā)送給讀卡器需要讀取標(biāo)簽寄存器值的指令,如圖6所示。其中DB104.DBB22~DB102.DBB32對(duì)應(yīng)發(fā)送指令為:
FF 08 11 0001 00 0000 0A 64F2
圖4 接收數(shù)據(jù)模塊
圖5 PLC發(fā)送給讀卡器讀取標(biāo)簽UID值的指令
從DB104.DBB44~DB102.DBB64共21個(gè)字節(jié),表示PLC需要寫(xiě)入到讀卡器中值的指令,如圖7所示。其中DB104.DBB44~DB102.DBB53對(duì)應(yīng)發(fā)送指令為:
FF 12 12 0001 00 00000A
(00010203040506070809) 66ED
本文介紹通過(guò)RS-485串口,在PLC與RFID之間實(shí)現(xiàn)通信的方法,重點(diǎn)介紹了對(duì)RFID讀卡器中數(shù)據(jù)的讀寫(xiě)功能,這種通信方式簡(jiǎn)單,靈敏度高,抗干擾能力強(qiáng),廣泛應(yīng)用于工業(yè)領(lǐng)域中。
圖6 PLC發(fā)送給讀卡器需要讀取標(biāo)簽寄存器值的指令
圖7 PLC需要寫(xiě)入到讀卡器中值的指令