天天看點

IEC61499 程式設計實戰(1)-按鍵控制LED 閃爍

對IEC61499 感興趣的人越來越多了,我開始向大家介紹IEC61499 程式設計的執行個體,希望能幫助大家,另外,如果有程式設計中的疑問,可以留言,交流。

按鍵開關LED 燈閃爍

前幾天有網友做了一個LED 的實驗,按下按鍵,LED 閃爍,再按一次 LED 停止閃爍。他的程式是這樣的。

IEC61499 程式設計實戰(1)-按鍵控制LED 閃爍

結果發現,長按,LED 會閃爍,而松開LED 就停止閃爍了。主要的問題出在 IX 隻是讀取輸入腳的狀态,他連接配接的是不帶鎖存功能普通按鍵。如果要實作按鍵功能,需要内部加鎖存器。後來他改成了這樣。

IEC61499 程式設計實戰(1)-按鍵控制LED 閃爍

E_D_FF 是一個D觸發器,隻能暫存資料,沒有翻轉的功能。是以這個D 觸發器隻是将按鍵的值延時了一個周期,沒有鎖存,下一次讀到0的時候又将0鎖存了,是以也不行的。正确的方法應該是

IEC61499 程式設計實戰(1)-按鍵控制LED 閃爍

  上面的E_R_TRIG 功能塊是上升沿檢測,一旦檢測到了上升沿,會産生EO 事件,這個事件觸發E_T_FF 狀态翻轉狀态。當然,這個程式還有優化的可能。

例2 LED PWM 調光

  LED 調光通常使用PWM 來實作,下面的例子實作一個25% 占空比的PWM 信号。

IEC61499 程式設計實戰(1)-按鍵控制LED 閃爍

我們應該明白,IEC61499 運作時中,功能塊是軟體實作的,這會影響程式運作的效率和實時性,在這個例子中,E_CYCLE 的周期為1ms,由于是軟體實作這五個功能塊,顯然占用CPU的時間已經比較多了,但是PWM 的頻率隻有64Hz 而已。如果分辨率要求高的話,PWM 頻率會更慢。

學習IEC61499 程式設計需要一些邏輯電路的知識和技巧。