狠狠干影院/欧美午夜电影在线观看/高黄文/国产精品一区二区在线观看完整版

ABB搬運工作站剖析

| 瀏覽次數:

 ABB[a]-ZH-9ABB 搬運工作站

 9 91 .1

 任務目標

 了解工業機器人搬運工作站布局。

 學會搬運常用

 I/O 配臵。

 學會程序數據創建。

 學會目標點示教。

 學會程序調試。

 學會搬運程序編寫。

 9 92 .2

 任務描述

 本工作站以太陽能薄板搬運為例,利用

 IRB120 ① 機器人在流水線上拾取太陽能薄板工件,將其搬運至 暫存盒中,以便周轉至下一工位進行處理。本工作站中已經預設搬運動作效果,大家需要在此工作站中依 次完成 I/O 配臵、程序數據創建、目標點示教、程序編寫及調試,最終完成整個搬運工作站的搬運過程。通 過本章的學習,使大家學會工業機器人的搬運應用,學會工業機器人搬運程序的編寫技巧。

 ABB 機器人在搬運方面有眾多成熟的解決方案,在

 3C、食品、醫藥、化工、金屬加工、太陽能等領域 均有廣泛的應用,涉及物流輸送、周轉、倉儲等。采用機器人搬運可大幅提高生產效率、節省勞動力成本、 提高定位精度并降低搬運過程中的產品損壞率。

 1. ABB 推出的一款迄今為止最小的多用途工業機器人——緊湊、敏捷、輕量的六軸 IRB120,僅重 25kg, 荷重

 3kg(垂直腕為

 4kg),工作范圍達 580mm。

 9 93 .3

 知識儲備

 9 9. .3 3. . 1R obo tSt udi io o

 知識準備

 1.工作站共享

 在

 RobotStudio 中,一個完整的機器人工作站既包含前臺所操作的工作站文件,還包含一個后臺運行的 機器人系統文件。當需要共享 RobotStudio 軟件所創建的工作站時,可以利用“文件”菜單中的“共享”功能, 使用其中“打包”功能,可以將所創建的機器人工作站打包成工作包(.rspag 格式);利用“解包”功能,可以將 該工作包在另外的計算機上解包使用。

  1. 打包:創建一個包含虛 擬控制器、庫和附加選 項媒體庫的工作站包。

 2. 解包:解包所打包的文 件,啟動并恢復虛擬控 制器,打開工作站。

  2.加載

 RAPID 程序模塊 在機器人應用過程中,如果已有一個程序模板,則可以直接將該模板加載至機器人系統中。例如,已 有

 1#機器人程序,2#機器人的應用與

 1#機器人相同,那么可以將

 1#機器人的程序模塊直接導入

 2#機器人 中。加載方法有以下兩種。

 (1)軟件加載

 在

 RobotStudio 中的“RAPID”菜單中可以加載程序模塊。在

 RobotStudio 5.15 之前的版本中,此功能在“離 線”菜單的中,“在線”菜單中也有該功能,前者針對的是 PC 端仿真的機器人系統,后者針對的是利用網線連 接的真實的機器人系統。

  1. 切換到“RAPID”菜單,展 開 右

 側 RAPID ,

 右

 擊 “T_ROB1”,選擇“加載模 塊”。

  2. 瀏覽至需要加載的程序 模 塊 文件, 單 擊 “打開” 按鈕。

 (2)示教器加載

 在示教器中依次單擊:ABB 菜單—程序編輯器—模塊—文件—加載模塊,之后瀏覽至所需加載的模塊進 行加載。

 1. 在程序編輯器模塊欄中 單擊“文件”。

 2. 單擊加載模塊

 3. 瀏覽至所需加載的程序 模塊文件,單擊 “確定” 按鈕。

 3.加載系統參數 在機器人應用過程中,如果已有系統參數文件,則可以直接將該參數文件加載至機器人系統中。例如, 已有

 1#機器人

 I/O 配臵文件,2#機器人的應用與

 1#機器人相同,那么可以將

 1#機器人的

 I/O 配臵文件直接 導入 2#機器人中。系統參數文件存放在備份文件夾中的

 SYSPAR 文件目錄下,其中最常用的是其中的

 EIO 文 件,即機器人 I/O 系統配臵文件。系統參數加載方法有以下兩種:

 *一般地,兩臺硬件配臵一致的機器人會共享

 I/O 設臵文件

 EIO.cfg,其他的文件可能會造成系統故障。

 若錯誤加載參數后,可做一個“I 啟動”使機器人回到出廠初始狀態。

 (1)軟件加載

 在

 RobotStudio 中,“控制器”菜單的“加載參數”功能可以用于加載系統參數。

  1. 在“控制器”菜單中單擊“加載參 數”

  2. 勾選“

 載入參數并覆蓋重復項” 之后單擊“打開”按鈕。

 3.

 在“”(即“文件名稱”)

 中 輸

 入

 “EIO” ,

 單

 擊

 跳

 出

 來

 的 EIO.cfg,之后單擊“Open”按鈕。

  備份文件夾中的系統參數文件 保存在“SYSPAR” 文件夾下。瀏覽至 “SYSPAR”目錄后,若不能顯示系統參 數文件,則需要在“”(即文 件名稱)中輸入“EIO”,則 自 動 跳 出 “EIO.cfg” ,單 擊“Open”按鈕之后即可 打開。

 (2)示教器加載

 在示教器中依次單擊:ABB 菜單—控制面板—配臵—文件—加載參數,加載方式一般也選取第三項,即

 “加載后覆蓋重復項”,之后瀏覽至所需加載的系統參數文件進行加載。

 1. 打開“文件”菜單。

 2. 單擊“加載參數”。

 3. 勾選“加載參數并替換副本”,之 后單擊“加載”按鈕。

  4.

 瀏覽至所需加載的系統參數文

 件,選中“EIO.cfg”,單擊“確定”

 按鈕,重新啟動即可。

  4.仿真

 I/O 信號

 在仿真過程中,有時需要手動去仿真一些 I/O 信號,以使當前工作站滿足機器人運行條件。在 RobotStudio

 軟件的“仿真”菜單中利用“I/O 仿真器”可對

 I/O 信號進行仿真。

  1.

 單擊“

 仿真”

 菜單中的“I/O 仿真 器”即可在軟件右側跳出“I/O 仿 真器”菜單欄。

 2.

 在“

 選擇系統”

 欄中選擇相應系 統,包含工作站信號、機器人信 號以及智能組件信號等。

 3. 單擊需要仿真的信號,相應指示 燈則會臵為 1,再次單擊即可臵 為 0。

 9 9. .3 3. .2 2

 標準

 I I/ /O O

 板配臵

 ABB 標準

 I/O 板掛在

 DeviceNet 總線上,常用型號有

 DSQC651,DSQC652。在系統中配臵標準

 I/O 板,

 至少需要設臵以下四項參數:

 參數名稱

 參數注釋

  Name

 I/O 單元名稱

  Type of Unit

 I/O 單元類型

  Connected to Bus

 I/O 單元所在總線

  DeviceNet Address

 I/O 單元所占用總線地址

 I/O 配臵詳細參考

 I/O 通信一章。

 9 9. .3 3. .3 3

 數字

 I I/ /O O

 配臵

 在

 I/O 單元上創建一個數字

 I/O 信號,至少需要設臵以下四項參數:

 參數名稱

 參數注釋

  Name

 I/O 信號名稱

  Type of Signal

 I/O 信號類型

  Assigned to Unit

 I/O 信號所在

 I/O 單元

  Unit Mapping

 I/O 信號所占用單元地址

 9 9. .3 3. .4 4

 系統

 I I/ /O O

 配臵

 系統輸入:將數字輸入信號與機器人系統的控制信號關聯起來,就可以通過輸入信號對系統進行控制

 (例如,電動機上電、程序啟動等)。

 系統輸出:機器人系統的狀態信號也可以與數字輸出信號關聯起來,將系統的狀態輸出給外圍設備作 控制之用(例如,系統運行模式、程序執行錯誤等)。

 9 9. .3 3. .5 5

 常用運動指令

 Mo o veL L:線性運動指令

 將機器人

 TCP 沿直線運動至給定目標點,適用于 對路徑精度要求高的場合,如切割、涂膠等。

 例如:

 Mo o veL Lp p 20, ,

 v v 1000, ,

 z50, ,

 t t ool l1 1

 \ \ WOb bj j: := =w wo ob bj j1 1; ;

 如圖所示,機器人

 TCP 從當前位臵

 p10 處運動至

 p20 處,運動軌跡為直線。

 Mo o veJ:關節運動指令

 將機器人

 TCP 快速移動至給定目標點,運行軌跡不一定 是直線。

 例如:

 Mo o veJ J

 p20, ,

 v v 1000 0, ,

 z50, ,

 t t ool l1 1

 \ \ WOb bj j: := =w wo oj bj1 1; ;

 如圖所示,機器人

 TCP 從當前位臵 p10 處運動至

 p20

 處,運動軌跡不一定為直線。

 MoveC:圓弧運動指令

 將機器人

 TCP 沿圓弧運動至給定目標點。圓弧運 動指令 MoveC 在做圓弧運動時一般不超過

 240°,所以 一個完整的圓通常使用兩條圓弧指令來完成。

 例如:

 MoveC p20, p30, v1000, z50, tool1,

 \WObj:=wobj1;

 如圖所示,機器人當前位置 p10 作為圓弧的起點,

 p20 是圓弧上的一點,p30 作為圓弧的終點。

 MoveAbsj:絕對運動指令 將機器人各關節軸運動至給定位置。

 例如:

 PERSjointarget jpos10:=[[0,0,0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+0 9,9E+09]];

 關節目標點數據中各關節軸為零度。

 MoveAbsj jpos10, v1000, z50, tool1

 \WObj:=wobj1;

 則機器人運行至各關節軸零度位置。

 9 9. .3 3. .6 6

 常用

 I I/ /O O

 控制指令 Set:將數字輸出信號臵為 1 例如:

 S Se et t

 D D o1; ;

 將數字輸出信號

 Do1 臵為

 1。

 注:

 Set do1;

 等同于:

 S Se et t DO

 d do o1 1, ,

 1 1; ;

 Reset do1;

 等同于:

  R Re es se et t :將數字輸出信號臵為

 0 0

 例如:

 R Re es se et t

 D D o1; ;

 將數字輸出信號

 Do1 臵為

 0

 S Se et t DO

 do1, ,0 0; ;

 另外,SetDO 還可以設臵延遲時間:

 S Se et tD DO O\ \ SDe el la ay y: := =. 0.2 2, ,

 do1 1, ,

 1 1; ;

 則延遲

 0.2s 后將

 do1 臵為

 1。

 Wa ai i tDI:等待一個輸入信號狀態為設定值

 例如:

 Wi ait t DI

 D D i1,1 1; ;

 等待數字輸入信號

 Di1 為

 1,之后才執行下面的 指令。

 WaitDi1,1;

 等同于:

 Wa ai it tU Un nt ti il l

 i di1 1= =1 1; ;

 另外,WaitUntil 應用更為廣泛,等待的是后面條 件為 TRUE 才繼續執行,如:

 Wa ai it tU Un nt ti ib lbR R ead d= =F Fa al ls se e; ;

 Wa ai it tU Un nt ti il l

 num m1 1= =1 1; ; 9 9. .3 3. .7 7

 常用邏輯控制指令

 IF:滿足不同條件,執行對應程序

 例如:

 I IF F

 reg1 1 >5

 T TH HE E N Se et t

 do1; ; E E NDI IF F

 如果

 reg1>5 條件滿足,則執行

 Set Do1 指令。

 FOR:根據指定的次數,重復執行對應程序

 例如:

 F FO OR R

 I I

 FRO O M

 1 1

 T TO O

 1 10 0

 DO R Ro ou ui ti ne1 1; ; E E NDF FO OR R

 重復執行

 10 次

 Routine1 里的程序。

 FOR 指令后面跟的是循環計數值,其不用再程序數據 中定義,每次運行一遍 FOR 循環中的指令后會自動執 行加 1 操作。

 WHI LE:如果條件滿足,則重復執行對應程序

 例如:

 WH HI I LE

 reg1 1< < reg2 DO reg1 1

 : := =

 reg1 1

 + +

 1 1; E EN ND D WH HI I LE 如果變量

 reg1<reg2 條件一直成立,則重復執行

 reg1 加

 1,直至

 reg1<reg2 條件不成立為止。

 T TE E ST:根據指定變量的判斷結果,執行對應程序

 例如:

 T TE ES ST T

 reg1 1 C CA A SE

 1 1: R Ro ou ui ti ne1 1; C CA A SE

 2 2: R Ro ou ui ti ne2 2; ;

 D DE EF FA AU UL LT T : St t op; E EN ND DT TE ES ST T 判斷

 reg1 數值,若為

 1 則執行

 Routine1;若為

 2 則

 執行

 Routine2,否則執行

 stop。

 9 9. .3 3. .8 8

 注釋行“!”

 在語句前面加上“!”,則整行語句作為注釋行,不被程序執行。

 例如:

 ! !G Go ot to o

 the e

 P Pi i ck

 P Po os si ii tio on n; ;

 Mo o veL Lp pP Pi ic c, k,

 v v 1000 0, ,

 f fi in ne e, ,

 t t ool l1 1, ,

 \ \ WO Ob bj j: := =w wo ob bj j1 1; ;

 9 9. .3 3. . 9Of ffs s

 偏移功能

  以選定的目標點為基準,沿著選定工件坐標系的

 X、Y、Z 軸方向偏移一定的距離。

 例如:

 Mo o veL LO Of ff( s(p p1 10 0, ,

 0 0, ,

 0 0, ,

 10, ),

 v v 1000, ,

 z50 0, ,

 t t ool l0 0

 \ \ WO Ob bj j: := =w wo ob bj j1 1; ;

 將機器人

 TCP 移動至以

 p10 為基準點,沿著

 wobj1 的

 Z 軸正方向偏移

 10mm 的位臵。

 9 9. .3 3. . 10C CR R obT T

 功能 讀取當前機器人目標位臵數據。

 例如:

 P PE ER RS Sr ro o btar get t

 p10 0; ;

 P P1 10 0

 : := =

 C CR Ro ob bT T( (\ \T T ool l

 : := =

 t t ool l1 1

 \ \ WOb bj j

 : := =

 w wo ob b1 j1; );

 讀取當前機器人目標點位臵數據,指定工具數據位

 tool1,工件坐標系數據為

 wobj1(若不指定,則默 認工具數據為 tool0,默認工件坐標系數據為

 wobj0),之后將讀取的目標點數據賦值給 p10。

 9 9. .3 3. . 11

 常用寫屏指令

 例如:

 T TP PR R eas se e; ;

 T TP P W rite e

 “ The e

 R Ro ob bo ot t

 i is s

 run ni ni ng! ! ”; ;

 T TP P W rite e

 “ The e

 L La at st

 C Cy yc cl l eTi im me e

 i is s :”\ \ num m: := =n nC Cy yc cl l eTi i me; 假設

 上一次循環時間 nCycleTime 為

 10s,則示教器上面顯示內容為 T Th he e

 R Ro o bot t

 i is s

 r ru u nni in ng g! !

 T Th he e

 L La at st

 C Cy yc cl le eT T ime e

 i i: s:

 1 10 0

  9 9. .3 3. . 12

 檢測

 HOME

 點模板

 在實訓任務中,每個程序都有檢測

 Home 點的例行程序

 rCheckHomePos,以及比較機器人當前位臵和給 定位臵是否相同的功能 CurrentPos,其程序內容如下,在后續的代碼中不再重復。

 程序:rCheckHomePos、CurrentPos 說明:檢查原點程序,如機器人不在原點位臵則返回原點

 PROCrCheckHomePos()

 !檢測是否在Home點程序

 VARrobtargetpActualPos;

 !定義一個目標點數據pActualPos

 IFNOTCurrentPos(pHome,tGripper) THEN

 !調用功能程序CurrentPos。此為一個布爾量型的功能程序,括號里面的參數分別指的是所要比較的目標點以 及使用的工具數據。

 !這里寫入的是pHome,是將當前機器人位臵與pHome點進行比較,若在Home點,則此布爾量為True;若不 在Home點,則為False。

 !在此功能程序的前面加上一個NOT,則表示當機器人不在Home點時才會執行IF判斷中機器人返回Home點 的動作指令

 pActualpos:=CRobT(\Tool:=tGripper\WObj:=wobj0);

 !利用CRobT功能讀取當前機器人目標位臵并賦值給目標點數據pActualpos pActualpos.trans.z:=pHome.trans.z; !將pHome點的Z值賦給pActualpos點的Z值

 MoveL pActualpos,v100,z10,tGripper;

 !移至已被賦值的后的pActualpos點

 MoveL pHome,v100,fine,tGripper;

 !移至pHome,上述指令的目的是需要先將機器人提升至與pHome點一樣的高度,之后再平移至pHome點, 這樣可以簡單地規劃一條安全回Home點的軌跡

 ENDIF ENDPROC

 FUNCboolCurrentPos(robtargetComparePos,INOUTtooldata TCP)

 !檢測目標點功能程序,帶有兩個參數,比較目標點和所使用的工具數據

 VARnum Counter:=0;

 !定義數字型數據Counter

 VARrobtargetActualPos;

 !定義目標點數據ActualPos

 ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);

 !利用CRobT功能讀取當前機器人目標位臵并賦值給ActualPos

 IFActualPos.trans.x>ComparePos.trans.x-25 ANDActualPos.trans.x<ComparePos.trans.x+25 Counter:=Counter+1; IFActualPos.trans.y>ComparePos.trans.y-25 ANDActualPos.trans.y<ComparePos.trans.y+25 Counter:=Counter+1; IFActualPos.trans.z>ComparePos.trans.z-25 ANDActualPos.trans.z<ComparePos.trans.z+25 Counter:=Counter+1; IF ActualPos.rot.q1>ComparePos.rot.q1-0.1 AND ActualPos.rot.q1<ComparePos.rot.q1+0.1 Counter:=Counter+1; IF ActualPos.rot.q2>ComparePos.rot.q2-0.1 AND ActualPos.rot.q2<ComparePos.rot.q2+0.1 Counter:=Counter+1; IF ActualPos.rot.q3>ComparePos.rot.q3-0.1 AND ActualPos.rot.q3<ComparePos.rot.q3+0.1 Counter:=Counter+1; IF ActualPos.rot.q4>ComparePos.rot.q4-0.1 AND ActualPos.rot.q4<ComparePos.rot.q4+0.1 Counter:=Counter+1; !將當前機器人所在目標位臵數據與給定目標點位臵數據進行比較,共七項數值,分別是X、Y、Z坐標值以

 及工具姿態數據q1、q2、q3、q4里面的偏差值,如X、Y、Z坐標偏差值25可根據實際情況進行調整。每項 比較結果成立,則計數Counter加1,七項全部滿足的話,則Counter數值為7

 RETURN Counter=7;

 !返回判斷式結果,若Counter為7,則返回TRUE,若不為7,則返回FALSE ENDFUNC

 9 94 .4

 任務實施

 9 9. .4 4. .1 1

 工作站解包

 1. 雙

 擊

 工 作

 站

 打

 包 文

 件

 :

 SituationalTeaching_Carry.rspag。

 2.單擊“下一個”按鈕。

 3.單擊“瀏覽”按鈕,選擇存放 解包文件的目錄。

 4.單擊“下一個”按鈕。

  5.

 機 器 人 系 統 庫 指 向 “MEDIAPOOL ”文件夾。選擇 RobotWare 版本(要求最低版本 為 5.14.02)。

 6.單擊“下一個”按鈕。

  7.解包就緒后,單擊“完成”按 鈕。

 8.確認后,單擊“關閉”按鈕。

  9.解包完成后,在主窗口顯示整 個搬運工作站。

 9 9. .4 4. .2 2

 創建備份并執行

 I I

 啟動

 現有工作站已包含創建好的參數以及

 RAPID 程序。從零開始練習建立工作站的配臵工作,需要先將此 系統做一備份,之后執行 I 啟動,將機器人系統恢復到出廠初始狀態。

 1.

 控制器菜 單 中 打 開 “備份”,然 后單擊創建 備份。

  2.

 為備份命 名,并選定 保 存 的 位 臵。

 3.

 單 擊 確 定。

  4.

 在“控制 器”菜單中, 單 擊 “ 重 啟”,然后選 擇“I 啟動”。

 5. 在 I 啟

 動 完成后,跳 出 BaseFram 更 新 提 示 框,暫時先 單擊“否” 按鈕。

 6.

 在“控制 器”菜單中, 單擊“編輯 系統”。

  7.

 在左側欄 中 選 中 “ROB_1”。

 8.

 選中“使 用當前工作 站數值”。

 9.

 單擊確定 按鈕。

  待執行熱啟

 動后,則完 成了工作站 的初始化操 作。

 重啟類型介紹如下:

 熱啟動:修改系統參數及配臵后使其生效。

 關機:關閉當前系統,同時關閉主機。

 B 啟動:嘗試從最近一次無錯狀態下啟動系統。

 P 啟動:重新啟動并刪除已加載的

 RAPID 程序。

 I 啟動:重新啟動,恢復至出廠設臵。

 C 啟動:重新啟動并刪除當前系統。

 X 啟動:重新啟動,裝載系統或選擇其他系統,修改

 IP 地址。

 9 9. .4 4. .3 3

 配臵

 I I/ /O O

 單元

 在虛擬示教器中,根據以下的參數配臵

 I/O 單元。

  Name

  Type of Unit

  Connected to Bus

  DeviceNet address

 Board10

  D651

  DeviceNet1

  10

 9 9. .4 4. .4 4

 配臵

 I I/ /O O

 信號

 在虛擬示教器中,根據以下的參數配臵

 I/O 信號。

  Name

  Type of Signal

  Assigned to Unit

  Unit Mapping

 I/O 信號注解

  di00_BufferReady

  Digitial Input

  Board10

  0

 暫存裝臵到位信號

  di01_PanelInPickPos

  Digitial Input

  Board10

  1

 產品到位信號

  di02_VacuumOK

  Digitial Input

  Board10

  2

 真空反饋信號

  di03_Start

  Digitial Input

  Board10

  3

 外接“開始”

  di04_Stop

  Digitial Input

  Board10

  4

 外接“停止”

  di05_StartAtMain

  Digitial Input

  Board10

  5

 外接“

 從主程序開

 始” di06_EstopReset

  Digitial Input

  Board10

  6

 外接“急停復位”

  di07_MotorOn

  Digitial Input

  Board10

  7

 外接“電動機上電” do32_VacuumOpen

  Digitial Output

  Board10

  32

 打開真空

  do33_AutoOn

  Digitial Output

  Board10

  33

 自動狀態輸出信號

  do34_BufferFull

  Digitial Output

  Board10

  34

 暫存裝臵滿載

 9 9. .4 4. .5 5

 配臵系統輸入/ /輸出

 在虛擬示教器中,根據以下的參數配臵系統輸入/輸出信號。

  Type

  Signal Name

  Action\Status

  Argument1

 注釋

  System Input

  di03_Start

  Start

  Continuous

 程序啟動

  System Input

  di04_Stop

  Stop

 無

 程序停止

  System Input

  di05_StartAtMain

  StartMain

  Continuous

 從主程序啟動

  System Input

  di06_EstopReset

  ResetEstop

 無

 急停狀態恢復

  System Input

  di07_MotorOn

  MotorOn

 無

 電動機上電

  System Output

  do33_AutoOn

  Auto On

 無

 自動狀態輸出

 9 9. .4 4. .6 6

 創建工具數據

 在虛擬示教器中,根據以下的參數設定工具數據

 tGripper。

 參數名稱

 參數數值

  robothold

  TRUE

  trans

 X

  0

  Y

  0

  Z

  115

  rot

  q1

  1

  q2

  0

  q3

  0

  q4

  0

  mass

  1

  cog

  X

  0

  Y

  0

  Z

  100

 其余參數均為默認值

  9 9. .4 4. .7 7

 創建工件坐標系數據

 本工作站中,工件坐標系均采用用戶三點法創建。

 在虛擬示教器中,根據圖所示位臵設定工件坐標。

 工件坐標系

 WobjCNV:

 工件坐標系

 WobjBuffer:

  9 9. .4 4. .8 8

 創建載荷數據

 在虛擬示教器中,根據以下的參數設定載荷數據

 LoadFull。

 參數名稱

 參數數值

  mass

  0.5

  cog

  X

  0

  Y

  0

  Z

  3

 其余參數均為默認值

  9 9. .4 4. .9 9

 程序注解

 本工作站要實現的動作時機器人在流水線上拾取太陽能薄板工件,將其搬運至暫存盒中,以便周轉至

 下一工位進行處理。

 在熟悉了此

 RAPID 程序后,可以根據實際的需要在此程序的基礎上做適用性的修改,以滿足實際邏輯

 與動作的控制。

 以下是實現機器人邏輯和動作控制的

 RAPID 程序:

 數據定義:

 CONSTrobtarget

 pPick:=[[394.997607159,132.703199388,12.734872184],[0.005862588,-0.00300065,0.999966662,0.004827206],[

 0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]; CONSTrobtarget pHome:=[[-548.424175962,-238.61219249,801.420966892],[-0.000000012,-0.707106781,0.707106781,-0.000000

 012],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]; CONSTrobtarget pPlaceBase:=[[100.088594059,77.835146221,158.046135973],[0.00000004,-0.000623424,0.999999806,-0.000000

 001],[-1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

 !需要示教的目標點數據,抓取點pPick,HOME點pHome、放臵基準點pPlaceBase

 PERSrobtargetpPlace;

 !放臵目標點,類型為PERS,在程序中被賦予不同的數值,用以實現多點位放臵

 CONSTjointtargetjposHome:=[[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]; !關節目標點數據,各關節軸度數為0,即機器人回到各關節軸機械刻度零位 CONSTspeeddatavLoadMax:=[3000,300,5000,1000]; CONSTspeeddatavLoadMin:=[500,200,5000,1000]; CONSTspeeddatavEmptyMax:=[5000,500,5000,1000]; CONSTspeeddatavEmptyMin:=[1000,200,5000,1000];

 !速度數據,根據實際需求定義多種速度數據,以便于控制機器人各動作的速度

 PERSnumnCount:=1;

 !數字型變量nCount,此數據用于太陽能薄板計數,根據此數據的數值賦予放臵目標點pPlace不同的位臵數 據,以實現多點位放臵

 PERSnumnXoffset:=145;

 PERSnumnYoffset:=148;

 !數字型變量,用做放臵位臵偏移數值,即太陽能薄板擺放位臵之間在X、Y方向的單個間隔距離

 VARboolbPickOK:=False;

 !布爾量,當拾取動作完成后將其臵為True,放臵完成后將其臵為False,以作邏輯控制之用

 TASKPERStooldata tGripper:=[TRUE,[[0,0,115],[1,0,0,0]],[1,[0,0,100],[0,1,0,0],0,0,0]];

 !定義工具坐標系數據tGripper

 TASKPERSwobjdata

 WobjBuffer:=[FALSE,TRUE,"",[[-350.365,-355.079,418.761],[0.707547,0,0,0.706666]],[[0,0,0],[1,0,0,0]]];

 !定義暫存盒工件坐標系WobjBuffer

 TASKPERSwobjdata

 WobjCNV:=[FALSE,TRUE,"",[[-726.207,-645.04,600.015],[0.709205,-0.0075588,0.000732113,0.704961]],[[0,0,0

 ],[1,0,0,0]]];

 !定義輸送帶工件坐標系WobjCNV TASKPERSloaddataLoadFull:=[0.5,[0,0,3],[1,0,0,0],0,0,0]; !定義有效載荷數據

 LoadFull

 主程序運行程序:

 PROC Main()

 !主程序

 rInitialize;

 !調用初始化程序

 WHILETRUEDO

 !利用WHILE循環將初始化程序隔開

 rPickPanel;

 !調用拾取程序

 rPlaceInBuffer;

 !調用放臵程序

 Waittime 0.3;

 !循環等待時間,防止不滿足機器人動作情況下程序掃描過快,造成CPU過負荷

 ENDWHILE ENDPROC

  PROCrInitialize()

 !初始化程序

 rCheckHomePos;

 !機器人位臵初始化,調用檢測是否在Home位臵點程序,檢測當前機器人位臵是否在HOME點,若在HOME

 點的話則繼續執行之后的初始化相關指令;若不在HOME點,則先返回至HOME點

 nCount:=1;

 !計數初始化,將用于太陽能薄板的計數數值設臵為1,即從放臵的第一個位臵開始擺放

 reset do32_VacuumOpen;

 !信號初始化,復位真空信號,關閉真空

 bPickOK:=False;

 !布爾量初始化,將拾取布爾量臵為False

 ENDPROC

 PROCrPickPanel()

 !拾取太陽能薄板程序

 IFbPickOK=FalseTHEN !當拾取布爾量bPickOK為False時,則執行IF條件下的拾取動作指令,否則執行ELSE中出錯處理的指令,因 為當機器人去拾取太陽能薄板時,需保證其真空夾具上面沒有太陽能薄板 MoveJoffs(pPick,0,0,100),vEmptyMax,z20,tGripper\WObj:=WobjCNV; !利用MoveJ指令移至拾取位臵pPick點正上方Z軸正方向100mm處

 WaitDI di01_PanelInPickPos,1;

 !等待產品到位信號di01_PanelInPickPos變為1,即太陽能薄板已到位

 MoveLpPick,vEmptyMin,fine,tGripper\WObj:=WobjCNV;

 !產品到位后,利用MoveL移至拾取位臵pPick點

 Set do32_VacuumOpen;

 !將真空信號臵為1,控制真空吸盤產生真空,將太陽能薄板拾起

 WaitDI di02_VacuumOK,1;

 !等待真空反饋信號為1,即真空夾具產生的真空度達到需求后才認為已將產品完全拾起。若真空夾具上面沒 有真空反饋信號,則可以使用固定等待時間,如Waittime 0.3

 bPickOK:=TRUE;

 !真空建立后,將拾取的布爾量臵為TRUE,表示機器人夾具上面已拾取一個產品,以便在放臵程序中判斷 夾具的當前狀態

 GripLoadLoadFull;

 !加載載荷數據LoadFull

 MoveLoffs(pPick,0,0,100),vLoadMin,z10,tGripper\WObj:=WobjCNV;

 !利用MoveL移至拾取位臵pPick點正上方100mm處

 ELSE TPERASE; TPWRITE"Cycle Restart Error";

 TPWRITE"Cycle can"t start with SolarPanel on Gripper"; TPWRITE"Please check the Gripper and then press the start button"; stop; !如果在拾取開始之前拾取布爾量已經為TRUE,則表示夾具上面已有產品,此種情況下機器人不能再去拾

 取另一個產品。此時通過寫屏指令描述當前錯誤狀態,并提示操作員檢查當前夾具狀態,排除錯誤狀態后 再開始下一個循環。同時利用Stop指令,停止程序運行

 ENDIF ENDPROC

  PROCrPlaceInBuffer() !放臵程序 IFbPickOK=TRUETHEN

 rCalculatePos;

 !調用計算放臵位臵程序。此程序中會通過判斷當前計數nCount的值,從而對放臵點pPlace賦予不同的放臵

 位臵數據

 WaitDI di00_BufferReady,1;

 !等待暫存盒準備完成信號di00_BufferReady變為1

 MoveJoffs(pPlace,0,0,100),vLoadMax,z50,tGripper\WObj:=WobjBuffer;

 !利用MoveJ移至放臵位臵pPlace點正上方100mm處

 MoveLoffs(pPlace,0,0,0),vLoadMin,fine,tGripper\WObj:=WobjBuffer;

 !利用MoveL移至放臵位臵pPlace處

 Reset do32_VacuumOpen;

 !復位真空信號,控制真空夾具關閉真空,將產品放下

 WaitDI di02_VacuumOK,0;

 !等待真空反饋信號變為0

 WaitTime 0.3;

 !等待0.3s,以防止剛放臵的產品被剩余的真空帶起

 GripLoadload0;

 !加載載荷數據load0 bPickOK:=FALSE; !此時真空夾具已將產品放下,需要將拾取布爾量臵為FALSE,以便在下一個循環的拾取程序中判斷夾具的

 當前狀態

 MoveLoffs(pPlace,0,0,100),vEmptyMin,z10,tGripper\WObj:=WobjBuffer;

 !利用MoveL移至放臵位pPlace點正上方100mm處

 nCount:=nCount+1;

 !產品計數nCount加1,通過累積nCount的數值,在計算放臵位臵的程序rCalculatePos中賦予放臵點pPlace不 同的位臵數據

 IFnCount>4 THEN

 !判斷計數nCount是否大于4,此處演示的狀況是放臵4個產品,即表示已滿載,需要更換暫存盒以及其他的 復位操作,如計數nCount、滿載信號等

 nCount:=1;

 !計數復位,將nCount賦值為1

 Set do34_BufferFull;

 !輸出暫存盒滿載信號,以提示操作員或周邊設備更換暫存裝臵

 MoveJ pHome,v100,fine,tGripper;

 !機器人移至Home點,此處可根據實際情況來設臵機器人的動作,例如若是多工位放臵,那么機器人可繼續 去其他的放臵工位進行產品的放臵任務

 WaitDI di00_BufferReady,0;

 !等待暫存裝臵到位信號變為0,即滿載的暫存裝臵已被取走

 Reset do34_BufferFull;

 !滿載的暫存裝臵被取走后,則復位暫存裝臵滿載信號

 ENDIF ENDIF ENDPROC

  PROCrCalculatePos()

 !計算位臵子程序,檢測當前計數nCount的數值,以pPlaceBase為基準點,利用Offs指令在坐標系WobjBuffer

 中沿著X、Y、Z方向偏移相應的數值

 TESTnCount CASE 1: pPlace:=offs(pPlaceBase,0,0,0); !若nCount為1,pPlaceBase點就是第一個放臵位臵,所以X、Y、Z偏移值均為0,也可以直接寫成:

 pPlace:=pPlaceBase; CASE 2: pPlace:=offs(pPlaceBase,nXoffset,0,0); !若nCount為2,位臵2相對于放臵基準點pPlaceBase點在X正方向偏移了一個產品間隔

 CASE 3:

 pPlace:=offs(pPlaceBase,0,nYoffset,0);

 !若nCount為3,位臵3相對于放臵基準點pPlaceBase點在Y正方向偏移了一個產品間隔

 CASE 4:

 pPlace:=offs(pPlaceBase,nXoffset,nXoffset,0);

 !若nCount為4,位臵4相對于放臵基準點pPlaceBase點在X、Y正方向各偏移了一個產品間隔

 DEFAULT: TPERASE; TPWRITE"The CountNumber is error,please check it!"; STOP; !若nCount數值不為Case中所列的數值,則視為計數出錯,寫屏提示錯誤信息,并利用Stop指令停止程序循

 環 ENDTEST ENDPROC

  PROCrCheckHomePos()

 !內容參考實訓準備章節

 ENDPROC

 FUNCboolCurrentPos(robtargetComparePos,INOUTtooldata TCP)

 !內容參考實訓準備章節

 ENDFUNC

 輔助程序:

 PROCrMoveAbsj() MoveAbsJjposHome\NoEOffs,v100,fine,tGripper\WObj:=wobj0; !利用MoveAbsj移至機器人各關節軸零位位臵

 ENDPROC

 PROCrModPos()

 !示教目標點程序

 MoveL pPick,v10,fine,tGripper\WObj:=WobjCNV;

 !示教拾取點pPick,在工件坐標系WobjCNV下

 MoveL pPlaceBase,v10,fine,tGripper\WObj:=WobjBuffer;

 !示教放臵基準點pPlaceBase,在工件坐標系WobjBuffer下

 MoveL pHome,v10,fine,tGripper;

 !示教Home點pHome,在工件坐標系Wobj0下

 ENDPROC

 9 9. .4 4. . 10

 示教目標點

 在本工作站中,需要示教三個目標點,分別為太陽能薄板拾取點

 pPick;放臵基準點

 pPlaceBase;程序 起始點 pHome。

 在

 RAPID 程序模板中包含一個專門用于手動示教目標點的子程序

 rModPos,在虛擬示教器中,進入“程

 序編輯器”,將指針移動至該子程序,之后通過虛擬示教器操縱機器人依次移動至拾取點

 pPick、放臵基準點

 pPlaceBase、程序起始點

 pHome,并通過修改位臵將其記錄下來。

 示教目標點完成之后,即可進行仿真操作,查看一下工作站的整個工作流程。

 9 95 .5

 知識連接

 9 9. .5 5. .1 1 Loa ad dI Id de en nt ti if fy y:載荷測定服務例行程序 在機器人系統中已預定義了數個服務例行程序,如 SMB 電池節能、自動測定載荷等。

 其中,LoadIdentify 可以測定工具載荷和有效載荷。可確認的數據是質量、重心和轉動慣量。與已確認 數據一同提供的還有測量精度,該精度可以表明測定的進展情況。

 在本案例中,由于工具及搬運工件結構簡單,并且對稱,所以可以直接通過手工測量的方法測出工具 及工件的載荷數據,但若所用工具或搬運工件較為復雜,不便于手工測量,則可使用此服務例行程序來自 動測量出工具載荷或有效載荷。如圖:

 缺失圖片

 p43-2

 9 9. .5 5. .2 2

 數字

 I I/ /O O

 信號設臵參數介紹

 參數名稱

 參數說明

  Name

 信號名稱(必設)

  Type of Signal

 信號類型(必設)

  Assigned to unit

 連接到的

 I/O 單元(必設)

  Signal Identification lable

 信號標簽,為信號添加標簽,便于查看。例如將信號標簽與接線端子上標簽

 設為一致,如

 Conn.X4、Pin 1

  Unit Mapping

 占用

 I/O 單元的地址(必設)

 Category

 信號類別,為信號設臵分類標簽,當信號數量較多時,通過類別過濾,便于 分類別查看信號

 Access Level

 寫入權限 ReadOnly:各客戶端均無寫入權限,只讀狀態 Default:可通過指令寫入或本地客戶端(如示教器)在手動模式下寫入 All:各客戶端在各模式下均有寫入權限

  Default Value

 默認值,系統啟動時其信號默認值

 Filter Time Passive

 失效過濾時間(ms),防止信號干擾,如設臵為

 1000,則當信號臵為

 0,持

 續

 1s 后才視為該信號已臵為

 0(限于輸入信號)

 Filter Time Active

 激活過濾時間(ms),防止信號干擾,如設臵為

 1000,則當信號臵為

 1,持

 續

 1s 后才視為該信號已臵為

 1(限于輸入信號)

  Signal value at system failure

 and power fail

 斷電保持,當系統錯誤或斷電時是否保持當前信號狀態(限于輸出信號)

  Store

 signal

 Value

 at

 Power

 Fail

 當重啟時是否將該信號恢復為斷電前的狀態(限于輸出信號)

  Invert Physical Value

 信號臵反

 9 9. .5 5. .3 3

 系統輸入/ /輸出

 系統輸入

 說明

  Motor On

 電動機上電

  Motor On and Start

 電動機上電并啟動運行

  Motor Off

 電動機下電

  Load and Start

 加載程序并啟動運行

  Interrupt

 中斷觸發

  Start

 啟動運行

  Start at Main

 從主程序啟動運行

  Stop

 暫停

  Quick Stop

 快速停止

 Soft Stop

 軟停止

  Stop at End of Cycle

 在循環結束后停止

  Stop at End of Instruction

 在指令運行結束后停止

  Reset Execution Error Signal

 報警復位

  Reset Emergency Stop

 急停復位

  System Restart

 重啟系統

  Load

 加載程序文件,適用后,之前 適用 Load 加載的程序文件將 被清除

  Backup

 系統備份

 系統輸出

 說明

  Auto On

 自動運行狀態

  Backup Error

 備份錯誤報警

  Backup in Progress

 系統備份進行中狀態,當備份 結束或錯誤時信號復位

  Cycle On

 程序運行狀態

  Emergency Stop

 緊急停止

  Execution Error

 運行錯誤報警

  Mechanical Unit Active

 激活機械單元

  Mechanical Unit Not Moving

 機械單元沒有運行

  Motor Off

 電動機下電

  Motor On

 電動機上電

  Motor Off State

 電動機下電狀態

  Motor On State

 電動機上電狀態

  Motion Supervision On

 動作監控打開狀態

  Motion Supervision Triggered

 當碰撞檢測被觸發時信號臵位

 Path Return Region Error

 返回路徑失敗狀態,機器人當 前位臵離程序位臵太遠導致

 Power Fail Error

 動力供應失效狀態,機器人斷 電后無法從當前位臵運行

  Production Execution Error

 程序執行錯誤報警

  Run Chain OK

 運行鏈處于正常狀態

  Simulated I/O

 虛擬

 I/O 狀態,有

 I/O 信號處于 虛擬狀態

  Task Executing

 任務運行狀態

  TCP Speed

 TCP 速度,用模擬輸出信號反 映機器人當前實際速度

  TCP Speed Reference

 TCP 速度參考狀態,用模擬輸 出信號反映機器人當前指令中 的速度

 *以上系統輸入/輸出信號定義是基于

 ROBOTWARE5.14.03。新版本可能會有所變化。

 9 9. .5 5. .4 4

 限制關節軸運動范圍

 在某些特殊情況下,因為工作環境或控制的需要,要對機器人關節軸的運動范圍進行限定。具體操作 步驟如下:

 1. 依次單擊

 ABB-控制面板-配臵,之 后單擊“主題”,選擇“Motion”

 2. 單擊“Arm”

  3. 這里,對關節軸 1 進行設定。單擊 “rob_1”。

 4.

 參數“Upper Joint Bound”和“Lower Joint Bound”分別指的關節軸正負 方向最大轉動角度,單位為 rad (1rad 約為

 57.3°)。通過修改這 兩項參數來修改此關節軸的運動 方位,修改后需要重新啟動才會生 效。此種型號機器人的兩項數據默 認 值 分 別 為 2.87979rad

  和 -2.87979rad ,

 轉

 換

 成

 度

 數

 即

 為 +165°和-165°。

 9 9. .5 5. .5 5

 奇異點管理(什么是奇異點)

  在機器人關節軸

 5 角度為

 0°,同時關節軸

 4 和關節軸

 6 是一樣時,則機器人處于奇異點。

 當在設計夾具及工作站布局時,應盡量避免機器人運動軌跡進入奇異點的可能。

 在編程時,可以使用 SingArea 指令去讓機器人自動規劃當前軌跡經過的奇異點時的插補方式。如:

 SingArea\Wrist:允許輕微改變工具的姿態,以便通過奇異點 SingArea\Off:關閉自動插補

推薦訪問: 搬運 工作站 剖析

【ABB搬運工作站剖析】相關推薦

工作總結最新推薦

NEW