库卡DEF promain程序.docx

上传人:b****5 文档编号:4424103 上传时间:2022-12-01 格式:DOCX 页数:12 大小:16.20KB
下载 相关 举报
库卡DEF promain程序.docx_第1页
第1页 / 共12页
库卡DEF promain程序.docx_第2页
第2页 / 共12页
库卡DEF promain程序.docx_第3页
第3页 / 共12页
库卡DEF promain程序.docx_第4页
第4页 / 共12页
库卡DEF promain程序.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

库卡DEF promain程序.docx

《库卡DEF promain程序.docx》由会员分享,可在线阅读,更多相关《库卡DEF promain程序.docx(12页珍藏版)》请在冰豆网上搜索。

库卡DEF promain程序.docx

库卡DEFpromain程序

DEFpromain_0510()

;FOLDINI

 ;FOLDBASISTECHINI

  BAS(#INITMOV,0)

  INTERRUPTDECL128WHEN$flag[2]==trueDOBufferRecData()

 ;ENDFOLD(BASISTECHINI)

 ;FOLDUSERINI

  ;Makeyourmodificationshere

 ;ENDFOLD(USERINI)

;ENDFOLD(INI)

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

forl=1to64

last_Char[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

BZ=0

BX=0

BY=0

ZN=0

Xm=0.0

Ym=0.0

Zm=0.0

STATION_NO=0

RANK=0

ROW=0

LAST_STATION=0

LAST_RANK=0

LAST_ROW=0

VEL=0

;ENDFOLDINITIAL

PTP$POS_ACT

$ov_pro=5

PTP$POS_ACT

connectionname[]="XmlServer"

RET=EKI_Init("XmlServer")

RET=EKI_Open("XmlServer")

LOOP

IF$FLAG[1]THEN

;FOLDRESET

;BZ=0

;BX=0

;BY=0

;ZN=0

;Xm=0

;Ym=0

;Zm=0

;STATION_NO=0

;RANK=0

;ROW=0

;LAYER=0

;DOWN=FALSE

;UP=FALSE

;ENDFOLDRESET

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

;ENDFOLDINITIAL

RECEIVE_CharAndData()

SEND_CharAndData()

IF((RECCHAR[1]=="G")AND(RECCHAR[2]=="O"))OR((RECCHAR[1]=="S")AND(RECCHAR[2]=="C")AND(RECCHAR[3]=="A")AND(RECCHAR[4]=="N"))THEN

TRANSFER()

ENDIF

$OV_PRO=VEL

IF(RANK<>LAST_RANK)OR(ROW<>LAST_ROW)OR(STATION_NO<>LAST_STATION)OR(RECCHAR[1]<>LAST_CHAR[1])OR(RECCHAR[2]<>LAST_CHAR[2])OR(RECCHAR[3]<>LAST_CHAR[3])OR(RECCHAR[4]<>LAST_CHAR[4])OR(RECCHAR[5]<>LAST_CHAR[5])OR(RECCHAR[6]<>LAST_CHAR[6])THEN

;FOLDCHECKSTATUS()

IF(RECCHAR[1]=="O")AND(RECCHAR[2]=="N")AND(RECCHAR[3]=="A")AND(RECCHAR[4]=="C")AND(RECCHAR[5]=="T")THEN

;ONACT

SENDCHAR[]="KUKAKR16-2ONACT"

WAITFOR$FLAG[1]

SEND_CHAR()

ENDIF

IF(RECCHAR[1]=="L")AND(RECCHAR[2]=="A")AND(RECCHAR[3]=="S")AND(RECCHAR[4]=="T")AND(RECCHAR[5]=="P")AND(RECCHAR[6]=="O")AND(RECCHAR[7]=="S")THEN

;LASTPOS

SENDCHAR[]="LASTPOS"

WAITFOR$FLAG[1]

SEND_CHAR()

ENDIF

IF(RECCHAR[1]=="O")AND(RECCHAR[2]=="F")AND(RECCHAR[3]=="F")AND(RECCHAR[4]=="A")AND(RECCHAR[5]=="C")AND(RECCHAR[6]=="T")THEN

  ;"OFFACT"

SENDCHAR[]="KUKAKR270 OFFACT"

SEND_CHAR()

SENDCHAR[]="FINISH"

WAITFOR$FLAG[1]

SEND_CHAR()

;;;!

!

!

!

Bytes[]="ERROR"

;;;!

!

!

!

RET=EKI_Send("BinaryStream",Bytes[]

ENDIF

;ENDFOLDCHECKSTATUS()

;FOLDPICK()

IF((RECCHAR[1]=="P")AND(RECCHAR[2]=="I")AND(RECCHAR[3]=="C")AND(RECCHAR[4]=="K"))AND((ZN==1)OR(ZN==2))THEN

IF(BZ>0)AND(BX>0)AND(BY>0)THEN

;PICKPIECE()

SENDCHAR[]="FINISH"

SEND_CHAR()

ENDIF

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

;ENDFOLDINITIAL

RET=EKI_ClearBuffer("XmlServer","Sensor");clearconnection

ENDIF

;ENDFOLDPICK()

GoSCAN()

GoPrepallet()

GoRotation()

GoPallet()

GoLINE()

GoPalletUp()

;FOLDGOHOME()

IF(RECCHAR[1]=="H")AND(RECCHAR[2]=="O")AND(RECCHAR[3]=="M")AND(RECCHAR[4]=="E")THEN

gohome()

STORE_DATA()

WAITSEC0

SENDCHAR[]="FINISH"

WAITFOR$FLAG[1]

SEND_CHAR()

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

;ENDFOLDINITIAL

WAITFOR$FLAG[1]

RET=EKI_ClearBuffer("XmlServer","Sensor");clearconnection

ENDIF

;ENDFOLDGOHOME()

ELSE

RecChar[]="VALUEINVALID"

SEND_CharANDdata()

ENDIF

ENDIF

ENDLOOP

END

DEF TOUCHPOINT()

;FOLDTOUCHPOINT()

SWITCH zn

CASE1

;TP=Xconvey_pick

;$BASE=$NULLFRAME

TP=Xstation3

$BASE=BASE_DATA[3]

CASE14

;TP=Xbuffur_pick

$BASE=BASE_DATA[2]

IF(ROW==1)AND(RANK==1)THEN

TP=Xbuffur_pick

ENDIF

IF(ROW==1)AND(RANK==3)THEN

TP=Xbuffur_pick3

ENDIF

IF(ROW==1)AND(RANK==5)THEN

TP=Xbuffur_pick5

ENDIF

CASE3

;TP=Xstation3

;$BASE=BASE_DATA[3]

TP=Xstation4

$BASE=BASE_DATA[4]

CASE4

TP=Xstation4

$BASE=BASE_DATA[4]

CASE5

TP=Xstation5

$BASE=BASE_DATA[5]

CASE6

TP=Xstation6_2

$BASE=$NULLFRAME

;$BASE=BASE_DATA[6]

CASE7

TP=Xstation6_1

$BASE=$NULLFRAME

;$BASE=BASE_DATA[7]

CASE8

TP=Xstation6_3

$BASE=$NULLFRAME

;$BASE=BASE_DATA[8]

CASE9

TP1=Xstation7

;$BASE=$NULLFRAME

$BASE=BASE_DATA[11]

CASE10

TP=Xstation6_4

$BASE=$NULLFRAME

;$BASE=BASE_DATA[8]

CASE11

TP=Xstation7_L

;$BASE=$NULLFRAME

$BASE=BASE_DATA[11]

CASE12

TP=XSCAN_L

$BASE=$NULLFRAME

;$BASE=BASE_DATA[8]

CASE13

TP=XSCAN_R

$BASE=$NULLFRAME

;$BASE=BASE_DATA[8]

CASE2

;TP=XBUFFER_PICK2

;$BASE=BASE_DATA[2]

TP=Xstation5

$BASE=BASE_DATA[5]

CASE15

TP=XJIGSCAN1

$BASE=$NULLFRAME

;$BASE=BASE_DATA[8]

CASE17

TP=XJIGSCAN2

$BASE=$NULLFRAME

CASE16

TP=XJIGSCAN3

$BASE=$NULLFRAME

CASE18

TP1=Xstation6_2R

$BASE=$NULLFRAME

CASE19

TP1=Xstation6_1R

$BASE=$NULLFRAME

CASE20

TP1=Xstation20_mid

$BASE=BASE_DATA[11]

CASE21

TP1=Xstation21_R

$BASE=BASE_DATA[11]

CASE22

TP=Xstation22_R_R

$BASE=BASE_DATA[11]

CASE23

TP=Xstation23

$BASE=BASE_DATA[3]

;$BASE=$NULLFRAME

CASE24

TP=Xstation24

$BASE=BASE_DATA[3]

;$BASE=$NULLFRAME

CASE25

TP=Xstation25

$BASE=BASE_DATA[3]

;$BASE=$NULLFRAME

CASE26

TP=Xstation26

;$BASE=$NULLFRAME

$BASE=BASE_DATA[3]

ENDSWITCH

;ENDFOLDTOUCHPOINT()

END

DEFCALCULATE()

;FOLDCALCULATE()

IF(ZN==9)or(zn==20)or(zn==21)or(zn==18)or(zn==19)THEN

PALLET_POS[RANK,ROW]=TP1

PALLET_POS[RANK,ROW].X=TP1.X+(RANK-1)*Xm

PALLET_POS[RANK,ROW].Y=TP1.Y+(ROW-1)*Ym

ELSE

PALLET_POS[RANK,ROW]=TP

PALLET_POS[RANK,ROW].X=TP.X+(RANK-1)*Xm

PALLET_POS[RANK,ROW].Y=TP.Y+(ROW-1)*Ym

ENDIF

PRE_PALLET=PALLET_POS[RANK,ROW]

PRE_PALLET.Z=PALLET_POS[RANK,ROW].Z+Zm

;ENDFOLDCALCULATE()

END

DEFGoPrepallet()

IF((RECCHAR[1]=="G")AND(RECCHAR[2]=="O"))THEN

IF(BZ>0)AND(BX>0)AND(BY>0)THEN

TOUCHPOINT()

CALCULATE()

PTPPRE_PALLET

STORE_DATA()

WAITSEC0

RECCHAR[]="FINISH"

 Xm=$pos_act.X

 Ym=$pos_act.Y

 Zm=$pos_act.Z

WAITFOR$FLAG[1]

SEND_CharANDdata()

ENDIF

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

;ENDFOLDINITIAL

WAITFOR$FLAG[1]

RET=EKI_ClearBuffer("XmlServer","Sensor");clearconnection

ENDIF

END

DEFGoPallet()

IF(RECCHAR[1]=="D")AND(RECCHAR[2]=="O")AND(RECCHAR[3]=="W")AND(RECCHAR[4]=="N")THEN

TOUCHPOINT()

CALCULATE()

;SET_TQ_VALUES(0,0,11,0,13,11)

IF(ZN==3)or(zn==2) THEN

PRE_PALLET=PALLET_POS[RANK,ROW]

PRE_PALLET.Z=PRE_PALLET.Z-160

LINPRE_PALLET

$OV_PRO=5

ENDIF

IF (zn==1)THEN

PRE_PALLET=PALLET_POS[RANK,ROW]

PRE_PALLET.Z=PRE_PALLET.Z-340

LINPRE_PALLET

$OV_PRO=5

ENDIF

;LINPALLET_POS[RANK,ROW]

;SET_TQ_VALUES(0,0,0,0,0,0)

STORE_DATA()

WAITSEC0

 Xm=$pos_act.X

 Ym=$pos_act.Y

 Zm=$pos_act.Z

RECCHAR[]="FINISH"

WAITFOR$FLAG[1]

SEND_CharANDdata()

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

;ENDFOLDINITIAL

WAITFOR$FLAG[1]

RET=EKI_ClearBuffer("XmlServer","Sensor");clearconnection

ENDIF

END

DEFGoLINE()

IF(RECCHAR[1]=="L")AND(RECCHAR[2]=="I")AND(RECCHAR[3]=="N")AND(RECCHAR[4]=="E")THEN

TOUCHPOINT()

CALCULATE()

;SET_TQ_VALUES(0,0,11,0,13,11)

IF(ZN==3)or(zn==2) THEN

PRE_PALLET=PALLET_POS[RANK,ROW]

PRE_PALLET.Z=PRE_PALLET.Z-180

LINPRE_PALLET

$OV_PRO=5

ENDIF

STORE_DATA()

WAITSEC0

 Xm=$pos_act.X

 Ym=$pos_act.Y

 Zm=$pos_act.Z

RECCHAR[]="FINISH"

WAITFOR$FLAG[1]

SEND_CharANDdata()

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

;ENDFOLDINITIAL

WAITFOR$FLAG[1]

RET=EKI_ClearBuffer("XmlServer","Sensor");clearconnection

ENDIF

END

DEFGoPalletUp()

IF(RECCHAR[1]=="U")AND(RECCHAR[2]=="P")THEN

TOUCHPOINT()

CALCULATE()

LINPRE_PALLET

STORE_DATA()

WAITSEC0

 Xm=$pos_act.X

 Ym=$pos_act.Y

 Zm=$pos_act.Z

RECCHAR[]="FINISH"

WAITFOR$FLAG[1]

SEND_CharANDdata()

;FOLDINITIAL

forl=1to64

RecChar[l]=0

endfor

FORM=1TO64

SENDCHAR[M]=0

ENDFOR

;ENDFOLDINITIAL

WAITFOR$FLAG[1]

RET=EKI_ClearBuffer("XmlServer","Sensor");clearconnection

ENDIF

END

GLOBALDEFSEND_CHAR()

;FOLDSEND_CHAR()

RET=EKI_SetString(ConnectionName[],"Robot/CMD",SENDCHAR[])

RET=EKI_Send(ConnectionName[],"Robot")

;ENDFOLDSEND_CHAR()

END

GLOBALDEFSEND_CharAndData()

;FOLDSEND_CharAndData()

WAITSEC0.1

IF((RECCHAR[1]=="R")AND(RECCHAR[2]=="B")AND(RECCHAR[3]=="T")AND(RECCHAR[4]=="P")AND(RECCHAR[5]=="O")AND(RECCHAR[6]=="S"))THEN

 Xm=$pos_act.X

 Ym=$pos_act.Y

 Zm=$pos_act.Z

ENDIF

RET=EKI_SetINT(ConnectionName[],"Robot/STATION",ZN)

RET=EKI_SetINT(ConnectionName[],"Robot/N1",BY)

RET=EKI_SetINT(ConnectionName[],"Robot/N2",BX)

RET=EKI_SetINT(ConnectionName[],"Robot/N3",BZ)

RET=EKI_SetREAL(ConnectionName[],"Robot/N4",Xm)

RET=EKI_SetREAL(ConnectionName[],"Robot/N5",Ym)

RET=EKI_SetREAL(ConnectionName[],"Robot/N6",Zm)

RET=EKI_SetString(ConnectionName[],"Robot/CMD",RecChar[])

RET=EKI_Send(ConnectionName[],"Robot")

;ENDFOLDSEND_CharAndData()

END

GLOBALDEFRECEIVE_CharAndData()

;FOLDRECEIVE_CharAndData()

WAITSEC0

waitfor$flag[2]and$flag[3]and$flag[4]and$flag[5]and$flag[6]and$flag[7]and$flag[8]and$flag[9]

ford=2to9

$flag[d]=false

endfor

RET=EKI_GetINT(ConnectionName[],"Sensor/STATION",ZN)

RET=EKI_GetINT(ConnectionName[],"Sensor/N1",BY)

RET=EKI_GetINT(ConnectionName[],"Sensor/N2",BX)

RET=EKI_GetINT(ConnectionName[],"Sensor/N3",BZ)

RET=EKI_GetREAL(ConnectionName[],"Sensor/N4",Xm)

RET=EKI_GetREAL(ConnectionName[],"Sensor/N5",Ym)

RET=EKI_GetREAL(ConnectionName[],"Sensor/N6",Zm)

RET=EKI_GetSTRING(ConnectionName[],"Sensor/CMD",RecChar[])

INTERRUPTON128

;ENDFOLDRECEIVE_CharAndData()

END

GLOBALDEFRECEIVE_Char()

;FOLDRECEIVE_Char()

waitfor$flag[9]

ford=2to9

$flag[d]=false

endfor

RET=EKI_GetSTRING(ConnectionName[],"Sensor/CMD",RecChar[])

;ENDFOLDRECEIVE_Char()

END

DEFTRANSFER()

;FOLDTRANSFER()

STATION_NO=ZN

RANK=BX

ROW=BY

VEL=BZ

;ENDFOLDTRANSFER()

END

DEFGoRotation()

IF((RECCHAR[1]=="R")AND(RECCHAR[2]=="O")AND(RECCHAR[3]=="T")AND(RECCHAR[4]=="A")AND(RECCHAR[5]=="R"))THEN

TOUCHPOINT()

CALCULATE()

PTPPRE_PALLET

STORE_DATA()

WAITSEC0

 Xm=$pos_act.X

 Ym=$pos_act.Y

 Zm=$pos_act.Z

RECCHAR[]="FINISH"

WAITFOR$FLAG[1]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1