我們在很多時候都會遇到機器人的虛擬外部軸滯后故障報警,它的報警時如何發(fā)出的呢?
報警中的滯后故障:
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滯后錯誤,需要單步確認(rèn)!
......
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跟隨錯誤,等到?jīng)]有跟隨錯誤!
....
--產(chǎn)生報警的程序設(shè)置—-
GLOBALINTERRUPTDECL 8 WHEN $softplcbool[5] DO SZIntR(7)中斷程序激活滯后故障,$softplcbool[5]觸發(fā)中斷程序.
通過中斷程序我們可以知道機器人虛擬外部軸的滯后故障是由軟PLC的反饋點引起的,說明滯后故障是由軟PLC軟件監(jiān)控產(chǎn)生的.
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在斷開機器人程序驅(qū)動,PLC提示錯誤
nRintMsgHandle[2] = SZMsg(2) 發(fā)出提示信息SZ1程序模式下的跟隨錯誤
WAITFOR $softplcbool[6]==FALSE 等待沒有軟PLC的提示信息
SF_Vorwarnung=FALSE 預(yù)警
WAITFOR $IN[I_SZ1_IPos_g] 等待E716位置有效
IF(nRintMsgHandle[2] > 0)Then 反饋值是整數(shù)
MSG_DEL = Clear_KrlMsg (-99) ; 清除提現(xiàn)狀態(tài)信息
nRintMsgHandle[2]=-1
ENDIF
ELSE機器人程序在執(zhí)行過程中
IF(Handbetrieb==FALSE)THEN如果機器人不是外部自動模式被認(rèn)為是手動準(zhǔn)備
F_Handbetrieb=TRUE 故障手動標(biāo)識位
IF($softplcint[1]>0)THEN有外部軸被使用
$OUT[O_SZ1_F_Schl]=TRUE ---A131焊鉗拉拽故障PLC反饋點
ENDIF
nRintMsgHandle[1] = SZMsg(1)
發(fā)出提示信息: 程序模式下SZ1滯后錯誤,需要單步確認(rèn)!
WHILE Handbetrieb==FALSE 關(guān)閉手動準(zhǔn)備
ENDWHILE
IF(nRintMsgHandle[1] > 0)Then
MSG_DEL= Clear_KrlMsg (-99) ;清除故障信息
nRintMsgHandle[1]=-1
ENDIF
ENDIF
IF NOT F_Handbetrieb THEN 沒有故障手動標(biāo)識位
nRintMsgHandle[1] = SZMsg(1)
發(fā)出提示信息:程序模式下SZ1滯后錯誤,需要單步確認(rèn)!
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
---機器人手動時的拉拽故障被觸發(fā)--
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:操作確認(rèn)鍵時的滯后誤差
$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 7 -----1到7軸
FrgSZ=FctFrgSZ(SZNr)焊鉗1的A715激活焊鉗控制功能
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程序運行中出現(xiàn)的滯后誤差
ELSE; 程序狀態(tài)是不激活
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網(wǎng)絡(luò)驅(qū)動這里值不使用,沒有電源故障
sf_prog_status=#driveoff_motion
驅(qū)動裝置關(guān)斷時的滯后誤差
ErrSZNr = SZNr 記錄發(fā)出故障信息用的惡故障的鉗號
SyncMoveMessage(18, #QuitMsg, ErrSZNr);
故障信息:鉗子處于非法位置
ErrSZNr =-1
ENDIF
ELSE 顯示機器人可以移動
IF NOT $power_fail THEN 沒有電源故障
sf_prog_status=#man_motion 用運行驅(qū)動裝置時的滯后誤差
MsgNum=6
ENDIF
ENDIF
ENDIF
InvDestPos=FctDestPos(SZNr) E773目標(biāo)位置無效
IF InvDestPos THEN
ErrSZNr= SZNr
SyncMoveMessage(19, #QuitMsg, ErrSZNr); 發(fā)出故障信息:目標(biāo)位置無效
ErrSZNr=-1
sf_prog_status=#dest_invalid
ENDIF;目標(biāo)位置無效
ENDIF
ENDFOR
;產(chǎn)生訊息
IF MsgNum > 0 THEN 發(fā)出報警信息
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 用運行驅(qū)動裝置時的滯后誤差
Fahrt_SG_Istpos() 異步行進到實際位置
CASE #prg_motion 程序運行中出現(xiàn)的滯后誤差
IF $ROB_STOPPED THEN 機器人停止
IF $EXT==FALSE THEN 外部自動關(guān)閉
SetSollPos(FALSE) 關(guān)閉實際位置有效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發(fā)出實際位置有效
IF $softplcbool[6]==FALSE THEN 沒有故障反饋點
schleppfehler=FALSE
sf_prog_status=#SZ_io
ENDIF
ENDIF
ENDIF
ENDIF
CASE #driveoff_motion 驅(qū)動裝置關(guān)斷時的滯后誤差
IF $EXT==FALSE THEN 外部自動關(guān)閉
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由于目標(biāo)位置無效導(dǎo)致的滯后誤差
Fahrt_SG_Istpos()
CASE #user_act操作確認(rèn)鍵時的滯后誤差
Fahrt_SG_Istpos()
CASE #SZ_io無滯后誤差
IF NOT $softplcbool[5] AND NOT $softplcbool[6] THEN
schleppfehler=FALSE
ENDIF
ENDSWITCH
ENDIF
SWITCH $ASYNC_STATE 同步系統(tǒng)狀態(tài)
CASE #BUSY 正在工作
async_active=TRUE
CASE #IDLE ; 異步運動完成
IF async_active THEN
schleppfehler = FALSE
sf_prog_status=#SZ_io
SetSollPos(TRUE)
async_active=FALSE
ENDIF
async_active=FALSE
ENDSWITCH
;
END
;ENDFOLD
異步行進到實際位置判斷
DEF Fahrt_SG_Istpos()
INT SZNr, i
E6AXIS zielpos
; 到當(dāng)前位置的異步驅(qū)動
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)
判斷伺服焊鉗實際位置是否超程,并發(fā)出提示信息
CASE 8伺服焊鉗2
zielpos.E2=IstPosCalc(SZNr)獲得機器人虛擬軸實際位置
pos_outofsoftend=Outofsoftend(zielpos.E2, 8)
判斷伺服焊鉗實際位置是否超程,并發(fā)出提示信息
CASE 9伺服焊鉗3
zielpos.E3=IstPosCalc(SZNr)獲得機器人虛擬軸實際位置
pos_outofsoftend=Outofsoftend(zielpos.E3, 9)
判斷伺服焊鉗實際位置是否超程,并發(fā)出提示信息
CASE 10伺服NZ鉚鉗1
zielpos.E4=IstPosCalc(SZNr)獲得機器人虛擬軸實際位置
pos_outofsoftend=Outofsoftend(zielpos.E4, 10)
判斷伺服焊鉗實際位置是否超程,并發(fā)出提示信息
CASE 11伺服NZ鉚鉗2
zielpos.E5=IstPosCalc(SZNr)獲得機器人虛擬軸實際位置
pos_outofsoftend=Outofsoftend(zielpos.E5, 11)
判斷伺服焊鉗實際位置是否超程,并發(fā)出提示信息
CASE 12伺服CZ鉚鉗1
zielpos.E6=IstPosCalc(SZNr)獲得機器人虛擬軸實際位置
pos_outofsoftend=Outofsoftend(zielpos.E6, 12)
判斷伺服焊鉗實際位置是否超程,并發(fā)出提示信息
DEFAULT
HALT
ENDSWITCH
ENDIF
IF pos_outofsoftend THEN位置超出極限設(shè)置
goto FctEnd調(diào)步到結(jié)尾
ENDIF
ENDFOR
FOR i = 1 TO 6
$ACC_EXTAX[i]=100提前運行中外部軸的加速度
$VEL_EXTAX[i]=100提前運行中外部軸的軸速度
ENDFOR
IF $ROB_CAL AND NOT pos_outofsoftend THEN
掌握所有機器人軸后,將設(shè)置此輸出
asyptp zielpos 如果不超程執(zhí)行PTP外部虛擬軸的實際位置
ENDIF
FctEnd:
ENDIF
END
設(shè)置額定位置有效
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沒有激活位置有效 就關(guān)閉焊鉗或鉚鉗的位置控制
$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目標(biāo)位置無效
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)函數(shù)反饋值
ENDFCT
整體上說明當(dāng)虛擬外部軸報滯后故障時,其主要是由軟PLC的反饋點$softplcbool[5]來控制的.
;ENDFOLD
;ENDFOLD
審核編輯 :李倩
-
機器人
+關(guān)注
關(guān)注
211文章
28524瀏覽量
207544 -
程序
+關(guān)注
關(guān)注
117文章
3792瀏覽量
81167 -
焊鉗
+關(guān)注
關(guān)注
0文章
16瀏覽量
1403
原文標(biāo)題:KUKAC4機器人焊鉗拉拽程序分析sg_fehler ()w
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論