谈谈UP TRIG 和DOWN TRIG

2015-08-24 10:08:52来源: eefocus
上文提到了上升沿和下降沿的问题,因为感觉非常实用,再详细谈一下.

沿检测在PLC中用的非常多,PLC是循环扫描的,可以看做是LABVIEW的一个WHILE循环,在PLC中是这样定义的.

DF:当检测到输入触发信号的上升沿时,仅将触点闭合一个扫描周期。 
DFI:当检测到输入触发信号的下降沿时,仅将触点闭合一个扫描周期。 
程序示例


示例说明 
   在检测到 X0的上升沿(OFF→ON)时,Y0仅为 ON一个扫描周期。 
   在检测到 X1的下降沿(ON→OFF)时,Y1仅为 ON一个扫描周期。


描述 
   当触发信号状态从 OFF 状态到 ON状态变化时,DF 指令才执行并且输出仅接通一个扫描周期。 
   当触发信号状态从 ON状态到 OFF 状态变化时,DFI 指令才执行并且输出仅接通一个扫描周期。 
   若执行条件最初即为闭合,则 PLC接通电源,则不会产生输出。


在LV编程中经常也会遇到类似的问题.

比如统计按钮按下的次数,不采用事件结构而是采用POLLING方式,在C语言中是这样编程的.

bool count(bool button) /* Up Trig */ 

{

   static int counter=0;

   static bool button_Old=FALSE;

   if(Button && !Button_Old) counter++; /*OLD=FALSE,NEW=TRUE -->UP TRIG */

   button_Old=button  /*Update Old Status ,相当于LV的shift Register */

  return(Button &&!Button_Old);

}

如果不是沿检测,如if(Button) counter++; 如果按钮一直处于按下状态,将导致COUNTER不断增加,这显然不是我们希望的结果.

再比如一个状态机结构,可以分成N个状态,在每一个状态中又可以分解成三个子状态,进入准备(初始化),运行,退出(清理),显然进入准备和退出清理必须是在条件发生变化的时候执行一次,这就需要沿的操作.

LABVIEW本身就提供了沿判断的VI,在逐点分析库其它中.

  


它的代码如下图:



它可以根据选择检测FALSE-->TRUE(UP),  TRUE-->FALSE(DOWN) 或者EITHER,(UP AND DOWN)

OpenG也提供了一个类似的VI,



这两个VI都是利用了未初始化的SHIFT REGISTER,封装在子VI中,这是一个非常重要的概念,称做LV2型全局变量或者Function Global,以后会专门讨论

关键字:UP  TRIG  DOWN

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0824/article_12892.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
UP
TRIG
DOWN

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved