&ACCESS RVO
&COMMENT PLC on control
DEF SPS ( )
;FOLD DECLARATIONS
;FOLD BASISTECH DECL
;Automatik extern
DECL STATE_T STAT
定义STATE_T类型的变量。该结构为:
STRUC STATE_T
CMD_STAT RET1, CMD_STAT是枚举类型数据,组成了STATE_T结构的第一个数据RET1
INT HITS ,
INT LENGTH
其中CMD_STAT是枚举类型的数据:
ENUM CMD_STAT CMD_OK, CMD_TIMEOUT, DATA_OK, DATA_BLK, DATA_END, CMD_ABORT, CMD_REJ, CMD_PART, CMD_SYN, FMT_ERR
与CWRITE有关的返回值如下表:
变量类型 MODUS_T(结构类型)定义多少通道写入,有下列值 SYNC语句直到数据发送还没有执行 ASYNC语句没有执行直到通道驱动已经证实数据已经被承认。
DECL MODUS_T MODE
;ENDFOLD (BASISTECH DECL)
;FOLD USER DECL
;Please insert user defined declarations
;ENDFOLD (USER DECL)
;ENDFOLD (DECLARATIONS)
;FOLD INI
;FOLD DEFAULT MSG_T
信息显示的结构:
$MSG_T={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
;ENDFOLD (DEFAULT MSG_T)
;FOLD AUTOEXT INIT
中断函数声明,当系统变量$PRO_STATE1(机器人解释程序的进程状态为P_FREE(不选择程序)调用RESET_OUT ()):
INTERRUPT DECL 91 WHEN $PRO_STATE1==#P_FREE DO RESET_OUT ()
INTERRUPT ON 91
$LOOP_MSG[]=" "
变量类型MODUS_T(结构类型)定义多少通道写入,它有下面的值:SYNC 语句直到数据已经发送还没有执行。ASYNC 语句没有执行 直到通道驱动已经证实数据已经被承认。
MODE=#SYNC ;
$H_POS=$H_POS
;Automatik extern 如果外部模式,则启动CELL()。$CMD显示命令通道的分配号。将CELL写入命令通道,机器人上电启动之后,如果$MODE_OP==#EX处于外部模式,则启动CELL程序。 命令通道可能为库卡内部的命令切换通道。T1、T2、EXT?
IF $MODE_OP==#EX THEN
CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
注释:STAT被调用后的返回值是否可以在这调用,例如 IF (STAT.RET1=CMD_OK) THEN $OUT[200]=TRUE 验证是否调用成功
\KRC\STEU\Mada中定义的通道 CMD通道的定义?
CHANNEL :SER_1 :SER_1 $PSER_1
CHANNEL :SER_2 :SER_2 $PSER_2
CHANNEL :SER_3 :SER_3 $PSER_3
CHANNEL :SER_4 :SER_4 $PSER_4
ENDIF
;ENDFOLD (AUTOEXT INIT)
;FOLD USER INIT
;Please insert user defined initialization commands
;ENDFOLD (USER INIT)
;ENDFOLD (INI)
LOOP
WAIT FOR NOT($POWER_FAIL) 掉电等待
TORQUE_MONITORING() 扭矩监视
;FOLD GRIPPER TECH PLC;%{E}%MKUKATPGRP,%CSPS,%VSPS,%P
IF (ZANGEN_FUNKT>0) THEN ;;夹持技术
H50 (5,AKT_ZANGE,DUMMY,GDEFAULT )
ZANGEN_FUNKT=0
ENDIF
;ENDFOLD (GRIPPERTECH PLC)
;FOLD USER PLC
;Make your modifications here
;ENDFOLD (USER PLC)
ENDLOOP
END
中断函数声明,当系统变量$PRO_STATE1(机器人解释程序的进程状态为P_FREE(不选择程序)调用RESET_OUT ()):
DEF RESET_OUT ( )
INT N
$LOOP_MSG[]=" "
INT REFLECT_PROG_NR=0 ; enable mirroring of program number inputs (1=enabled, 0=disabled) 声明于config.dat文件:
使能程序号输入镜像,将输入程序号返回PLC
IF REFLECT_PROG_NR == 1 THEN
FOR N = 0 TO PGNO_LENGTH - 1 config.dat文件: PGNO_LENGTH=8 ;length of ext. pgno (max. 16)
$OUT[PGNO_FBIT_REFL + N] = FALSE
config.dat文件:INT PGNO_FBIT_REFL=999 ;first bit of ext. pgno reflection output $OUT[]
ext. pgno 输出的第一位 output $OUT[1000]=FALSE
ENDFOR
ENDIF
IF (PGNO_REQ>0) THEN INT PGNO_REQ=134 ;request ext. pgno input
$OUT[PGNO_REQ]=FALSE $OUT[134]=FALSE 停止对PLC程序号请求
ELSE 高电平请求有效/低电平请求有效
IF (PGNO_REQ<0) THEN
$OUT[-PGNO_REQ]=TRUE
ENDIF
ENDIF
END
;FOLD USER SUBROUTINE
;Integrate your user defined subroutines
;ENDFOLD (USER SUBROUTINE)
;ENDFOL