ここでは、ある条件が満たされたときのイベント発生回数をカウントするシステムの作成例を紹介します。
カウントの処理は、下記の式のように前回値に1を足すことで表現します。
Y(n) = Y(n-1) + 1 (n = 0, 1, 2, 3, ...)
Y(n-1):前回値、Y(n):今回値
以下では簡単のため、Ts秒毎にイベントが発生するシステムを扱います。
次の流れで作成手順を説明します。
1. カウントの処理をモデリングする
2. カウントするタイミングを設定する
1. カウントの処理をモデリングする
時間tにおける出力をY(t)とすると、サンプル時間毎に出力値を1ずつカウントアップさせる処理は次式で表されます。
Y(t) = Y(t-Ts) + 1 (t = 0, Ts*1, Ts*2, Ts*3, ...)
この数式の左辺を加算器(Sumブロック等)からの出力、右辺の第2項を加算器への入力と考えます。
これをSimulinkで以下のように表現します。
Y(t-Ts)はY(t)より1サンプル前の値となりますので、Unit Delayブロックで取得します。
上の2つの図を組み合わせると、次に示すようなイベントの発生毎に出力値を1ずつカウントアップさせるモデルが完成します。
2. カウントするタイミングを設定する
1.のモデルをTriggered Subsystemブロック内に配置することで、ある条件が満たされたとき(カウントするタイミング)のみイベント回数をカウントアップするモデルが完成となります。
このとき、Triggered Subsystem内部のUnit Delayブロックのサンプル時間は、イベント同期動作を示す「-1」に設定されている必要がある点に注意して下さい。
以下にシミュレーション実行例を示します。1秒毎に発生するパルス信号の立ち上がりを検出し、出力値がインクリメントされている事が確認できます。
サンプルモデル counter.mdl は、ページ下部の関連ドキュメントよりダウンロードすることが可能です。
(注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし、「対象をファイルに保存」を選択して行ってください。