FBPSPS 是被廣泛使用的一種用戶過(guò)程檢測(cè)條件應(yīng)用程序核心應(yīng)用:
1. 檢測(cè)變量改變FB PSPS = .......
2. 軌跡運(yùn)行條件等待FB_STOP()
3. 軌跡步等待FB_CHECK()
舉例分析:
;FOLD PTP VB=100% VE=100% ACC=100% RobWzg=2 Base=0 SPSTrig=0[1/100s] P ;%{P}%MKUKATPVW,%CMOVE8,%VPTP,%P 1:1, 2: VB=,3:100, 4:%, 5: VE=, 6:100, 7:%, 8: ACC=, 9:100, 10:%, 11: RobWzg=, 12:2, 13:Base=, 14:0, 15: SPSTrig=, 16:0, 17:[1/100s], 18: P, 19:3, 20:-1, 21:3
;FOLD 1: FB PSPS = M2 & M30 & M32& M34 & M35 & M37 & E74 & E77 ;%{SE}%MKUKATPVW %CVW_SPS %VFBPSPS %P 2:FB PSPS = M2 & M30& M32 & M34 & M35 & M37 & E74 & E77,3:FBPSPS
;ENDFOLD
;FOLD {H}
VW_MPARA_ACT=P3_D
Act_P1 = P3
Act_P2 = P3
VW(#MPARA,TRUE)
SPS_FERTIG=FALSE
TRIGGERWHENDISTANCE=1 DELAY=0 DO SPS_TRIG(10003)PRIO=-1
PTP P3 C_PTP C_VEL
$ADVANCE=1 -提前執(zhí)行1個(gè)程序段
;ENDFOLD
;ENDFOLD
;FOLD PTP VB=100% VE=100% ACC=100% RobWzg=2 Base=0 SPSTrig=0[1/100s] P ;%{P}%MKUKATPVW,%CMOVE8,%VPTP,%P 1:1, 2: VB=,3:100, 4:%, 5: VE=, 6:100, 7:%, 8: ACC=, 9:100, 10:%, 11: RobWzg=, 12:2, 13:Base=, 14:0, 15: SPSTrig=, 16:0, 17:[1/100s], 18: P, 19:4, 20:-1, 21:4
;FOLD 1: FB PSPS = M2 & M30 & M32 & M34 & M35 & M37 &E74 & E77 ;%{SE}%MKUKATPVW %CVW_SPS%VFBPSPS %P 2:FB PSPS = M2 & M30 & M32 & M34 & M35 & M37& E74 & E77,3:FBPSPS
;ENDFOLD
;FOLD {H}
VW_MPARA_ACT=P4_D
Act_P1 = P4
Act_P2 = P4
VW(#MPARA,TRUE)
SPS_FERTIG=FALSE
TRIGGERWHENDISTANCE=1 DELAY=0 DO SPS_TRIG(10004)PRIO=-1
PTP P4 C_PTP C_VEL
$ADVANCE=1
也就是從P3到P4運(yùn)動(dòng)的過(guò)程中到達(dá)P4時(shí)執(zhí)行SPS_TRIG(10004)程序
FB_CHECK ()程序主要是改變$CYCFLAG[254]值后在固定點(diǎn)位進(jìn)行等待.
VALCYCFL30=$CYCFLAG[254]
$CYCFLAG[254]=($CYCFLAG[2] AND$CYCFLAG[30] AND $CYCFLAG[32] AND $CYCFLAG[34] AND $CYCFLAG[35] AND$CYCFLAG[37] AND $IN[74] AND $IN[77]) AND $CYCFLAG[255] OR ($TIMER[61]<0)
VW(#FB_CHECK,TRUE)到達(dá)軌跡位之后執(zhí)行
;ENDFOLD
DEF FB_CHECK ()
IF $CYCFLAG[254] AND ($TIMER[61]<0)THEN 有M254后先暫時(shí)停職執(zhí)行運(yùn)動(dòng)
BRAKE
IF $PRO_MODE<>#BSTEP THEN 程序模式不是單步
ENDIF
ENDIF
$LOOP_CONT=TRUE 用于激活模擬前提起值1,證實(shí)模擬已經(jīng)結(jié)束.
WAITFOR $CYCFLAG[254] OR ( NOT ($LOOP_CONT) AND ($MODE_OP<>#EX))
-等待M254 或者執(zhí)行模擬,不在外部自動(dòng)時(shí)執(zhí)行.
$LOOP_CONT=TRUE 模擬指令關(guān)閉
END
而在點(diǎn)與點(diǎn)之間移動(dòng)時(shí)控制停職的程序是中斷指令FB_STOP:
INTERRUPTDECL 10 WHEN $CYCFLAG[254]==FALSE DO VW(#FB_STOP,TRUE)
DEF FB_STOP () 機(jī)器人執(zhí)行軌跡過(guò)程中執(zhí)行
INT INT_N
BOOL EXIT_OK
BOOL IN_APO_1
IN_APO_1= NOT (($MOVE_STATE==#PTP_AP02) OR ($MOVE_STATE==#LIN_AP02) OR ($MOVE_STATE==#CIRC_AP02))
$MOVE_STATE當(dāng)前移動(dòng)狀態(tài)點(diǎn)到點(diǎn),直線,圓弧 IN_APO_1 檢測(cè)當(dāng)前運(yùn)動(dòng)狀態(tài)是否不正確
IF((IN_APO_1) OR (NOT SEARCH_ACTIV))THEN
$VW_FB_HOLD=TRUE
ENDIF
IF $PRO_MOVE THEN -程序是處在運(yùn)行狀態(tài)-
BRAKE --運(yùn)動(dòng)停止--
ENDIF
---用于模擬控制--
FB_STATE.APO_2= NOTIN_APO_1
FB_STATE.N=FB_STATE.N+1
FB_STATE.HOLD=$VW_FB_HOLD
FB_SAVE_MSG () 保存上次模擬的信息
FB_LOOP_MSG () 寫入連鎖信息用于模擬使用
$LOOP_CONT=TRUE -----請(qǐng)求可以模擬----
EXIT_OK=FALSE
REPEAT 直到循環(huán)指令
-----模擬控制---
WHILE NOT ($CYCFLAG[254] OR ( NOT ($LOOP_CONT) AND ($MODE_OP<>#EX)))
-沒(méi)有 M254 連鎖條件或者 不在外部自動(dòng)時(shí)按了模擬按鍵
IF($LOOP_MSG[1]==" ") AND ($LOOP_MSG[2]==" ") AND ($LOOP_MSG[3]==" ")THEN
FB_LOOP_MSG () ------------提示等待信息用于模擬—寫提示模擬信息中
WAITSEC 0.1
IF($LOOP_MSG[1]==" ") AND ($LOOP_MSG[2]==" ") AND ($LOOP_MSG[3]==" ")THEN ------------如果沒(méi)有提示寫入信息就提示 “等待關(guān)閉 FB密碼號(hào)”
$LOOP_MSG[]="KeyWord_WarteFBAus"
ENDIF
ENDIF
IF $PRO_MOVE THEN ------程序運(yùn)行
BRAKE ------------暫停移動(dòng)
IF NOT $ON_PATH THEN ---------沒(méi)在軌跡上
PTP $AXIS_ACT 去機(jī)器人當(dāng)前軸的位置
ENDIF
ENDIF
IF $PRO_MODE1==#BSTEP THEN-----如果程序模式換成單步
;RETURN 控制指令
ENDIF
WAITSEC 0.001
ENDWHILE 當(dāng)指令循環(huán)
IF NOT $LOOP_CONT THEN 如果模擬激活 $LOOP_CONT=FALSE激活模擬指令
$CYCFLAG[254]=TRUE M254被強(qiáng)制置1
FOR INT_N=1 TO 8 使用循環(huán)語(yǔ)句
IF NOT $IN[VW_VERR[INT_N].IN] THEN 如果常為1的輸入E4081不是1就把它值1
VW_VERR[INT_N].IN=$IOSYS_IN_TRUE $IOSYS_IN_TRUE將輸入置1的變量數(shù)
VW_VERR[INT_N].NAME[]="SIMU " -----提示模擬
ENDIF
ENDFOR
WRITE_VERR_COND (FALSE) -----關(guān)閉連鎖控制條件M255,使其可以被改變
EXIT_OK=TRUE ------可以退出
$LOOP_CONT=TRUE ---模擬結(jié)束--
ELSE -沒(méi)有模擬你的話
$TIMER[62]=-150 過(guò)150后再刷新信息看連鎖條件是否有改變
$TIMER_STOP[62]=FALSE
WHILE NOT ( NOT $CYCFLAG[254] OR ($TIMER[62]>0))
ENDWHILE
IF $TIMER[62]>0 THEN
$TIMER_STOP[62]=TRUE
EXIT_OK=TRUE
ELSE
ENDIF
ENDIF
WAITSEC 0.001
UNTIL EXIT_OK 結(jié)束循環(huán)
$LOOP_CONT=TRUE
FB_LOAD_MSG () 連鎖條件滿足后用于模擬的信息清空
WAITSEC 0.024
$VW_FB_HOLD=FALSE
END
基礎(chǔ)知識(shí):
TRIGGER WHEN DISTANCE= 位置 DELAY=時(shí)間 DO 指令
觸發(fā)位置:規(guī)定在哪個(gè)點(diǎn)觸發(fā)指令。可能的值:
? 0:指令在動(dòng)作語(yǔ)句的起點(diǎn)處被觸發(fā)。
? 1:指令在目標(biāo)點(diǎn)處被觸發(fā)。如果目標(biāo)點(diǎn)是軌跡逼近形式,則指令將在
該軌跡逼近弧形的中點(diǎn)處被觸發(fā)。
時(shí)間:以此可確定所選位置的延遲時(shí)間
? 可應(yīng)用正值和負(fù)值
? 時(shí)間以毫秒 (ms) 為單位表示
? 可毫無(wú)問(wèn)題地應(yīng)用 10,000,000 ms 及以下的時(shí)間值
? 時(shí)間值過(guò)大或過(guò)小時(shí)最遲或最早將于切換極限處切換
-
PS
+關(guān)注
關(guān)注
0文章
73瀏覽量
36450 -
編程
+關(guān)注
關(guān)注
88文章
3628瀏覽量
93811
原文標(biāo)題:FB PSPS 的用法詳解
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論