日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABB机器人的错误处理

發(fā)布時間:2023/12/10 编程问答 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABB机器人的错误处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ABB機器人的錯誤處理

??? errnum 數(shù)據(jù)類型

????? errnum用于描述在執(zhí)行過程中,發(fā)生的所有可恢復的錯誤。例如程序執(zhí)行時,被零除。??? 如果機器人程序執(zhí)行過程中檢測到一個錯誤,錯誤非致命,可以被錯誤處理程序處理。??? 這類錯誤的典型例子是過大的值或者被零除。?????errnum類型的系統(tǒng)變量 errno,根據(jù)不同的錯誤性質(zhì),分配不同的值。錯誤處理程序可以通過讀取這個變量來糾正錯誤,然后執(zhí)行程序可以正確的方式繼續(xù)運行。
???? 錯誤也可以通過使用RAISE指令在程序中創(chuàng)建。錯誤處理程序通過指定一個能檢測到該特定類型的錯誤號(范圍1-90內(nèi)或通過BookErrNo指令預訂)作為RAISE的參數(shù)。

示例:

?? ? ? reg1 := reg2 / reg3;
? ?? ? ...
? ? ? ERROR

? ? ? IF ?? ERRNO = ERR_DIVZERO? ? THEN
? ? ? reg3 := 1;
? ? ? RETRY;
?? ?? ENDIF

??? 如果REG3= 0,機器人除法時檢測到發(fā)生的錯誤。這個錯誤可以被檢測并通過分配REG3的值為1予以糾正。因此除法可再次被執(zhí)行,程序可以繼續(xù)執(zhí)行。


?? ?? CONST errnum machine_error := 1;
? ? ? ...
? ? ? IF di1=0 RAISE machine_error;
? ? ? ...
????? ERROR

??? IF ERRNO=machine_error RAISE;?

????? 機器人通過信號DI1檢測出現(xiàn)的錯誤。跳轉(zhuǎn)到錯誤處理程序。調(diào)用的錯誤處理程序調(diào),糾正這個錯誤。machine_error作為一個常數(shù),用來讓錯誤處理程序確切知道發(fā)生的是哪種錯誤的類型。

????? 預定義的錯誤類型

?????系統(tǒng)變量? ERRNO 可以用于讀取最后一次發(fā)生的錯誤。 許多預定義常量可以用來確定發(fā)生的錯誤類型。 (ABB編程手冊 1179 page


???? 關(guān)于raise

????? RAISE用于在程序中產(chǎn)生一個錯誤,并調(diào)用程序的錯誤處理函數(shù)。 RAISE 同樣可以在錯誤處理函數(shù)中使用,將當前錯誤傳送給調(diào)用程序的錯誤處理函數(shù)。
這個指令可以用于跳回高一層的程序結(jié)構(gòu),例如,底層的錯誤返給主程序的錯誤處理函數(shù)。

?????? 參數(shù)
?????? RAISE [ Error no. ]
?????? Error no的數(shù)據(jù)類型為 errnum。Error number: 錯誤處理程序可以通過ERRNO系統(tǒng)變量查找1和90之間任意數(shù)字的錯誤。

????? 舉例:

MODULE MainModule

??????? VAR errnum ERR_MY_ERR := -1;

??????? PROC main()

??????? BookErrNo ERR_MY_ERR;
??????????? IF di1 = 0 THEN
?????? ? ? ? ?? RAISE ERR_MY_ERR;
????? ? ? ? ENDIF

??????? ERROR

??????? IF ERRNO = ERR_MY_ERR THEN
?????? ? ?? TPWrite "di1 equals 0";
??????? ENDIF

??????? ENDPROC

ENDMODULE

?????? 如果 di1 等于 0 產(chǎn)生一個錯誤. RAISE 會將程序推動到錯誤處理程序處執(zhí)行。在這個程序中,用戶創(chuàng)建了自己的錯誤號處理指定的錯誤。. 通過BookErrNo注冊錯誤號并使用。

?MODULE MainModule
????? VAR num value1 := 10;
????? VAR num value2 := 0;
????? PROC main()
???? ? ?? routine1;


???? ? ?? ERROR
???? ? ?? IF ERRNO = ERR_DIVZERO THEN
??? ? ? ? ? ? value2 := 1;
????????????? RETRY;???? ! RETRY 指令用于當一個錯誤發(fā)生時,重新運行引起錯誤的指令。
??? ? ? ? ENDIF
????? ENDPROC

????? PROC routine1()
????????? value1 := 5/value2;
?? !當value2為0的時候,這將導致一個錯誤。

?? ? ?? ? ERROR
???? ? ?? RAISE;
??? ? ENDPROC
ENDMODULE

??



?????? 關(guān)于錯誤處理

?????? TRYNEXT - 跳過產(chǎn)生錯誤的指令,繼續(xù)運行。 TRYNEXT 指令用于在產(chǎn)生一個錯誤后,程序運行產(chǎn)生錯誤的下一條語句。
?????? 示例
??? ? ?? reg2 := reg3/reg4;
??? ? ? ? ...
??????ERROR
????????? IF ERRNO = ERR_DIVZERO THEN
???? ? ?? reg2:=0;
???????? TRYNEXT;
??????ENDIF


????? RETRY 指令用于從引起錯誤的地方恢復程序繼續(xù)運行

????? 示例:

???? ? ? reg2 := reg3/reg4;
???? ? ? ...
????? ERROR
??????? IF ERRNO = ERR_DIVZERO THEN
??? ? ? ?? reg4 :=1;
???? ? ? ? RETRY;
??? ? ? ENDIF

?????? reg3除以reg4,如果reg4等于0(零),那么跳轉(zhuǎn)到錯誤處理程序,重新為reg4賦值。 然后RETRY從錯誤處理程序跳出,回到產(chǎn)生錯誤的除法指令,執(zhí)行除法指令。


?????? 錯誤處理程序與機器人運動示例(在機器人運動過程中產(chǎn)生某種錯誤時,如何在自動模式下恢復錯誤

PROC

??????? CONST robtarget service_pos := [...];
??????? VAR robtarget stop_pos;
??????? ...
???? ERROR
????? ? IF ERRNO = AW_WELD_ERR THEN
????? ? ? ? ? ? ! Current movement on motion base path level is already stopped.
?????? ? ? ?? ? ! New motion path level for new movements in the ERROR handler
??????? StorePath;
?????? ? ? ? ?? ! Store current position from motion base path level
??????? stop_pos := CRobT(\Tool:=tool1, \WObj:=wobj1);

?????? ? ? ? ?? ! Do the work to fix the problem
??????? MoveJ service_pos, v50, fine, tool1, \WObj:=wobj1;
??????? ...
?????? ? ? ? ?? ! Move back to the position on the motion base path level
??????? MoveJ stop_pos, v50, fine, tool1, \WObj:=wobj1;
?????? ? ? ? ?? ! Go back to motion base path level
??????? RestoPath;
?????? ? ? ? ?? ! Restart the stopped movements on motion base path level,
????? ? ? ? ? ? ! restart the process and retry program execution
??????? StartMoveRetry;
??????? ENDIF
ENDPROC



總結(jié)

以上是生活随笔為你收集整理的ABB机器人的错误处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。