網(wǎng)上有很多關(guān)于pos機仿真功能,ABB機器人弧焊焊接起始點接觸尋位虛擬仿真方法的知識,也有很多人為大家解答關(guān)于pos機仿真功能的問題,今天pos機之家(www.tjfsxbj.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機仿真功能
pos機仿真功能
概述對于機器人弧焊焊接來講,焊接起始點的定位是非常重要的,起始點定位的精確度,會直接影響到整條焊縫的焊接效果。為了提高焊接起始點的定位效率,幾乎所有的機器人廠商都開發(fā)了起始點尋位功能,ABB機器人也不例外,當然起始點尋位除了弧焊焊接應(yīng)用外,也可以用在切割、銑削等應(yīng)用上。
起始點尋位有很多種,例如激光起始點尋位、接觸傳感器起始點尋位或者視覺起始點尋位,它們的本質(zhì)區(qū)別還是在尋位傳感器上。ABB機器人的起始點尋位功能是通過一個名叫Smartac的系統(tǒng)功能選項來實現(xiàn)的,SmarTac是一種接觸傳感器,用于搜索有安裝誤差的焊接起始點的位置并偏移焊接程序中的示教點。
通過使用SmarTac功能,只需簡單的幾個步驟就可以實現(xiàn)機器人起始點尋位功能。但是,很遺憾,這個功能在RobotStudio軟件中似乎并不能使用,小編經(jīng)過多次測試,依然沒能成功。如果有測試成功的小伙伴,也歡迎分享交流。
所以,要想在RobotStudio軟件中實現(xiàn)機器人弧焊焊接的起始點接觸尋位功能,我們就要另想替代方案,本期就來介紹一種。仿真案例繼續(xù)使用上一期發(fā)布的文章《RobotStudio軟件:ABB機器人弧焊焊接虛擬仿真實現(xiàn)方法》中介紹的案例。
機器人接觸傳感器添加與配置RobotStudio軟件中并沒有內(nèi)置現(xiàn)成的機器人接觸傳感器,但是我們可以使用Smart組件中的碰撞監(jiān)控傳感器來代替接觸傳感器。
在RobotStudio軟件“建?!辈藛螜谥行陆ㄒ粋€空的Smart組件,然后在其中添加一個碰撞監(jiān)控傳感器(CollisionSensor)。
在CollisionSensor屬性配置對話框中,碰撞監(jiān)控對象Object1中選擇機器人弧焊焊槍工具,其他屬性保持默認。
在Smart組件編輯窗口內(nèi)“信號和連接”中的I/O信號列表里分別添加數(shù)字量輸出信號SMdoTouch和數(shù)字量輸入信號SMdiTouch,作為Smart組件碰撞監(jiān)控傳感器的反饋信號和控制信號,I/O信號詳細配置參數(shù)如下表所示。
名稱
信號類型
值
說明
SMdoTouch
DigitalOutput
0
碰撞監(jiān)控傳感器反饋
SMdiTouch
DigitalInput
0
碰撞監(jiān)控傳感器控制
在“設(shè)計”窗口中將數(shù)字量輸入信號SMdiTouch連接到碰撞監(jiān)控傳感器CollisionSensor的激活接口Active上,將碰撞監(jiān)控傳感器CollisionSensor的感應(yīng)輸出接口連接到數(shù)字量輸出信號SMdoTouch上。
全部配置完成后,關(guān)閉Smart組件編輯窗口。由于碰撞監(jiān)控傳感器檢測的是弧焊焊槍模型的接觸碰撞情況,而焊槍模型是安裝在機器人模型上的,這樣仿真時焊槍模型還未接觸工件就已經(jīng)先與機器人模型發(fā)生接觸碰撞了,碰撞監(jiān)控傳感器一旦激活就會直接發(fā)出反饋信號。為了避免這種現(xiàn)象的發(fā)生就要將機器人模型整體取消“可由傳感器檢測”或只取消機器人第6個關(guān)節(jié)(Link6)的“可由傳感器檢測”。
機器人接觸傳感器I/O信號連接為了使機器人能夠控制和監(jiān)視接觸傳感器,還要在機器人虛擬控制器中添加兩個I/O信號,I/O信號詳細配置參數(shù)如下表所示。其中,數(shù)字量輸入信號diTouch用于接收接觸傳感器的反饋信號,數(shù)字量輸出信號doTouch用于接觸傳感器的激活和禁用控制。
Name
Type of Signal
Assigned to Device
Device Mapping
信號說明
diTouch
Digital Input
d651
1
接觸傳感器反饋
doTouch
Digital Output
d651
36
接觸傳感器控制
機器人I/O信號添加完成后,在軟件“仿真”菜單欄下,點擊“工作站邏輯”命令按鈕,在彈出的窗口中進入“設(shè)計”功能,先將機器人虛擬控制器的數(shù)字量輸出信號doTouch連接到接觸傳感器Smart組件的控制信號SMdiTouch上,再將Smart組件的碰撞監(jiān)控傳感器反饋信號SMdoTouch連接到機器人虛擬控制器的數(shù)字量輸入信號diTouch上。
信號連接完成后,機器人就能夠通過自身的I/O信號對接觸傳感器進行控制和監(jiān)視了。
機器人起始點接觸尋位常用指令介紹如果機器人的SmarTac功能可用,我們就可以直接使用一維搜索指令Search_1D來對工件偏差進行搜索定位,但是RobotStudio軟件中SmarTac功能并不能使用,所以要找到一種替代方案。
這里我們可以使用機器人運動指令集中的沿直線搜索指令SearchL來替代一維搜索指令Search_1D對工件的偏差進行搜索定位。
當執(zhí)行到SearchL指令時,機器人在移動過程中會監(jiān)控一個數(shù)字量輸入信號或持續(xù)變量。當信號或持續(xù)變量的值變?yōu)樗柚禃r,系統(tǒng)會立即讀取機器人當前位置。
SearchL指令常見格式及指令參數(shù)詳細說明如下圖所示,其中一些可變元在虛擬仿真中未使用,這里不再過多介紹,更多指令內(nèi)容可以查閱《ABB機器人RAPID指令、函數(shù)和數(shù)據(jù)類型技術(shù)參考手冊》。
機器人搜索到工件的當前位置后,經(jīng)過一系列的坐標變換得到工件的位置偏移值,然后再通過啟用使用已知坐標系的程序位移指令PDispSet,對弧焊焊接程序統(tǒng)一進行偏移補償,這樣就能夠讓機器人準確地定位到焊接起始點,并對焊道進行焊接。
PDispSet指令(Program Displacement Set)用于定義和啟用程序位移(使用已知坐標系),本質(zhì)上它是使用已知的坐標偏移值對機器人當前使用的工件坐標系進行偏移,在運動學中相當于對機器人當前工件坐標系的右乘,PDispSet指令常見格式及指令參數(shù)詳細說明如下圖所示。
值得注意的是在同一時間,僅能啟用一個程序位移。使用PDispSet,無法相互疊加程序位移。并且當出現(xiàn)使用重啟模式重置RAPID、加載新例行程序或一個新模塊、從起點開始執(zhí)行程序、將程序指針移動到main、將程序指針移動到子程序、移動程序指針造成執(zhí)行順序丟失這些情況中的任意一種時,程序位移將自動重置。
在程序偏移結(jié)束位置需要使用停用程序位移指令PDispOff,該指令沒有指令參數(shù),直接添加即可。PDispSet指令與PDispOff指令必須成對使用,單獨使用任何一條指令都會出現(xiàn)意想不到的錯誤。
機器人起始點接觸尋位程序編寫根據(jù)實際需求編寫機器人工件起始點接觸尋位子程序,使用SearchL指令進行工件位置搜索時,需要預(yù)留出一定的搜索距離,即從搜索起始點到搜索結(jié)束點之間要有足夠的搜索距離。本案例中的搜索距離為120mm,即以焊絲與工件接觸的平面為基準,機器人能夠搜索到的偏差為±60mm。當然,實際生產(chǎn)中的工件位置偏差并不會這么大,這里只是為了增強仿真效果。編寫好的機器人程序及其程序說明如下圖所示。
完成的機器人程序代碼如下所示。
MODULE Module1TASK PERS seamdata seam1:=[1,0.5,[0,0,0,0,0,0,0,0,0],0,0,0,0,0,[0,0,0,0,0,0,0,0,0],0,0,[0,0,0,0,0,0,0,0,0],0,0,[0,0,0,0,0,0,0,0,0],0.5];TASK PERS welddata weld1:=[7,0,[0,0,28,0,0,160,0,0,0],[0,0,0,0,0,0,0,0,0]];CONST robtarget p10:=[[960.00,-300.00,520.00],[0.382683,-1.95429E-8,-0.92388,-4.24699E-9],[-1,-1,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p20:=[[960.00,300.00,520.00],[0.382683,-1.95372E-8,-0.92388,1.49809E-9],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p30:=[[980.00,300.00,540.00],[0.382683,1.02466E-8,-0.92388,2.40946E-8],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p40:=[[980.00,-300.00,540.00],[0.382683,-4.94899E-8,-0.92388,-5.11307E-9],[-1,-1,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p50:=[[1248.42,0.00,953.07],[0.199804,4.77463E-9,0.979836,5.3919E-9],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];TASK PERS weavedata weave1:=[1,0,2,4,0,0,0,0,0,0,0,0,0,0,0];CONST robtarget p70:=[[900.00,0.00,697.33],[0.382683,-2.19348E-8,-0.92388,-5.65192E-9],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p60:=[[1020.00,0.00,697.33],[0.382683,-2.26126E-8,-0.92388,-5.82655E-9],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p90:=[[1020.00,-360.00,508.95],[0.24321,0.0885211,-0.907673,-0.330366],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p80:=[[1020.00,-360.00,697.33],[0.382683,-6.65062E-8,-0.92388,-1.89024E-8],[-1,-1,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p100:=[[1020.00,-240.00,508.95],[0.24321,0.088521,-0.907673,-0.330366],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget p110:=[[1020.00,-330.00,588.95],[0.258818,-4.11868E-7,-0.965926,3.61595E-9],[-1,0,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];VAR robtarget pTouchX:=[[1248.42,0.00,860.00],[0.199796,3.60641E-9,0.979838,4.07258E-9],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]]; VAR robtarget pTouchY:=[[1248.42,0.00,860.00],[0.199796,3.60641E-9,0.979838,4.07258E-9],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];CONST robtarget pWeldPoes:=[[960.00,-300.00,520.00],[0.382683,-3.86793E-8,-0.92388,-9.17784E-9],[-1,-1,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];PERS pose pose1:=[[-0.307556,0.126984,0],[1,0,0,0]];PROC main() SearchStartPos; PDispSet pose1; MoveJ p40, v500, z50, Weldgun; ArcLStart p10, v500, seam1, weld1\\Weave:=weave1, fine, Weldgun; ArcLEnd p20, v500, seam1, weld1\\Weave:=weave1, fine, Weldgun; MoveL p30, v500, z50, Weldgun; PDispOff; MoveJ p50, v500, fine, Weldgun;ENDPROCPROC SearchStartPos() MoveJ p50, v500, fine, Weldgun; Set doTouch; MoveJ p60, v500, z50, Weldgun; SearchL\\Stop, diTouch, pTouchX, p70, v20, Weldgun; MoveL p60, v200, z50, Weldgun; pose1.trans.x:=pTouchX.trans.x-pWeldPoes.trans.x; MoveJ p80, v500, z50, Weldgun; MoveJ p90, v500, z50, Weldgun; SearchL\\Stop, diTouch, pTouchY, p100, v20, Weldgun; MoveL p90, v200, z50, Weldgun; pose1.trans.y:=pTouchY.trans.y-pWeldPoes.trans.y; Reset doTouch; MoveJ p110, v500, z50, Weldgun;ENDPROCENDMODULE機器人仿真運行
機器人程序全部示教完成后,就可以仿真運行了。仿真運行效果如下方動態(tài)圖所示,可以看到機器人能夠搜索到工件的位置,并準確找到焊接起始點。
The End
上一篇:RobotStudio軟件:ABB機器人弧焊焊接虛擬仿真實現(xiàn)方法
以上就是關(guān)于pos機仿真功能,ABB機器人弧焊焊接起始點接觸尋位虛擬仿真方法的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機仿真功能的知識,希望能夠幫助到大家!
