版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ABB機器人指令培訓教材2024/9/26數據與數據類型2024/9/26數據構成類型基本數據類型。 最根本的數據類型,無法分離與組合。組合數據類型。 由多個基本數據類型組成的新數據類型,也可以由多個基本數據類型與多個組合數據類型組成?;麛祿愋?。 除了名稱,這種數據類型與原數據類型相同,可以互相賦值。2024/9/26基本數據類型ABB
機器人有三種基本數據類型:Num-數字數據
1 3.14159 4.31E2 -5E-1String-字符串數據
雙引號內最長為80個字節(jié)。 “Thisisalongstring.”Bool-邏輯量數據
只有TRUE
或FALSE。其他數據類型都由這三種基本數據類型組合或化名而成。2024/9/26組合數據類型實例pos組成 值 數據類型
x 10 numy 45 numz 1.3 numorient組成 值 數據類型
q1 1 numq2 0 numq3 0 numq4 0 numVARpospos1:=[10,45,1.3];VARorientorient1:=[1.0,0,0,0];2024/9/26組合數據類型實例組成組合數據類型的所有基本數據都可以單獨賦值。PERStooldatagripper:=
[TRUE,[[97.4,0,223.1],[0.924,0,0.383,0]],[5,[23,0,75],[1,0,0,0],0,0,0]];
gripper.robhold:=TRUE; gripper.tframe.trans.z:=224;2024/9/26化名數據類型 VARdionumhigh:=1;
VARnumlevel;level:=high;除了名稱,這種數據類型與原數據類型相同,可以互相賦值。2024/9/26數據命名數據命名必須符合以下要求:命名只能使用字母、數字與下劃線。名稱最長使用16個字符。第一個字符必須為字母。好的數據名稱能幫助理解程序。數據名稱不能使用
RAPID語言專用詞,例如:num、MoveL、BASE
等。機器人不區(qū)分數據名稱中字母大小寫,例如:football與FoOtBAlL等同。2024/9/26數據性質在機器人程序中,根據不同的工況,有三種數據性質可以選擇。VAR Variable,變量。CONST Constant,常量。PERS Persistent,可變量。2024/9/26數據性質-VAR實例:VARnummint;VARnumcherry:=100;VARboolTimeOut:=TRUE;VARstringstBase:=”Welcome”;變量,用于程序運行時,記憶相應數據值。在程序自動運行時,變量可以被賦值。當機器人被重置(Reset),變量數據值會自動復位,回到初始值。2024/9/26數據性質-CONST實例:CONSTstringstr:=”ABBRobotics…”;CONSTrobtargethome0p:=[[1962.64,334.13,-177.17],[0.420452,0.582636,-0.576927,-0.388473],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
所有常量在被定義時,必須被賦予一個相應的初始值。常量,在程序自動運行時,其記憶的數據值無法更改與賦值。2024/9/26數據性質-PERS實例:
PERSbooldirty:=FALSE;
PERSnumnCouther:=0;所有可變量在被定義時,必須被賦予一個相應的初始值。在程序自動運行時,可變量可以被賦值。當機器人被重置(Reset),可變量數據值會自動記憶數據當前值,并更改數據初始值。在機器人系統(tǒng)內,可變量數據數量受系統(tǒng)參數定義限制。2024/9/26數據范圍在機器人程序中,根據不同的工況,有三種數據范圍可以選擇。全體數據-Global。 一般在模塊起始處,在所有例行程序以外,并且不帶LOCAL的數據,所有模塊與例行程序都可使用此數據。模塊數據-Local。 一般在模塊起始處,在所有例行程序以外,并且?guī)в蠰OCAL的數據,只有當前模塊與其例行程序可使用此數據。2024/9/26數據范圍例行程序數據。
被定義在例行程序內的數據,只有當前例行程序可使用此數據。 只有VAR與CONST數據可以被定義為例行程序數據。 當程序自動運行至此例行程序時,例行程序數據被啟用,當此例行程序執(zhí)行完成,當前數據值將丟失,每次執(zhí)行此例行程序時,其例行程序數據值都為初始值。2024/9/26數據范圍實例MODULEA
VARnumnTime:=0;ENDMODULEMODULEB LOCALVARnumnTime:=0; PROCroutine1( VARnumnTime:=0) ENDPROCENDMODULE在相同的數據范圍內,數據名稱必須不同;在不同的數據范圍內,數據名稱允許相同。一個模塊數據可以 與一個名稱相同的 全體數據共存,但 這兩個數據必須處 在不同模塊內。一個例行程序數據 可以與一個名稱相 同的模塊數據或全 體數據共存。2024/9/26數據表達式通過表達式(+-*/),機器人可以對變量與常量數據進行賦值。實例:33+45/52*a-b/35tool1.tframe.trans.x+23.3pHome.trans.z+44.52024/9/26數據賦值表達式* num*num multiplication num* num*posorpos*num scalarvectormultiplication pos* pos*pos vectorproduct pos* orient*orient linkingofrotations orient/ num/num division numdiv numdivnum(onlyinteger) integerdivision nummod nummodnum(onlyinteger) integermodulo num+ num+num addition num+ +numor+pos unaryplus same+ pos+pos vectoraddition pos+ string+string stringconcatenation string- num-num subtraction num- -numor-pos unaryminus same- pos-pos vectorsubtraction pos2024/9/26數據邏輯表達式< num<num lessthan bool<= num<=num lessthanorequal bool= anytype=anytype equal bool>= num>=num greaterthanorequal bool> num>num greaterthan bool<> anytype<>anytype notequalto booland boolandbool and boolxor boolxorbool exclusiveor boolor boolorbool or boolnot notbool negation bool2024/9/26數據初始值實例:
CONSTnuma:=2; CONSTnumb:=3; CONSTnumc:=a+b; VARnumd:=a+b; PERSnume:=5; PERSnume:=a+b;變量與常量數據初始值可以用一個賦值表達式表示??勺兞繑祿跏贾当仨殲橐粋€定值,不允許使用賦值表達式。2024/9/26數據初始值2024/9/26賦值實例:a:=1;x:=x+3.45;pen.tframe.trans.x:=145.3;pen.tframe.trans.x:=pen.tframe.trans.x+3.3;pen:=tool1;機器人賦值指令“:=”,“=”只是判斷符號。程序運行時,常量數據不允許賦值。數據賦值時,變量與值數據類型必須相同。2024/9/26運動控制指令-AccSetAccSetAcc,Ramp;
Acc: 機器人加速度百分率。
(num)Ramp: 機器人加速度坡度。
(num)應用: 當機器人運行速度改變時,對所產生的相應加速度進行限制,使機器人高速運行時更平緩,但會延長循環(huán)時間,系統(tǒng)默認值為AccSet100,100;。2024/9/26運動控制指令-AccSet實例:限制:機器人加速度百分率值最小為20,小于20以20計,機器人加速度坡度值最小為10,小于10以10計。機器人冷啟動,新程序載入與程序重置后,系統(tǒng)自動設置為默認值。2024/9/26運動控制指令-VelSetVelSetOverride,Max;
Override:機器人運行速率%。
(num)Max: 最大運行速度mm/s。 (num)應用: 對機器人運行速度進行限制,機器人運動指令中均帶有運行速度,在執(zhí)行運動速度控制指令VelSet
后,實際運行速度為運動指令規(guī)定的運行速度乘以機器人運行速率,并且不超過機器人最大運行速度,系統(tǒng)默認值為VelSet100,5000;。2024/9/26運動控制指令-VelSet500mm/s800mm/s10s800mm/s1000mm/s1000mm/s6.25s實例:
VelSet50,800; MoveLp1,v1000,z10,tool1; MoveLp2,v1000\V:=2000,z10,tool1; MoveLp3,v1000\T:=5,z10,tool1; VelSet80,1000; MoveLp1,v1000,z10,tool1; MoveLp2,v5000,z10,tool1; MoveLp3,v1000\V:=2000,z10,tool1; MoveLp4,v1000\T:=5,z10,tool1;2024/9/26運動控制指令-VelSet限制:機器人冷啟動,新程序載入與程序重置后,系統(tǒng)自動設置為默認值。機器人運動使用參變量[\T]時,最大運行速度將不起作用。Override對速度數據(speeddata)內所有項都起作用,例如:TCP、方位及外軸。但對焊接參數welddata與seamdata內機器人運動速度不起作用。Max只對速度數據(speeddata)內TCP這項起作用。2024/9/26運動控制指令-ConfJConfJ[\On]|[\Off];
[\On]: 啟用軸配置數據。
(switch)關節(jié)運動時,機器人移動至絕對ModPos
點,如果無法到達,程序將停止運行。
[\Off]: 默認軸配置數據。
(switch)
關節(jié)運動時,機器人移動至ModPos
點,軸配置數據默認為當前最接近值。2024/9/26運動控制指令-ConfJ應用: 對機器人運行姿態(tài)進行限制與調整,程序運行時,使機器人運行姿態(tài)得到控制。系統(tǒng)默認值為ConfJ\On;。限制:機器人冷啟動,新程序載入與程序重置后,系統(tǒng)自動設置為默認值。實例:
ConfJ\On; … ConfJ\Off;2024/9/26運動控制指令-ConfLConfL[\On]|[\Off];
[\On]: 啟用軸配置數據。
(switch)直線運動時,機器人移動至絕對ModPos
點,如果無法到達,程序將停止運行。
[\Off]: 默認軸配置數據。
(switch)
直線運動時,機器人移動至ModPos
點,軸配置數據默認為當前最接近值。2024/9/26運動控制指令-ConfL應用: 對機器人運行姿態(tài)進行限制與調整,程序運行時,使機器人運行姿態(tài)得到控制。系統(tǒng)默認值為ConfL\On;。限制:機器人冷啟動,新程序載入與程序重置后,系統(tǒng)自動設置為默認值。實例:
ConfL\On; … ConfL\Off;2024/9/26運動控制指令-SingAreaSingArea[\Wrist]|[\Off];
[\Wrist]: 啟用位置方位調整。
(switch)機器人運動時,為了避免死機,位置點允許其方位值有些許改變,例如:在五軸零度時,機器人四六軸平行。
[\Off]: 關閉位置方位調整。
(switch)
機器人運動時,不允許位置點方位改變,是機器人的默認狀態(tài)。2024/9/26運動控制指令-SingArea應用: 當前指令通過對機器人位置點姿態(tài)進行些許改變,可以絕對避免機器人運行時死機,但是,機器人運行路徑會受影響,姿態(tài)得不到控制,通常使用于通過復雜姿態(tài)點,絕對不能作為工作點使用。實例:
SingArea\Wrist; … SingArea\Off;2024/9/26運動控制指令-SingArea限制:以下情況機器人將自動恢復默認值SingArea\Off。機器人冷啟動。系統(tǒng)載入新的程序。程序重置(StartFromBeginning)。2024/9/26運動控制指令-PathResol
PathResolPathSampleTime;
PathSampleTime: 路徑控制%。(num)應用: 當前指令用于更改機器人主機系統(tǒng)參數,調整機器人路徑采樣時間,從而達到控制機器人運行路徑的效果,通過此指令可以提高機器人運動精度或縮短循環(huán)時間,路徑控制默認值為100%,調整范圍為25%-400%,路徑控制百分比越小,運動精度越高,占用CPU資源也越多。2024/9/26運動控制指令-PathResol實例:
MoveJp1,v1000,fine,tool1; PathResol150; 機器人在臨界運動狀態(tài)(重載、高速、路徑變化復雜情況下接近最大工作區(qū)域),增加路徑控制值,可以避免頻繁死機。 外軸以很低的速度與機器人聯動,增加路徑控制值,可以避免頻繁死機。 機器人進行高頻率擺動弧焊時,需要很高的路徑采樣時間,需要減小路徑控制值。 機器人進行小圓周或小范圍復雜運動時,需要很高精度,需要減小路徑控制值。2024/9/26運動控制指令-PathResol限制:機器人必須在完全停止后才能更改路徑控制值,否則,機器人將默認一個停止點,并且顯示錯誤信息50146。機器人正在更改路徑控制值時,機器人被強制停止運行,機器人將不能立刻恢復正常運行(Restart)。以下情況機器人將自動恢復默認值100%。機器人冷啟動。系統(tǒng)載入新的程序。程序重置(StartFromBeginning)。2024/9/26運動控制指令-SoftAct SoftAct[\MechUnit,]
Axis,Softness
[\Ramp];應用: 當前指令用于軟化機器人主機或外軸伺服系統(tǒng),軟化值范圍0%-100%,軟化坡度范圍>=100%,此指令必須與指令SoftDeact同時使用,通常不使用于工作位置。
[\MechUnit]: 軟化外軸名稱。 (mecunit)Axis: 軟化轉軸號碼。 (num)Softness: 軟化值%。 (num)[\Ramp]: 軟化坡度%。 (num)2024/9/26運動控制指令-SoftAct實例:
SoftAct3,20; SoftAct1,90\Ramp:=150; SoftAct\MechUnit:=orbit1,1,40\Ramp:=120;限制:機器人被強制停止運行后,軟伺服設置將自動失效。同一轉軸軟化伺服不允許被連續(xù)設置兩次。 … SoftAct3,20; SoftAct3,30; … … SoftAct3,20; MoveJ*,v100,fine,tool1; SoftAct3,30; …2024/9/26運動控制指令-SoftDeact
SoftDeact[\Ramp];
[\Ramp]: 軟化坡度,>=100%。 (num)應用: 當前指令用于使軟化機器人主機或外軸伺服系統(tǒng)指令SoftAct失效。實例:
SoftAct3,20; SoftDeact; SoftAct1,90; SoftDeact\Ramp:=150;2024/9/26外軸激活指令-ActUnitActUnitMecUnit;
MecUnit: 外軸名。
(mecunit)應用:
將機器人一個外軸激活,例如:當多個外軸公用一個驅動板時,通過外軸激活指令ActUnit
選擇當前所使用的外軸。2024/9/26外軸激活指令-ActUnitp10,外軸不動。p20,外軸聯動track_motion。p30,外軸聯動orbit_a。實例:
MoveLp10,v100,fine,tool1; ActUnittrack_motion; MoveLp20,v100,z10,tool1; DeactUnittrack_motion; ActUnitorbit_a; MoveLp30,v100,z10,tool1;限制:不能在指令StorePath…RestoPath內使用。不能在預置程序RESTART內使用。不能在機器人轉軸處于獨立狀態(tài)時使用。2024/9/26外軸激活指令-DeactUnitDeactUnitMecUnit;
MecUnit: 外軸名。
(mecunit)應用:
使機器人一個外軸失效,例如:當多個外軸公用一個驅動板時,通過外軸激活指令DeactUnit
使當前所使用的外軸失效。2024/9/26外軸激活指令-DeactUnitp10,外軸不動。p20,外軸聯動track_motion。p30,外軸聯動orbit_a。實例:
MoveLp10,v100,fine,tool1; ActUnittrack_motion; MoveLp20,v100,z10,tool1; DeactUnittrack_motion; ActUnitorbit_a; MoveLp30,v100,z10,tool1;限制:不能在指令StorePath…RestoPath內使用。不能在預置程序RESTART內使用。2024/9/26計數指令-AddAddName,AddValue;
Name: 數據名稱。 (num)AddValue: 增加的值。
(num)應用:
在一個數字數據值上增加相應的值,可以用賦值指令替代。實例:
Addreg1,3;
等同于
reg1:=reg1+3;
Addreg1,-reg2;
等同于
reg1:=reg1-reg2;2024/9/26計數指令-ClearClearName;
Name: 數據名稱。 (num)應用:
將一個數字數據的值歸零,可以用賦值指令替代。實例:
Clearreg1;
等同于
reg1:=0;2024/9/26計數指令-IncrIncrName;
Name: 數據名稱。 (num)應用:
在一個數字數據值上增加1,可以用賦值指令替代,一般用于產量計數。實例:
Incrreg1;
等同于
reg1:=reg1+1;2024/9/26計數指令-DecrDecrName;
Name: 數據名稱。 (num)應用:
在一個數字數據值上減去1,可以用賦值指令替代,一般用于產量計數。實例:
Decrreg1; 等同于
reg1:=reg1-1;2024/9/26輸入輸出指令-AliasIOAliasIOFromSignal,ToSignal;
FromSignal: 機器人系統(tǒng)參數內所定義的 信號名稱。
(signalxxorstring)ToSignal: 機器人程序內所使用的信號 名稱。
(signalxx)應用: 對機器人系統(tǒng)參數內定義的信號名稱進行化名,給機器人程序使用,一般使用與LoadedModules或Built-inModules內。例如:多臺機器人使用相同系統(tǒng)參數。2024/9/26輸入輸出指令-AliasIOAlias_do,在機器人程序內定義。config_do,在系統(tǒng)參數內定義。實例:
VARsignaldoalias_do; CONSTstringconfig_string:="config_do"; PROCprog_start() AliasIOconfig_do,alias_do; AliasIOconfig_string,alias_do; ENDPROC2024/9/26輸入輸出指令-AliasIO限制:指令AliasIO必須放置在預置程序START內或程序內使用相應信號之前。指令AliasIO在示教器上無法輸入,只能通過離線編程輸入。指令AliasIO需要軟件Developer’sFunctions
支持。2024/9/26輸入輸出指令-InvertDOInvertDOSignal;
Signal:
輸出信號名稱。
(signaldo)應用: 將機器人輸出信號值反轉,0為1,1為0,在系統(tǒng)參數內也可定義。實例:
InvertDOdo15;2024/9/26輸入輸出指令-InvertDO機器人程序內指令InvertDO被執(zhí)行。2024/9/26輸入輸出指令-IODisableIODisableUnitName,MaxTime;
UnitName: 輸入輸出板名稱。(num)MaxTime: 最長等待時間。 (num)應用: 通過指令可以使機器人輸入輸出板在程序運行時自動失效,系統(tǒng)將一塊輸入輸出板失效需要2-5秒。如果失效時間超過最長等待時間,系統(tǒng)將進入ErrorHandler處理,錯誤代碼為ERR_IODISABLE,如果例行程序沒有ErrorHandler機器人將停機報錯。2024/9/26輸入輸出指令-IODisable輸入輸出板cell1開始失效,最長等待時間為0,肯定進入ErrorHandler處理。利用機器人移動至home的時間完成輸入輸出板失效。確認輸入輸出板cell1失效。連續(xù)5次RETRY,仍無法完成輸入輸出板失效。實例:
PROCgo_home() recover_flag:=1; IODisable“cell1”,0; MoveJhome,v1000,fine,tool1; recover_flag:=2; IODisable“cell1”,5; ERROR IFERRNO=ERR_IODISABLETHEN IFrecover_flag=1THEN TRYNEXT; ELSEIFrecover_flag=2THEN RETRY; ENDIF ELSEIFERRNO=ERR_EXCRTYMAXTHEN ErrWrite“IODisableerror”,“Restarttheprogram”; Stop; ENDIF ENDPROC2024/9/26輸入輸出指令-IODisableErrorHandling:ERR_IODISABLE 超過最長等待時間,系統(tǒng)仍未完成輸入輸出板失效。ERR_CALLIO_INTER 系統(tǒng)在執(zhí)行輸入輸出板失效與激活時,當前輸入輸出板再次被失效或激活,形成沖突。ERR_NAME_INVALID 輸入輸出板名稱錯誤或無法進行失效與激活操作。2024/9/26輸入輸出指令-IOEnableIOEnableUnitName,MaxTime;
UnitName: 輸入輸出板名稱。(num)MaxTime: 最長等待時間。 (num)應用: 通過這指令可以使機器人輸入輸出板在程序運行時自動激活,系統(tǒng)將一塊輸入輸出板激活需要2-5秒。如果激活時間超過最長等待時間,系統(tǒng)將進入ErrorHandler處理,錯誤代碼為ERR_IOENABLE,如果例行程序沒有ErrorHandler機器人將停機報錯。2024/9/26輸入輸出指令-IOEnable輸入輸出板cell1開始激活,最長等待時間為0,肯定進入ErrorHandler處理。通過每次1秒進行計數,連續(xù)5次仍無法激活輸入輸出板,執(zhí)行指令RAISE。實例:
VARnummax_retry:=0; ... IOEnable“cell1”,0; SetDOcell1_sig3,1;ERROR IFERRNO=ERR_IOENABLETHEN IFmax_retry<5THEN WaitTime1; max_retry:=max_retry+1; RETRY; ELSE RAISE; ENDIF ENDIF2024/9/26輸入輸出指令-IOEnableErrorHandling:ERR_IOENABLE 超過最長等待時間,系統(tǒng)仍未完成輸入輸出板激活。ERR_CALLIO_INTER 系統(tǒng)在執(zhí)行輸入輸出板失效與激活時,當前輸入輸出板再次被失效或激活,形成沖突。ERR_NAME_INVALID 輸入輸出板名稱錯誤或無法進行失效與激活操作。2024/9/26輸入輸出指令-PulseDOPulseDO[\High][\PLength]
Signal;
[\High]: 輸出脈沖時,輸出信號可以 處在高電平。 (switch)[\Plength]: 脈沖長度,0.1s-32s,默認 值為0.2s。 (num)Signal: 輸出信號名稱。 (signaldo)應用: 機器人輸出數字脈沖信號,一般作為運輸鏈完成信號或計數信號。2024/9/26輸入輸出指令-PulseDO實例:PulseDOPulseDO\High脈沖長度脈沖長度PulseDO\High\Plength:=x
PulseDO\High\Plength:=y2024/9/26輸入輸出指令-PulseDO限制:機器人脈沖輸出長度小于0.01秒,系統(tǒng)將報錯,不得不重新熱啟動。例如:
WHILETRUEDO PulseDOdo5; ENDWHILE2024/9/26輸入輸出指令-ResetResetSignal;
Signal: 機器人輸出信號名稱。
(signaldo)應用: 將機器人相應數字輸出信號值置為0,與指令Set對應,是自動化重要組成部分。實例:
Resetdo12;2024/9/26輸入輸出指令-SetSetSignal;
Signal: 機器人輸出信號名稱。
(signaldo)應用: 將機器人相應數字輸出信號值置為1,與指令Reset對應,是自動化重要組成部分。實例:
Setdo12;2024/9/26輸入輸出指令-SetAOSetAOSignal,Value;
Signal: 模擬量輸出信號名稱。
(signalao)Value: 模擬量輸出信號值。 (num)應用: 機器人當前模擬量輸出信號輸出相應的值,例如:機器人焊接時,通過模擬量輸出控制焊接電壓與送絲速度。2024/9/26輸入輸出指令-SetAO實例:
SetAOao2,5.5; SetAOweldcurr,curr_outp;2024/9/26輸入輸出指令-SetDOSetDO[\SDelay]
Signal,Value; [\SDelay]: 延時輸出時間s。 (num)Signal: 輸出信號名稱。
(signaldo)Value:
輸出信號值。 (dionum)應用:
設置機器人相應數字輸出信號的值,與指令Set與Reset雷同,并且可以設置延時,延時范圍為0.1s-32s,默認狀態(tài)為沒有延時。實例:
SetDO\SDelay:=0.2,weld,high;2024/9/26輸入輸出指令-SetGOSetGO[\SDelay]
Signal,Value; [\SDelay]: 延時輸出時間s。 (num)Signal: 輸出信號名稱。
(signaldo)Value:
輸出信號值。 (dionum)應用: 設置機器人相應組合輸出信號的值(采用8421碼),可以設置延時輸出,延時范圍為0.1s-32s,默認狀態(tài)為沒有延時。實例:
SetGO\SDelay:=0.2,go_Type,10;2024/9/26輸入輸出指令-WaitDI WaitDISignal,Value
[\MaxTime][\TimeFlag];
Signal: 輸入信號名稱。 (signaldi)Value: 輸入信號值。 (dionum)[\MaxTime]: 最長等待時間
s。(num)
[\TimeFlag]: 超時邏輯量。 (bool)應用: 等待數字輸入信號滿足相應值,達到通信目的,是自動化生產重要組成部分,例如:機器人等待工件到位信號。2024/9/26輸入輸出指令-WaitDI實例:
PROCPickPart() MoveJpPrePick,vFastEmpty,zBig,tool1; WaitDIdi_Ready,1; … ENDPROC
PROCPickPart() MoveJpPrePick,vFastEmpty,zBig,tool1; WaitDIdi_Ready,1\MaxTime:=5; … ERROR IFERRNO=ERR_WAIT_MAXTIMETHEN TPWrite“……”; RETRY; ELSE RAISE; ENDIF ENDPROC機器人等待輸入信號,直到信號di_Ready值為1,才執(zhí)行隨后指令。機器人等待相應輸入信號,如果5秒內仍沒有等到信號di_Ready值為1,自動進行ErrorHandler處理,如果沒有ErrorHandler,機器人停機報錯。2024/9/26輸入輸出指令-WaitDI實例:
PROCPickPart() MoveJpPrePick,vFastEmpty,zBig,tool1; bTimeout:=TRUE; nCounter:=0; WHILEbTimeoutDO IFnCounter>3THEN TPWrite“……”; ENDIF IFnCounter>30THEN Stop; ENDIF WaitDIdi_Ready,1\MaxTime:=1\TimeFlag:=bTimeout; IncrnCounter; ENDWHILE … ENDPROC機器人等待到位信號,如果1秒內仍沒有等到信號di_Ready值為1,機器人自動執(zhí)行隨后指令,但此時TimeFlag值為TRUE;機器人等到信號di_Ready值為1,此時,TimeFlag值為FALSE。2024/9/26輸入輸出指令-WaitDO WaitDOSignal,Value
[\MaxTime][\TimeFlag];
Signal: 輸入信號名稱。 (signaldi)Value: 輸入信號值。 (dionum)[\MaxTime]: 最長等待時間
s。(num)
[\TimeFlag]: 超時邏輯量。 (bool)應用: 等待數字輸出信號滿足相應值,達到通信目的,因為輸出信號一般情況下受程序控制,此指令很少使用。2024/9/26輸入輸出指令-WaitDO實例:
PROCGrip() Setdo03_Grip; WaitDOdo03_Grip,1; … ENDPROC機器人等待輸出信號,直到信號do03_Grip值為1,才執(zhí)行隨后相應指令。機器人等待相應輸出信號,如果5秒內仍沒有等到信號do03_Grip值為1,自動進行ErrorHandler處理,如果沒有ErrorHandler,機器人停機報錯。 PROCGrip() Setdo03_Grip; WaitDOdo03_Grip,1\MaxTime:=5; … ERROR IFERRNO=ERR_WAIT_MAXTIMETHEN TPWrite“……”; RETRY; ELSE RAISE; ENDIF ENDPROC2024/9/26輸入輸出指令-WaitDO實例:
PROCGrip() Setdo03_Grip; bTimeout:=TRUE; nCounter:=0; WHILEbTimeoutDO IFnCounter>3THEN TPWrite“……”; ENDIF IFnCounter>30THEN Stop; ENDIF WaitDOdo03_Grip,1\MaxTime:=1\TimeFlag:=bTimeout; IncrnCounter; ENDWHILE … ENDPROC機器人等待到位信號,如果1秒內仍沒有等到信號do03_Grip值為1,機器人自動執(zhí)行隨后指令,但此時TimeFlag值為TRUE;機器人等到信號do03_Grip值為1,此時,TimeFlag值為FALSE。2024/9/26程序運行停止指令-ExitExit;應用:
機器人在當前指令行停止運行,并且程序重置,程序運行指針停留在主程序第一行。實例: … Exit; …2024/9/26程序運行停止指令-StopStop[\NoRegain];應用:
機器人在當前指令行停止運行,程序運行指針停留在下一行指令,可以用Start
鍵繼續(xù)運行機器人,屬于臨時性停止。如果機器人停止期間被手動移動后,然后直接啟動機器人,機器人將警告確認路徑,如果此時采用參變量[\NoRegain],機器人將直接運行。
[\NoRegain]: 路徑恢復參數。 (switch)2024/9/26程序運行停止指令-StopP1P2P3區(qū)別:
MoveLp2,v100,z30,tool0; Stop;(Break;) MoveLp3,v100,fine,tool0;StopBreak實例:
… Stop; …2024/9/26程序運行停止指令-ExitCycleExitCycle;應用:
機器人在當前指令行停止運行,并且設定當前循環(huán)結束,機器人自動從主程序第一行繼續(xù)運行下一個循環(huán)。2024/9/26程序運行停止指令-ExitCycle實例: PROCmain() IFcyclecount=0THEN CONNECTerror_intnoWITHerror_trap; ISignalDIdi_error,1,error_intno; ENDIF cyclecount:=cyclecount+1; !starttodosomethingintelligent .... ENDPROC TRAPerror_trap TPWrite“Iwillstartonthenextitem”; ExitCycle; ENDTRAP2024/9/26例行程序調用指令-ProcCallProcedure{Argument};應用:
機器人調用相應例行程序,同時給帶有參數的例行程序中相應參數賦值。
Procedure: 例行程序名稱。 (Identifier)Argument: 例行程序參數。 (All)實例:
Weldpipe1; Weldpipe210,lowspeed; Weldpipe310\speed:=20;2024/9/26例行程序調用指令-ProcCall限制:機器人調用帶參數的例行程序時,必須包括所有強制性參數。例行程序所有參數位置次序必須與例行程序設置一致。例行程序所有參數數據類型必須與例行程序設置一致。例行程序所有參數數據性質必須為Input,Variable或Persistent。2024/9/26例行程序調用指令-CallByVarCallByVarName,Number;應用: 通過指令中相應數據,機器人調用相應例行程序,但無法調用帶有參數的例行程序。
Name: 例行程序名稱第一部分。(string)Number: 例行程序名稱第二部分。(num)實例:
reg1:=Ginput(gi_Type); CallByVar“Proc”,reg1; 2024/9/26程序運行停止指令-CallByVar限制:不能調用帶參數的例行程序。所有被調用的例行程序名稱第一部分必須相同,例如:proc1、proc2、proc3。使用CallByVar指令調用例行程序比直接采用ProcCall調用例行程序需要更長時間。ErrorHandling:ERR_REFUNKPRC 系統(tǒng)無法找到例行程序名稱第一部分。ERR_CALLPROC 系統(tǒng)無法找到例行程序名稱第二部分。2024/9/26程序運行停止指令-CallByVar實例比較:
TESTreg1 CASE1: lf_doordoor_loc; CASE2: rf_doordoor_loc; CASE3: lr_doordoor_loc; CASE4: rr_doordoor_loc; DEFAULT: EXIT; ENDTEST%”proc”+NumToStr(reg1,0)%door_loc;CallByVar“proc”,reg1;指令CallByVar不能調用帶有參數的例行程序。通過RAPID結構仍可以調用帶有參數的例行程序。2024/9/26計時指令-ClkResetClkResetClock;應用:
將機器人相應時鐘復位,常用于記錄循環(huán)時間或機器人跟蹤運輸鏈。
Clock: 時鐘名稱。 (clock)實例:
ClkResetclock1; ClkStartclock1; RunCycle; ClkStopclock1; nCycleTime:=ClkRead(clock1); TPWrite“LastCycleTime:”\Num:=nCycleTime;2024/9/26計時指令-ClkStartClkStartClock;應用:
啟動機器人相應時鐘,常用于記錄循環(huán)時間或機器人跟蹤運輸鏈。機器人時鐘啟動后,時鐘不會因為機器人停止運行或關機而停止計時。在機器人時鐘運行時,指令ClkStop與
ClkReset仍起作用。
Clock: 時鐘名稱。 (clock)2024/9/26計時指令-ClkStart限制:機器人時鐘計時超過4,294,967秒,即49天17小時2分47秒,機器人將出錯。ErrorHandler代碼為ERR_OVERFLOW。實例:
ClkResetclock1; ClkStartclock1; RunCycle; ClkStopclock1; nCycleTime:=ClkRead(clock1); TPWrite“LastCycleTime:”\Num:=nCycleTime;2024/9/26計時指令-ClkStopClkStopClock;應用:
停止機器人相應時鐘,常用于記錄循環(huán)時間或機器人跟蹤運輸鏈。
Clock: 時鐘名稱。 (clock)實例:
ClkResetclock1; ClkStartclock1; RunCycle; ClkStopclock1; nCycleTime:=ClkRead(clock1); TPWrite“LastCycleTime:”\Num:=nCycleTime;2024/9/26中斷指令-CONNECT CONNECTInterruptWITHTraproutine;應用:
將機器人相應中斷數據連接到相應的中斷處理程序,是機器人中斷功能必不可少的組成部分,必須同指令ISignalDI、ISignalDO、ISignalAI、ISignalAO或ITimer聯合使用。
Interrupt: 中斷數據名稱。 (intnum)Traproutine: 中斷處理程序。 (Identifier)2024/9/26中斷指令-CONNECT實例:
VARintnumintInspect;
PROCmain() … CONNECTintInspectWITHrAlarm; ISignalDIdi01_Vacuum,0,intInspect; … ENDPROC TRAPrAlarm TPWrite“GripError”; Stop; WaitDIdi01_Vacuum,1; ENDTRAP2024/9/26中斷指令-CONNECT限制:中斷數據的數據類型必須為變量(VAR)。一個中斷數據不允許同時連接到多個中斷處理程序,但多個中斷數據可以共享一個中斷處理程序。當一個中斷數據完成連接后,這個中斷數據不允許再次連接到任何中斷處理程序(包括已經連接的中斷處理程序)。如果需要再次連接至任何中斷處理程序,必須先使用指令IDelete將原連接去除。2024/9/26中斷指令-CONNECTErrorHandler:ERR_ALRDYCNT 中斷數據已經被連接至中斷處理程序。ERR_CNTNOTVAR 中斷數據的數據類型不是變量(VAR)。ERR_INOMAX 沒有更多的中斷數據可以使用。2024/9/26中斷指令-IDeleteIDeleteInterrupt;應用:
將機器人相應中斷數據與相應的中斷處理程序之間的連接去除。
Interrupt: 中斷數據名稱。 (intnum)實例:
… CONNECTintInspectWITHrAlarm; ISignalDIdi01_Vacuum,0,intInspect; … IDeleteintInspect;2024/9/26中斷指令-IDelete限制:執(zhí)行指令IDelete后,當前中斷數據的連接被完全清除,如需再次使用這個中斷數據必須重新用指令CONNECT連接至相應的中斷處理程序。在下列情況下,中斷將被自動去除:重新載入新的運行程序。機器人運行程序被重置,程序指針回到主程序第一行(StartFromBeginning)。機器人程序指針被移至任意一個例行程序第一行(MovepptoRoutine)。2024/9/26中斷指令-ISleepISleepInterrupt;應用:
使機器人相應中斷數據暫時失效,直到執(zhí)行指令IWatch后才恢復。
Interrupt: 中斷數據名稱。 (intnum)2024/9/26中斷指令-ISleepErrorHandler:ERR_UNKINO
無法找到當前的中斷數據。實例:
… CONNECTintInspectWITHrAlarm; ISignalDIdi01_Vacuum,0,intInspect; … … ISleepintInspect; … IWatchintInspect; …中斷監(jiān)控。中斷失效。中斷監(jiān)控。2024/9/26中斷指令-IWatchIWatchInterrupt;應用:
激活機器人已失效的相應中斷數據,正常情況下,與指令ISleep配合使用。
Interrupt: 中斷數據名稱。 (intnum)2024/9/26中斷指令-IWatchErrorHandler:ERR_UNKINO
無法找到當前的中斷數據。實例:
… CONNECTintInspectWITHrAlarm; ISignalDIdi01_Vacuum,0,intInspect; … … ISleepintInspect; … IWatchintInspect; …中斷失效。中斷監(jiān)控。中斷監(jiān)控。2024/9/26中斷指令-IDisableIDisableInterrupt;應用:
使機器人相應中斷功能暫時不執(zhí)行,直到執(zhí)行指令IEnable后,才進入中斷處理程序,此指令使用于機器人正在執(zhí)行不希望被打斷的操作期間,例如:通過通信口讀寫數據。
Interrupt: 中斷數據名稱。 (intnum)2024/9/26中斷指令-IDisable實例:
… IDisable; FORiFROM1TO100DO character[i]:=ReadBin(sensor); ENDFOR IEnable; …2024/9/26中斷指令-IEnableIEnableInterrupt;應用:
開始執(zhí)行被機器人暫停的相應中斷功能,正常情況下,與指令IDisable配合使用,此指令使用于機器人正在執(zhí)行不希望被打斷的操作期間,例如:通過通信口讀寫數據。
Interrupt: 中斷數據名稱。 (intnum)2024/9/26中斷指令-IEnable實例:
… IDisable; FORiFROM1TO100DO character[i]:=ReadBin(sensor); ENDFOR IEnable; …2024/9/26中斷指令-ITimerITimer[\Single,]
Time,Interrupt;應用:
定時處理機器人相應中斷數據,此指令常使用于通過通信口讀寫數據等場合。
[\Single]: 單次中斷開關。 (switch)Time: 觸發(fā)中斷時間s。 (num)Interrupt: 中斷數據名稱。 (intnum)2024/9/26中斷指令-ITimer實例:
… CONNECTtimeintWITHcheck_serialch; ITimer60,timeint; … TRAPcheck_serialch WriteBinch1,buffer,1; IFReadBin(ch1\Time:=5)<0THEN TPWrite“Communicationisbroken”; EXIT; ENDIF ENDTRAP2024/9/26中斷指令-ITimerITimer[\Single,]
Time,Interrupt;應用:
定時處理機器人相應中斷數據,此指令常使用于通過通信口讀寫數據等場合。
[\Single]: 單次中斷開關。 (switch)Time: 觸發(fā)中斷時間s。 (num)Interrupt: 中斷數據名稱。 (intnum)2024/9/26中斷指令-ITimer實例:
… CONNECTtimeintWITHcheck_serialch; ITimer60,timeint; … TRAPcheck_serialch WriteBinch1,buffer,1; IFReadBin(ch1\Time:=5)<0THEN TPWrite“Communicationisbroken”; EXIT; ENDIF ENDTRAP2024/9/26通信指令-TPWrite TPWriteString
[\Num]|[\Bool]|[\Pos]|[\Orient];應用: 在示教器屏幕上顯示相應字符串,字符串最長80個字節(jié),屏幕每行可顯示40個字節(jié)。在字符串后可顯示相應參變量。
String: 屏幕顯示的字符串。 (string)[\Num]: 屏幕顯示數字數據值。 (num)[\Bool]: 屏幕顯示邏輯量數據。 (bool)
[\Pos]: 顯示位置值XYZ。 (pos)
[\Orient]: 顯示方位q1q2q3q4。 (orient)2024/9/26通信指令-TPWrite實例:
TPWritestring1; TPWrite“CycleTime=”\Num:=nTime;限制:每個TPWrite指令只允許單獨使用參變量,不允許同時使用。參變量值<0.000005或>0.999995將圓整。Argument Value Textstring\Num 23 "23"\Num 1.141367 "1.14137"\Bool TRUE "TRUE"\Pos [1817.3,905.17,879.11] "[1817.3,905.17,879.11]"\Orient [0.96593,0,0.25882,0] "[0.96593,0,0.25882,0]"2024/9/26通信指令-TPReadFK
TPReadFKAnswer,Text,FK1,FK2,FK3,FK4,FK5
[\MaxTime][\DIBreak][\BreakFlag];
Answer: 數字賦值1-5。 (num)Text: 屏幕字符串。 (string)FKx: 功能鍵字符串。 (string)
[\MaxTime]: 最長等待時間s。 (num)
[\DIBreak]: 輸入信號控制。 (signaldi)[\BreakFlag]: 指令狀態(tài)控制。 (errnum)2024/9/26通信指令-TPReadFK應用: 在示教器屏幕上顯示相應字符串(Text),字符串最長80個字節(jié),屏幕每行可顯示40個字節(jié),同時在5個功能鍵上顯示相應字符串(FKx),字符串最長7個字節(jié),通過選擇按相應功能鍵,給數字變量(Answer)賦值1-5,通過這種功能,當前指令可以進行數據選擇,但必須有人參與,無法達到自動化,已被輸入輸出信號替代。另外,在執(zhí)行當前指令時,必須等到功能鍵輸入,才執(zhí)行以后指令,除非選擇相應參變量。通過這種功能,當前指令常用于錯誤處理等場合。2024/9/26通信指令-TPReadFK實例:
TPReadFKreg1,“More?”,stEmpty,stEmpty, stEmpty,“Yes”,“No”;2024/9/26通信指令-TPReadFK參變量:[\MaxTime]
機器人執(zhí)行當前指令等待時間超過最長等待時間,機器人將停機報錯,如果同時采用參變量[BreakFlag],機器人將繼續(xù)執(zhí)行以后指令,并且給出相應錯誤數據。[\DIBreak]
機器人通過輸入信號來繼續(xù)執(zhí)行以后指令,并且給出相應錯誤數據。[\BreakFlag]ERR_TP_MAXTIMEERR_TP_DIBREAK2024/9/26通信指令-TPReadNum
TPReadNumAnswer,String,[\MaxTime][\DIBreak][\BreakFlag];
Answer: 數字賦值。 (num)String: 屏幕字符串。 (string)[\MaxTime]: 最長等待時間s。 (num)
[\DIBreak]: 輸入信號控制。 (signaldi)[\BreakFlag]: 指令狀態(tài)控制。 (errnum)2024/9/26通信指令-TPReadNum應用: 在示教器屏幕上顯示相應字符串(String),字符串最長80個字節(jié),屏幕每行可顯示40個字節(jié),同時在功能鍵上顯示OK,通過數字鍵輸入相應數值,給數字變量(Answer)賦值,通過這種功能,當前指令可以進行數字數據賦值,但必須有人參與,無法達到自動化,已被輸入輸出信號替代。實例:
TPReadNumreg1,“Howmanyunits?”; FORiFROM1TOreg1DO produce_part; ENDFOR2024/9/26通信指令-TPReadNum參變量:[\MaxTime]
機器人執(zhí)行當前指令等待時間超過最長等待時間,機器人將停機報錯,如果同時采用參變量[BreakFlag],機器人將繼續(xù)執(zhí)行以后指令,并且給出相應錯誤數據。[\DIBreak]
機器人通過輸入信號來繼續(xù)執(zhí)行以后指令,并且給出相應錯誤數據。[\BreakFlag]ERR_TP_MAXTIMEERR_TP_DIBREAK2024/9/26通信指令-ErrWrite ErrWrite[\W],Header,Reason
[\RL2][\RL3][\RL4];
[\W]: 事件記錄開關。 (switch)Header: 錯誤信息標題。 (string)Reason: 錯誤信息原因。 (string)
[\RL2]: 附加錯誤信息原因。 (string)
[\RL3]: 附加錯誤信息原因。 (string)[\RL4]: 附加錯誤信息原因。 (string)2024/9/26通信指令-ErrWrite應用: 在示教器屏幕上顯示標準出錯界面,錯誤代碼為80001,標題最長24個字符,原因最長40個字符,如果由多種錯誤原因,可使用參變量[\RL2][\RL3][\RL4],每種原因最長40個字符,使用參變量[\W],錯誤代碼為80002,并且只在事件清單中記錄,不在示教器屏幕上顯示。當前指令只顯示或記錄出錯信息,不影響機器人正常運行,在示教器屏幕上顯示的信息,需要按功能鍵OK確認并清除,如需影響機器人運行,使用指令Stop、EXIT、TPReadFK等。2024/9/26通信指令-ErrWrite實例:
…
ErrWrite\W,“Searcherror”,“Nohitforthefirstsearch”; ErrWrite“PLCerror”,“FatalerrorinPLC”\RL2:=”Callservice”; Stop; …限制:每個ErrWrite指令最多能顯示145個字節(jié)。(Header+Reason+\RL2+\RL3+\RL4)2024/9/26通信指令-TPShow TPShowWindow;
Window: 顯示相應示教器窗口。 (tpnum)TP_PROGRAM
自動模式下,顯示生產窗口。 手動模式下,顯示測試窗口。TP_LATEST
顯示當前窗口的前一個窗口。TP_SCREENVIEWER
顯示ScreenViewer
窗口,需要相應軟件。2024/9/26通信指令-TPShow實例:
… TPShowTP_PROGRAM; TPShowTP_LATEST; …應用: 機器人在示教器屏幕上顯示相應界面,通常情況下與機器人附加軟件ScreenViewer配合使用。2024/9/26運動指令-StopMove StopMove;應用: 當前指令使機器人運動臨時停止,直到運行指令StartMove后,才繼續(xù)恢復被臨時停止的運動。此指令通常被用于處理牽涉到機器人運動的中斷程序。實例:
StopMove; WaitDIready_input,1; StartMove;2024/9/26運動指令-StopMove實例: … CONNECTintno1WITHgo_to_home_pos; ISignalDIdi1,1,intno1; … TRAPgo_to_home_posStopMove;StorePath;p10:=CRobT();MoveLHome,v500,fine,tool1;WaitDIdi1,0;MoveLp10,v500,fine,tool1;RestoPath;StartMove;ENDTRAP
機器人臨時停止運動,并記錄運動路徑,在Home位置等待di1為0后,繼續(xù)原運動狀態(tài)。機器人完成當前運動指令后停止運動,并記錄運動路徑,在Home位置等待di1為0后,繼續(xù)原運動狀態(tài)。2024/9/26運動指令-StopMove StopMove;應用: 當前指令使機器人運動臨時停止,直到運行指令StartMove后,才繼續(xù)恢復被臨時停止的運動。此指令通常被用于處理牽涉到機器人運動的中斷程序。實例:
StopMove; WaitDIready_input,1; StartMove;2024/9/26運動指令-StopMove實例: … CONNECTintno1WITHgo_to_home_pos; ISignalDIdi1,1,intno1; … TRAPgo_to_home_posStopMove;StorePath;p10:=CRobT();MoveLHome,v500,fine,tool1;WaitDIdi1,0;Mov
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式系統(tǒng)中的EMC電磁兼容問題培訓(2024年課程)
- 智能衛(wèi)浴用品生產企業(yè)賬務處理-記賬實操
- 文書模板-老舊小區(qū)安裝電梯后各種費用業(yè)主協(xié)議書
- 新教材-人教版高中物理選擇性必修第三冊-第二章-氣體、固體和液體-課時練習題-含解析
- 2024-2025學年新教材高中地理第三章地球上的大氣第一節(jié)大氣的組成與垂直分層練習含解析湘教版必修1
- 中點實訓室使用規(guī)章制度-字數200字左右
- 四年級語文楚才杯學的最好的VS玩的最好的
- 2024-2025學年高中物理第五章曲線運動2平拋運動3教案新人教版必修2
- 全國版2025屆高考英語二輪復習第一部分高考題型組合練組合練7閱讀理解+閱讀七選五+完形填空+短文改錯參考練習含解析
- 八年級數學下冊第2章四邊形2.2平行四邊形2.2.1平行四邊形的性質教學反思新版湘教版
- 卟啉病(改)課件
- 過程流程圖專業(yè)知識講座
- 民航M9英語詞匯練習
- 處方書寫規(guī)范-課件
- GB/T 12727-2023核電廠安全重要電氣設備鑒定
- 部編版道德與法治六年級下冊第二單元《愛護地球共同責任》大單元作業(yè)設計
- 2023年重慶移動招聘考試試題(附答案)
- 故障車輛應急調換方案
- 2023年中小學教師心理健康教育試卷(含答案)
- 金融隨機分析2課后答案
- 高中心理健康教育-痛并快樂著-考試后心理輔導教學課件設計
評論
0/150
提交評論