顾乔芝士网

持续更新的前后端开发技术栈

根据西门子例子,学习SCL中的CASE OF 指令如何实现顺控功能

通过CASE OF指令,可以比较容易实现类似顺控的功能,并且编程方法便捷、可读性较好。可以使用类似于下面的编程方式实现类似顺控的功能。

CASE 步骤号 OF //Int类型 其步骤号,一般位于FB的Static变量定义中。而需要注意的是复杂指令。复杂指令一般包含:通信、运动控制、读配方、写数据日志、读写数据记录、定时器等异步指令,这些指令通常不放在CASE语句的逻辑中,而是在最后统一调用。

一般通过复杂指令完成位、错误位等作为跳转条件。如果是定时器,也可以通过判断时间是否到达作为跳转条件。

case #Step_int of

0: //初始化

赋值#Step_int:=10;

出错,则赋值Step_int:=100;

10: 完成相应操作;

赋值#Step_int:=20;

出错,则赋值Step_int:=100;

20: 完成相应操作;

赋值#Step_int:=30;

出错,则赋值Step_int:=100;

100:错误处理;

错误处理完成,赋值#Step_int:=0;

end_case;

复杂操作1;

复杂操作2;

复杂操作N;

西门子例子:


在例子学习中,学到一个如何不用TRIG命令做上升沿的方法:

上升沿保持一个周期,实现方法为:

if #a and not #b then

#c_TRIG:=true;

end_if;

#b:=#a;

if #c_TRIG then

//else program;

c_TRIG:=0;

end_if;

再就是注意到了定时器的写法,CASE中定义定时器的使能和定时,以及使用定时器的输出,但是定时器拿到调用程序中来定义。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言