FBPSPS的核心应用用法详解数据大全

描述

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 及以下的时间值

 时间值过大或过小时最迟或最早将于切换极限处切换

PS

PS

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分