我曾在前文讲述过,CFC的实质就是可以自由移动的FBD,因此CFC和FBD的使用可以说是如出一辙,而FBD和LD又有着千丝万缕的联系,CFC实现上升沿和下降沿触发就是对功能块的调用。
F_TRIG 是指下降沿触发,其中F是英文FALL的缩写,是指下降的意思。
R_TRIG 是指上升沿触发,其中R是英文RISE 的缩写,是指上升的意思。
顺便说一句,当初我刚接触的时候,总是把F_TRIG 当成上升沿触发,因为我一看到F 就理所当然的把它当成了上升,可能是这字母会产生上升的感觉吧,以至于做了很多的无用功,希望大家引以为戒。
我们先看一下在LD 和FBD中是如何实现上升沿和下降沿触发的
图一LD实现边沿触发
图二 FBD实现边沿触发
如图一 图二 所示,是分别用LD 和FBD实现边沿触发,在这里LD 直观的优势就体现出来了,FBD的边沿触发总有种怪怪的感觉,看上去很不直观。
其实,用CFC和FBD是一模一样的,只是,它的位置可以随意变动,我们来看具体例子
图三 CFC实现边沿触发
如图三所示,这是用CFC实现的边沿触发,可以看到,它和FBD是一模一样的,只是它的变量的位置发生了随意移动,这正是它比FBD的优势所在,简直就是强迫症的福音。
在CFC中,我们既可以使用直接输出,也可以使用实例名也就是功能块名(西门子博途中称之为背景数据块)进行调用。
图四 使用实例名调用边沿触发
如图四所示,看黄色荧光笔部分,就是使用实例名调用了边沿触发功能块的输出。R_TRIG_0.Q和图三中的的变量R是等价的,同样,F_TRIG_0.Q和图三中的变量F也是等价的。这样的目的是方便我们优化程序结构。
以上,就是在CFC中如何使用边沿触发,CFC和FBD在本质上是没有区别的,但它更加灵活直观,希望大家尽量使用CFC,接触新事物。