KUKA 机器人SPS.SUB程序解析

来源:互联网 发布:什么电子书软件好用 编辑:程序博客网 时间:2024/05/29 14:31
&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
2 0