王曉峰
(蘭州職業(yè)技術(shù)學(xué)院,甘肅 蘭州 730070)
工業(yè)機器人的普及是實現(xiàn)自動化生產(chǎn),提高社會生產(chǎn)效率,推動企業(yè)和社會生產(chǎn)力發(fā)展的有效手段[1]。在工農(nóng)業(yè)生產(chǎn)中,系統(tǒng)可以通過PLC連接,需要確定相關(guān)的接口并進行定義,同時需要通過示教器完成編程,最后再通過調(diào)試測試是否通過。在這個過程中需要明確PLC的I/O變量,RFID的接口以及使用的方法,PLC的I/O變量可以在前期進行確定,填充到對應(yīng)的表格里方便查閱。
要確定程序數(shù)據(jù)類型,類似于clock、rotate等數(shù)據(jù)類型,RFID的程序數(shù)據(jù)類型就是rfid,一個數(shù)據(jù)類型對應(yīng)了兩個變量,分別是rfidcon和rfidstate。下面就這兩個變量進行討論。rfidcon在其中起到的作用是控制命令,負責(zé)將機器人的命令傳送到PLC里面,在PLC里面要寫入對應(yīng)的子程序來處理機器人傳送的信號;rfidstate負責(zé)進行狀態(tài)操作,也就是將處理的結(jié)果由PLC反饋給機器人。通過以上描述可以發(fā)現(xiàn),通過rfidcon和rfidstate兩個變量可以將RFID操作形成一個完整的閉環(huán)控制。所以這兩個變量在需要進行RFID控制時要出現(xiàn)在對應(yīng)的控制程序里。每一個變量也有其對應(yīng)的數(shù)據(jù)結(jié)構(gòu),通過檢索每一個數(shù)據(jù)結(jié)構(gòu),可以更清晰的了解到內(nèi)部的構(gòu)件。在機器人應(yīng)用過程中,如果已有一個程序模版,則可以直接將該模塊加載至機器人系統(tǒng)中[2]。
每一個變量由6個部分構(gòu)成。RFID擁有自己的接口,每個接口擁有Command、stepno、state、name、date、time這6個變量。其中Command可以實現(xiàn)命令與響應(yīng)的功能;stepno可以實現(xiàn)工序;state實現(xiàn)工件的狀態(tài),即工件的類型;name是操作者標(biāo)識;date是系統(tǒng)生成的日期,不需要操作者再進行定義;time是系統(tǒng)生成的時間,也不需要額外的操作。
對于Command控制字,有三種對應(yīng)的指令和與之相匹配的功能,在控制字中出現(xiàn)的指令代號分別是10、20、30,與之對應(yīng)的功能是完成數(shù)據(jù)的寫操作、完成數(shù)據(jù)的讀操作,最后是可以實現(xiàn)復(fù)位,這是控制字所實現(xiàn)的功能;除了控制字來定義Command,還有狀態(tài)字來完成定義,狀態(tài)字的指令集較多,可以豐富它的接口功能;在指令集中11實現(xiàn)寫這個功能的完成,10為數(shù)據(jù)在寫入中,12為數(shù)據(jù)寫入錯誤,21為數(shù)據(jù)讀取完成,20為數(shù)據(jù)讀取中,22為數(shù)據(jù)讀取錯誤,31為復(fù)位狀態(tài)完成,30為數(shù)據(jù)正在復(fù)位中,32顯示為復(fù)位錯誤,100顯示為正在待機,101顯示有芯片正在工作區(qū)。接口、控制字、狀態(tài)字分別完成對應(yīng)的功能。
開始先要進行復(fù)位操作,前一次的操作會在存儲區(qū)留下信號,需要進行復(fù)位,以防對下一次使用造成誤操作。既然要使用復(fù)位操作,就要使用對應(yīng)的程序數(shù)據(jù)類型,程序數(shù)據(jù)類型中要使用能完成RFID操作的代碼。其中已聲明程序數(shù)據(jù)有CON和STATE兩種。接口代碼要選Command狀態(tài)字來實現(xiàn)寫入的功能,Command狀態(tài)字里找到可以完成相關(guān)復(fù)位的功能指令,其中指令30、31、32都和復(fù)位功能有關(guān),系統(tǒng)要實現(xiàn)的是復(fù)位功能,所以32指令代表的復(fù)位錯誤不在使用之列。
通過以上的分析,得出程序,RFIDCON.Command:=30,此條命令就是實現(xiàn)復(fù)位操作,下一步要得到復(fù)位是否在進行,復(fù)位操作的結(jié)果是什么,是否完成了任務(wù),所以要等待復(fù)位完成。這里要使用已聲明程序數(shù)據(jù)里的STATE,同時在Command狀態(tài)字里調(diào)用剛才提到的復(fù)位功能指令,30表示復(fù)位中,下一個是要確定復(fù)位的結(jié)果,要用31表達復(fù)位完成,實現(xiàn)復(fù)位的功能。所以表示完成要這樣寫,waituntil.RFIDSTATE.Command:=31,輸入這條指令,等待復(fù)位完成。復(fù)位工作結(jié)束后,需要將指令清空,方便后面寫入其他的指令代碼。此時需要寫一條將之前進行復(fù)位操作的狀態(tài)字清空的指令狀態(tài)字,這里使用的Command狀態(tài)字為0,其他的寫的方法和第一條一致,清除即可,RFIDCON.Command:=0。以上過程即為復(fù)位程序的相關(guān)實例,可以在復(fù)位操作時使用。
通過以上操作,大致發(fā)現(xiàn)RFID設(shè)置的方法,結(jié)合以上的狀態(tài)字、命令字、字符指令來設(shè)置需要的功能,以其特有的格式完成字符的排列,RFID數(shù)據(jù)復(fù)位后就可以進行數(shù)據(jù)的準(zhǔn)備階段。
開始先編輯一個文件的名稱,在進行文件命名時以本次要實現(xiàn)功能的拼音來命名這個文件,即通俗易懂又方便日后查找,通過將本次任務(wù)的名字功能拼音化,對于以后看見文件名字就知道本條程序的功能內(nèi)容有很大幫助。在本次要實現(xiàn)RFID的射頻識別功能,所以命名時就讓名字里出現(xiàn)RFID,這里可以設(shè)定姓名的拼音或者是一段編號,控制在8個字符。在這里name這個接口用到的數(shù)據(jù)類型是string,也就是字符串類型。
在數(shù)據(jù)準(zhǔn)備階段需要用到stepno和state兩個接口,其中stepno完成步驟/工序,state實現(xiàn)狀態(tài)/工件類型。同時要用到程序數(shù)據(jù)類型為RFID,使用前面已聲明的數(shù)據(jù)RFIDCON,其后面有6個間隔開的數(shù)據(jù),這六個就是前面提到的數(shù)據(jù)結(jié)構(gòu)中的六個接口,在進行數(shù)據(jù)準(zhǔn)備時可以將前三個值設(shè)置為0,數(shù)據(jù)類型為自己定義的變量、數(shù)值數(shù)據(jù),后兩個都為字節(jié)。后三個中第一個為name,字符串類型控制在8個字符以內(nèi),后兩個日期和時間可以不用設(shè)置,采用系統(tǒng)默認(rèn),但是數(shù)據(jù)類型還是字符串。這樣就把RFID的六個接口設(shè)置完畢了。下面還是使用RFIDCON,這一次使用stepno,設(shè)置為1,同時另起一行還有RFIDCON,后面用state,設(shè)置數(shù)值為1。
數(shù)據(jù)準(zhǔn)備完成后可以正式寫入程序。首先是控制字的設(shè)置,即Command控制字的取值大小,通過前面的案例可以發(fā)現(xiàn)在Command控制字?jǐn)?shù)值不同的時候可以表達不同的含義,其控制字有3個不同的值表達不同的功能。程序中要使用Command狀態(tài)字,在接口中,狀態(tài)字有11個不同的指令來完成與之相匹配的功能,要將數(shù)據(jù)寫入程序,就要使用狀態(tài)字里的指令10,表示寫入中,也就是RFIDCON.Command:=10,此條程序就是將數(shù)據(jù)正在寫入寄存器里,從這里可以發(fā)現(xiàn)程序在書寫時的相關(guān)規(guī)則,RFIDCON在程序里會固定出現(xiàn),同時Command狀態(tài)字在其后面表達不同的功能。作為已聲明的數(shù)據(jù)結(jié)構(gòu)類型,RFIDCON和rfidstate會交替出現(xiàn),作為兩個關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)再和不同數(shù)值的Command狀態(tài)字組合,可以完成多種的任務(wù)程序。下一步是完成寫入程序,根據(jù)上面的操作方法,關(guān)鍵是確定狀態(tài)字的指令功能代碼,同時使用rfidstate表達寫入完成。在rfidstate的前面還要使用waituntil,寫出來也就是waituntil.RFIDSTATE.Command:=11,在Command狀態(tài)字中11表示寫入功能完成。后面的程序就是RFIDCON.Command:=0,可以看出來和之前的程序是一樣的,不管執(zhí)行什么樣的操作,都需要書寫指令清除。
通過以上可以將RFID的信號反饋給PLC,其實RFID的信號可以理解為PLC的模擬量信號,通過前端RFID變相的作為傳感器來傳輸信號,通過PLC的程序執(zhí)行控制機械軸運動。比如RFID在經(jīng)過復(fù)位后開始寫入程序,相當(dāng)于傳輸進來了一個開關(guān)量,這個開關(guān)量可以設(shè)置成與以下幾個量相關(guān),也就是激活相應(yīng)的功能,當(dāng)然作為這個開關(guān)量本體可以設(shè)置為字節(jié)輸入,也可以是一位輸入。要滿足以下幾個量,有對應(yīng)的輸出反饋到關(guān)節(jié)軸,帶動機器人運動,在運動中出現(xiàn)的幾個點要用示教器進行定位作為創(chuàng)建點命名存儲在程序中,同時要做好另一個程序,也就是如果沒有RFID,沒有相關(guān)的輸入或者是識別失敗,要在示教器中確定幾個點,將無法識別的物品放回原處,同時抓取下一個物品進行下一輪的識別。將數(shù)字輸入信號與系統(tǒng)的控制信號關(guān)聯(lián)起來,就可以對系統(tǒng)進行控制[3]。如果本次運動已實現(xiàn),但未識別到物體,也就是輸入1信號沒有給到PLC,可以設(shè)置一個定時器,在一定時間內(nèi)如果沒有開關(guān)量的1信號傳入PLC的輸入端,定時器就觸發(fā)另一輸出點來讓機械手完成返回動作,即前面示教的幾個返回點,將無法識別的物體放回原處,等待將物品的識別故障處理后,再進行下一次的抓取和確認(rèn)。在處理重物的場合,用機器人支撐重量,由人進行仔細定位[4]。以上只是簡單的反饋了一下信號有效和信號無法識別的處理方法,輸入用I的相應(yīng)位或字節(jié)即可完成,輸出用Q的兩個位就可以完成對物體的識別,下一步將可識別物品放入前一個工件內(nèi),如不能識別,物體會停頓一段時間后按原來的路徑返回原處。兩種結(jié)果兩個位就可以完成相應(yīng)的功能。
通過以上的描述,系統(tǒng)實現(xiàn)了RFID的幾個常見程序設(shè)置,其他的功能也可以通過以上的操作方法類推,同時就PLC在運動過程中如何設(shè)置輸入輸出以及一些其他附帶的功能也有相應(yīng)的解決辦法。同時結(jié)合示教器完成最后的收尾及幾個固定點的設(shè)置也在里面進行了說明。RFID在后續(xù)的使用中會開發(fā)出更多的功能,在除了機器人領(lǐng)域之外也可以有更多的使用空間。大家也可以在基礎(chǔ)之上進行新的算法探索。