FBPSPS 是被廣泛使用的一種用戶過程檢測條件應(yīng)用程序核心應(yīng)用:
1. 檢測變量改變FB PSPS = .......
2. 軌跡運行條件等待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個程序段
;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運動的過程中到達P4時執(zhí)行SPS_TRIG(10004)程序
FB_CHECK ()程序主要是改變$CYCFLAG[254]值后在固定點位進行等待.
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)到達軌跡位之后執(zhí)行
;ENDFOLD
DEF FB_CHECK ()
IF $CYCFLAG[254] AND ($TIMER[61]<0)THEN 有M254后先暫時停職執(zhí)行運動
BRAKE
IF $PRO_MODE<>#BSTEP THEN 程序模式不是單步
ENDIF
ENDIF
$LOOP_CONT=TRUE 用于激活模擬前提起值1,證實模擬已經(jīng)結(jié)束.
WAITFOR $CYCFLAG[254] OR ( NOT ($LOOP_CONT) AND ($MODE_OP<>#EX))
-等待M254 或者執(zhí)行模擬,不在外部自動時執(zhí)行.
$LOOP_CONT=TRUE 模擬指令關(guān)閉
END
而在點與點之間移動時控制停職的程序是中斷指令FB_STOP:
INTERRUPTDECL 10 WHEN $CYCFLAG[254]==FALSE DO VW(#FB_STOP,TRUE)
DEF FB_STOP () 機器人執(zhí)行軌跡過程中執(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當前移動狀態(tài)點到點,直線,圓弧 IN_APO_1 檢測當前運動狀態(tài)是否不正確
IF((IN_APO_1) OR (NOT SEARCH_ACTIV))THEN
$VW_FB_HOLD=TRUE
ENDIF
IF $PRO_MOVE THEN -程序是處在運行狀態(tài)-
BRAKE --運動停止--
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 -----請求可以模擬----
EXIT_OK=FALSE
REPEAT 直到循環(huán)指令
-----模擬控制---
WHILE NOT ($CYCFLAG[254] OR ( NOT ($LOOP_CONT) AND ($MODE_OP<>#EX)))
-沒有 M254 連鎖條件或者 不在外部自動時按了模擬按鍵
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 ------------如果沒有提示寫入信息就提示 “等待關(guān)閉 FB密碼號”
$LOOP_MSG[]="KeyWord_WarteFBAus"
ENDIF
ENDIF
IF $PRO_MOVE THEN ------程序運行
BRAKE ------------暫停移動
IF NOT $ON_PATH THEN ---------沒在軌跡上
PTP $AXIS_ACT 去機器人當前軸的位置
ENDIF
ENDIF
IF $PRO_MODE1==#BSTEP THEN-----如果程序模式換成單步
;RETURN 控制指令
ENDIF
WAITSEC 0.001
ENDWHILE 當指令循環(huán)
IF NOT $LOOP_CONT THEN 如果模擬激活 $LOOP_CONT=FALSE激活模擬指令
$CYCFLAG[254]=TRUE M254被強制置1
FOR INT_N=1 TO 8 使用循環(huán)語句
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 -沒有模擬你的話
$TIMER[62]=-150 過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ǔ)知識:
TRIGGER WHEN DISTANCE= 位置 DELAY=時間 DO 指令
觸發(fā)位置:規(guī)定在哪個點觸發(fā)指令。可能的值:
? 0:指令在動作語句的起點處被觸發(fā)。
? 1:指令在目標點處被觸發(fā)。如果目標點是軌跡逼近形式,則指令將在
該軌跡逼近弧形的中點處被觸發(fā)。
時間:以此可確定所選位置的延遲時間
? 可應(yīng)用正值和負值
? 時間以毫秒 (ms) 為單位表示
? 可毫無問題地應(yīng)用 10,000,000 ms 及以下的時間值
? 時間值過大或過小時最遲或最早將于切換極限處切換
-
PS
+關(guān)注
關(guān)注
0文章
73瀏覽量
36338 -
編程
+關(guān)注
關(guān)注
88文章
3519瀏覽量
93252
原文標題:FB PSPS 的用法詳解
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論