PLC與RFID控制器的無協(xié)議通信
0. 引言
在大型生產(chǎn)線上,為了實(shí)現(xiàn)流水線自動化,PLC與RFID技術(shù)結(jié)合的應(yīng)用不斷增加。PLC作為一種高可靠性的控制裝置,與RFID進(jìn)行數(shù)據(jù)通信,不但可以實(shí)現(xiàn)對每一個生產(chǎn)過程的控制與管理,而且可以提高自動化生產(chǎn)流水線的生產(chǎn)效率。
歐姆龍公司的CPM2A/2C、CQM1H、C200Hα、CP1、CJ1及CS1等系列PLC都可以支持無協(xié)議通信功能。利用TXD和RXD等指令,通過串行通信端口,PLC與計(jì)算機(jī)之間、PLC與PLC之間、PLC與各種通信設(shè)備之間(如變頻器、條形碼讀入器和串行打印機(jī)等)可以進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)通信[1]。本文選用歐姆龍CP1H型PLC,實(shí)現(xiàn)與與歐姆龍的V600系列RFID控制器的無協(xié)議通信。PLC作為上位機(jī),RFID控制器作為下位機(jī)。
1. 系統(tǒng)結(jié)構(gòu)
上位PLC與下位RFID控制器之間有1:1和1:N兩種鏈接模式,1臺PLC (上位機(jī))只能連接32臺RFID(下位機(jī)),本文介紹1:1鏈接模式。系統(tǒng)中PLC與RFID控制器之間通過RS-422總線連接。上位機(jī)與RFID控制器通信時,使用專用的SYSWAY通信協(xié)議,上位機(jī)優(yōu)先發(fā)送通信指令,RFID控制器接收后,首先分析來自主機(jī)的命令,然后對RFID標(biāo)簽進(jìn)行讀寫。通信結(jié)束后,RFID 控制器返回一個響應(yīng)代碼到主機(jī)。SYSWAY通信協(xié)議支持1:1和1:N通信。當(dāng)主機(jī)與RFID控制器是1對1連接時,采用1:1方式通信;當(dāng)連接主機(jī)的RFID控制器超過一個時,采用1:N方式通信。在1:N通信模式下,可以通過對RFID控制器設(shè)置來實(shí)現(xiàn)主機(jī)與RFID控制器的1:1通信。
主機(jī)CP1H作為上位機(jī),由于PLC與RFID控制器之間選用RS-422方式進(jìn)行通信,所以CP1H端口1選用插件CP1W-CIF11,為RS-422/485型。RFID(由V600-CA5D02 RFID控制器、V600-H07天線及V600-D23P66N無源標(biāo)簽三部分組成)作為下位機(jī),V600-CA5D02 RFID控制器的機(jī)體上分別帶有一個RS-232C與RS-422/485串行通信口,都支持與計(jì)算機(jī)、PLC等主機(jī)設(shè)備之間的通信。PLC與RFID控制器的接線如圖1所示。
圖1 PLC與RFID控制器接線
CP1W-CIF11有一組DIP開關(guān),共有8個,SW1表示是否使用終端電阻;SW2、SW3表示通信的連接方式:422或485;SW4為空;SW5、SW6表示通信時有無RS控制。在使用其之前,根據(jù)通信的要求對DIP開關(guān)進(jìn)行設(shè)定:SW1為ON,使用終端電阻;SW2、SW3為OFF,使用422連接方式;SW5、SW6為任意。
2. 無協(xié)議通信及其指令
無協(xié)議通信,即不使用重試處理、不經(jīng)過數(shù)據(jù)格式的轉(zhuǎn)換處理及具有對應(yīng)接收的數(shù)據(jù)進(jìn)行處理分支等的順序通信協(xié)議。在無協(xié)議且無轉(zhuǎn)換的條件下,通過通信端口的輸入輸出指令(TXD,RXD)發(fā)送和接收數(shù)據(jù)。無協(xié)議通信過程十分簡單,只需在PLC系統(tǒng)設(shè)定中將串行端口的串行通信模式設(shè)定為無協(xié)議通信。根據(jù)無協(xié)議通信,PLC就可以與帶有RS-232端口或者RS-422/485端口的外部設(shè)備,按照TXD和RXD指令進(jìn)行單方的發(fā)送(數(shù)據(jù)流從PLC到通用外部設(shè)備)和接收數(shù)據(jù)(數(shù)據(jù)流從通用外部設(shè)備到PLC)[2]。無協(xié)議通信的實(shí)現(xiàn)步驟如圖2所示。
圖2 無協(xié)議通信的實(shí)現(xiàn)步驟
使用無協(xié)議通信發(fā)送和接收消息時,開始代碼及結(jié)束代碼之間的數(shù)據(jù)用TXD指令來發(fā)送,或者是將要插入開始代碼及結(jié)束代碼之間的數(shù)據(jù)用RXD指令來接收。使用TXD指令發(fā)送數(shù)據(jù)時,應(yīng)先將數(shù)據(jù)從I/O存儲器讀取后發(fā)送,使用RXD指令接收數(shù)據(jù)時,順序恰恰相反。TXD/RXD一次發(fā)送和接收的最大數(shù)據(jù)量為256個字節(jié)。無協(xié)議通信時,發(fā)送和接收的數(shù)據(jù)的開始代碼和結(jié)束代碼由用戶在PLC系統(tǒng)設(shè)定中指定。圖3為歐姆龍CP1H型PLC無協(xié)議通信的指令結(jié)構(gòu)。
圖3 無協(xié)議通信指令
TXD指令根據(jù)由S指定的發(fā)送數(shù)據(jù)開頭CH編號,對由N指定的發(fā)送字節(jié)長度的數(shù)據(jù)進(jìn)行無變換操作。隨著PLC系統(tǒng)設(shè)定為無順序模式時的開始代碼/結(jié)束代碼的指定,由C的位8~11輸出到指定的串行通信選裝件版的串行端口(無順序模式)。但是只能在發(fā)送準(zhǔn)備標(biāo)志(串行端口1:A392.13、串行端口2:A392.05)為ON時才能發(fā)送。能發(fā)送字節(jié)數(shù)最大為259字節(jié)(數(shù)據(jù)部最大256字節(jié),包括開始代碼、結(jié)束代碼)。
RXD指令在串行通信選裝件板的串行端口(無順序模式)中,從由D指定的接收數(shù)據(jù)保存開頭CH編號開始,輸出由N指定的相當(dāng)于保存字節(jié)長度的接收結(jié)束數(shù)據(jù)。當(dāng)接收結(jié)束數(shù)據(jù)不滿由N所指定的保存字節(jié)長度時,輸出實(shí)際存在的接收結(jié)束數(shù)據(jù)。但是當(dāng)接收結(jié)束標(biāo)志(串行端口1:A392.14、串行端口2:A392.06)為ON時,執(zhí)行本指令來接收(來自接收緩沖器的)數(shù)據(jù)。接收可能字節(jié)數(shù)最大為259字節(jié)(數(shù)據(jù)部最大256字節(jié),包括開始代碼、結(jié)束代碼)。
3. RFID控制器及其命令集和數(shù)據(jù)傳輸協(xié)議
V600系列RFID控制器擁有豐富的指令系統(tǒng),共23條,可以非常靈活的應(yīng)用于各種場合,其中包括通信命令、一般的通信子命令、主機(jī)命令等[3]。通信命令多用于執(zhí)行與RFID標(biāo)簽的通信,例如,對靜止或者是移動的RFID標(biāo)簽進(jìn)行讀寫等。通信子命令一般用于取消某個命令的執(zhí)行,而主機(jī)命令則用于主機(jī)設(shè)備控制 RFID控制器。在上位機(jī)與RFID 控制器通信過程中用到最多的是通信命令,常用通信命令的代碼及其功能如表1。
表1 RFID常用通信命令表
Table.1 common commands of RFID
在1:1的通信模式下,通信過程中不計(jì)算校驗(yàn)碼,因此,只能通過響應(yīng)代碼來判斷通信結(jié)果的正確性。圖4給出了上位機(jī)與RFID控制器之間傳輸數(shù)據(jù)的格式。從上位機(jī)發(fā)送到RFID控制器的數(shù)據(jù)塊為命令幀,反過來,從RFID控制器發(fā)送到上位機(jī)的數(shù)據(jù)塊為響應(yīng)幀。每個幀以指令代碼開始,以結(jié)束符結(jié)束,響應(yīng)幀中還包括反應(yīng)執(zhí)行結(jié)果的響應(yīng)碼。上位機(jī)與RFID 控制器之間可以傳送十六進(jìn)制或ASCII形式的數(shù)據(jù),每一幀最大允許傳送數(shù)據(jù)為271個字符。
如果傳送的數(shù)據(jù)大于271個字符,可以將數(shù)據(jù)分成起始幀、若干中間幀、結(jié)束幀進(jìn)行傳送。起始幀必須包含命令碼,讀/寫頭號,開始地址等,否則通信的過程中將會有錯誤發(fā)生。上位機(jī)每發(fā)送完一幀時,在收到RFID 控制器返回的分界符(即“↙”)后再發(fā)送下一幀,只有當(dāng)結(jié)束幀數(shù)據(jù)發(fā)送完畢時才返回響應(yīng)代碼。
圖4 RFID控制器1:1數(shù)據(jù)傳輸格式
4. PLC與RFID控制器無協(xié)議通信的實(shí)現(xiàn)
4.1 CP1H通信端口設(shè)置
PLC與RFID控制器之間使用RS-422方式進(jìn)行通信。根據(jù)RFID控制器通信規(guī)格要求,使用歐姆龍編程軟件CX-Programmer7.1將CP1H串口1模式設(shè)置為“RS-232C”,通信波特率設(shè)置9600,數(shù)據(jù)格式為7、2、E,如圖5所示
圖5 CP1H通信端口設(shè)置
4.2 RFID控制器參數(shù)設(shè)置
RFID控制器通信參數(shù)設(shè)置應(yīng)與PLC通信端口參數(shù)一致:波特率9600,偶校驗(yàn)方式,7位數(shù)據(jù)位,2位停止位。DIP開關(guān)SW6為ON,表示使用終端電阻。
4.3 通信舉例
通過PLC與RFID控制器之間的通信,編程實(shí)現(xiàn)從RFID標(biāo)簽地址0100H開始的通道內(nèi)讀取四個數(shù)據(jù),讀取的數(shù)據(jù)存儲到PLC的DM區(qū)內(nèi)。根據(jù)通信數(shù)據(jù)傳輸格式,要發(fā)送的數(shù)據(jù)為RDA1001004*。將要發(fā)送的數(shù)據(jù)轉(zhuǎn)化為16進(jìn)制數(shù)“524441313030313030342A0D” ,存放到DM0開始的6個通道內(nèi)。這6個通道對應(yīng)值分別為:DM0:5244;DM1:4131;DM2:3030;DM3:3130;DM4:3034;DM5:2A0D。
PLC與RFID控制器無協(xié)議通信程序如圖6所示。A392.13為發(fā)送允許標(biāo)志位,當(dāng)PLC的串口1準(zhǔn)備好時,A392.13自動為ON,發(fā)送數(shù)據(jù)指示100.00變亮,則PLC可以通過此端口發(fā)送數(shù)據(jù)。當(dāng)0.00為ON時,將DM0開始的6個通道的數(shù)據(jù)發(fā)送出去,RFID控制器接收到指令后做出響應(yīng)。A392.14為接收允許標(biāo)志位。串口準(zhǔn)備好后,A392.14自動為ON,接收數(shù)據(jù)指示100.07變亮。PLC開始自動接收RFID控制器返回的響應(yīng)數(shù)據(jù),并自動存儲到DM100開始的5個通道內(nèi)。執(zhí)行程序后查看從DM100開始的5個通道的內(nèi)容,分別為:DM100:5244;DM101:3030;DM102:3131;DM103:3131;DM104:2A0D。所以接收的數(shù)據(jù)為:RD001111*,根據(jù)數(shù)據(jù)傳輸響應(yīng)幀數(shù)據(jù)格式,可知從RFID標(biāo)簽讀出的四個數(shù)為:1111。
圖6 PLC與RFID控制器通信程序
5. 結(jié)束語
無協(xié)議通信是一種簡便易行的通信方式,歐姆龍的CPM2A和CP系列等小型機(jī)都可以實(shí)現(xiàn)[4]。這種通信方式編程靈活,通信可靠性高,是一種比較理想的低成本通信方式。