从FOLGEN程序中如何实现自动回到CELL程序/开始执行FOLGEN程序

描述

程序

在自动循环过程中: 

程序

程序

IF($OUT[PF0]AND VW_CALL_CELL AND ( NOT $PRO_MOVE) AND ($MODE_OP==#EX))THEN

机器人在原位(A15),执行了CALL程序,机器人没有程序执行,处在外部自动状态

CWRITE($CMD,STAT,MODE,"STOP 1")   直接对当前成程序进行控制,程序停止。

CWRITE($CMD,STAT,MODE,"CANCEL 1")  直接对当前成程序进行控制,程序退出。

P_OLD=P_SELECT

CWRITE($CMD,STAT,MODE,"RUN /R1/CELL ()")执行CELL程序

ENDIF

这短语是用来实现执行完Folge程序后由自动回到CELL的功能。

......

------------------------------------------------------

程序

VW (#VW_AUE_WAIT,TRUE)

AUE_WAIT()

BOOL SIMU_START

INT P

$ADVANCE=DEF_ADVANCE –系统规定DEF_ADVANCE=1-因此预执行只能执行1步

IF(VW_INB AND$EXTSTARTTYP)THEN –此处正常不执行

-在CELL中将VW_INB关闭-$EXTSTARTTYP外部启动的状态TRUE/FALSE

N_VW=FALSE

RETURN

ENDIF

$H_POS=$AXIS_ACT -当前轨迹在HOME位

$LOOP_CONT=TRUE –激活模拟功能

$LOOP_MSG[]="KeyWord_WarteFolgestartSRB  发出提示信息:等待Folgestart                                                                                                  "

REPEAT –开始执行循环指令

P0_MERKER=TRUE –机器人在HOME位

BITSHIFT=1

P=0

N_VW=FALSE

IF VW_CBY_CELL THEN –在CELL中激活VW_CBY_CELL=TRUE

IF(P_TYPE == 0)THEN  -程序控制类型=0 整数控制方式

P = PRG_NR

ELSE 

P = LOG_2(PRG_NR) -用于2进制程序号计算

ENDIF

ENDIF

IF(P<>P_OLD)THEN 

–给入程序号与经过VW (#VW_AUE_INIT,TRUE)程序后的保存程序号P_OLD是否相同

N_VW=TRUE  -不同FOLGEN程序会跳到最后一步

ELSE -相同没有变化

PRG_NR_REFL = PRG_NR -给入程序号发并发出反馈给PLC程序号

ENDIF

IF(P==0) AND VW_INB AND (($MODE_OP==#T1) OR ($MODE_OP==#T2))THEN

-没有给入程序号-在手动模式选择FOLGEN程序时,进行模拟才能启动FOLGEN程序

- VW_INB被在config.dat文件被设定为FALSE

N_VW=FALSE

SIMU_START=TRUE -启动

ELSE

SIMU_START=FALSE

ENDIF

IF((P==0) OR (P==P_OLD)) AND  NOT ($LOOP_CONT) AND (($MODE_OP==#T1) OR ($MODE_OP==#T2))THEN

-如果没有程序号给入-或程序号与原来程序号相同 –没有$LOOP_CONT开启模拟-手动状态

N_VW=FALSE

SIMU_START=TRUE  启动模拟

ENDIF

--------

IS_CELL () –显示选择的程序名称是否是从CELL程序中执行跳过来的.

--------

IF  NOT VW_CBY_CELL THEN

-如果不是CELL程序执行跳过来的–用于直接选择FOLGEN程序,而没有选择CELL

IF($MODE_OP==#T1) OR ($MODE_OP==#T2)THEN –在手动状态时

N_VW=FALSE

ELSE

VW_CALL_CELL=TRUE

$LOOP_MSG[]="KeyWord_FuerAutomatikCellAnwaehlen                                                                                              "  -提示:选择执行CELL程序

WHILE   NOT (($MODE_OP==#T1) OR ($MODE_OP==#T2)) -如果恢复到自动模式时才能下行

WAITSEC 0.1 -等待0.1秒

ENDWHILE

$LOOP_MSG[]="KeyWord_WarteFolgestartSRB                                                                                                    "   -提示: 等待程序启动

ENDIF

ENDIF

---------

OUT_WSLAV=TRUE

OUT_WPROZ=FALSE

WAITSEC 0.001

UNTIL((($IN[SRB]==TRUE) AND (P>0)) OR (N_VW==TRUE)) OR SIMU_START

一直到有E9PLC给出程序启动,有P程序号大于0, SIMU_START模拟才能跳出循环质量

-N_VW==TRUE -程序号发生变化程序号与之前CELL给入的程序号不同

退出循环指令—前提是程序启动给入,没有程序启动就得给模拟。

---------

$LOOP_MSG[]="  "提示空信息

OUT_WSLAV=FALSE

OUT_WPROZ=FALSE

------

IF N_VW==TRUE THEN –有N_VW没有反馈程序号

PRG_NR_REFL = 0

ELSE

P0_MERKER=FALSE

ENDIF

------

$LOOP_CONT=TRUE ---恢复模拟作准备

CHECK_EMI()-----获取EMI记录的内部状态

END

----------------------------------

审核编辑 :李倩

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

全部0条评论

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

×
20
完善资料,
赚取积分