デメリットもありますが、下記のような方法があります。
(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)の部分でワード型から上書きされてしまうからです。