ABB搬運(yùn)工作站_第1頁
ABB搬運(yùn)工作站_第2頁
ABB搬運(yùn)工作站_第3頁
ABB搬運(yùn)工作站_第4頁
ABB搬運(yùn)工作站_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、ABBa-ZH-9ABB 搬運(yùn)工作站9.1 任務(wù)目標(biāo)Ø 了解工業(yè)機(jī)器人搬運(yùn)工作站布局。Ø 學(xué)會搬運(yùn)常用 I/O 配置。Ø 學(xué)會程序數(shù)據(jù)創(chuàng)建。Ø 學(xué)會目標(biāo)點(diǎn)示教。Ø 學(xué)會程序調(diào)試。Ø 學(xué)會搬運(yùn)程序編寫。9.2 任務(wù)描述本工作站以太陽能薄板搬運(yùn)為例,利用 IRB120機(jī)器人在流水線上拾取太陽能薄板工件,將其搬運(yùn)至 暫存盒中,以便周轉(zhuǎn)至下一工位進(jìn)行處理。本工作站中已經(jīng)預(yù)設(shè)搬運(yùn)動作效果,大家需要在此工作站中依 次完成 I/O 配置、程序數(shù)據(jù)創(chuàng)建、目標(biāo)點(diǎn)示教、程序編寫及調(diào)試,最終完成整個搬運(yùn)工作站的搬運(yùn)過程。通 過本章的學(xué)習(xí),使大家學(xué)會工業(yè)機(jī)器

2、人的搬運(yùn)應(yīng)用,學(xué)會工業(yè)機(jī)器人搬運(yùn)程序的編寫技巧。ABB 機(jī)器人在搬運(yùn)方面有眾多成熟的解決方案,在 3C、食品、醫(yī)藥、化工、金屬加工、太陽能等領(lǐng)域 均有廣泛的應(yīng)用,涉及物流輸送、周轉(zhuǎn)、倉儲等。采用機(jī)器人搬運(yùn)可大幅提高生產(chǎn)效率、節(jié)省勞動力成本、 提高定位精度并降低搬運(yùn)過程中的產(chǎn)品損壞率。1.ABB 推出的一款迄今為止最小的多用途工業(yè)機(jī)器人緊湊、敏捷、輕量的六軸 IRB120,僅重 25kg,荷重 3kg(垂直腕為 4kg),工作范圍達(dá) 580mm。9.3 知識儲備9.3.1RobotStudio 知識準(zhǔn)備1.工作站共享在 RobotStudio 中,一個完整的機(jī)器人工作站既包含前臺所操作的工作站文

3、件,還包含一個后臺運(yùn)行的 機(jī)器人系統(tǒng)文件。當(dāng)需要共享 RobotStudio 軟件所創(chuàng)建的工作站時,可以利用“文件”菜單中的“共享”功能, 使用其中“打包”功能,可以將所創(chuàng)建的機(jī)器人工作站打包成工作包(.rspag 格式);利用“解包”功能,可以將 該工作包在另外的計算機(jī)上解包使用。1. 打包:創(chuàng)建一個包含虛 擬控制器、庫和附加選 項(xiàng)媒體庫的工作站包。2. 解包:解包所打包的文 件,啟動并恢復(fù)虛擬控 制器,打開工作站。2.加載 RAPID 程序模塊 在機(jī)器人應(yīng)用過程中,如果已有一個程序模板,則可以直接將該模板加載至機(jī)器人系統(tǒng)中。例如,已有 1#機(jī)器人程序,2#機(jī)器人的應(yīng)用與 1#機(jī)器人相同,那

4、么可以將 1#機(jī)器人的程序模塊直接導(dǎo)入 2#機(jī)器人 中。加載方法有以下兩種。(1)軟件加載在 RobotStudio 中的“RAPID”菜單中可以加載程序模塊。在 RobotStudio 5.15 之前的版本中,此功能在“離 線”菜單的中,“在線”菜單中也有該功能,前者針對的是 PC 端仿真的機(jī)器人系統(tǒng),后者針對的是利用網(wǎng)線連 接的真實(shí)的機(jī)器人系統(tǒng)。1. 切換到“RAPID”菜單,展 開 右 側(cè) RAPID , 右 擊 “T_ROB1”,選擇“加載模 塊”。2. 瀏覽至需要加載的程序 模塊文件,單擊“打開” 按鈕。(2)示教器加載在示教器中依次單擊:ABB 菜單程序編輯器模塊文件加載模塊,之后

5、瀏覽至所需加載的模塊進(jìn) 行加載。1.在程序編輯器模塊欄中 單擊“文件”。2.單擊加載模塊3. 瀏覽至所需加載的程序 模塊文件,單擊“確定” 按鈕。3.加載系統(tǒng)參數(shù) 在機(jī)器人應(yīng)用過程中,如果已有系統(tǒng)參數(shù)文件,則可以直接將該參數(shù)文件加載至機(jī)器人系統(tǒng)中。例如,已有 1#機(jī)器人 I/O 配置文件,2#機(jī)器人的應(yīng)用與 1#機(jī)器人相同,那么可以將 1#機(jī)器人的 I/O 配置文件直接 導(dǎo)入 2#機(jī)器人中。系統(tǒng)參數(shù)文件存放在備份文件夾中的 SYSPAR 文件目錄下,其中最常用的是其中的 EIO 文 件,即機(jī)器人 I/O 系統(tǒng)配置文件。系統(tǒng)參數(shù)加載方法有以下兩種:*一般地,兩臺硬件配置一致的機(jī)器人會共享 I/O

6、 設(shè)置文件 EIO.cfg,其他的文件可能會造成系統(tǒng)故障。若錯誤加載參數(shù)后,可做一個“I 啟動”使機(jī)器人回到出廠初始狀態(tài)。(1)軟件加載在 RobotStudio 中,“控制器”菜單的“加載參數(shù)”功能可以用于加載系統(tǒng)參數(shù)。1.在“控制器”菜單中單擊“加載參 數(shù)”2.勾選“ 載入?yún)?shù)并覆蓋重復(fù)項(xiàng)”之后單擊“打開”按鈕。3. 在“File name”(即“文件名稱”) 中 輸 入 “EIO” , 單 擊 跳 出 來 的 EIO.cfg,之后單擊“Open”按鈕。備份文件夾中的系統(tǒng)參數(shù)文件 保存在“SYSPAR” 文件夾下。瀏覽至 “SYSPAR”目錄后,若不能顯示系統(tǒng)參 數(shù)文件,則需要在“File

7、 name”(即文 件名稱)中輸入“EIO”,則自動跳出 “EIO.cfg”,單擊“Open”按鈕之后即可 打開。(2)示教器加載在示教器中依次單擊:ABB 菜單控制面板配置文件加載參數(shù),加載方式一般也選取第三項(xiàng),即“加載后覆蓋重復(fù)項(xiàng)”,之后瀏覽至所需加載的系統(tǒng)參數(shù)文件進(jìn)行加載。1.打開“文件”菜單。2.單擊“加載參數(shù)”。3.勾選“加載參數(shù)并替換副本”,之 后單擊“加載”按鈕。4.瀏覽至所需加載的系統(tǒng)參數(shù)文件,選中“EIO.cfg”,單擊“確定”按鈕,重新啟動即可。4.仿真 I/O 信號在仿真過程中,有時需要手動去仿真一些 I/O 信號,以使當(dāng)前工作站滿足機(jī)器人運(yùn)行條件。在 RobotStud

8、io軟件的“仿真”菜單中利用“I/O 仿真器”可對 I/O 信號進(jìn)行仿真。1. 單擊“ 仿真” 菜單中的“I/O 仿真 器”即可在軟件右側(cè)跳出“I/O 仿 真器”菜單欄。2. 在“ 選擇系統(tǒng)” 欄中選擇相應(yīng)系 統(tǒng),包含工作站信號、機(jī)器人信 號以及智能組件信號等。3. 單擊需要仿真的信號,相應(yīng)指示 燈則會置為 1,再次單擊即可置 為 0。9.3.2 標(biāo)準(zhǔn) I/O 板配置ABB 標(biāo)準(zhǔn) I/O 板掛在 DeviceNet 總線上,常用型號有 DSQC651,DSQC652。在系統(tǒng)中配置標(biāo)準(zhǔn) I/O 板,至少需要設(shè)置以下四項(xiàng)參數(shù):參數(shù)名稱參數(shù)注釋NameI/O 單元名稱Type of UnitI/O

9、單元類型Connected to BusI/O 單元所在總線DeviceNet AddressI/O 單元所占用總線地址I/O 配置詳細(xì)參考 I/O 通信一章。9.3.3 數(shù)字 I/O 配置在 I/O 單元上創(chuàng)建一個數(shù)字 I/O 信號,至少需要設(shè)置以下四項(xiàng)參數(shù):參數(shù)名稱參數(shù)注釋NameI/O 信號名稱Type of SignalI/O 信號類型Assigned to UnitI/O 信號所在 I/O 單元Unit MappingI/O 信號所占用單元地址9.3.4 系統(tǒng) I/O 配置系統(tǒng)輸入:將數(shù)字輸入信號與機(jī)器人系統(tǒng)的控制信號關(guān)聯(lián)起來,就可以通過輸入信號對系統(tǒng)進(jìn)行控制(例如,電動機(jī)上電、程序

10、啟動等)。 系統(tǒng)輸出:機(jī)器人系統(tǒng)的狀態(tài)信號也可以與數(shù)字輸出信號關(guān)聯(lián)起來,將系統(tǒng)的狀態(tài)輸出給外圍設(shè)備作控制之用(例如,系統(tǒng)運(yùn)行模式、程序執(zhí)行錯誤等)。9.3.5 常用運(yùn)動指令MoveL:線性運(yùn)動指令將機(jī)器人 TCP 沿直線運(yùn)動至給定目標(biāo)點(diǎn),適用于 對路徑精度要求高的場合,如切割、涂膠等。例如:MoveLp20,v1000,z50,tool1WObj:=wobj1;如圖所示,機(jī)器人 TCP 從當(dāng)前位置 p10 處運(yùn)動至p20 處,運(yùn)動軌跡為直線。MoveJ:關(guān)節(jié)運(yùn)動指令將機(jī)器人 TCP 快速移動至給定目標(biāo)點(diǎn),運(yùn)行軌跡不一定 是直線。例如:MoveJ p20, v1000, z50, tool1 W

11、Obj:=wobj1;如圖所示,機(jī)器人 TCP 從當(dāng)前位置 p10 處運(yùn)動至 p20處,運(yùn)動軌跡不一定為直線。9.3.6 常用 I/O 控制指令 Set:將數(shù)字輸出信號置為 1 例如:Set Do1;將數(shù)字輸出信號 Do1 置為 1。MoveC:圓弧運(yùn)動指令將機(jī)器人 TCP 沿圓弧運(yùn)動至給定目標(biāo)點(diǎn)。圓弧運(yùn) 動指令 MoveC 在做圓弧運(yùn)動時一般不超過 240°,所以 一個完整的圓通常使用兩條圓弧指令來完成。例如:MoveCp20,p30,v1000,z50,tool1,WObj:=wobj1;如圖所示,機(jī)器人當(dāng)前位置 p10 作為圓弧的起點(diǎn),p20 是圓弧上的一點(diǎn),p30 作為圓弧的

12、終點(diǎn)。MoveAbsj:絕對運(yùn)動指令 將機(jī)器人各關(guān)節(jié)軸運(yùn)動至給定位置。 例如:PERSjointarget jpos10:=0,0,0,0,0,0,9E+09,9E+09,9E+09,9E+09,9E+09,9E+09;關(guān)節(jié)目標(biāo)點(diǎn)數(shù)據(jù)中各關(guān)節(jié)軸為零度。MoveAbsjjpos10,v1000,z50,tool1WObj:=wobj1;則機(jī)器人運(yùn)行至各關(guān)節(jié)軸零度位置。注:Set do1; 等同于:SetDO do1, 1;Reset do1; 等同于:Reset:將數(shù)字輸出信號置為 0例如:Reset Do1;將數(shù)字輸出信號 Do1 置為 0SetDO do1,0;另外,SetDO 還可以設(shè)置延

13、遲時間:SetDOSDelay:=0.2, do1, 1;則延遲 0.2s 后將 do1 置為 1。WaitDI:等待一個輸入信號狀態(tài)為設(shè)定值例如:WaitDI Di1,1;等待數(shù)字輸入信號 Di1 為 1,之后才執(zhí)行下面的 指令。WaitDi1,1; 等同于:WaitUntil di1=1;另外,WaitUntil 應(yīng)用更為廣泛,等待的是后面條 件為 TRUE 才繼續(xù)執(zhí)行,如:WaitUntilbRead=False;WaitUntil num1=1;9.3.7 常用邏輯控制指令I(lǐng)F:滿足不同條件,執(zhí)行對應(yīng)程序例如:IF reg1>5 THEN Set do1;ENDIF如果 reg1

14、>5 條件滿足,則執(zhí)行 Set Do1 指令。FOR:根據(jù)指定的次數(shù),重復(fù)執(zhí)行對應(yīng)程序例如:FOR I FROM 1 TO 10 DO Routine1;ENDFOR重復(fù)執(zhí)行 10 次 Routine1 里的程序。FOR 指令后面跟的是循環(huán)計數(shù)值,其不用再程序數(shù)據(jù) 中定義,每次運(yùn)行一遍 FOR 循環(huán)中的指令后會自動執(zhí) 行加 1 操作。WHILE:如果條件滿足,則重復(fù)執(zhí)行對應(yīng)程序例如:WHILE reg1<reg2 DO reg1 := reg1 + 1; ENDWHILE如果變量 reg1<reg2 條件一直成立,則重復(fù)執(zhí)行reg1 加 1,直至 reg1<reg2 條

15、件不成立為止。TEST:根據(jù)指定變量的判斷結(jié)果,執(zhí)行對應(yīng)程序例如:TEST reg1CASE 1: Routine1; CASE 2: Routine2;DEFAULT: Stop; ENDTEST判斷 reg1 數(shù)值,若為 1 則執(zhí)行 Routine1;若為 2 則執(zhí)行 Routine2,否則執(zhí)行 stop。9.3.8 注釋行“!”在語句前面加上“!”,則整行語句作為注釋行,不被程序執(zhí)行。 例如:!Goto the Pick Position;MoveLpPick, v1000, fine, tool1, WObj:=wobj1;9.3.9Offs 偏移功能以選定的目標(biāo)點(diǎn)為基準(zhǔn),沿著選定工件

16、坐標(biāo)系的 X、Y、Z 軸方向偏移一定的距離。 例如:MoveLOffs(p10, 0, 0, 10), v1000, z50, tool0 WObj:=wobj1;將機(jī)器人 TCP 移動至以 p10 為基準(zhǔn)點(diǎn),沿著 wobj1 的 Z 軸正方向偏移 10mm 的位置。9.3.10CRobT 功能 讀取當(dāng)前機(jī)器人目標(biāo)位置數(shù)據(jù)。 例如:PERSrobtarget p10;P10 := CRobT(Tool := tool1 WObj := wobj1);讀取當(dāng)前機(jī)器人目標(biāo)點(diǎn)位置數(shù)據(jù),指定工具數(shù)據(jù)位 tool1,工件坐標(biāo)系數(shù)據(jù)為 wobj1(若不指定,則默 認(rèn)工具數(shù)據(jù)為 tool0,默認(rèn)工件坐標(biāo)系數(shù)

17、據(jù)為 wobj0),之后將讀取的目標(biāo)點(diǎn)數(shù)據(jù)賦值給 p10。9.3.11 常用寫屏指令例如:TPRease;TPWrite “The Robot is running!”;TPWrite “The Last CycleTime is:”num:=nCycleTime; 假設(shè)上一次循環(huán)時間 nCycleTime 為 10s,則示教器上面顯示內(nèi)容為 The Robot is running!The Last CycleTime is: 109.3.12 檢測 HOME 點(diǎn)模板在實(shí)訓(xùn)任務(wù)中,每個程序都有檢測 Home 點(diǎn)的例行程序 rCheckHomePos,以及比較機(jī)器人當(dāng)前位置和給 定位置是否相同

18、的功能 CurrentPos,其程序內(nèi)容如下,在后續(xù)的代碼中不再重復(fù)。 程序:rCheckHomePos、CurrentPos說明:檢查原點(diǎn)程序,如機(jī)器人不在原點(diǎn)位置則返回原點(diǎn)PROCrCheckHomePos()!檢測是否在Home點(diǎn)程序VARrobtargetpActualPos;!定義一個目標(biāo)點(diǎn)數(shù)據(jù)pActualPosIFNOTCurrentPos(pHome,tGripper) THEN!調(diào)用功能程序CurrentPos。此為一個布爾量型的功能程序,括號里面的參數(shù)分別指的是所要比較的目標(biāo)點(diǎn)以 及使用的工具數(shù)據(jù)。!這里寫入的是pHome,是將當(dāng)前機(jī)器人位置與pHome點(diǎn)進(jìn)行比較,若在Ho

19、me點(diǎn),則此布爾量為True;若不 在Home點(diǎn),則為False。!在此功能程序的前面加上一個NOT,則表示當(dāng)機(jī)器人不在Home點(diǎn)時才會執(zhí)行IF判斷中機(jī)器人返回Home點(diǎn) 的動作指令pActualpos:=CRobT(Tool:=tGripperWObj:=wobj0);!利用CRobT功能讀取當(dāng)前機(jī)器人目標(biāo)位置并賦值給目標(biāo)點(diǎn)數(shù)據(jù)pActualpos pActualpos.trans.z:=pHome.trans.z;!將pHome點(diǎn)的Z值賦給pActualpos點(diǎn)的Z值MoveL pActualpos,v100,z10,tGripper;!移至已被賦值的后的pActualpos點(diǎn)MoveL

20、pHome,v100,fine,tGripper;!移至pHome,上述指令的目的是需要先將機(jī)器人提升至與pHome點(diǎn)一樣的高度,之后再平移至pHome點(diǎn), 這樣可以簡單地規(guī)劃一條安全回Home點(diǎn)的軌跡ENDIF ENDPROCFUNCboolCurrentPos(robtargetComparePos,INOUTtooldata TCP)!檢測目標(biāo)點(diǎn)功能程序,帶有兩個參數(shù),比較目標(biāo)點(diǎn)和所使用的工具數(shù)據(jù)VARnum Counter:=0;!定義數(shù)字型數(shù)據(jù)CounterVARrobtargetActualPos;!定義目標(biāo)點(diǎn)數(shù)據(jù)ActualPosActualPos:=CRobT(Tool:=tG

21、ripperWObj:=wobj0);!利用CRobT功能讀取當(dāng)前機(jī)器人目標(biāo)位置并賦值給ActualPosIFActualPos.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>Co

22、mparePos.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:=Cou

23、nter+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;!將當(dāng)前機(jī)器人所在目標(biāo)位置數(shù)據(jù)與給定目標(biāo)點(diǎn)位置數(shù)據(jù)進(jìn)行比較,共七項(xiàng)數(shù)值,分別是X、Y、Z坐標(biāo)值以及工具姿態(tài)數(shù)據(jù)q1、q2、q3、q4里面的偏差

24、值,如X、Y、Z坐標(biāo)偏差值25可根據(jù)實(shí)際情況進(jìn)行調(diào)整。每項(xiàng) 比較結(jié)果成立,則計數(shù)Counter加1,七項(xiàng)全部滿足的話,則Counter數(shù)值為7RETURN Counter=7;!返回判斷式結(jié)果,若Counter為7,則返回TRUE,若不為7,則返回FALSE ENDFUNC9.4 任務(wù)實(shí)施9.4.1 工作站解包1. 雙 擊 工 作 站 打 包 文 件 :SituationalTeaching_Carry.rspag。2.單擊“下一個”按鈕。3.單擊“瀏覽”按鈕,選擇存放 解包文件的目錄。4.單擊“下一個”按鈕。5. 機(jī) 器 人 系 統(tǒng) 庫 指 向 “MEDIAPOOL ”文件夾。選擇 Robo

25、tWare 版本(要求最低版本 為 5.14.02)。6.單擊“下一個”按鈕。7.解包就緒后,單擊“完成”按 鈕。8.確認(rèn)后,單擊“關(guān)閉”按鈕。9.解包完成后,在主窗口顯示整 個搬運(yùn)工作站。9.4.2 創(chuàng)建備份并執(zhí)行 I 啟動現(xiàn)有工作站已包含創(chuàng)建好的參數(shù)以及 RAPID 程序。從零開始練習(xí)建立工作站的配置工作,需要先將此 系統(tǒng)做一備份,之后執(zhí)行 I 啟動,將機(jī)器人系統(tǒng)恢復(fù)到出廠初始狀態(tài)。1. 控制器菜 單 中 打 開 “備份”,然 后單擊創(chuàng)建 備份。2. 為備份命 名,并選定 保 存 的 位 置。3. 單 擊 確 定。4. 在“控制 器”菜單中, 單 擊 “ 重 啟”,然后選 擇“I 啟動”。

26、5. 在 I 啟 動完成后,跳 出 BaseFram 更 新 提 示 框,暫時先 單擊“否” 按鈕。6. 在“控制 器”菜單中, 單擊“編輯 系統(tǒng)”。7. 在左側(cè)欄 中 選 中 “ROB_1”。8. 選中“使 用當(dāng)前工作 站數(shù)值”。9. 單擊確定 按鈕。待執(zhí)行熱啟動后,則完 成了工作站 的初始化操 作。重啟類型介紹如下:u 熱啟動:修改系統(tǒng)參數(shù)及配置后使其生效。u 關(guān)機(jī):關(guān)閉當(dāng)前系統(tǒng),同時關(guān)閉主機(jī)。u B 啟動:嘗試從最近一次無錯狀態(tài)下啟動系統(tǒng)。u P 啟動:重新啟動并刪除已加載的 RAPID 程序。u I 啟動:重新啟動,恢復(fù)至出廠設(shè)置。u C 啟動:重新啟動并刪除當(dāng)前系統(tǒng)。u X 啟動:重

27、新啟動,裝載系統(tǒng)或選擇其他系統(tǒng),修改 IP 地址。9.4.3 配置 I/O 單元在虛擬示教器中,根據(jù)以下的參數(shù)配置 I/O 單元。NameType of UnitConnected to BusDeviceNet addressBoard10D651DeviceNet1109.4.4 配置 I/O 信號在虛擬示教器中,根據(jù)以下的參數(shù)配置 I/O 信號。NameType of SignalAssigned to UnitUnit MappingI/O 信號注解di00_BufferReadyDigitial InputBoard100暫存裝置到位信號di01_PanelInPickPosDigi

28、tial InputBoard101產(chǎn)品到位信號di02_VacuumOKDigitial InputBoard102真空反饋信號di03_StartDigitial InputBoard103外接“開始”di04_StopDigitial InputBoard104外接“停止”di05_StartAtMainDigitial InputBoard105外接“ 從主程序開始”di06_EstopResetDigitial InputBoard106外接“急停復(fù)位”di07_MotorOnDigitial InputBoard107外接“電動機(jī)上電”do32_VacuumOpenDigitial

29、 OutputBoard1032打開真空do33_AutoOnDigitial OutputBoard1033自動狀態(tài)輸出信號do34_BufferFullDigitial OutputBoard1034暫存裝置滿載9.4.5 配置系統(tǒng)輸入/輸出在虛擬示教器中,根據(jù)以下的參數(shù)配置系統(tǒng)輸入/輸出信號。TypeSignal NameActionStatusArgument1注釋System Inputdi03_StartStartContinuous程序啟動System Inputdi04_StopStop無程序停止System Inputdi05_StartAtMainStartMainCont

30、inuous從主程序啟動System Inputdi06_EstopResetResetEstop無急停狀態(tài)恢復(fù)System Inputdi07_MotorOnMotorOn無電動機(jī)上電System Outputdo33_AutoOnAuto On無自動狀態(tài)輸出9.4.6 創(chuàng)建工具數(shù)據(jù)在虛擬示教器中,根據(jù)以下的參數(shù)設(shè)定工具數(shù)據(jù) tGripper。參數(shù)名稱參數(shù)數(shù)值robotholdTRUEtransX0Y0Z115rotq11q20q30q40mass1cogX0Y0Z100其余參數(shù)均為默認(rèn)值9.4.7 創(chuàng)建工件坐標(biāo)系數(shù)據(jù)本工作站中,工件坐標(biāo)系均采用用戶三點(diǎn)法創(chuàng)建。 在虛擬示教器中,根據(jù)圖所示位

31、置設(shè)定工件坐標(biāo)。工件坐標(biāo)系 WobjCNV:工件坐標(biāo)系 WobjBuffer:9.4.8 創(chuàng)建載荷數(shù)據(jù)在虛擬示教器中,根據(jù)以下的參數(shù)設(shè)定載荷數(shù)據(jù) LoadFull。參數(shù)名稱參數(shù)數(shù)值mass0.5cogX0Y0Z3其余參數(shù)均為默認(rèn)值9.4.9 程序注解本工作站要實(shí)現(xiàn)的動作時機(jī)器人在流水線上拾取太陽能薄板工件,將其搬運(yùn)至?xí)捍婧兄?,以便周轉(zhuǎn)至下一工位進(jìn)行處理。在熟悉了此 RAPID 程序后,可以根據(jù)實(shí)際的需要在此程序的基礎(chǔ)上做適用性的修改,以滿足實(shí)際邏輯與動作的控制。以下是實(shí)現(xiàn)機(jī)器人邏輯和動作控制的 RAPID 程序: 數(shù)據(jù)定義:CONSTrobtargetpPick:=394.997607159,

32、132.703199388,12.734872184,0.005862588,-0.00300065,0.999966662,0.004827206,0,0,0,0,9E9,9E9,9E9,9E9,9E9,9E9; CONSTrobtargetpHome:=-548.424175962,-238.61219249,801.420966892,-0.000000012,-0.707106781,0.707106781,-0.000000012,0,0,0,0,9E9,9E9,9E9,9E9,9E9,9E9; CONSTrobtargetpPlaceBase:=100.088594059,77.8

33、35146221,158.046135973,0.00000004,-0.000623424,0.999999806,-0.000000001,-1,0,-1,0,9E9,9E9,9E9,9E9,9E9,9E9;!需要示教的目標(biāo)點(diǎn)數(shù)據(jù),抓取點(diǎn)pPick,HOME點(diǎn)pHome、放置基準(zhǔn)點(diǎn)pPlaceBasePERSrobtargetpPlace;!放置目標(biāo)點(diǎn),類型為PERS,在程序中被賦予不同的數(shù)值,用以實(shí)現(xiàn)多點(diǎn)位放置CONSTjointtargetjposHome:=0,0,0,0,0,0,9E9,9E9,9E9,9E9,9E9,9E9;!關(guān)節(jié)目標(biāo)點(diǎn)數(shù)據(jù),各關(guān)節(jié)軸度數(shù)為0,即機(jī)器人回到各關(guān)節(jié)軸

34、機(jī)械刻度零位 CONSTspeeddatavLoadMax:=3000,300,5000,1000; CONSTspeeddatavLoadMin:=500,200,5000,1000; CONSTspeeddatavEmptyMax:=5000,500,5000,1000; CONSTspeeddatavEmptyMin:=1000,200,5000,1000;!速度數(shù)據(jù),根據(jù)實(shí)際需求定義多種速度數(shù)據(jù),以便于控制機(jī)器人各動作的速度PERSnumnCount:=1;!數(shù)字型變量nCount,此數(shù)據(jù)用于太陽能薄板計數(shù),根據(jù)此數(shù)據(jù)的數(shù)值賦予放置目標(biāo)點(diǎn)pPlace不同的位置數(shù) 據(jù),以實(shí)現(xiàn)多點(diǎn)位放置P

35、ERSnumnXoffset:=145; PERSnumnYoffset:=148;!數(shù)字型變量,用做放置位置偏移數(shù)值,即太陽能薄板擺放位置之間在X、Y方向的單個間隔距離VARboolbPickOK:=False;!布爾量,當(dāng)拾取動作完成后將其置為True,放置完成后將其置為False,以作邏輯控制之用TASKPERStooldata tGripper:=TRUE,0,0,115,1,0,0,0,1,0,0,100,0,1,0,0,0,0,0;!定義工具坐標(biāo)系數(shù)據(jù)tGripperTASKPERSwobjdataWobjBuffer:=FALSE,TRUE,"",-350.3

36、65,-355.079,418.761,0.707547,0,0,0.706666,0,0,0,1,0,0,0;!定義暫存盒工件坐標(biāo)系WobjBufferTASKPERSwobjdataWobjCNV:=FALSE,TRUE,"",-726.207,-645.04,600.015,0.709205,-0.0075588,0.000732113,0.704961,0,0,0,1,0,0,0;!定義輸送帶工件坐標(biāo)系WobjCNV TASKPERSloaddataLoadFull:=0.5,0,0,3,1,0,0,0,0,0,0;!定義有效載荷數(shù)據(jù) LoadFull主程序運(yùn)行程序

37、:PROC Main()!主程序rInitialize;!調(diào)用初始化程序WHILETRUEDO!利用WHILE循環(huán)將初始化程序隔開rPickPanel;!調(diào)用拾取程序rPlaceInBuffer;!調(diào)用放置程序Waittime 0.3;!循環(huán)等待時間,防止不滿足機(jī)器人動作情況下程序掃描過快,造成CPU過負(fù)荷ENDWHILE ENDPROCPROCrInitialize()!初始化程序rCheckHomePos;!機(jī)器人位置初始化,調(diào)用檢測是否在Home位置點(diǎn)程序,檢測當(dāng)前機(jī)器人位置是否在HOME點(diǎn),若在HOME點(diǎn)的話則繼續(xù)執(zhí)行之后的初始化相關(guān)指令;若不在HOME點(diǎn),則先返回至HOME點(diǎn)nCou

38、nt:=1;!計數(shù)初始化,將用于太陽能薄板的計數(shù)數(shù)值設(shè)置為1,即從放置的第一個位置開始擺放reset do32_VacuumOpen;!信號初始化,復(fù)位真空信號,關(guān)閉真空bPickOK:=False;!布爾量初始化,將拾取布爾量置為FalseENDPROCPROCrPickPanel()!拾取太陽能薄板程序IFbPickOK=FalseTHEN!當(dāng)拾取布爾量bPickOK為False時,則執(zhí)行IF條件下的拾取動作指令,否則執(zhí)行ELSE中出錯處理的指令,因 為當(dāng)機(jī)器人去拾取太陽能薄板時,需保證其真空夾具上面沒有太陽能薄板 MoveJoffs(pPick,0,0,100),vEmptyMax,z2

39、0,tGripperWObj:=WobjCNV;!利用MoveJ指令移至拾取位置pPick點(diǎn)正上方Z軸正方向100mm處WaitDI di01_PanelInPickPos,1;!等待產(chǎn)品到位信號di01_PanelInPickPos變?yōu)?,即太陽能薄板已到位MoveLpPick,vEmptyMin,fine,tGripperWObj:=WobjCNV;!產(chǎn)品到位后,利用MoveL移至拾取位置pPick點(diǎn)Set do32_VacuumOpen;!將真空信號置為1,控制真空吸盤產(chǎn)生真空,將太陽能薄板拾起WaitDI di02_VacuumOK,1;!等待真空反饋信號為1,即真空夾具產(chǎn)生的真空度達(dá)

40、到需求后才認(rèn)為已將產(chǎn)品完全拾起。若真空夾具上面沒 有真空反饋信號,則可以使用固定等待時間,如Waittime 0.3bPickOK:=TRUE;!真空建立后,將拾取的布爾量置為TRUE,表示機(jī)器人夾具上面已拾取一個產(chǎn)品,以便在放置程序中判斷 夾具的當(dāng)前狀態(tài)GripLoadLoadFull;!加載載荷數(shù)據(jù)LoadFullMoveLoffs(pPick,0,0,100),vLoadMin,z10,tGripperWObj:=WobjCNV;!利用MoveL移至拾取位置pPick點(diǎn)正上方100mm處ELSE TPERASE;TPWRITE"Cycle Restart Error"

41、TPWRITE"Cycle can't start with SolarPanel on Gripper" TPWRITE"Please check the Gripper and then press the start button" stop;!如果在拾取開始之前拾取布爾量已經(jīng)為TRUE,則表示夾具上面已有產(chǎn)品,此種情況下機(jī)器人不能再去拾取另一個產(chǎn)品。此時通過寫屏指令描述當(dāng)前錯誤狀態(tài),并提示操作員檢查當(dāng)前夾具狀態(tài),排除錯誤狀態(tài)后 再開始下一個循環(huán)。同時利用Stop指令,停止程序運(yùn)行ENDIF ENDPROCPROCrPlaceInBuffe

42、r()!放置程序 IFbPickOK=TRUETHEN rCalculatePos;!調(diào)用計算放置位置程序。此程序中會通過判斷當(dāng)前計數(shù)nCount的值,從而對放置點(diǎn)pPlace賦予不同的放置位置數(shù)據(jù)WaitDI di00_BufferReady,1;!等待暫存盒準(zhǔn)備完成信號di00_BufferReady變?yōu)?MoveJoffs(pPlace,0,0,100),vLoadMax,z50,tGripperWObj:=WobjBuffer;!利用MoveJ移至放置位置pPlace點(diǎn)正上方100mm處MoveLoffs(pPlace,0,0,0),vLoadMin,fine,tGripperWObj

43、:=WobjBuffer;!利用MoveL移至放置位置pPlace處Reset do32_VacuumOpen;!復(fù)位真空信號,控制真空夾具關(guān)閉真空,將產(chǎn)品放下WaitDI di02_VacuumOK,0;!等待真空反饋信號變?yōu)?WaitTime 0.3;!等待0.3s,以防止剛放置的產(chǎn)品被剩余的真空帶起GripLoadload0;!加載載荷數(shù)據(jù)load0 bPickOK:=FALSE;!此時真空夾具已將產(chǎn)品放下,需要將拾取布爾量置為FALSE,以便在下一個循環(huán)的拾取程序中判斷夾具的當(dāng)前狀態(tài)MoveLoffs(pPlace,0,0,100),vEmptyMin,z10,tGripperWObj

44、:=WobjBuffer;!利用MoveL移至放置位pPlace點(diǎn)正上方100mm處nCount:=nCount+1;!產(chǎn)品計數(shù)nCount加1,通過累積nCount的數(shù)值,在計算放置位置的程序rCalculatePos中賦予放置點(diǎn)pPlace不 同的位置數(shù)據(jù)IFnCount>4 THEN!判斷計數(shù)nCount是否大于4,此處演示的狀況是放置4個產(chǎn)品,即表示已滿載,需要更換暫存盒以及其他的 復(fù)位操作,如計數(shù)nCount、滿載信號等nCount:=1;!計數(shù)復(fù)位,將nCount賦值為1Set do34_BufferFull;!輸出暫存盒滿載信號,以提示操作員或周邊設(shè)備更換暫存裝置MoveJ

45、 pHome,v100,fine,tGripper;!機(jī)器人移至Home點(diǎn),此處可根據(jù)實(shí)際情況來設(shè)置機(jī)器人的動作,例如若是多工位放置,那么機(jī)器人可繼續(xù) 去其他的放置工位進(jìn)行產(chǎn)品的放置任務(wù)WaitDI di00_BufferReady,0;!等待暫存裝置到位信號變?yōu)?,即滿載的暫存裝置已被取走Reset do34_BufferFull;!滿載的暫存裝置被取走后,則復(fù)位暫存裝置滿載信號ENDIF ENDIF ENDPROCPROCrCalculatePos()!計算位置子程序,檢測當(dāng)前計數(shù)nCount的數(shù)值,以pPlaceBase為基準(zhǔn)點(diǎn),利用Offs指令在坐標(biāo)系WobjBuffer中沿著X、Y、

46、Z方向偏移相應(yīng)的數(shù)值TESTnCount CASE 1: pPlace:=offs(pPlaceBase,0,0,0);!若nCount為1,pPlaceBase點(diǎn)就是第一個放置位置,所以X、Y、Z偏移值均為0,也可以直接寫成:pPlace:=pPlaceBase; CASE 2: pPlace:=offs(pPlaceBase,nXoffset,0,0);!若nCount為2,位置2相對于放置基準(zhǔn)點(diǎn)pPlaceBase點(diǎn)在X正方向偏移了一個產(chǎn)品間隔CASE 3:pPlace:=offs(pPlaceBase,0,nYoffset,0);!若nCount為3,位置3相對于放置基準(zhǔn)點(diǎn)pPlace

47、Base點(diǎn)在Y正方向偏移了一個產(chǎn)品間隔CASE 4:pPlace:=offs(pPlaceBase,nXoffset,nXoffset,0);!若nCount為4,位置4相對于放置基準(zhǔn)點(diǎn)pPlaceBase點(diǎn)在X、Y正方向各偏移了一個產(chǎn)品間隔DEFAULT: TPERASE;TPWRITE"The CountNumber is error,please check it!" STOP;!若nCount數(shù)值不為Case中所列的數(shù)值,則視為計數(shù)出錯,寫屏提示錯誤信息,并利用Stop指令停止程序循環(huán) ENDTEST ENDPROCPROCrCheckHomePos()!內(nèi)容參考實(shí)

48、訓(xùn)準(zhǔn)備章節(jié)ENDPROCFUNCboolCurrentPos(robtargetComparePos,INOUTtooldata TCP)!內(nèi)容參考實(shí)訓(xùn)準(zhǔn)備章節(jié)ENDFUNC輔助程序:PROCrMoveAbsj() MoveAbsJjposHomeNoEOffs,v100,fine,tGripperWObj:=wobj0;!利用MoveAbsj移至機(jī)器人各關(guān)節(jié)軸零位位置ENDPROCPROCrModPos()!示教目標(biāo)點(diǎn)程序MoveL pPick,v10,fine,tGripperWObj:=WobjCNV;!示教拾取點(diǎn)pPick,在工件坐標(biāo)系WobjCNV下MoveL pPlaceBase,

49、v10,fine,tGripperWObj:=WobjBuffer;!示教放置基準(zhǔn)點(diǎn)pPlaceBase,在工件坐標(biāo)系WobjBuffer下MoveL pHome,v10,fine,tGripper;!示教Home點(diǎn)pHome,在工件坐標(biāo)系Wobj0下ENDPROC9.4.10 示教目標(biāo)點(diǎn)在本工作站中,需要示教三個目標(biāo)點(diǎn),分別為太陽能薄板拾取點(diǎn) pPick;放置基準(zhǔn)點(diǎn) pPlaceBase;程序 起始點(diǎn) pHome。在 RAPID 程序模板中包含一個專門用于手動示教目標(biāo)點(diǎn)的子程序 rModPos,在虛擬示教器中,進(jìn)入“程序編輯器”,將指針移動至該子程序,之后通過虛擬示教器操縱機(jī)器人依次移動至拾取點(diǎn) pPick、放置基準(zhǔn)點(diǎn)pPlaceBase、程序起始點(diǎn) pHome,并通過修改位置將其記錄下來。 示教目標(biāo)點(diǎn)完成之后,即可進(jìn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論