我们在很多时候都会遇到机器人的虚拟外部轴滞后故障报警,它的报警时如何发出的呢?
报警中的滞后故障:
SZMsg(MsgNr:IN)---伺服钳报警信息程序
SWITCHMsgNr控制号
CASE1
SWITCH$SoftPlcint[21]软PLC反馈信息
CASE1
USER_MSG.MSG_TXT[]="SZ1SchleppfehlerimProgrammbetrieb,QuittierunginSingle-Steperforderlich!"
程序模式下SZ1滞后错误,需要单步确认!
......
CASE2
SWITCH$SoftPlcint[21]软PLC反馈信息
CASE1
USER_MSG.MSG_TXT[]="SZ1SchleppfehlerimProgrammbetrieb"
SZ1程序模式下的跟随错误
.......
CASE3
SWITCH$SoftPlcint[21]软PLC反馈信息
CASE1
USER_MSG.MSG_TXT[]="SZ1Schleppfehler,WartebiskeinSchleppfehler!"
SZ1跟随错误,等到没有跟随错误!
....
--产生报警的程序设置—-
GLOBALINTERRUPTDECL8WHEN$softplcbool[5]DOSZIntR(7)中断程序激活滞后故障,$softplcbool[5]触发中断程序.
通过中断程序我们可以知道机器人虚拟外部轴的滞后故障是由软PLC的反馈点引起的,说明滞后故障是由软PLC软件监控产生的.
IFNOT$OUT[O_SZ1_FRG]AND(abs($softplcreal[1])>max_sf)AND($softplcint[1]>0)THEN
BRAKE机器人程序停止,机器人运动立刻停止
IFANTEIN_MERKERAND$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滞后错误,需要单步确认!
WHILEHandbetrieb==FALSE关闭手动准备
ENDWHILE
IF(nRintMsgHandle[1]>0)Then
MSG_DEL=Clear_KrlMsg(-99);清除故障信息
nRintMsgHandle[1]=-1
ENDIF
ENDIF
IFNOTF_HandbetriebTHEN没有故障手动标识位
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.下面我们以气伺服焊钳为例进行分析:
IFSZ_VORHANDENORMIT_NZ1_ServORMIT_NZ2_ServTHEN
SZ_VORHANDEN使用伺服焊钳虚拟轴,或者是伺服铆钳1和伺服铆钳2
---机器人手动时的拉拽故障被触发--
IF$OUT[O_R_Hand]ANDTAST_AKTIV_1ANDNOT$OUT[O_SZ1_t_auf]ANDNOT$OUT[O_SZ1_t_zu]ANDNOTTemp_Komb_1THEN
A11机器人手动,如果测试点动功能激活,没有A719和A720的焊钳点动控制激活,
Temp_Komb_1=false
TAST_AKTIV_1=FALSE测试功能激活
WAITSEC0.4等待
$OUT[O_SZ1_FRG]=FALSEA715焊钳功能激活
schleppfehler=TRUE激活拉拽故障
sf_prog_status=#user_act#user_act:操作确认键时的滞后误差
$OUT[O_SZ1_SPos_g]=FALSEA716使用位置有效
ENDIF
......
IFschleppfehlerTHEN----schleppfehler滞后变量被激活
Behandlung_schleppfehler()跟踪错误的处理
ELSE
SetSollPos(TRUE);空运行
IF$softplcbool[5]THEN软PLC---第五位是拉拽故障.
sg_fehler()
ENDIF
ENDIF
sg_fehler()
FORSZNr=1To7-----1到7轴
FrgSZ=FctFrgSZ(SZNr)焊钳1的A715激活焊钳控制功能
IF($softplcint[SZNr]<>0)ANDNOTFrgSZANDNOT$power_failTHEN
$softplcint[1]=7伺服焊钳焊钳没有激活控制$power_fail电源故障
schleppfehler=TRUE激活拉拽故障变量
IF$PRO_STATE1==#P_ACTIVETHEN程序激活
sf_prog_status=#prg_motion程序运行中出现的滞后误差
ELSE;程序状态是不激活
IFNOT$EXTTHEN
SetSollPos(FALSE)
ENDIF
IFNOT$COULD_START_MOTIONTHEN
显示机器人是否可以移动/机器人不在移动
IF(IOCTL("IBusDrv",3,0)==1)ANDNOT$power_failTHEN
"IBusDrv"interbus网络驱动这里值不使用,没有电源故障
sf_prog_status=#driveoff_motion
驱动装置关断时的滞后误差
ErrSZNr=SZNr记录发出故障信息用的恶故障的钳号
SyncMoveMessage(18,#QuitMsg,ErrSZNr);
故障信息:钳子处于非法位置
ErrSZNr=-1
ENDIF
ELSE显示机器人可以移动
IFNOT$power_failTHEN没有电源故障
sf_prog_status=#man_motion用运行驱动装置时的滞后误差
MsgNum=6
ENDIF
ENDIF
ENDIF
InvDestPos=FctDestPos(SZNr)E773目标位置无效
IFInvDestPosTHEN
ErrSZNr=SZNr
SyncMoveMessage(19,#QuitMsg,ErrSZNr);发出故障信息:目标位置无效
ErrSZNr=-1
sf_prog_status=#dest_invalid
ENDIF;目标位置无效
ENDIF
ENDFOR
;产生讯息
IFMsgNum>0THEN发出报警信息
ErrSZNr=SZNr
SyncMoveMessage(MsgNum,#StateMsg,ErrSZNr)
RemMsgNum=MsgNum
ErrSZNr=-1
ENDIF
END
;ENDFOLD
-----------------------------------------
DEFFCTBOOLFctFrgSZ(SZNr:IN)
INTSZNr
BOOLFctFrgSZVal
SWITCHSZNr
CASE1
FctFrgSZVal=$OUT[O_SZ1_FRG]焊钳1的A715激活焊钳控制功能
CASE2
FctFrgSZVal=$OUT[O_SZ2_FRG]
CASE3
FctFrgSZVal=$OUT[O_SZ3_FRG]
CASE4
FctFrgSZVal=$OUT[O_NZ1_FRG]
CASE5
FctFrgSZVal=$OUT[O_NZ2_FRG]
CASE6
FctFrgSZVal=$OUT[O_CZ1_FRG]
CASE7
FctFrgSZVal=$OUT[O_CZ2_FRG]
ENDSWITCH
RETURN(FctFrgSZVal)
ENDFCT
;ENDFOLD
-------------------------------------
DEFBehandlung_schleppfehler()跟踪错误的处理
BOOLbRet
IF(async_active==FALSE)ANDNOT$power_failTHEN
SWITCHsf_prog_status
CASE#man_motion用运行驱动装置时的滞后误差
Fahrt_SG_Istpos()异步行进到实际位置
CASE#prg_motion程序运行中出现的滞后误差
IF$ROB_STOPPEDTHEN机器人停止
IF$EXT==FALSETHEN外部自动关闭
SetSollPos(FALSE)关闭实际位置有效A716
IF$softplcbool[6]THEN
Fahrt_SG_Istpos()异步行进到实际位置
ELSE
schleppfehler=FALSE
sf_prog_status=#SZ_io无滞后误差
ENDIF
ELSE
IF$COULD_START_MOTIONTHEN显示机器人是否可以移动/机器人不在移动
SetSollPos(TRUE)A716发出实际位置有效
IF$softplcbool[6]==FALSETHEN没有故障反馈点
schleppfehler=FALSE
sf_prog_status=#SZ_io
ENDIF
ENDIF
ENDIF
ENDIF
CASE#driveoff_motion驱动装置关断时的滞后误差
IF$EXT==FALSETHEN外部自动关闭
SetSollPos(FALSE)
Fahrt_SG_Istpos()
ELSE
IF$COULD_START_MOTIONTHEN显示机器人是否可以移动/机器人不在移动
SetSollPos(TRUE)
IF$softplcbool[6]==FALSETHEN
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无滞后误差
IFNOT$softplcbool[5]ANDNOT$softplcbool[6]THEN
schleppfehler=FALSE
ENDIF
ENDSWITCH
ENDIF
SWITCH$ASYNC_STATE同步系统状态
CASE#BUSY正在工作
async_active=TRUE
CASE#IDLE;异步运动完成
IFasync_activeTHEN
schleppfehler=FALSE
sf_prog_status=#SZ_io
SetSollPos(TRUE)
async_active=FALSE
ENDIF
async_active=FALSE
ENDSWITCH
;
END
;ENDFOLD
异步行进到实际位置判断
DEFFahrt_SG_Istpos()
INTSZNr,i
E6AXISzielpos
;到当前位置的异步驱动
IF$COULD_START_MOTIONAND$ROB_STOPPEDTHEN
FORSZNr=1To7
IF$softplcint[SZNr]<>0THEN
SWITCH$softplcint[SZNr]
CASE7伺服焊钳1
zielpos.E1=IstPosCalc(SZNr)获得机器人虚拟轴实际位置
pos_outofsoftend=Outofsoftend(zielpos.E1,7)
判断伺服焊钳实际位置是否超程,并发出提示信息
CASE8伺服焊钳2
zielpos.E2=IstPosCalc(SZNr)获得机器人虚拟轴实际位置
pos_outofsoftend=Outofsoftend(zielpos.E2,8)
判断伺服焊钳实际位置是否超程,并发出提示信息
CASE9伺服焊钳3
zielpos.E3=IstPosCalc(SZNr)获得机器人虚拟轴实际位置
pos_outofsoftend=Outofsoftend(zielpos.E3,9)
判断伺服焊钳实际位置是否超程,并发出提示信息
CASE10伺服NZ铆钳1
zielpos.E4=IstPosCalc(SZNr)获得机器人虚拟轴实际位置
pos_outofsoftend=Outofsoftend(zielpos.E4,10)
判断伺服焊钳实际位置是否超程,并发出提示信息
CASE11伺服NZ铆钳2
zielpos.E5=IstPosCalc(SZNr)获得机器人虚拟轴实际位置
pos_outofsoftend=Outofsoftend(zielpos.E5,11)
判断伺服焊钳实际位置是否超程,并发出提示信息
CASE12伺服CZ铆钳1
zielpos.E6=IstPosCalc(SZNr)获得机器人虚拟轴实际位置
pos_outofsoftend=Outofsoftend(zielpos.E6,12)
判断伺服焊钳实际位置是否超程,并发出提示信息
DEFAULT
HALT
ENDSWITCH
ENDIF
IFpos_outofsoftendTHEN位置超出极限设置
gotoFctEnd调步到结尾
ENDIF
ENDFOR
FORi=1TO6
$ACC_EXTAX[i]=100提前运行中外部轴的加速度
$VEL_EXTAX[i]=100提前运行中外部轴的轴速度
ENDFOR
IF$ROB_CALANDNOTpos_outofsoftendTHEN
掌握所有机器人轴后,将设置此输出
asyptpzielpos如果不超程执行PTP外部虚拟轴的实际位置
ENDIF
FctEnd:
ENDIF
END
设置额定位置有效
DEFSetSollpos(SollState:IN)
BoolSollState激活位置有效
IFSollStateTHEN
$OUT[O_SZ1_SPos_g]=TRUEA716焊钳位置有效
$OUT[O_SZ2_SPos_g]=TRUE二号钳位置有效
$OUT[O_SZ3_SPos_g]=TRUE三号钳位置有效
IFMIT_NZ1_ServTHEN如果伺服有钉铆钳1
$OUT[O_NZ1_SPos_g]=TRUE位置有效
ENDIF
IFMIT_NZ2_ServTHEN如果伺服有钉铆钳2
$OUT[O_NZ2_SPos_g]=TRUE位置有效
ENDIF
IFMIT_CZ1_ServTHEN如果伺服无钉铆钳1
$OUT[O_CZ1_SPos_g]=TRUE位置有效
ENDIF
IFMIT_CZ2_ServTHEN如果伺服无钉铆钳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
IFMIT_NZ1_ServTHEN
$OUT[O_NZ1_SPos_g]=FALSE
ENDIF
IFMIT_NZ2_ServTHEN
$OUT[O_NZ2_SPos_g]=FALSE
ENDIF
IFMIT_CZ1_ServTHEN
$OUT[O_CZ1_SPos_g]=FALSE
ENDIF
IFMIT_CZ2_ServTHEN
$OUT[O_CZ2_SPos_g]=FALSE
ENDIF
ENDIF
END
;ENDFOLD
;
DEFFCTBOOLFctDestPos(SZNr:IN)反馈焊钳位置无效
INTSZNr
BOOLFctDestPosVal
SWITCHSZNr
CASE1
FctDestPosVal=$IN[I_SZ1_F_Ziel]E773目标位置无效
CASE2
FctDestPosVal=$IN[I_SZ2_F_Ziel]
CASE3
FctDestPosVal=$IN[I_SZ3_F_Ziel]
CASE4
FctDestPosVal=$IN[I_NZ1_F_Ziel]
CASE5
FctDestPosVal=$IN[I_NZ2_F_Ziel]
CASE6
FctDestPosVal=$IN[I_CZ1_F_Ziel]
CASE7
FctDestPosVal=$IN[I_CZ2_F_Ziel]
ENDSWITCH
RETURN(FctDestPosVal)函数反馈值
ENDFCT
整体上说明当虚拟外部轴报滞后故障时,其主要是由软PLC的反馈点$softplcbool[5]来控制的.
责任编辑:lq
;ENDFOLD
;ENDFOLD
原文标题:KUKAC4机器人焊钳拉拽程序分析sg_fehler ()w
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
评论