ターゲットを稼働させながらプログラムの更新(オンライン修正)は可能か?


可能ですが、下記の制約があります。

制限事項
    1. コンパイラ型アプリケーションで動作している場合。
    2. 変数名、プログラム(関数)名、SFCプログラムの構造に変更がある場合。

    ISaGRAFのターゲットは、内部に変数データベースを持っています。デバッガなどからこれらの変数の値を変更することはできますが、オンラインで変数そのものを追加・名前の変更・削除することはできません。
    なお、ISaGRAF Ver.4.10以降では、ある程度の変数の追加が可能になっています。
    以下はISaGRAFターゲットの変数とみなされるものの一覧です。これらがオンライン修正の制約を受けます。

    変数
     ISaGRAFワークベンチの辞書で宣言するものです。変数名を変更したり、追加・削除するとオンライン修正はできなくなります。
    対策として、あらかじめ余分な未使用の変数を予約しておき,今後変更があるときにそれらを利用する方法があります。

    ファンクションブロックのインスタンス
     C言語またはIEC言語で書かれているファンクションブロックのインスタンスも変数と同様です。インスタンスが追加・削除されると、オンライン修正はできなくなります。
     FBD言語やLD言語では,ファンクションブロックを配置すると自動的に宣言されたインスタンスになってしまいます。対策として、辞書で宣言したFBインスタンスを使うほうがオンライン修正しやすくなります。

    ファンクションブロックインスタンスのパラメータ名
     ST言語、IL言語、SFC要素のアクションで記述しているパラメータ名も、変数と同様の扱いになります。プログラム中のパラメータの記述を削除したり、追加すると、オンライン修正ができなくなります。
     対策としては、コードを変更する場合、削除するのではなく、条件判断でそのコードが実行されないようにします。

    【例】ファンクションブロック"TON"のインスタンス"TON1"を実行しないように修正する場合

    修正前

    ACTION (N) :
    ton1(true,t#5s);
    t_cnt := ton1.et;
    b2:=ton1.q;
    END_ACTION;
    修正後:if構文の内容は実行されなくなります。

    ACTION (N) :
    if FALSE then
    ton1(true,t#5s);
    t_cnt := ton1.et;
    b2:=ton1.q;
    END_IF;
    END_ACTION;

    SFCのステップ
     SFCステップは1つ1つが活性状態時間とフラグを保持しています。SFCステップの追加・削除により変数データベースが変化するため、オンライン修正ができなくなります。

    コード生成時に自動的に作られる変数
     ISaGRAF コンパイラは,複雑な記述を解決するために「隠された」一時的な変数を生成します。
    【例】

    上記の"+"と"-"命令の間に、仮の変数が生成されます。
    プログラム内容によっては,記述の変更は,この「隠された」変数の構成の変更につながり,オンライン修正を不可能にしてしまいます。

ISaGRAF V3.30以降での回避方法
     ISaGRAF V3.30以降では、一時的な変数の数が変わっても対応できるようになっています。
    ISA.INIファイルで以下のエントリを追加してください。一時的な変数の最小数が固定されます。この範囲内での増減は、オンライン修正に影響しなくなります。また、コード生成時に一時的な変数の数がこれらの数を超える場合,警告メッセージを出力するようになります。
    【例】
    [DEBUG]
    MNTVboo=8 ; ブール型変数
    MNTVana=4 ; 整数&文字列型
    MNTVtmr=4 ; タイマー型
    MNTVmsg=2 ; 文字列型
最終更新:
2009-03-19 14:40
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

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

タグ