通过CASE OF指令,可以比较容易实现类似顺控的功能,并且编程方法便捷、可读性较好。可以使用类似于下面的编程方式实现类似顺控的功能:
CASE 步骤号 OF //Int类型步骤号,一般位于FB的Static
0:
步骤0
逻辑编程 //一般初始步不执行具体操作,只是初始化,然后是等待开始
IF 条件 THEN
步骤号:=1;
ELSIF 错误 THEN
步骤号:=100;
END_IF;
1:
步骤1
逻辑编程
置位复杂指令i.REQ
IF 复杂指令i.DONE THEN
复位复杂指令i.REQ
步骤号:=2;
ELSIF 复杂指令i.ERROR
复位复杂指令i.REQ
步骤号:=100;
END_IF;
2:
步骤2
逻辑编程
置位复杂指令m.REQ
IF 复杂指令m.DONE THEN
复位复杂指令m.REQ
步骤号:=3;
ELSIF 复杂指令m.ERROR
复位复杂指令m.REQ
步骤号:=100;
END_IF;
.
.
.
n:
步骤n
逻辑编程
置位复杂指令x.REQ
IF 复杂指令x.DONE THEN
复位复杂指令x.REQ
步骤号:=n+1;
ELSIF 复杂指令x.ERROR
复位复杂指令x.REQ
步骤号:=100;
END_IF;
.
.
.
100:
错误处理 逻辑编程
步骤号:=0
END_CASE;
复杂指令0 //复杂指令调用
复杂指令1
.
.
.
复杂指令n
输出Busy、Done、Status等
复杂指令一般包含:通信、运动控制、读配方、写数据日志、读写数据记录、定时器等异步指令,这些指令通常不放在CASE语句的逻辑中,而是在最后统一调用。
一般通过复杂指令完成位、错误位等作为跳转条件。如果是定时器,也可以通过判断时间是否到达作为跳转条件。
例子:使用CASE OF指令编程运动控制,第一步相对运动以200mm/s的速度移动10000mm,第二步速度控制以100mm/s的速度移动15s,第三步停止。
图5为FB块的参数部分,图6为程序。
图5 FB参数
图6 源程序
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !