Discrete Filter

提供: T-VEC Wiki
移動: 案内検索

制御やフィルターといった特定の用途では Simulink のようなツールのほうがより自然に記述できるのは事実ですが、TTM3.0 以降に導入された機能によって離散時間フィルタなども扱えるようになりました。ユーザーは TTMモデルのライブラリを作成し、インクルードすることで再利用できます。

関数の例

次のように定義される一般的な1次フィルタにおいて


離散伝達関数

   A.z + B
-------
D.z + C

A, B, C, D は実数

あるいはまた

離散時間フィルタ:

   A + B.z-1
----------
D + C.z-1

関数出力は次のように定義されます。

   Oz0 = A/D*In.z0 + B/D*In.z-1 - C/D*Out.z-1

ここで

   In.z0 : 現在の入力
In.z-1: 以前の入力


メモ:これら二つの定義は等しく、一方の形式はコントロール技術者が、他方はフィルター設計者が使用します。
出力関数の定義はどちらも同じです。

実現方法

これを TTM で表現するには、現在のサイクルの入力値と過去のサイクルの状態変数(2次以上のZ変換の場合は複数の過去のサイクルの状態変数)との関数としてセマンティックスを記述する必要があります。これには1次出力および過去のサイクルとして参照される状態変数出力を計算するために、フィルター計算などに使われるものに似た形の方程式が必要です。

モデル

この「1次フィルタ」関数は一般的に、下図に示すようにフィルタ係数 A, B, C, D および前回の入力と出力にもとづいて定義されます。この関数は出力テーブル Discrete_Filter によって参照されます。

1次フィルタ関数

TTM firstOrderFilter

離散時間フィルタ条件テーブル

係数は TTM の定数としてモデル化されます。過去の入力と出力を表す変数はモデルへの「入力」としてモデル化されます。これらの入力に基づいて出力「Discrete_Filter」のモデルが決定されるので、これらはあるサイクルの出力から次のサイクルの入力へと回り込む変数と考えられます。

TTM Discrete_Filter

その他

おそらくフィルター向け要求仕様の他の要素もこのモデルに付加すべきでしょう。たとえばリアルタイムクロックの現在時刻や実行サイクルの経過(フィルタのサンプリング時間を表す経過時間)などです。しかしそこまで詳細にすると、この例はもっとわかりにくくなるかも知れません。

使い方

次の例のようなデバウンス関数はどのようにモデル化するのでしょうか。

「ブロックXは信号Yを持続時間0.5秒のデバウンスで生信号を通すように計算する」

ユーザーは個々の要求に仕様に合致する係数A, B, C, Dを定義します。