網(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)看下吧!
本文目錄一覽:
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í),希望能夠幫助到大家!
