2013-07-22 237 views
0

我的問題上升或下降邊沿觸發延時器爲Simulink模型

我想了一個名爲「保兌」塊模型。規範是輸出將簡單地作爲基於邊沿(上升/下降)的輸入的延遲版本。爲了澄清,我會盡量把時序圖如下:

    ___________________________ 
       |       | 
Input _______|       |____________________________ 

       (Tdelay) _____________________ 
         |     | 
Output ______________|     |____________________________ 

而且

     ____________________________ 
         |       | 
Input _______________|       |____________________________ 
                 (Tdelay)       
         ______________________________________ 
         |          | 
Output _______________|          |_____________________ 

當我試着上面畫畫,上升沿意味着我的輸出將只需按照Tdelay到變更後的輸入。但是當它從1變回0時,沒有延遲。這是上升沿觸發的確認器模塊圖。

對於下降沿觸發的確認符來說,情況正好相反。當出現下降沿時,輸出將在Tdelay秒後跟隨輸入變化,即保持Tdelay的最後輸入。

我的目標平臺

Simulink和MATLAB。

我最初的解決方案

我知道有辦法觸發使用觸發子系統塊某些動作。但我很努力地使用SIMULINK中的延遲/單位延遲模塊來實現觸發器的延遲。我設法使用另一個稱爲可重置延遲器的模塊,但它在上升沿復位時無法正常工作;它只是基於邊緣重置。

有沒有人嘗試過這類問題?因爲@

更新PhilGoddard的回答

enter image description here

我認爲這應該工作,我已經成功地重現的時序圖中的問題。

我是如何設計的:

1)使用重複序列樓梯作爲我的輸入。 2)配置單位延遲模塊,使復位在上升沿或下降沿啓用。這將允許以下任一項:「輸入(下降沿)=輸出(下降沿)[上升沿被延遲Tdelay延遲 ii)輸入(上升沿)=輸出(上升沿)通過Tdelay到]

除非我失去了我的彈珠,我認爲這個解決方案是好的延時?

回答

2

使用一個啓用並觸發子系統。

拖動港口及子系統庫塊,並只對其屬性進行兩項更改:打開子系統,打開輸出端(稱爲Out1),然後更改「輸出」當禁用「屬性」復位「和」初始輸出「爲0。

然後,將您的輸入送入啓用端口;將輸入的延遲版本送入觸發器端口(默認設置爲上升沿);並將一個常量塊(值爲1)送入信號入口。 子系統的輸出應該符合要求。

+0

感謝您的回答+1。我有一個關於將延遲輸入饋送到觸發端口的問題。我應該使用什麼樣的延遲?是否會因'Tdelay/Tsampling'樣本數量而延遲?你能澄清一下嗎? – ha9u63ar

+0

此外,我正在努力與下降沿觸發一個! – ha9u63ar

0

這是我提出的問題案例2的解決方案。輸出是在觸發信號的每個上升沿或下降沿處增加的相反值的兩個信號的總和。這很可能是一個矯枉過正的問題,可能有一個更容易的解決方案,但提出的解決方案並不適合我,而且這樣做。

我的解決辦法:
my solution

如何計數器創建(信貸How to create a counter in simulink):
counter

0

嘗試開/關延遲。它完全滿足您的需求。

(應該有它的圖標,但似乎我不能在10聲譽張貼圖片)

help page描述說:

的開/關延遲模塊實現以下邏輯當Select type參數設置爲On延遲時:

  • 當輸入變爲真時,輸出在預設時間延遲後變爲真。只要輸入爲真,輸出就保持爲真。

  • 當輸入爲假或變爲假時,輸出將毫無延遲地變爲假。

  • 當前一個輸入參數的初始條件設置爲1,並且輸入在t = 0時爲真時,輸出無誤後爲真。

    • 當輸入爲假時,輸出成爲預先設定的時間延遲之後,假:當選擇類型參數被設置爲關閉延遲

    的開/關延時塊實現以下邏輯。只要輸入爲假,輸出就保持爲假。

  • 當輸入爲真或成爲真時,輸出無誤。

  • 當前一個輸入參數的初始條件設置爲0,並且在t = 0時輸入爲假時,輸出爲無延遲的假。