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

28 篇文章 38 订阅

         熟悉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 ,你们想想十分可以自己构建呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值