シーケンサのようにブール型変数を複数集め、まとめて1チャンネルとして扱いたい。例えば、ブール変数16個を
CH20000,CH20001,CH20002,.....,CH20015 → CH200(アナログ型変数)
のようにしたい。また、逆にアナログ型変数の各ビットにブール型変数を割り当てたい。


ISaGRAF自身には上記のような概念がありませんので、直接記述することは出来ません。

デメリットもありますが、下記のような方法があります。

(1)ブール型変数の他、アナログ変数として CH200,CH201,CH202,....を辞書に登録する。
(2)beginセクションのプログラムに、ビットをワードにまとめるプログラムを記述する。その内容は、例えばST言語では次のようになります。
CH200 := ana(CH20000) + ana(CH20001)*2 + ana(CH20002)*4
+ ana(CH20003)*8 + ana(CH20004)*16#10 + ana(CH20005)*16#20
+ ana(CH20006)*16#40 + ana(CH20004)*16#80 +
......(中略)
 + ana(CH20015)*16#8000;
CH201 := (以下略)

(3)逆にendセクションにはワードをビットに分解するプログラムを作ります。
CH20000 := ana_mask(CH200,1);
CH20001 := ana_mask(CH200,2) / 2;
CH20002 := ana_mask(CH200,4) / 4;
....(以下略)

(4) 2と3のプログラムに挟まれた他のプログラム、及びSFC内のプログラムでは,チャンネル形式で扱えます。

【デメリット】ただし、ビット型の変数に値を代入することは出来なくなってしまいます。(3)の部分でワード型から上書きされてしまうからです。
最終更新:
2008-07-30 16:58
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

最も人気の FAQ RSS

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

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