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.