在 KSS 8.x 中有两个任务同时运行 机器人解释器 (运行机器人运动程序及其逻辑) 控制解释器 (运行一个并行控制程序) 程序 SPS.SUB 的结构 1 DEF SPS ( ) 2 DECLARATIONS 3 INI 4 5 LOOP 6 WAIT FOR NOT($POWER_FAIL) 7 TORQUE_MONITORING() 8 9 USER PLC 10 ENDLOOP SUBMIT 解释器的状态SUBMIT 解释器正在运行SUBMIT 解释器停止反选了 SUBMIT 解释器 控制解释器
DEF SPS ()
-SPS初始化-
VW (#VW_SPS_INIT,TRUE)
USR_S程序初始化-
VW_USR_S (#USR_INIT)
INTERRUPTDECL 91 WHEN $PRO_STATE1==#P_FREE DO VW(#VW_P_FREE,TRUE)
-没有选择程序-就执行这段VW程序-
INTERRUPTON 91
INTERRUPTDECL 92 WHEN $PRO_STATE1==#P_RESET DO VW(#VW_P_RESET,TRUE)
-程序复位-就执行这段VW程序-
INTERRUPTON 92
MAKROSTEP(1)STEP重回第1步
MAKROTRIGGER(0,0) -TRIGGER控制值清0-
LOOP –SPS循环执行的程序-
VW (#VW_SPS_CYC,TRUE) -循环执行的SPS程序-
VW (#VW_ZANGE,TRUE) -钳工具程序-
MAKROSPS()-STEP重开始循环
MAKROSTEP(0) -TRIGGER控制值清0开始循环-
VW_USR_S (#USR_LOOP) -循环执行USR_S.LOOP 程序
WAITFOR NOT $POWER_FAIL –有电源故障,不再循环-
ENDLOOP
END
SUBMIT 解释器不能用于对时间要求严格的应用场合!对这类情况必须采用 PLC。原因:SUBMIT 解释器与机器人解释器和 I/O 管理器共享系统功率,其中,机器人解释器和 I/O 管理器具有更高的优先级。因此,SUBMIT 解释器不会定期在机器人控制系统的 12 ms 插值周期内连续运行。
此外,SUBMIT 解释器的运行时间也无规律可循。SUBMIT 解释器的运行时间受 SUB 程序行数的影响。注释行和空行对此也有影响。
自动启动 SUBMIT 解释器
SUBMIT 解释器在机器人控制系统接通时自动启动
启动的是在 KRC/STEU/MADA/$custom.dat 文件中定义的程序
$PRO_I_O[]="/R1/SPS()"
通过状态显示 SUBMIT 解释器中的状态栏直接操作。触摸时将打开一个含有可执行选项的窗口。
给 SUBMIT 解释器编程时的特点
1. 不能执行任何机器人运动指令,如:3. 位于 LOOP 和 ENDLOOP 行之间的指令始终在 “ 后台 ” 处理
4. 要避免由等待指令或等待循环造成任何会进一步推迟处理 SUBMIT 解释器的停止
5. 可切换输出端
警告!
对机器人解释器与 SUBMIT 解释器是否同时访问同一个输出端不予检查,因为在某些情况下可能希望如此。
因此,用户必须仔细检查输出端的分配。否则可能会在例如安全装置处出现意外的输出信号。会造成死亡、重伤或巨大的财产损失。
在测试运行方式下,不能从 SUBMIT 解释器写入 $OV_PRO,因为对于在工业机器人处工作的用户来说,这种变化可能是意想不到的。可能会造成人员死亡、严重身体伤害或巨大的财产损失。
警告!
尽量避免通过 SUBMIT 解释器更改与安全相关的信号和变量(例如:运行方式、紧急停止、保护门触点)。
如需进行更改,则在连接所有与安全有关的信号和变量时必须使其不会由 SUBMIT 解释器或 PLC 引致威胁安全的状态。
给 SUBMIT 解释器编程时的操作步骤:
1. 在停止或反选的状态编程
2. 标准程序 SPS.sub 被载入编辑器
3. 执行必要的声明和初始化。为此应使用准备好的 Fold
4. 在 Fold USER PLC 中扩展程序
5. 关闭并保存 SUBMIT 解释器
6. 如果不能自动提交 (Submit),则手动启动
根据 SUBMIT 解释器中快闪编程的程序举例
DEF SPS( ) DECLARATIONS DECL BOOL flash ;在 $CONFIG.dat 中声明 INI flash = FALSE $TIMER[32]=0 ; 复位 TIMER[32] $TIMER_STOP[32]=false ; 启动 TIMER[32] ... LOOP ... USER PLC IF ($TIMER[32]>500) AND (flash==FALSE) THEN flash=TRUE ENDIF IF $TIMER[32]>1000 THEN flash=FALSE $TIMER[32]=0 ENDIF ; 分配给一个灯 (输出端 99 ) $OUT[99] = flash ... ENDLOOP审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !