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