標準ファンクションブロック"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.

最も人気の FAQ RSS

  1. LD言語で、ある接点がFALSEの場合、それ以降のファンクションブロックを実行しないように出来るか? (44513 回の閲覧)
  2. SFC要素の「ステップ」と「トランジション」の意味と役割を教えてください。 (43414 回の閲覧)
  3. ISaGRAF WorkbenchをWindows 7で使用するにはどうしたらよいでしょうか? (40928 回の閲覧)
  4. ISaGRAFはIEC1131-3のシステム定義に準拠しているか? (38989 回の閲覧)
  5. PLCプログラムをより早く動かすにはどうすればよいですか? (38818 回の閲覧)
  6. LD言語で、立ち上がり・立ち下がりの出力はあるか? (36875 回の閲覧)
  7. VxWorksターゲットにおける変数管理の留意点について (36382 回の閲覧)
  8. 日立製作所製SHマイコン用コンパイラ使用時の注意事項 (35573 回の閲覧)
  9. Cファンクション/ファンクションブロックの"Hidden" パラメータとはどのようなものか (35525 回の閲覧)
  10. FBD/LD言語で同じ行に複数の演算がある場合の実行順序は? (33516 回の閲覧)

最近の FAQ RSS

  1. ファンクションブロックはネストできますか。 (2016-08-05 15:07)
  2. Cファンクション/ファンクションブロックの"Hidden" パラメータとはどのようなものか (2015-01-30 14:24)
  3. 前のISaGRAFで作成したプロジェクトをインポートしたら、コメントが文字化けを起こしています。 (2014-05-07 06:52)
  4. 前のバージョンで作成したプロジェクトは読み込めますか。 (2014-03-07 07:46)
  5. ISaGRAFでコンフィグレーション、リソースそれにPOUはそれぞれいくつ作成できますか。 (2014-03-07 02:06)