工業(yè)機(jī)器人培訓(xùn)機(jī)構(gòu)__IRB360機(jī)器人搬運(yùn)編程有哪些相關(guān)指令?
一、工作站介紹
1.1 工作站介紹
本次任務(wù)主要是使用IRB360并聯(lián)機(jī)器人在輸送鏈上進(jìn)行搬運(yùn)。使用仿真軟件創(chuàng)建工作站,創(chuàng)建smart組件,實(shí)現(xiàn)動畫效果。通過對IRB360機(jī)器人編程、定點(diǎn)位和仿真設(shè)定,仿真運(yùn)行錄像等,本此節(jié)課一次操作演示完成。
二、編程相關(guān)指令
2.1 WaitDI - 等待直至已設(shè)置數(shù)字信號輸入信號
WaitDI(Wait Digital Input)用于等待,直至已設(shè)置數(shù)字信號輸入。當(dāng)執(zhí)行本指令時(shí),如果信號值正確,則本程序僅僅繼續(xù)以下指令。
指令參數(shù):WaitDI Signal Value [MaxTime] [TimeFlag] [Visualize] [Header][Message] | [MsgArray] [Wrap] [Icon] [Image][VisualizeTime] [UIActiveSignal]
Signal:數(shù)據(jù)類型signaldi,信號的名稱。
Value:數(shù)據(jù)類型dionum,信號的期望值。
[MaxTime]:數(shù)據(jù)類型num,允許的最長等待時(shí)間,以秒計(jì)。如果在滿足條件之前耗盡該時(shí)間,則將調(diào)用錯(cuò)誤處理器,如果存在這樣的情況,則采用錯(cuò)誤代碼ERR_WAIT_MAXTIME。如果不存在錯(cuò)誤處理器,則將停止執(zhí)行。
[TimeFlag]:數(shù)據(jù)類型bool,如果在滿足條件之前耗盡最長允許時(shí)間,則包含該值的輸出參數(shù)為TRUE。
其余參數(shù)略
3.1 WaitDI - 等待直至已設(shè)置數(shù)字信號輸入信號
例1 WaitDI di4, 1;
僅在已設(shè)置di4輸入后,繼續(xù)程序執(zhí)行。
例 2 WaitDI grip_status, 0;
僅在已重置grip_status輸入后,繼續(xù)程序執(zhí)行。
例3
WaitDI di1, 1, Visualize Header:="Waiting for signal"
MsgArray:=["Movement will not start until", "the condition
below is TRUE"] Icon:=iconError;
MoveL p40, v500, z20, L10tip;
..
如果條件不符,則在可選參數(shù)Header和MsgArray 將被寫入FlexPendant示教器
屏幕上,為滿足條件的家族要隨行。保持狀態(tài)
3.2 IF - 如果滿足條件,那么...;否則...
根據(jù)是否滿足條件,執(zhí)行不同的指令時(shí),使用IF。依次測試條件,直至滿足其中一個(gè)條件。通過與該條件相關(guān)的指令,繼續(xù)程序執(zhí)行。如果未滿足任何條件,則通過符合ELSE的指令,繼續(xù)程序執(zhí)行。如果滿足多個(gè)條件,則僅執(zhí)行與第一個(gè)此類條件相關(guān)的指令。
1、第一種結(jié)構(gòu):Compact IF 緊湊型
(1)結(jié)構(gòu)和程序執(zhí)行說明
結(jié)構(gòu):IF <EXP> <SMT>
執(zhí)行:Compact IF緊湊型條件判斷指令用于當(dāng)一個(gè)條件滿足后,就執(zhí)行一句指令(特點(diǎn):單組條件,單句指令),如果條件不滿足就不執(zhí)行后面單句語句。
(2)舉例說明
例:IF di08 = 1 Set do02_ClampA;
說明:當(dāng)程序執(zhí)行到此指令時(shí),即判斷 di08 = 1是否為 1,如果條件成立,則執(zhí)行Set do02_ClampA指令,否則跳過IF...ENDIF指令繼續(xù)執(zhí)行下一行。
2、工業(yè)機(jī)器人培訓(xùn)專家給您介紹第二種結(jié)構(gòu):簡單型IF...ENDIF
(1)結(jié)構(gòu)和程序執(zhí)行說明
結(jié)構(gòu):
IF <EXP> THEN
<SMT>
ENDIF
(2)執(zhí)行說明:如果IF后面條件成立則執(zhí)行IF和DNDIF之間語句,如果條件不成立則程序指針不執(zhí)行IF和ENDIF之間語句,而直接跳轉(zhuǎn)至ENDIF后面語句繼續(xù)往下執(zhí)行。
(3)舉例說明
PROC rIF01()
IF flag1 = TRUE THEN
reg1 := reg1 + 1;
WaitTime 1;
ENDIF
WaitTime 1;
ENDPROC
說明:如果布爾量flag1=true,則程序執(zhí)行IF和ENDIF之間語句;如果flag1=false則程序不執(zhí)行IF和ENDIF之間語句而跳到ENDIF后面語句執(zhí)行。
(1)結(jié)構(gòu)程序執(zhí)行說明
結(jié)構(gòu):
IF <EXP> THEN
<SMT>
ELSE
<SMT>
ENDIF
(2)程序執(zhí)行說明:如果IF后面條件成立則執(zhí)行IF和ELSE之間語句,如果IF后面語句不成立則執(zhí)行ELSE和ENDIF之間語句,ELSE只能在最靠近ENDIF添加且只能添加一個(gè)ELSE。
(3)舉例說明
IF di03 = 1 THEN
Set do01;
Set do02;
WaitTime 2;
Reset do01;
Reset do02;
ELSE
reg1 := reg1 + 1;
reg2 := reg1 + 10;
ENDIF 說明:如果di03為1,則置位do01和d
o02,等待2s以后在復(fù)位do01和do02,如果di03為0,則執(zhí)行 reg1 := reg1 + 1和reg2 := reg1 + 10;即根據(jù)di03輸入信號,判斷和選擇執(zhí)行IF、ELSE之間語句或者執(zhí)行ELSE、ENDIF之間語句。
4、第四種結(jié)構(gòu):選擇型結(jié)構(gòu)IF...ELSEIF...ELSEIF...ENDIF
(1)選擇型結(jié)構(gòu):ELSEIF可以有多個(gè)
IF <EXP> THEN
<SMT>
ELSEIF <EXP> THEN
<SMT>
ELSEIF <EXP> THEN
<SMT>
ENDIF
(2)執(zhí)行說明:結(jié)構(gòu)上,在IF和ENDIF之間增加一條或多條ESLEIF;執(zhí)行時(shí)候,如果沒有一個(gè)條件成立,則不選擇任何一個(gè)IF或ELSEIF后面對應(yīng)的語句執(zhí)行;如果有一個(gè)條件程序,則選擇對應(yīng)的IF或ELSEIF后面對應(yīng)的語句執(zhí)行;如果有兩個(gè)或者兩個(gè)以上條件成立,則按照順序從上往下,IF、第一個(gè)ELSEIF、第二個(gè)ELSEIF等等往下,先遇到哪個(gè)條件判斷成立就選擇對應(yīng)的IF或者ELSEIF后面對應(yīng)語句執(zhí)行;執(zhí)行完以后直接跳到ENDIF后面繼續(xù)往下執(zhí)行。
5、第五種結(jié)構(gòu):綜合型結(jié)構(gòu),即把二選一型和選擇型綜合到一起的結(jié)構(gòu)
(1)結(jié)構(gòu)
IF <EXP> THEN
<SMT>
ELSEIF <EXP> THEN
<SMT>
ELSEIF <EXP> THEN
<SMT>
ELSE
<SMT>
ENDIF
(2)執(zhí)行說明
結(jié)構(gòu)上面在IF和ENDIF之間既有一個(gè)或者多個(gè)ELSEIF,也有ELSE;執(zhí)行時(shí)候,一般先看二選一型執(zhí)行,在分析IF和ELSE之間的選擇型ELSEIF來執(zhí)行。第一種情況,如果沒有一個(gè)條件成立則選擇ELSE和ENDIF之間語句執(zhí)行,這里相當(dāng)于二選一機(jī)構(gòu)看待;第二種情況,如果有且只有一個(gè)條件條件成立,則選擇對應(yīng)的IF或者ELSEIF后面對應(yīng)的語句執(zhí)行;第三種情況,如果有兩個(gè)或者兩個(gè)以上條件成立,則按照順序從上往下判斷條件,IF、第一個(gè)ELSEIF、第二個(gè)ELSEIF等等往下,先遇到哪個(gè)條件成立就選擇對應(yīng)的IF或者ELSEIF后面對應(yīng)的語句執(zhí)行;執(zhí)行完以后直接跳到ENDIF后面往下繼續(xù)執(zhí)行。
3.3 TEST - 根據(jù)表達(dá)式的值...
根據(jù)表達(dá)式或數(shù)據(jù)的值,當(dāng)有待執(zhí)行不同的指令時(shí),使用TEST。如果并沒有太多的替代選擇,則亦可使用IF..ELSE指令。將測試數(shù)據(jù)與第一個(gè)CASE條件中的測試值進(jìn)行比較。如果對比真實(shí),則執(zhí)行相關(guān)指令。此后,通過ENDTEST后的指令,繼續(xù)程序執(zhí)行。如果未滿足第一個(gè)CASE條件,則對其他CASE條件進(jìn)行測試等。如果未滿足任何條件,則執(zhí)行與DEFAULT相關(guān)的指令(如果存在)。
指令參數(shù):TEST Test data {CASE Test value {, Test value} : ...} [ DEFAULT:...] ENDTEST
Test data
數(shù)據(jù)類型:所有
用于比較測試值的數(shù)據(jù)或表達(dá)式。
Test value
數(shù)據(jù)類型:與test data相同
測試數(shù)據(jù)必須擁有的值,以供執(zhí)行相關(guān)的指令。
舉例:
TEST reg1
CASE 1,2,3 :
routine1;
CASE 4 :
routine2;
DEFAULT :
TPWrite "Illegal choice";
Stop;
ENDTEST
根據(jù)reg1的值,執(zhí)行不同的指令。如果該值為1、2或3時(shí),則執(zhí)行routine1。如果該值為4,則執(zhí)行routine2。否則,打印出錯(cuò)誤消息,并停止執(zhí)行。
只要給定條件表達(dá)式評估為TRUE值,當(dāng)重復(fù)一些指令時(shí),使用WHILE。
1、WHILE指令結(jié)構(gòu)定義
(1)While指令的結(jié)構(gòu):
WHILE <EXP> DO 這里<EXP>是條件部分
<SMT> 這里<SMT>是指令輸入地方
ENDWHILE
<SMT>是指令輸入地方,一般光標(biāo)選中<SMT>,然后添加指令。<EXP>是條件,光標(biāo)選中以后單擊進(jìn)去輸入表達(dá)式;一般條件<EXP>部分可以是表達(dá)是,也可以是多個(gè)表達(dá)是之間的與或異或求余等關(guān)系,條件的結(jié)果只有對錯(cuò),如下所示:
對=1=true=ON
錯(cuò)=0=false=OFF
2、while舉例說明
舉例一:
reg1 := 1;
WHILE reg1 <= 10 DO
reg1 := reg1 + 1;
ENDWHILE
執(zhí)行說明:初始化reg1=1,執(zhí)行while指令時(shí)候,先判斷reg1<=10的條件是否成立,如果條件成立則執(zhí)行循環(huán)語句內(nèi)的內(nèi)容,while中每次執(zhí)行一次reg1:=reg1+1,即reg1自加一;執(zhí)行完一輪以后程序指針又跳到while指令去第二次判斷reg1<=10條件是否成立,條件成立則又繼續(xù)執(zhí)行循環(huán)語句內(nèi)的內(nèi)容reg1:=reg1+1,即reg1又自加一一次;這樣重復(fù)判斷條件重復(fù)執(zhí)行while中指令,直到條件reg1<=10不成立,即reg1=11時(shí)候,程序執(zhí)行指針才會跳轉(zhuǎn)到endwhile指令后面,結(jié)束while指令,往下繼續(xù)運(yùn)行。
舉例二:累加計(jì)算
PROC rWHILE2()
a := 0;
i := 1;
WHILE i <= 100 DO
a := a + i;
i := i + 1;
ENDWHILE
WaitTime 3;
ENDPROC
WHILE TRUE DO
<SMT>
ENDWHILE
執(zhí)行說明:while指令的條件是true,即條件一直成立,所以程序指針執(zhí)行到while指令以后,程序就會一直永遠(yuǎn)地執(zhí)行while指令,程序指針不會跳出到endwhile指令后面繼續(xù)往下運(yùn)行,所以這里的while就是一個(gè)死循環(huán),即無限循環(huán)。一般可以用在編寫程序正常自動運(yùn)行部分,讓機(jī)器人正常工作時(shí)候處于永遠(yuǎn)執(zhí)行。