机器人"钳"功能的设置原理

描述

工具钳的设置:

钳德设置最后保存在config.DAT里:

例:

钳1的设置: 夹具的设置- 打开-A580 关闭 A579 类型2脉冲式

DEF_ZANGE[1]={TYP 2,A_AUF 580,A_ZU 579,E_AUF 0,E_ZU 0,A_NAME_AUF[] "Spanngr_11_AUF",A_NAME_KLEM1[] "Ventil_YP1R",A_NAME_ZU[] "Spanngr_11_ZU",A_NAME_KLEM2[] "Ventil_YP1V",E_NAME_KLEM1[] "undefiniert",E_NAME_KLEM2[] "undefiniert"}

钳2的设置: 吸盘得设置- 反吹A618 吸气 A617

DEF_ZANGE[7]={TYP 0,A_AUF 618,A_ZU 617,E_AUF 0,E_ZU 0,A_NAME_AUF[] "Saugkreis_1_AUF",A_NAME_KLEM1[] "Ventil_YP7R",A_NAME_ZU[] "Saugkreis_1_ZU",A_NAME_KLEM2[] "Ventil_YP7V",E_NAME_KLEM1[] "V_Insel_SD7R",E_NAME_KLEM2[] "V_Insel_SD7V"}

钳16的设置:伺服焊钳点动 类型是6

DEF_ZANGE[16]={TYP 6,A_AUF 719,A_ZU 720,E_AUF 0,E_ZU 0,A_NAME_AUF[] "Tastend_EZ1_AUf",A_NAME_KLEM1[] "EZ1",A_NAME_ZU[] "Tastend_EZ1_ZU",A_NAME_KLEM2[] "EZ1",E_NAME_KLEM1[] "undefiniert",E_NAME_KLEM2[] "undefiniert"}

钳19的设置: 伺服焊钳打开夹紧 类型是1静态式

DEF_ZANGE[19]={TYP 1,A_AUF 717,A_ZU 718,E_AUF 717,E_ZU 718,A_NAME_AUF[] "EZ1_AUF",A_NAME_KLEM1[] "EZ1",A_NAME_ZU[] "EZ1_ZU",A_NAME_KLEM2[] "EZ1",E_NAME_KLEM1[] "EZ1",E_NAME_KLEM2[] "EZ1"}

TYP 钳功能的触发类型

0 没有用钳, 1静态输出,2是脉冲输出,3 是IBS静态输出,4是IBS脉冲输出,6输入/输出伺服焊钳(点动控制)

VW程序进行诠释:

SPS程序调用

VW (#VW_ZANGE,TRUE)

VW程序调用SUB_ZANGE( )  

IF (TEMP_ZANGEN_FUNKT==1) THEN –工具钳的AUF按钮被按动

VW (#GUN,TRUE,AKT_ZANGE,1 ) –调用GUN程序

ENDIF

IF (TEMP_ZANGEN_FUNKT==2) THEN -工具钳的ZU按钮被按动

VW (#GUN,TRUE,AKT_ZANGE,0 ) –调用GUN程序

ENDIF

DEF  GUN (GUN_NO :IN,OPEN_GUN :IN ) 

INT GUN_NO,OPEN_GUN

SWITCH  DEF_ZANGE[GUN_NO].TYP  -对钳工具的类型

CASE 1,3 -钳的类型是1,3

IF OPEN_GUN>0 THEN –钳打开

IF DEF_ZANGE[GUN_NO].A_AUF>0 THEN  -钳打开上有地址

$OUT[DEF_ZANGE[GUN_NO].A_AUF]=TRUE –发出输出

ENDIF – 静态输出用于伺服焊钳之类控制

IF DEF_ZANGE[GUN_NO].A_ZU>0 THEN -钳夹紧上有地址

$OUT[DEF_ZANGE[GUN_NO].A_ZU]=FALSE

ENDIF

ELSE –钳打开没有就是夹紧

IF DEF_ZANGE[GUN_NO].A_AUF>0 THEN

$OUT[DEF_ZANGE[GUN_NO].A_AUF]=FALSE

ENDIF

IF DEF_ZANGE[GUN_NO].A_ZU>0 THEN

$OUT[DEF_ZANGE[GUN_NO].A_ZU]=TRUE

ENDIF

ENDIF

CASE 2,4 -钳的类型是2,4

IF OPEN_GUN>0 THEN –钳打开

IF DEF_ZANGE[GUN_NO].A_ZU>0 THEN

$OUT[DEF_ZANGE[GUN_NO].A_ZU]=FALSE

ENDIF

IF DEF_ZANGE[GUN_NO].A_AUF>0 THEN

PULSE ($OUT[DEF_ZANGE[GUN_NO].A_AUF],TRUE,PULS_TIME )-脉冲触发输出信号

ENDIF  -脉冲多用于夹抓

ELSE –钳打开没有就是夹紧

IF DEF_ZANGE[GUN_NO].A_AUF>0 THEN

$OUT[DEF_ZANGE[GUN_NO].A_AUF]=FALSE

ENDIF 

IF DEF_ZANGE[GUN_NO].A_ZU>0 THEN

PULSE ($OUT[DEF_ZANGE[GUN_NO].A_ZU],TRUE,PULS_TIME ) -脉冲触发输出信号

ENDIF

ENDIF

DEFAULT

ENDSWITCH

END

TYP类型6: -专为伺服焊钳的点动使用

在SPS程序中直接使用:

VW (#VW_ZANGE,TRUE)

SUB_ZANGE( )       

IF (DEF_ZANGE[AKT_ZANGE].TYP == 6) THEN -类型号是6

If FL_GUN_FCT THEN –激活钳号

IF DEF_ZANGE[AKT_ZANGE].A_AUF > 0 THEN  - 钳工具点有地址

$OUT[DEF_ZANGE[AKT_ZANGE].A_AUF]=GUN_OPEN -按1次钳开就发1次输出点动控制

ENDIF  -发出A719

IF DEF_ZANGE[AKT_ZANGE].A_ZU > 0 THEN

$OUT[DEF_ZANGE[AKT_ZANGE].A_ZU]=GUN_CLOSE

ENDIF --发出A720

FL_GUN_FCT=FALSE

ENDIF

钳工能用于网络站的快换开关,30,31,32

;FOLD Docking bei Profinet

IF $OUT[O_R_Hand] AND $COULD_START_MOTION AND NOT $OUT[O_R_Proz_akt] AND $FLAG[F_m_Profinet] THEN

-A11手动-机器人驱动给入-没有A4039-F556带钳控制功能-

IF (DEF_ZANGE[30].Typ==1) AND (DEF_ZANGE[30].A_AUF>0) AND (DEF_ZANGE[30].A_ZU>0) AND (DEF_ZANGE[30].E_AUF>0) THEN

-想使用钳关闭网络,钳的类型必须是1-有钳输出点打开/关闭的设置-有钳输入点打开的设置

IF ($OUT[DEF_ZANGE[30].A_AUF]==TRUE) THEN -

i=DEF_ZANGE[30].E_AUF -保存要开关的站地址-

ret=99

IF (SZAxConfig>0) AND DOCK_SZ THEN –SZAxConfig带几个外部轴焊钳-

$softplcint[1]=0

ENDIF 

IF (SZAxConfig>0) AND DOCK_NZ THEN

$softplcint[4]=0

ENDIF 

IF (SZAxConfig>0) AND DOCK_CZ THEN

$softplcint[6]=0

ENDIF       

Ret=ioctl("PNIO-CTRL",60,i) -打开站-

SWITCH ret

CASE 0  ;     连接合格

SyncMoveMessage(91,#NotifyMsg)

CASE 1  ;   连接超时   

SyncMoveMessage(92,#QuitMsg)

CASE 2  ; 连接参数错误

SyncMoveMessage(93,#QuitMsg)

DEFAULT

ENDSWITCH

$OUT[DEF_ZANGE[30].A_AUF]=FALSE   -关闭输出开站-

ENDIF 

ENDIF  

-网络关站-

IF (DEF_ZANGE[30].Typ==1) AND (DEF_ZANGE[30].A_AUF>0) AND (DEF_ZANGE[30].A_ZU>0) AND (DEF_ZANGE[30].E_ZU>0) THEN

IF ($OUT[DEF_ZANGE[30].A_ZU]==TRUE) THEN

i=DEF_ZANGE[30].E_ZU

ret=99

IF (SZAxConfig>0) AND DOCK_SP THEN

$softplcint[1]=ActDockAx(1)

ENDIF 

IF (SZAxConfig>0) AND DOCK_NZ THEN

$softplcint[4]=ActDockAx(1)

ENDIF

IF (SZAxConfig>0) AND DOCK_CZ THEN

$softplcint[6]=ActDockAx(1)

ENDIF      

Ret=ioctl("PNIO-CTRL",50,i)

SWITCH ret

CASE 0  ; ioctl OK

SyncMoveMessage(90,#NotifyMsg)

CASE 1  ; ioctl Timeout

SyncMoveMessage(92,#QuitMsg)

CASE 2  ; ioctl falscher Parameter

SyncMoveMessage(93,#QuitMsg)

DEFAULT

ENDSWITCH

$OUT[DEF_ZANGE[30].A_ZU]=FALSE

ENDIF  

ENDIF

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分