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