首先,我们要理解上升沿和下降沿的含义。
上升沿:前一个周期的按钮信号=0,当前周期的按钮信号=1,那么此时我们就认为是产生了上升沿的信号。
下降沿:前一个周期的按钮信号=1,当前周期的按钮信号=0,那么此时我们就认为是产生了下降沿的信号。
从上面的逻辑关系可以得出,我们要知道的是前一个周期的按钮信号的状态,因此,我们需要用一个变量来存储当前状态(所以只能用FB块来做,因为它有背景数据块,里面的static区可以记忆前一个周期的状态),然后用于下一个周期(对于下一个周期来说,当前周期就是前一个周期,大家可以好好想想。)
有了这种逻辑关系,那么我们就可以写程序了:如下图所示
沿信号只停留一个扫描周期
通过上面的这个程序,我们就得到了上升沿信号和下降沿信号。比如说,当形参“I_请求1”的实参”I0.0”从0变1时,那么形参“上升沿信号”就变为了1。此时,我们就可以用这个形参=1的信号来做事情了。
下面简单介绍个小案例,主要目的是理解整个编写过程,相当于一个小框架。
整个框架的流程:
首先做一个FB功能块1,用于实现某个重复的功能,比如这里的上升沿和下降沿功能。
然后再做一个FB功能块2,用于整个项目里的某一个功能,里面调用FB功能块1。
最后再做一个FC块1,将各个类似FB功能块2的块整合起来,里面做好逻辑等。这样就是一个完整的小框架了。
下面是整个调用过程:
第一步:创建FB块,做一个小功能
第二步:用上面的FB块来实现某个功能
第三步:将所有类似的功能块整合到FC块中,它可以表示整个项目的流程,也可以表示某个工位的流程(然后把各个工位的FC块再整合到新的FC块里,然后MAIN里面直接调用这个新的FC块,这样程序就显的很干净整洁)
小插曲: