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