標準ファンクションブロック"Derivate"(微分)について


下記は標準ファンクションブロックの"Derivate"(微分)のアルゴリズムです。

入力パラメータ
名前 意味
RUN ブール モード。TRUEなら通常動作、FALSEならリセット。
XIN 実数 入力。微分する実数値。
CYCLE タイマ サンプリング周期。
XOUT 実数 微分出力。

詳細
実数値を微分します。

アルゴリズム
IF (NOT DER_INIT_DONE) THEN /* 初期化時のみ */
    DER_X1 = XIN;
    DER_X2 = XIN;
    DER_X3 = XIN;
    DER_INIT_DONE = 1;
END_IF;

IF (RUN) THEN
    /* delayは現在のサイクルタイム */
    IF ((delay) AND (delay > CYCLE)) THEN
    XOUT = (3.0 * (XIN - DER_X3) + DER_X1 - DER_X2) / (TIME_TO_REAL)delay;
    DER_X3 = DER_X2;
    DER_X2 = DER_X1;

    DER_X1 = XIN;
    END_IF;
END_IF
入力パラメータ CYCLE がISaGRAFアプリケーションのサイクルタイムより短い場合、サンプリング周期はサイクルタイムになってしまいます。
下記はこのファンクションブロックのローカル変数です。

名前
DER_INIT_DONE ブール
DER_X1 実数
DER_X2 実数
DER_X3 実数

注意
XOUTの値は下図のように変化します。

これは、下記のように解釈することができます。出力パラメータの演算式は、

XOUT = (3.0 * (XIN - DER_X3) + DER_X1 - DER_X2) / (TIME_TO_REAL)delay;

この式を次のように置き換えます。

3*(3*DeltaX) + DeltaX / cycleTime

さらに
→ 10* DeltaX / cycleTime

つまり、出力 XOUT の値は実際の変化率の10倍の値になります(単位は1ms/10)。
最終更新:
2009-03-19 15:54
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

このカテゴリー内のレコード

タグ