IEC61499编程实战(2)- SWITCH控制
熟悉C/C++ 编程的人都知道SWITCH 语句,该语句根据SWITCH 语句中的变量,选择不同的程序段执行,因此,又称为情况语句。这个语句在程序控制中是非常有用的。比如:
switch TASK_NUM {
case 1:{ //TASK1
break;
}
case 2:{ //TASK2
break;
}
case 3:{ //TASK3
break;
}
case4:{ //TASK4
break;
}
}
在IEC61499 功能块网络中,同样需要根据不同的变量,选择不同的功能块序列执行。这个变量可以是控制命令(command),工艺配方(Recipe)或者特征(Feature)的索引。
举个例子,一个机器人控制的装配线,就具有三个不同的操作,移动,放置和旋螺丝。它们分别用三个功能块实现E_MOVE,E_PLACE 和E_SCREW.使用一个E_SWITCH 功能块呢能够选择不同的功能块执行。NUM 是选择变量。
实例
使用按键选择LED 灯闪烁或者渐变。程序如下
在这里,IX连接按键输入,选择LED闪烁,或者渐变的切换。我们从《IEC61499编程实战(1)》了解了使用E_R_TRIG ,E_T_FF 功能块来判断和保持按键状态。通过E_SWITCH 来选择两个任务Flash (闪烁)或者Fade(渐变)。Flash 和Fade 分别是一个子应用(sub application),建立子应用的具体方法参见4diac 的网站信息。两个任务不是同时工作的,所以它们输出的结果只要简单地OR 就可以连接到QX 功能块的OUT数据输入。
Flash 子应用
Fade 子应用
Fade 程序稍微复杂了一点,从《IEC61499编程实战(1)》知道,LED 的亮度是由PWM 的占空比决定的。我们在PWM 的基础之上,添加了一个动态改变占空比的三个功能块E_CYCLE1,E_SWITCH_1 E)CTU_1。 显然改变占空比的速度要慢一点。
多路SWITCH 的实现
在实际应用中仅仅是两路SWITCH 是不够的,需要更多路的SWITCH ,你们想想十分可以自己构建呢?
推荐阅读
-
Java并发编程实战(chapter_2)(对象发布、不变性、设计线程安全类)
-
08_Python的控制判断循环语句2(break、continue)_Python编程之路
-
2-5Java基础语法----程序流程控制(2)switch-case结构
-
shell编程-流程控制-case语句(与Java种的switch语句类似)
-
钢七连实战C2-P1:游戏编程 大地图移动
-
Python高效编程实战---2、对象迭代与反迭代技巧
-
《scala编程实战》读书笔记------前言和第一章前2小节
-
08_Python的控制判断循环语句2(break、continue)_Python编程之路
-
Java并发编程实战(chapter_2)(对象发布、不变性、设计线程安全类)
-
IEC61499编程实战(2)- SWITCH控制