欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IEC61499编程实战(2)- SWITCH控制

程序员文章站 2022-03-12 15:28:10
...

         熟悉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 是选择变量。

IEC61499编程实战(2)- SWITCH控制

实例

使用按键选择LED 灯闪烁或者渐变。程序如下

IEC61499编程实战(2)- SWITCH控制

在这里,IX连接按键输入,选择LED闪烁,或者渐变的切换。我们从《IEC61499编程实战(1)》了解了使用E_R_TRIG ,E_T_FF 功能块来判断和保持按键状态。通过E_SWITCH 来选择两个任务Flash (闪烁)或者Fade(渐变)。Flash 和Fade 分别是一个子应用(sub application),建立子应用的具体方法参见4diac 的网站信息。两个任务不是同时工作的,所以它们输出的结果只要简单地OR 就可以连接到QX 功能块的OUT数据输入。

Flash 子应用

IEC61499编程实战(2)- SWITCH控制

Fade 子应用 

Fade 程序稍微复杂了一点,从《IEC61499编程实战(1)》知道,LED 的亮度是由PWM 的占空比决定的。我们在PWM 的基础之上,添加了一个动态改变占空比的三个功能块E_CYCLE1,E_SWITCH_1 E)CTU_1。 显然改变占空比的速度要慢一点。

IEC61499编程实战(2)- SWITCH控制

多路SWITCH 的实现

在实际应用中仅仅是两路SWITCH 是不够的,需要更多路的SWITCH ,你们想想十分可以自己构建呢?

相关标签: IEC61499 4DIAC