PLCプログラムをより早く動かすにはどうすればよいですか?


ISaGRAFで作成したPLCプログラムは大きく分けて

  • TIC (Target Independ Code): Javaのような中間コードを出力し、ISaGRAF targetが実行形式に変換しつつ動作させる
  • SCC (Structured C Code):  target architectureに合わせたCソースコードを出力、コンパイルし、ISaGRAF targetにリンクして動作させる

の二つの方法があり、特に予備知識がない場合ははSCCを使えば良いと考えがちです。

しかし、SCCを使用した場合、ISaGRAF からはPLCプログラムを管理できず、デバッグなども行えなくなるという欠点があります。

上記の欠点を回避するには、主要な処理部分をCファンクション/ファンクションブロック(C-F/FB)化し、これを用いるという手法が用いられています。

これは、TICがSCCより遅くなる主要原因がプロセッサの処理速度のみに依存する論理演算部分に於いて、逐次変換処理を経なくてはいけなかったためです。

しかし、C-F/FBを用いれば、この内部はCで作成され、プロセッサネイティブコードとしてtargetに組み込まれるため、SCCを用いた場合と同等の処理速度になります。

この理由からC-F/FBを用いるのが唯一の方法となっていました。

但し、ISaGRAF Ver 5.22以降ではこの状況に変化が生まれました。

ISaGRAF Workbench Ver 5.22以降ではTICコンパイラに最適化オプションが加わり、このオプションを有効にした場合、TICの実行速度は従来の1.7~2.4倍程度に向上しました。

更に、target側もISaGRAF target Ver 5.22 以降最適化処理対応ルーチンが加わっています。

この最適化処理対応ルーチンを生かすには、ISaGRAF Workbench側で追加の最適化オプションを有効にする必要が有ります。このオプションを有効にした場合、TICの処理速度が最大4倍以上となり、SCCとほぼ同等の処理速度となります。

このオプションの唯一の欠点は、有効になった場合に出力されるTICがVer 5.22より古いtargetでは動作しなくなると言うものだけです。

以上から、PLCプログラムを高速化させるには、ISaGRAFをWorkbench/Target共にそのバージョンを5.22以降に更新し、最適化オプションを全て有効にすることが手軽で確実な方法となります。

最適化オプションを有効化するには以下の設定を行います。

一般最適化

  • リソースのプロパティ -> ターゲット/コード -> コンパイラオプション -> 最適化 -> コードの線形部分の共通表現の最適化 をチェック

Ver 5.22以降対応最適化

  • 一般最適化オプションを有効にすると、"Target Supports Optimized TIC Code"を選択可能となるので、こちらをチェック

注: 条件によりこちらの最適化を選べないことがあります、詳しくは英語版ヘルプファイルをご覧ください。英語版ヘルプファイルは <ISaGRAFインストールディレクトリ>\Shared\Help <ver>\English\Pro.chm です。

タグ: 最適化 高速化
最終更新:
2011-03-31 11:52
改訂:
1.3
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

最も人気の FAQ RSS

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

最近の 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)