FB PSPS 是被广泛使用的一种用户过程检测条件应用程序核心应用:
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 -提前执行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时执行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)到达轨迹位之后执行
;ENDFOLD
DEF FB_CHECK ()
IF $CYCFLAG[254] AND ($TIMER[61]<0)THEN 有M254后先暂时停职执行运动
BRAKE
IF $PRO_MODE<>#BSTEP THEN 程序模式不是单步
WAITFOR ($TIMER[61]>0)
ENDIF
ENDIF
$LOOP_CONT=TRUE 用于激活模拟前提起值1,证实模拟已经结束.
WAITFOR $CYCFLAG[254] OR ( NOT ($LOOP_CONT) AND ($MODE_OP<>#EX))
-等待M254 或者执行模拟,不在外部自动时执行.
$LOOP_CONT=TRUE 模拟指令关闭
END
而在点与点之间移动时控制停职的程序是中断指令FB_STOP:
INTERRUPTDECL 10 WHEN $CYCFLAG[254]==FALSE DO VW(#FB_STOP,TRUE)
DEF FB_STOP () 机器人执行轨迹过程中执行
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当前移动状态点到点,直线,圆弧 IN_APO_1 检测当前运动状态是否不正确
IF((IN_APO_1) OR (NOT SEARCH_ACTIV))THEN
$VW_FB_HOLD=TRUE
ENDIF
IF $PRO_MOVE THEN -程序是处在运行状态-
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 直到循环指令
-----模拟控制---
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 ------------如果没有提示写入信息就提示 “等待关闭 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 当指令循环
IF NOT $LOOP_CONT THEN 如果模拟激活 $LOOP_CONT=FALSE激活模拟指令
$CYCFLAG[254]=TRUE M254被强制置1
FOR INT_N=1 TO 8 使用循环语句
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的变量数
VW_VERR[INT_N].NAME[]="SIMU " -----提示模拟
ENDIF
ENDFOR
WRITE_VERR_COND (FALSE) -----关闭连锁控制条件M255,使其可以被改变
EXIT_OK=TRUE ------可以退出
$LOOP_CONT=TRUE ---模拟结束--
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 结束循环
$LOOP_CONT=TRUE
FB_LOAD_MSG () 连锁条件满足后用于模拟的信息清空
WAITSEC 0.024
$VW_FB_HOLD=FALSE
END
基础知识:
TRIGGER WHEN DISTANCE= 位置 DELAY=时间 DO 指令
触发位置:规定在哪个点触发指令。可能的值:
0:指令在动作语句的起点处被触发。
1:指令在目标点处被触发。如果目标点是轨迹逼近形式,则指令将在
该轨迹逼近弧形的中点处被触发。
时间:以此可确定所选位置的延迟时间
可应用正值和负值
时间以毫秒 (ms) 为单位表示
可毫无问题地应用 10,000,000 ms 及以下的时间值
时间值过大或过小时最迟或最早将于切换极限处切换
全部0条评论
快来发表一下你的评论吧 !