KUKAC4机器人焊钳拉拽程序分析sg_fehler ()w

描述

我们在很多时候都会遇到机器人的虚拟外部轴滞后故障报警,它的报警时如何发出的呢? 

 

报警中的滞后故障:

SZMsg(MsgNr :IN) ---伺服钳报警信息程序

SWITCH  MsgNr 控制号

CASE 1

  SWITCH $SoftPlcint[21] 软PLC反馈信息

  CASE 1

  USER_MSG.MSG_TXT[]="SZ1 Schleppfehler im Programmbetrieb, Quittierung in Single-Step erforderlich !"

程序模式下SZ1滞后错误,需要单步确认!

......

CASE 2

  SWITCH $SoftPlcint[21] 软PLC反馈信息

  CASE 1

  USER_MSG.MSG_TXT[]="SZ1 Schleppfehler im Programmbetrieb"

  SZ1程序模式下的跟随错误

.......

CASE 3

  SWITCH $SoftPlcint[21] 软PLC反馈信息

  CASE 1

  USER_MSG.MSG_TXT[]="SZ1 Schleppfehler, Warte bis kein Schleppfehler !"

  SZ1跟随错误,等到没有跟随错误!

....

--产生报警的程序设置—-

GLOBALINTERRUPTDECL 8 WHEN $softplcbool[5] DO SZIntR(7)中断程序激活滞后故障,$softplcbool[5]触发中断程序.

 

通过中断程序我们可以知道机器人虚拟外部轴的滞后故障是由软PLC的反馈点引起的,说明滞后故障是由软PLC软件监控产生的.

    IF NOT $OUT[O_SZ1_FRG] AND (abs($softplcreal[1])>max_sf)  AND ($softplcint[1]>0)THEN

      BRAKE 机器人程序停止,机器人运动立刻停止

      IF ANTEIN_MERKER AND $softplcbool[5] THEN 

       ANTEIN_MERKER在断开机器人程序驱动,PLC提示错误

         nRintMsgHandle[2] = SZMsg(2发出提示信息SZ1程序模式下的跟随错误

         WAITFOR $softplcbool[6]==FALSE 等待没有软PLC的提示信息

        SF_Vorwarnung=FALSE  预警

        WAITFOR $IN[I_SZ1_IPos_g] 等待E716位置有效

        IF(nRintMsgHandle[2] > 0)Then 反馈值是整数

          MSG_DEL = Clear_KrlMsg (-99)   ; 清除提现状态信息

            nRintMsgHandle[2]=-1

        ENDIF

      ELSE机器人程序在执行过程中

        IF(Handbetrieb==FALSE)THEN如果机器人不是外部自动模式被认为是手动准备

          F_Handbetrieb=TRUE  故障手动标识位

          IF($softplcint[1]>0)THEN有外部轴被使用

            $OUT[O_SZ1_F_Schl]=TRUE ---A131焊钳拉拽故障PLC反馈点

          ENDIF

            nRintMsgHandle[1] = SZMsg(1)

            发出提示信息: 程序模式下SZ1滞后错误,需要单步确认!

            WHILE Handbetrieb==FALSE  关闭手动准备

          ENDWHILE

            IF(nRintMsgHandle[1] > 0)Then

            MSG_DEL = Clear_KrlMsg (-99)   ;清除故障信息

              nRintMsgHandle[1]=-1

          ENDIF

        ENDIF

        IF NOT F_Handbetrieb THEN 没有故障手动标识位

           nRintMsgHandle[1] = SZMsg(1)

           发出提示信息: 程序模式下SZ1滞后错误,需要单步确认!

            IF(nRintMsgHandle[1] > 0)Then

            MSG_DEL = Clear_KrlMsg (-99)   ; 清除故障信息

              nRintMsgHandle[1]=-1

          ENDIF

         ENDIF

      ENDIF

    ENDIF

    ;ENDFOLD

 

 

 

Schleppfehler  滞后误差!  除了伺服焊钳外,还可以针对伺服有钉铆钳NZ,和无钉伺服铆钳CZ.下面我们以气伺服焊钳为例进行分析:

 

IF SZ_VORHANDEN OR MIT_NZ1_Serv OR MIT_NZ2_Serv THEN

SZ_VORHANDEN使用伺服焊钳 虚拟轴 ,或者是伺服铆钳1和伺服铆钳2

---机器人手动时的拉拽故障被触发--

  IF $OUT[O_R_Hand] AND TAST_AKTIV_1 AND NOT $OUT[O_SZ1_t_auf] AND NOT $OUT[O_SZ1_t_zu] AND NOT Temp_Komb_1 THEN

A11机器人手动,如果测试点动功能激活,没有A719和A720的焊钳点动控制激活,

Temp_Komb_1=false

    TAST_AKTIV_1=FALSE   测试功能激活

    WAITSEC 0.4 等待

    $OUT[O_SZ1_FRG]=FALSE    A715焊钳功能激活

    schleppfehler=TRUE    激活拉拽故障

    sf_prog_status=#user_act   # user_act:操作确认键时的滞后误差

    $OUT[O_SZ1_SPos_g]=FALSE    A716 使用位置有效

  ENDIF

 

... ...

IF schleppfehler THEN ---- schleppfehler滞后变量被激活

    Behandlung_schleppfehler()  跟踪错误的处理

  ELSE

    SetSollPos(TRUE);空运行

    IF $softplcbool[5] THEN  PLC ---第五位是拉拽故障.

       sg_fehler()

    ENDIF

  ENDIF

焊钳

 

 

sg_fehler ()

 

  FOR SZNr=1 To-----17

    FrgSZ=FctFrgSZ(SZNr)焊钳1A715激活焊钳控制功能

IF($softplcint[SZNr]<>0) AND NOT FrgSZ AND NOT $power_fail THEN

$softplcint[1]=7伺服焊钳   焊钳没有激活控制 $power_fail电源故障

      schleppfehler=TRUE 激活拉拽故障变量

      IF $PRO_STATE1==#P_ACTIVE THEN 程序激活

        sf_prog_status=#prg_motion程序运行中出现的滞后误差

      ELSE; 程序状态是不激活

        IF NOT $EXT THEN

          SetSollPos(FALSE)

        ENDIF

        IF NOT $COULD_START_MOTION THEN 

        显示机器人是否可以移动/机器人不在移动

          IF(IOCTL("IBusDrv",3,0)==1)  AND NOT $power_fail THEN

          "IBusDrv" interbus网络驱动这里值不使用,没有电源故障

            sf_prog_status=#driveoff_motion 

          驱动装置关断时的滞后误差

             ErrSZNr = SZNr 记录发出故障信息用的恶故障的钳号

            SyncMoveMessage(18, #QuitMsg, ErrSZNr);

             故障信息:钳子处于非法位置   

                ErrSZNr =-1

          ENDIF

        ELSE 显示机器人可以移动

          IF NOT $power_fail THEN 没有电源故障

            sf_prog_status=#man_motion 用运行驱动装置时的滞后误差

            MsgNum=6

          ENDIF

        ENDIF

      ENDIF

      InvDestPos=FctDestPos(SZNr) E773目标位置无效

      IF InvDestPos THEN

        ErrSZNr = SZNr

        SyncMoveMessage(19, #QuitMsg, ErrSZNr); 发出故障信息:目标位置无效

        ErrSZNr =-1

        sf_prog_status=#dest_invalid

      ENDIF;目标位置无效

    ENDIF

  ENDFOR

  ;产生讯息

  IF MsgNum > 0 THEN 发出报警信息

    ErrSZNr=SZNr

    SyncMoveMessage(MsgNum, #StateMsg, ErrSZNr)

    RemMsgNum=MsgNum

    ErrSZNr =-1

  ENDIF

  END

  ;ENDFOLD

 

 

-----------------------------------------

  DEFFCTBOOL FctFrgSZ(SZNr:IN)

  INT SZNr

  BOOL FctFrgSZVal

  SWITCH SZNr

  CASE 1

    FctFrgSZVal=$OUT[O_SZ1_FRG]  焊钳1的A715激活焊钳控制功能

  CASE 2

    FctFrgSZVal=$OUT[O_SZ2_FRG]

  CASE 3

    FctFrgSZVal=$OUT[O_SZ3_FRG]

  CASE 4

    FctFrgSZVal=$OUT[O_NZ1_FRG]

  CASE 5

    FctFrgSZVal=$OUT[O_NZ2_FRG]

  CASE 6

    FctFrgSZVal=$OUT[O_CZ1_FRG]

  CASE 7

    FctFrgSZVal=$OUT[O_CZ2_FRG] 

  ENDSWITCH

  RETURN(FctFrgSZVal)

  ENDFCT

  ;ENDFOLD

 

-------------------------------------

  DEF  Behandlung_schleppfehler()跟踪错误的处理

  BOOL bRet

  IF(async_active==FALSE) AND NOT $power_fail THEN

    SWITCH sf_prog_status

    CASE #man_motion    用运行驱动装置时的滞后误差

      Fahrt_SG_Istpos()  异步行进到实际位置

    CASE #prg_motion   程序运行中出现的滞后误差

      IF $ROB_STOPPED THEN  机器人停止

        IF $EXT==FALSE THEN  外部自动关闭

          SetSollPos(FALSE关闭实际位置有效A716

          IF $softplcbool[6] THEN

            Fahrt_SG_Istpos()异步行进到实际位置

          ELSE

            schleppfehler=FALSE

               sf_prog_status=#SZ_io无滞后误差

          ENDIF

        ELSE

          IF $COULD_START_MOTION THEN显示机器人是否可以移动/机器人不在移动

            SetSollPos(TRUE) A716发出实际位置有效

            IF $softplcbool[6]==FALSE THEN  没有故障反馈点

              schleppfehler=FALSE

                 sf_prog_status=#SZ_io

            ENDIF

          ENDIF

        ENDIF

      ENDIF

    CASE #driveoff_motion  驱动装置关断时的滞后误差

      IF $EXT==FALSE THEN 外部自动关闭

        SetSollPos(FALSE)

        Fahrt_SG_Istpos()

      ELSE

        IF $COULD_START_MOTION THEN显示机器人是否可以移动/机器人不在移动

          SetSollPos(TRUE)

          IF $softplcbool[6]==FALSE THEN

            schleppfehler=FALSE

               sf_prog_status=#SZ_io

          ENDIF

        ENDIF

      ENDIF

    CASE #dest_invalid由于目标位置无效导致的滞后误差

      Fahrt_SG_Istpos()

    CASE #user_act操作确认键时的滞后误差

      Fahrt_SG_Istpos()

    CASE #SZ_io无滞后误差

      IF NOT $softplcbool[5] AND NOT $softplcbool[6] THEN

        schleppfehler=FALSE

        ENDIF

    ENDSWITCH

  ENDIF

  SWITCH $ASYNC_STATE   同步系统状态

  CASE #BUSY  正在工作

    async_active=TRUE

  CASE #IDLE ; 异步运动完成

    IF async_active THEN

      schleppfehler = FALSE

       sf_prog_status=#SZ_io

      SetSollPos(TRUE)

      async_active=FALSE   

    ENDIF

  CASE #CANCELLED   取消

    async_active=FALSE

  ENDSWITCH

;

  END

  ;ENDFOLD

 

 

 

 

异步行进到实际位置判断

  DEF Fahrt_SG_Istpos()

  INT SZNr, i

  E6AXIS zielpos

 ; 到当前位置的异步驱动

  IF $COULD_START_MOTION AND $ROB_STOPPED THEN

    FOR SZNr=1 To 7

      IF $softplcint[SZNr]<>0 THEN

        SWITCH $softplcint[SZNr]

        CASE 7 伺服焊钳1

          zielpos.E1=IstPosCalc(SZNr)获得机器人虚拟轴实际位置

          pos_outofsoftend=Outofsoftend(zielpos.E1, 7)

          判断伺服焊钳实际位置是否超程,并发出提示信息

        CASE 8 伺服焊钳2

          zielpos.E2=IstPosCalc(SZNr)获得机器人虚拟轴实际位置

          pos_outofsoftend=Outofsoftend(zielpos.E2, 8)

          判断伺服焊钳实际位置是否超程,并发出提示信息

        CASE伺服焊钳3

          zielpos.E3=IstPosCalc(SZNr)获得机器人虚拟轴实际位置

          pos_outofsoftend=Outofsoftend(zielpos.E3, 9)

          判断伺服焊钳实际位置是否超程,并发出提示信息

        CASE 10 伺服NZ铆钳1

          zielpos.E4=IstPosCalc(SZNr)获得机器人虚拟轴实际位置

          pos_outofsoftend=Outofsoftend(zielpos.E4, 10)

          判断伺服焊钳实际位置是否超程,并发出提示信息

        CASE 11 伺服NZ铆钳2

          zielpos.E5=IstPosCalc(SZNr)获得机器人虚拟轴实际位置

          pos_outofsoftend=Outofsoftend(zielpos.E5, 11)

          判断伺服焊钳实际位置是否超程,并发出提示信息

        CASE 12 伺服CZ铆钳1

          zielpos.E6=IstPosCalc(SZNr)获得机器人虚拟轴实际位置

          pos_outofsoftend=Outofsoftend(zielpos.E6, 12)

          判断伺服焊钳实际位置是否超程,并发出提示信息

        DEFAULT

          HALT

        ENDSWITCH

      ENDIF

      IF pos_outofsoftend THEN 位置超出极限设置

        goto FctEnd 调步到结尾

      ENDIF

    ENDFOR

    FOR i = 1 TO 6

      $ACC_EXTAX[i]=100 提前运行中外部轴的加速度 

      $VEL_EXTAX[i]=100 提前运行中外部轴的轴速度 

    ENDFOR

    IF $ROB_CAL AND NOT pos_outofsoftend THEN

掌握所有机器人轴后,将设置此输出

      asyptp zielpos 如果不超程执行PTP外部虚拟轴的实际位置

    ENDIF

    FctEnd:

  ENDIF

  END

 

 

 

设置额定位置有效

  DEF SetSollpos(SollState : IN)

  Bool SollState  激活位置有效

  IF SollState THEN  

    $OUT[O_SZ1_SPos_g]=TRUE  A716焊钳位置有效

    $OUT[O_SZ2_SPos_g]=TRUE   二号钳位置有效

    $OUT[O_SZ3_SPos_g]=TRUE   三号钳位置有效

    IF MIT_NZ1_Serv THEN  如果伺服有钉铆钳1

      $OUT[O_NZ1_SPos_g]=TRUE  位置有效

    ENDIF 

    IF MIT_NZ2_Serv THEN  如果伺服有钉铆钳2

      $OUT[O_NZ2_SPos_g]=TRUE  位置有效

    ENDIF

    IF MIT_CZ1_Serv THEN  如果伺服无钉铆钳1

      $OUT[O_CZ1_SPos_g]=TRUE  位置有效

    ENDIF

    IF MIT_CZ2_Serv THEN  如果伺服无钉铆钳2

      $OUT[O_CZ2_SPos_g]=TRUE  位置有效

    ENDIF 

  ELSE  没有激活位置有效 就关闭焊钳或铆钳的位置控制

    $OUT[O_SZ1_SPos_g]=FALSE  

    $OUT[O_SZ2_SPos_g]=FALSE

    $OUT[O_SZ3_SPos_g]=FALSE

    IF MIT_NZ1_Serv THEN

      $OUT[O_NZ1_SPos_g]=FALSE

    ENDIF

    IF MIT_NZ2_Serv THEN

      $OUT[O_NZ2_SPos_g]=FALSE

    ENDIF

    IF MIT_CZ1_Serv THEN

      $OUT[O_CZ1_SPos_g]=FALSE

    ENDIF

    IF MIT_CZ2_Serv THEN

      $OUT[O_CZ2_SPos_g]=FALSE

    ENDIF 

  ENDIF

  END

  ;ENDFOLD

;

 

 

 

  DEFFCTBOOL FctDestPos(SZNr:IN)反馈焊钳位置无效

  INT SZNr

  BOOL FctDestPosVal

  SWITCH SZNr

  CASE 1

    FctDestPosVal=$IN[I_SZ1_F_Ziel]  E773目标位置无效

  CASE 2

    FctDestPosVal=$IN[I_SZ2_F_Ziel]

  CASE 3

    FctDestPosVal=$IN[I_SZ3_F_Ziel]

  CASE 4

    FctDestPosVal=$IN[I_NZ1_F_Ziel]

  CASE 5

    FctDestPosVal=$IN[I_NZ2_F_Ziel]

  CASE 6

    FctDestPosVal=$IN[I_CZ1_F_Ziel]

  CASE 7

    FctDestPosVal=$IN[I_CZ2_F_Ziel]

  ENDSWITCH

  RETURN(FctDestPosVal函数反馈值

  ENDFCT

 

整体上说明当虚拟外部轴报滞后故障时,其主要是由软PLC的反馈点$softplcbool[5]来控制的.

 

  ;ENDFOLD

  ;ENDFOLD


审核编辑 :李倩

 

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

全部0条评论

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

×
20
完善资料,
赚取积分