TEST指令,GOTO、LABEL指令,STOP指令
時(shí)間:2021-06-04 16:24
來(lái)源:
下面智通教育給您帶來(lái)TEST等各種指令
1.TEST-根據(jù)表達(dá)式的值…
TEST指令可以對(duì)表達(dá)式或數(shù)據(jù)的多個(gè)值進(jìn)行判斷,根據(jù)不同的值執(zhí)行相對(duì)應(yīng)的指令。該指令的使用格式如下:
TEST <表達(dá)式>
CASE<值>:
…
CASE<值>:
…
DEFAULT:
…
ENDTEST
使用實(shí)例1:
TEST reg1
CASE 1:
MOVL p10,v1000,fine,tool1;
CASE 2,3:
MOVL p20,v1000,fine,tool1;;
DEFAULT:
stop;
ENDTEST
說(shuō)明:對(duì)reg1的值進(jìn)行判斷,如果為1,則線性移動(dòng)至p10點(diǎn),如果為2或3,則線性移動(dòng)至p20點(diǎn),否則機(jī)器人停止運(yùn)行。
使用實(shí)例2:
TEST go1
CASE 2:
routine1;
CASE 6:
Routine2;
CASE 7:
Routine3;
DEFAULT:
TPWrite”waiting!”
stop;
ENDTEST
說(shuō)明:對(duì)組輸出信號(hào)go1的值進(jìn)行判斷,如果為2,則執(zhí)行例行程序routine1,如果為6,則執(zhí)行例行程序routine2,如果為7,則執(zhí)行例行程序routine3,否則寫屏“waiting!”并停止。
1. TEST指令可以添加多個(gè)“CASE”,但只能有一個(gè)“DEFAULT”。
2. TEST可以對(duì)所有數(shù)據(jù)類型進(jìn)行判斷,但是進(jìn)行判斷的數(shù)據(jù)必須擁有值。
3. 如果并沒(méi)有太多的替代選擇,則亦可使用IF…ELSE指令。
2. GOTO、LABEL指令
在程序運(yùn)行中,如果要將程序執(zhí)行轉(zhuǎn)移到相同程序內(nèi)的另一線程,可以用GOTO和LABEL組成的跳轉(zhuǎn)標(biāo)簽指令達(dá)成。GOTO-轉(zhuǎn)到新的指令
GOTO用于將程序執(zhí)行轉(zhuǎn)移到相同程序內(nèi)的另一線程(標(biāo)簽)。
LABEL-線程名稱
Label用于命名程序的指令。
如果程序執(zhí)行到GOTO指令,則程序的執(zhí)行將會(huì)直接跳轉(zhuǎn)至相對(duì)應(yīng)的LABEL處,并執(zhí)行LABEL后的指令。
使用實(shí)例1:
MoveL pPlace, v1000, fine, tool1;
Reset do1;
WaitTime 0.5;
GOTO Pick;
…
Pick:
說(shuō)明:線性移動(dòng)至放置點(diǎn)pPlace后,復(fù)位輸出信號(hào)do1,然后等待0.5s,程序再移動(dòng)至名為Pick的標(biāo)簽處繼續(xù)執(zhí)行。
使用實(shí)例2:
IF reg1 < 9 THEN
GOTO L1;
ELSE
GOTO ST;
ENDIF
L1:
...
ST:
...
說(shuō)明:如果reg1的值小于9,則程序跳轉(zhuǎn)至名為L(zhǎng)1的標(biāo)簽處繼續(xù)執(zhí)行,否則跳轉(zhuǎn)至名為ST的標(biāo)簽處繼續(xù)執(zhí)行。
使用實(shí)例3:
reg1 := 1;
next:
...
reg1 := reg1 + 1;
IF reg1<=5 GOTO next;
說(shuō)明:如果reg1的值小于等于5,則跳轉(zhuǎn)至名為next的標(biāo)簽處繼續(xù)執(zhí)行“…”所代表的程序。這個(gè)實(shí)例中,“…”所代表的程序總的會(huì)被執(zhí)行5次(reg1=1、2、3、4、5)。
工業(yè)機(jī)器人培訓(xùn)專家的小貼士:
1. LABEL需要先進(jìn)行創(chuàng)建才能在使用GOTO指令時(shí)直接進(jìn)行選擇。
2. GOTO指令限制:僅能將程序執(zhí)行轉(zhuǎn)移到相同程序內(nèi)的一個(gè)標(biāo)簽。
3. LABEL的名稱創(chuàng)建具有唯一性:不能與程序內(nèi)其他標(biāo)簽名相同;不能與程序內(nèi)的所有數(shù)據(jù)名稱相同。
3. STOP指令
STOP-停止程序執(zhí)行STOP指令用于停止程序執(zhí)行。在Stop指令就緒之前,將完成當(dāng)前執(zhí)行的所有移動(dòng)。該指令的使用格式為:
Stop [ NoRegain ] | [ AllMoveTasks ];
如果STOP指令使用變量NoRegain,若機(jī)械臂和外軸已遠(yuǎn)離停止位置,則不會(huì)再返回;如果不使用變量NoRegain,若機(jī)械臂和外軸已逐漸遠(yuǎn)離停止位置,則會(huì)進(jìn)行相關(guān)提示,用戶可選擇是否返回停止位置。
如果STOP指令使用變量AllMoveTasks,則所有運(yùn)行中的普通任務(wù)都將停止;如果不使用變量AllMoveTasks,則僅停止該指令所在任務(wù)中的程序。
使用實(shí)例1:
TPErase;
TPWrite “Restart Error!”;
Stop;
說(shuō)明:示教器顯示屏輸出“Restart Error!”消息后,停止程序執(zhí)行。
使用實(shí)例2:
MoveL p1, v500, fine, tool1;
TPWrite "Jog the robot to the position for pallet corner 1";
Stop NoRegain;
p1_read := CRobT(Tool:=tool1 WObj:=wobj0);
MoveL p2, v500, z50, tool1;
說(shuō)明:通過(guò)位于p1的機(jī)械臂,停止程序執(zhí)行。運(yùn)算符點(diǎn)動(dòng),機(jī)械臂移動(dòng)至p1_read。關(guān)于下一次程序起動(dòng),機(jī)械臂并未恢復(fù)至p1,因此,可將位置p1_read儲(chǔ)存在程序中。
Stop、EXIT、Break都有停止程序運(yùn)行的含義,但它們之間又各有區(qū)別,具體為:
1. Stop指令用于臨時(shí)停止程序執(zhí)行,程序指針會(huì)保留,并且還可以繼續(xù)運(yùn)行。
2. EXIT指令用于永久地停止程序執(zhí)行,程序指針會(huì)消失,要繼續(xù)程序執(zhí)行需重置程序指針。
3. Break指令是指中斷程序執(zhí)行,無(wú)論機(jī)械臂是否到達(dá)目標(biāo)點(diǎn),機(jī)械臂立即停止運(yùn)動(dòng)。
歡迎掃碼添加老師微信,隨時(shí)隨地為您解答課程疑問(wèn)。