pos機(jī)料主,ABB機(jī)器人壓鑄或CNC上下料

 新聞資訊  |   2023-05-17 09:38  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)料主,ABB機(jī)器人壓鑄或CNC上下料的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)料主的問(wèn)題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)料主

pos機(jī)料主

項(xiàng)目要求產(chǎn)生這樣的效果:本工作站以機(jī)器人壓鑄取件為例,工業(yè)機(jī)器人從壓鑄機(jī)將壓鑄完成的工件取出進(jìn)行工件完好性檢查,然后放到冷卻臺(tái)上進(jìn)行冷卻,冷卻后放到輸出傳送帶上或放置到廢件箱中。

程序詳解:

MODULE DATA

數(shù)據(jù)模塊

PERS num nPickOff_X:=0;

PERS num nPickOff_Y:=0;

PERS num nPickOff_Z:=200;

定義抓手抓取產(chǎn)品前的偏移值

PERS num nErrPickPartNo:=0;

定義產(chǎn)品錯(cuò)誤變量,值為0時(shí)表示抓取的產(chǎn)品是OK的,1為抓取的產(chǎn)品是NG的或沒(méi)抓取到產(chǎn)品

PERS num nCTime:=28.768;

定義數(shù)字變量,用來(lái)計(jì)時(shí)

VAR num nRelPartNo:=1;

定義數(shù)字變量用來(lái)計(jì)算產(chǎn)品放到冷卻臺(tái)的數(shù)量

PERS num nCoolOffs_Z:=200;

定義冷卻臺(tái)Z方向偏移數(shù)字變量

VAR bool bDieOpenKO:=FALSE;

VAR bool bPartOK:=FALSE;

定義開(kāi)模邏輯量和產(chǎn)品檢測(cè)OK邏輯量

VAR bool bEjectKo:=FALSE;

定義模具頂針是否頂出的邏輯量

VAR bool bFullOfCool:=FALSE;

PERS bool bCool1PosEmpty:=FALSE;

PERS bool bCool2PosEmpty:=FALSE;

PERS bool bCool3PosEmpty:=FALSE;

PERS bool bCool4PosEmpty:=FALSE;

定義冷卻臺(tái)產(chǎn)品是否放滿的邏輯量以及各冷卻位置是否有產(chǎn)品的邏輯量

PERS pos PosExtRobSafe1:=[-600,-1300,1450];

PERS pos PosExtRobSafe2:=[580,-2700,7];

定義兩個(gè)位置數(shù)據(jù),作為設(shè)定安全區(qū)域的兩個(gè)對(duì)角點(diǎn)

VAR shapedata shExtRobSafe;

定義安全區(qū)域形狀參數(shù)

PERS wzstationary wzExtRobSafe:=[1];

VAR bool bErrorPickPart:=FALSE;

定義錯(cuò)誤工件邏輯量

CONST speeddata vFast:=[1800,200,5000,1000];

CONST speeddata vLow:=[8000,100,5000,1000];

定義機(jī)器人運(yùn)行速度參數(shù)

TASK PERS loaddata LoadPart:=[5,[50,0,150],[1,0,0,0],0,0,0];

定義產(chǎn)品有效載荷參數(shù)

PERS tooldata tGripper:=[TRUE,[[179.120678011,-62.809528063,676],[1,0,0,0]],[15,[0,0,400],[1,0,0,0],0,0,0]];

定義抓手工具坐標(biāo)系數(shù)據(jù)

TASK PERS wobjdata wobjDCM:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[-308.662234013,-1631.501618476,1017.285148616],[0.707106781,0,0.707106781,0]]];

定義壓鑄機(jī)工件坐標(biāo)系

TASK PERS wobjdata wobjCool:=[FALSE,TRUE,"",[[1352.299998099,1342.748724261,1000],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];

定義冷卻臺(tái)工件坐標(biāo)系

PERS robtarget pPosOK:=[[250.269,-114.084,90.8913],[0.512234,0.497181,0.473399,-0.516063],[-2,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];定義機(jī)器人目標(biāo)點(diǎn)變量

定義機(jī)器人目標(biāo)點(diǎn):

CONST robtarget pWaitDCM:=[[363.271843642,775.682976655,131.654771915],[0.692753734,0.135233089,0.688267859,-0.167605577],[-2,-2,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

等待取料點(diǎn)

CONST robtarget pPickDCM:=[[250.269312959,-114.083887662,90.891092311],[0.512233847,0.497181122,0.473399181,-0.516062625],[-2,-1,-1,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

取料點(diǎn)

CONST robtarget pHome:=[[309.255608104,1511.670917954,1165.257460666],[0.592214035,-0.440078101,0.376552635,-0.560198104],[-1,-2,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

安全點(diǎn)pHome

CONST robtarget pPartCheck:=[[-171.652051037,-737.574027743,468.168521378],[0.701868271,-0.020784671,0.712000437,0.002075084],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

產(chǎn)品視覺(jué)檢測(cè)點(diǎn)

CONST robtarget pRelPart1:=[[-249.936787289,-35.537358372,115.066954193],[0.506064708,-0.506729912,0.482576145,0.504225716],[0,-1,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

冷卻臺(tái)產(chǎn)品放置點(diǎn)1

CONST robtarget pRelPart2:=[[-1069.116434473,-29.765794459,124.564800542],[0.503010468,-0.50990052,0.485758769,0.501019309],[0,-1,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

冷卻臺(tái)產(chǎn)品放置點(diǎn)2

CONST robtarget pRelPart3:=[[-896.806913336,-511.146776415,-286.764492689],[0.505651488,-0.507161439,0.483008924,0.503791849],[0,-1,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

冷卻臺(tái)產(chǎn)品放置點(diǎn)3

CONST robtarget pRelPart4:=[[-236.714507131,-536.90763484,-282.088774622],[0.504522446,-0.508336069,0.484188144,0.50260659],[-1,-2,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

冷卻臺(tái)產(chǎn)品放置點(diǎn)4

CONST robtarget pRelCNV:=[[-1635.680769575,-264.873338752,-110.176859052],[0.010165395,0.701881937,-0.00702991,-0.712186065],[0,-2,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

輸送鏈產(chǎn)品放置點(diǎn)

CONST robtarget pPickDCM10:=[[1174.58,-6.95,1557.78],[0.638375,-0.0820886,0.762059,-0.070745],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

壓鑄機(jī)產(chǎn)品拾取等待點(diǎn)

CONST robtarget pWaitDCM10:=[[1174.58,-6.95,1557.78],[0.638375,-0.0820886,0.762059,-0.070745],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

壓鑄機(jī)外等待點(diǎn)

CONST robtarget pMoveOutDie:=[[337.109921171,746.132828813,128.173761254],[0.683704858,0.165160382,0.683234825,-0.196111929],[-2,-2,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

錯(cuò)誤處理等待點(diǎn)

CONST robtarget pRelDaPart:=[[337.109921171,746.132828813,128.173761254],[0.683704858,0.165160382,0.683234825,-0.196111929],[-2,-2,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]];

不良產(chǎn)品放置點(diǎn)

ENDMODULE

MODULE ExtMain

程序運(yùn)行模塊

PROC rTeachPath()

示教目標(biāo)點(diǎn)程序

MoveJ pWaitDCM,v10,fine,tGripper\\WObj:=wobjDCM;壓鑄機(jī)外過(guò)渡點(diǎn)

MoveJ pPickDCM,v10,fine,tGripper\\WObj:=wobjDCM;壓鑄機(jī)取料點(diǎn)

MoveJ pHome,v10,fine,tGripper\\WObj:=wobjDCM;安全點(diǎn)

MoveJ pMoveOutDie,v10,fine,tGripper\\WObj:=wobjDCM;壓鑄機(jī)外等待點(diǎn)

MoveJ pRelDaPart,v10,fine,tGripper\\WObj:=wobjDCM;不良品放置點(diǎn)

MoveJ pPartCheck,v10,fine,tGripper\\WObj:=wobjCool;產(chǎn)品視覺(jué)檢測(cè)點(diǎn)

MoveJ pRelPart1,v10,fine,tGripper\\WObj:=wobjCool;冷卻臺(tái)產(chǎn)品放置點(diǎn)1

MoveJ pRelPart2,v10,fine,tGripper\\WObj:=wobjCool;冷卻臺(tái)產(chǎn)品放置點(diǎn)2

MoveJ pRelPart3,v10,fine,tGripper\\WObj:=wobjCool;冷卻臺(tái)產(chǎn)品放置點(diǎn)3

MoveJ pRelPart4,v10,fine,tGripper\\WObj:=wobjCool;冷卻臺(tái)產(chǎn)品放置點(diǎn)4

MoveJ pRelCNV,v10,fine,tGripper\\WObj:=wobjCool;輸送鏈產(chǎn)品放置點(diǎn)

ENDPROC

PROC rPowerON()

安全區(qū)域例行程序

PosExtRobSafe1:=[-600,-1300,1450];

長(zhǎng)方體安全區(qū)對(duì)角點(diǎn)1

PosExtRobSafe2:=[580,-2700,7];

長(zhǎng)方體安全區(qū)對(duì)角點(diǎn)2

WZBoxDef\\Inside,shExtRobSafe,PosExtRobSafe1,PosExtRobSafe2;

由對(duì)角點(diǎn)1,、2,定義一個(gè)方形安全區(qū)域,方形安全區(qū)域內(nèi)部有效

WZDOSet\\Stat,wzExtRobSafe\\Inside,shExtRobSafe,do05RobInDCM,1;

進(jìn)入方形安全區(qū)域輸出信號(hào)設(shè)置

ENDPROC

PROC main()

主程序

rIninAll;調(diào)用初始化例行程序

WHILE TRUE DO

調(diào)用WHILE循環(huán)指令,并且用絕對(duì)真實(shí)條件Ture形成死循環(huán),將初始化程序隔離

IF di01DCMAuto=1 THEN

IF條件判斷指令,di01DCMAuto為壓鑄機(jī)處于自動(dòng)狀態(tài)信號(hào),即當(dāng)壓鑄機(jī)處于自動(dòng)聯(lián)機(jī)狀態(tài)

才開(kāi)始執(zhí)行取件程序

rExtracting;調(diào)用取件例行程序

rCheckPart;調(diào)用產(chǎn)品檢測(cè)例行程序

IF bFullOfCool=TRUE THEN

條件判斷指令,判斷冷卻臺(tái)上的產(chǎn)品是否放滿

rRelGoodPart;

調(diào)用放置OK產(chǎn)品程序

ELSE

rReturnDCM;

調(diào)用返回壓鑄機(jī)位置程序

ENDIF

ENDIF

rCycleTime;調(diào)用計(jì)時(shí)例行程序

WaitTime 0.2;等待時(shí)間

ENDWHILE

ENDPROC

PROC rIninAll()

初始化程序,用來(lái)復(fù)位IO,初始化程序數(shù)據(jù)及返回Home點(diǎn)等

AccSet 100,100;

加速度控制指令

VelSet 100,3000;

速度控制指令

ConfJ\\Off;

ConfL\\Off;

機(jī)器人運(yùn)動(dòng)控制指令

rReset_Out;

調(diào)用輸出信號(hào)復(fù)位例行程序

rHome;調(diào)用回Home點(diǎn)程序

Set do04StartDCM;

壓鑄機(jī)輸出給機(jī)器人可以取件信號(hào)

ENDPROC

PROC rExtracting()

機(jī)器人從壓鑄機(jī)取件工作程序

MoveJ pWaitDCM,vFast,z20,tGripper\\WObj:=wobjDCM;

機(jī)器人運(yùn)行到等待位

WaitDI di02DoorOpen,1;

等待壓鑄機(jī)安全門打開(kāi)

WaitDI di03DieOpen,1\\MaxTime:=6\\TimeFlag:=bDieOpenKO;

等待開(kāi)模信號(hào),最長(zhǎng)等待時(shí)間6s,得到信號(hào)后將邏輯量置位為Flase,如果沒(méi)有得到信號(hào)則將邏輯量值為TRUE

IF bDieOpenKO=TRUE THEN

當(dāng)邏輯量為TRUE時(shí)表示機(jī)器人沒(méi)有在合理的時(shí)間內(nèi)得到開(kāi)模信號(hào),此時(shí)取件失敗

nErrPickPartNo:=1;

將取件失敗的數(shù)字量置為1

GOTO lErrPick;

調(diào)轉(zhuǎn)到錯(cuò)誤取件標(biāo)簽lErrPick處

ELSE

nErrPickPartNo:=0;

如取件成功,則將取件失敗的數(shù)字量置為0

ENDIF

Reset do04StartDCM;

復(fù)位機(jī)器人開(kāi)始取件信號(hào)

MoveJ Offs(pPickDCM,nPickOff_X,nPickOff_Y,nPickOff_Z),vLow,z10,tGripper\\WObj:=wobjDCM;

MoveJ pPickDCM,vLow,fine,tGripper\\WObj:=wobjDCM;

機(jī)器人運(yùn)行到取件目標(biāo)點(diǎn)

rGripperClose;調(diào)用關(guān)閉夾爪例行程序

rSoftActive;調(diào)用軟伺服激活例行程序

Set do07EjectFWD;置為模具頂針頂出信號(hào)

WaitDI di06LsEjectFWD,1\\MaxTime:=4\\TimeFlag:=bEjectKo;

等待模具頂針頂出到位信號(hào),時(shí)間4s,在該時(shí)間內(nèi)得到信號(hào)則將邏輯量置為False

pPosOK:=CRobT(\\Tool:=tGripper\\WObj:=wobjDCM);

記錄機(jī)器人當(dāng)前位置,并賦值給pPosOK

IF bEjectKo=TRUE THEN

當(dāng)邏輯量為TRUE時(shí),表示頂針頂出失敗,則此次取件失敗,機(jī)器人開(kāi)始取件失敗處理

rSoftDeactive;

調(diào)用軟伺服失效例行程序

rGripperOpen;

調(diào)用夾爪打開(kāi)例行程序

MoveL Offs(pPosOK,0,0,100),vLow,z10,tGripper\\WObj:=wobjDCM;

以之前記錄的目標(biāo)點(diǎn)偏移

ELSE

當(dāng)邏輯量為False時(shí),取件成功,機(jī)器人開(kāi)始取件成功處理

WaitTime 0.5;

rSoftDeactive;

調(diào)用軟伺服失效例行程序

WaitTime 0.5;

等待時(shí)間,讓軟伺服失效完成

MoveL Offs(pPosOK,0,0,200),v300,z10,tGripper\\WObj:=wobjDCM;

以之前記錄的目標(biāo)點(diǎn)偏移

GripLoad LoadPart;

加載產(chǎn)品有效載荷

ENDIF

lErrPick:

錯(cuò)誤處理

MoveJ pMoveOutDie,vLow,z10,tGripper\\WObj:=wobjDCM;

壓鑄機(jī)外等待點(diǎn)

Reset do07EjectFWD;

復(fù)位模具頂針頂出信號(hào)

ENDPROC

PROC rCheckPart()

機(jī)器人產(chǎn)品檢測(cè)工作程序

IF nErrPickPartNo=1 THEN

如果取件失敗,則回到Home點(diǎn),輸出取件失敗脈沖信號(hào)

MoveJ pHome,vFast,fine,tGripper\\WObj:=wobjDCM;

PulseDO\\PLength:=0.2,do12Error;

RETURN ;

ENDIF

MoveJ pHome,vLow,z200,tGripper\\WObj:=wobjDCM;

Set do04StartDCM;

置位機(jī)器人開(kāi)始取件信號(hào)

MoveJ pPartCheck,vLow,fine,tGripper\\WObj:=wobjCool;

產(chǎn)品檢測(cè)點(diǎn)

Set do06AtPartCheck;

置位相機(jī)可以檢測(cè)信號(hào)

WaitTime 3;

等待時(shí)間

WaitDI di04PartOK,1\\MaxTime:=5\\TimeFlag:=bPartOK;

等待產(chǎn)品檢測(cè)OK為1,最大等待時(shí)間5s,在該時(shí)間內(nèi)得到信號(hào)則將邏輯量置為False,反之

ReSet do06AtPartCheck;

復(fù)位相機(jī)可以檢測(cè)信號(hào)

IF bPartOK=TRUE THEN

若產(chǎn)品檢測(cè)失敗

rRelDamagePart;調(diào)用機(jī)器人放置不良品例行程序

ELSE

若產(chǎn)品檢測(cè)成功

rCooling;調(diào)用機(jī)器人產(chǎn)品冷卻程序

ENDIF

ENDPROC

PROC rCooling()

機(jī)器人產(chǎn)品冷卻程序

TEST nRelPartNo

檢測(cè)產(chǎn)品放到冷卻臺(tái)的數(shù)量

CASE 1:

冷卻臺(tái)產(chǎn)品擺放位置1

MoveJ Offs(pRelPart1,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到產(chǎn)品擺放位置1的Z方向偏移200mm的位置

MoveJ pRelPart1,vLow,fine,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到產(chǎn)品擺放位置1

rGripperOpen;調(diào)用松開(kāi)夾爪例行程序

MoveJ Offs(pRelPart1,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到產(chǎn)品擺放位置1的Z方向偏移200mm的位置

CASE 2:

冷卻臺(tái)產(chǎn)品擺放位置2

MoveJ Offs(pRelPart2,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

MoveJ pRelPart2,vLow,fine,tGripper\\WObj:=wobjCool;

rGripperOpen;

Movej Offs(pRelPart2,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

CASE 3:

冷卻臺(tái)產(chǎn)品擺放位置2

MoveJ Offs(pRelPart3,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

MoveJ pRelPart3,vLow,fine,tGripper\\WObj:=wobjCool;

rGripperOpen;

MoveJ Offs(pRelPart3,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

CASE 4:

冷卻臺(tái)產(chǎn)品擺放位置2

MoveJ Offs(pRelPart4,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

MoveJ pRelPart4,vLow,fine,tGripper\\WObj:=wobjCool;

rGripperOpen;

MoveJ Offs(pRelPart4,0,0,nCoolOffs_Z),vLow,z50,tGripper\\WObj:=wobjCool;

ENDTEST

nRelPartNo:=nRelPartNo+1;

產(chǎn)品放到冷卻臺(tái)的數(shù)量加1

IF nRelPartNo>4 THEN

若產(chǎn)品放到冷卻臺(tái)的數(shù)量超過(guò)4個(gè)

bFullOfCool:=TRUE;

將冷卻臺(tái)產(chǎn)品放滿布爾量賦值為TRUE

nRelPartNo:=1;

產(chǎn)品放到冷卻臺(tái)的位置號(hào)賦值為1

ENDIF

ENDPROC

PROC rRelGoodPart()

機(jī)器人放置良品例行程序

WaitDI di05CNVEmpty,1;

等待輸送鏈上無(wú)產(chǎn)品為1

IF bFullOfCool=TRUE THEN

若冷卻臺(tái)產(chǎn)品放滿邏輯量為真

IF nRelPartNo=1 THEN

若產(chǎn)品放到冷卻臺(tái)的位置為1號(hào)位,運(yùn)動(dòng)到產(chǎn)品擺放位置1,夾取冷卻好的產(chǎn)品

MoveJ Offs(pRelPart1,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

MoveJ pRelPart1,vLow,fine,tGripper\\WObj:=wobjCool;

rGripperClose;

MoveJ Offs(pRelPart1,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

ELSEIF nRelPartNo=2 THEN

若產(chǎn)品放到冷卻臺(tái)的位置為2號(hào)位,運(yùn)動(dòng)到產(chǎn)品擺放位置1,夾取冷卻好的產(chǎn)品

MoveJ Offs(pRelPart2,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

MoveJ pRelPart2,vLow,fine,tGripper\\WObj:=wobjCool;

rGripperClose;

MoveJ Offs(pRelPart2,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

ELSEIF nRelPartNo=3 THEN

若產(chǎn)品放到冷卻臺(tái)的位置為3號(hào)位,運(yùn)動(dòng)到產(chǎn)品擺放位置1,夾取冷卻好的產(chǎn)品

MoveJ Offs(pRelPart3,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

MoveJ pRelPart3,vLow,fine,tGripper\\WObj:=wobjCool;

rGripperClose;

MoveJ Offs(pRelPart3,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

ELSEIF nRelPartNo=4 THEN

若產(chǎn)品放到冷卻臺(tái)的位置為4號(hào)位,運(yùn)動(dòng)到產(chǎn)品擺放位置1,夾取冷卻好的產(chǎn)品

MoveJ Offs(pRelPart4,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

MoveJ pRelPart4,vLow,fine,tGripper\\WObj:=wobjCool;

rGripperClose;

MoveJ Offs(pRelPart4,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

ENDIF

WaitTime 0.2;等待0.2秒,防止CPU過(guò)載

ENDIF

MoveJ Offs(pRelCNV,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到輸送鏈產(chǎn)品放置點(diǎn)上方

MoveL pRelCNV,vLow,fine,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到輸送鏈產(chǎn)品放置點(diǎn)

rGripperOpen;

調(diào)用松開(kāi)夾爪例行程序

MoveL Offs(pRelCNV,0,0,nCoolOffs_Z),vLow,z20,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到輸送鏈產(chǎn)品放置點(diǎn)上方200mm

MoveL Offs(pRelCNV,0,0,300),vLow,z50,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到輸送鏈產(chǎn)品放置點(diǎn)上方300mm

MoveJ Offs(pRelPart2,0,0,nCoolOffs_Z),vFast,z50,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到產(chǎn)品擺放位置2上方200mm處

MoveJ pPartCheck,vFast,z100,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到產(chǎn)品檢測(cè)位

MoveJ pHome,vFast,z100,tGripper\\WObj:=wobjDCM;

運(yùn)動(dòng)到安全點(diǎn)

ENDPROC

PROC rRelDamagePart()

機(jī)器人放置不良品例行程序

ConfJ\\off;關(guān)節(jié)軸配置功能關(guān)閉

MoveJ pHome,vLow,z20,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)至安全點(diǎn)

MoveJ pMoveOutDie,vLow,z20,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到壓鑄機(jī)外過(guò)渡等待點(diǎn)

MoveJ pRelDaPart,vLow,fine,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)不良品放置點(diǎn)

rGripperOpen;調(diào)用松開(kāi)夾爪例行程序

MoveL pMoveOutDie,vLow,z20,tGripper\\WObj:=wobjCool;

運(yùn)動(dòng)到壓鑄機(jī)外過(guò)渡等待點(diǎn)

ConfJ\\on;

關(guān)節(jié)軸配置功能打開(kāi)

ENDPROC

FUNC bool bCurrentPos(robtarget ComparePos,INOUT tooldata TCP)

安全點(diǎn)位置檢測(cè)功能程序

VAR num Counter:=0;

VAR robtarget ActualPos;

ActualPos:=CRobT(\\Tool:=TCP\\WObj:=wobjDCM);

IF ActualPos.trans.x>ComparePos.trans.x-25 AND ActualPos.trans.x<ComparePos.trans.x+25 Counter:=Counter+1;

IF ActualPos.trans.y>ComparePos.trans.y-25 AND ActualPos.trans.y<ComparePos.trans.y+25 Counter:=Counter+1;

IF ActualPos.trans.z>ComparePos.trans.z-25 AND ActualPos.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;

RETURN Counter=7;

ENDFUNC

PROC rCheckHomePos()

檢測(cè)機(jī)器人是否在Home點(diǎn)程序

VAR robtarget pActualPos1;

IF NOT bCurrentPos(pHome,tGripper) THEN

pActualpos1.trans.z:=pHome.trans.z;

MoveL pActualpos1,v100,z10,tGripper;

MoveL pHome,v100,fine,tGripper;

ENDIF

ENDPROC

PROC rReset_Out()

機(jī)器人復(fù)位輸出信號(hào)例行程序,在初始化程序中調(diào)用

Reset do04StartDCM;

Reset do06AtPartCheck;

Reset do07EjectFWD;

Reset do09E_Stop;

Reset do12Error;

Reset do03GripperOFF;

Reset do01RobInHome;

ENDPROC

PROC rCycleTime()

機(jī)器人計(jì)時(shí)例行程序

ClkStop clock1;

nCTime:=ClkRead(clock1);

TPWrite "the cycletime is "\\Num:=nCTime;

ClkReset clock1;

ClkStart clock1;

ENDPROC

PROC rSoftActive()

軟伺服激活例行程序

SoftAct 1,99;

機(jī)器人關(guān)節(jié)軸1,軟化度99%

SoftAct 2,100;

SoftAct 3,100;

SoftAct 4,95;

SoftAct 5,95;

SoftAct 6,95;

WaitTime 0.3;

ENDPROC

PROC rSoftDeactive()

軟同服失效例行程序

SoftDeact;

WaitTime 0.3;

ENDPROC

PROC rHome()

回Home點(diǎn)程序

MoveJ pHome,vFast,fine,tGripper\\WObj:=wobjDCM;

ENDPROC

PROC rGripperOpen()

夾爪松開(kāi)例行程序

Reset do03GripperOFF;

Set do02GripperON;

WaitTime 0.3;

ENDPROC

PROC rGripperClose()

夾爪閉合例行程序

Set do03GripperOFF;

Reset do02GripperON;

WaitTime 0.3;

ENDPROC

PROC rReturnDCM()

機(jī)器人返回到取件安全位置程序

MoveJ pPartCheck,vFast,z100,tGripper\\WObj:=wobjCool;

MoveJ pHome,vFast,z100,tGripper\\WObj:=wobjDCM;

ENDPROC

ENDMODULE

以上就是關(guān)于pos機(jī)料主,ABB機(jī)器人壓鑄或CNC上下料的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)料主的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://m.afbey.com/news/43340.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。