新聞中心

談?wù)刄P TRIG 和DOWN TRIG

作者: 時(shí)間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
上文提到了上升沿和下降沿的問題,因?yàn)楦杏X非常實(shí)用,再詳細(xì)談一下.

沿檢測(cè)在PLC中用的非常多,PLC是循環(huán)掃描的,可以看做是LABVIEW的一個(gè)WHILE循環(huán),在PLC中是這樣定義的.

本文引用地址:http://www.2s4d.com/article/201701/337253.htm

DF:當(dāng)檢測(cè)到輸入觸發(fā)信號(hào)的上升沿時(shí),僅將觸點(diǎn)閉合一個(gè)掃描周期。
DFI:當(dāng)檢測(cè)到輸入觸發(fā)信號(hào)的下降沿時(shí),僅將觸點(diǎn)閉合一個(gè)掃描周期。
程序示例


示例說明
在檢測(cè)到 X0的上升沿(OFF→ON)時(shí),Y0僅為 ON一個(gè)掃描周期。
在檢測(cè)到 X1的下降沿(ON→OFF)時(shí),Y1僅為 ON一個(gè)掃描周期。


描述
當(dāng)觸發(fā)信號(hào)狀態(tài)從 OFF 狀態(tài)到 ON狀態(tài)變化時(shí),DF 指令才執(zhí)行并且輸出僅接通一個(gè)掃描周期。
當(dāng)觸發(fā)信號(hào)狀態(tài)從 ON狀態(tài)到 OFF 狀態(tài)變化時(shí),DFI 指令才執(zhí)行并且輸出僅接通一個(gè)掃描周期。
若執(zhí)行條件最初即為閉合,則 PLC接通電源,則不會(huì)產(chǎn)生輸出。


在LV編程中經(jīng)常也會(huì)遇到類似的問題.

比如統(tǒng)計(jì)按鈕按下的次數(shù),不采用事件結(jié)構(gòu)而是采用POLLING方式,在C語言中是這樣編程的.

boolcount(bool button) /* UpTrig */

{

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 ,相當(dāng)于LV的shift Register */

return(Button &&!Button_Old);

}

如果不是沿檢測(cè),如if(Button) counter++; 如果按鈕一直處于按下狀態(tài),將導(dǎo)致COUNTER不斷增加,這顯然不是我們希望的結(jié)果.

再比如一個(gè)狀態(tài)機(jī)結(jié)構(gòu),可以分成N個(gè)狀態(tài),在每一個(gè)狀態(tài)中又可以分解成三個(gè)子狀態(tài),進(jìn)入準(zhǔn)備(初始化),運(yùn)行,退出(清理),顯然進(jìn)入準(zhǔn)備和退出清理必須是在條件發(fā)生變化的時(shí)候執(zhí)行一次,這就需要沿的操作.

LABVIEW本身就提供了沿判斷的VI,在逐點(diǎn)分析庫(kù)其它中.




它的代碼如下圖:



它可以根據(jù)選擇檢測(cè)FALSE-->TRUE(UP), TRUE-->FALSE(DOWN) 或者EITHER,(UP AND DOWN)

OpenG也提供了一個(gè)類似的VI,



這兩個(gè)VI都是利用了未初始化的SHIFT REGISTER,封裝在子VI中,這是一個(gè)非常重要的概念,稱做LV2型全局變量或者Function Global,以后會(huì)專門討論



關(guān)鍵詞: UPTRIGDOW

評(píng)論


技術(shù)專區(qū)

關(guān)閉