共用体型の変数を使用することでWORD型のデータをビット単位で扱うことが可能です。
共用体型とは、同一のデータに対して、複数の異なるデータ型でアクセスできるようにしたデータ型です。
本FAQでは、例として以下のような共用体型および変数を取りあげ、共用体型の作成方法、各メンバ(*1)の指定方法、および共用体型の仕様についてご紹介いたします。
例)
・共用体型名:「OUT16ACCESS」
・OUT16ACCESSのメンバ (*1):
‐「BoolData」BOOL型の配列指定(要素数16)
‐「ByteData」BYTE型の配列指定(要素数2)
‐「WordData」WORD型
・変数名:Output
(*1)共用体型を定義するとき、アクセス可能な各データ型に名前を付けます。
この名前のことを「メンバ」と呼び、この例では「BoolData」、「ByteData」、「WordData」が、共用体型「OUT16ACCESS」のメンバになります。
■共用体型の作成方法
(1)共用体型テーブルにて、共用体型を作成します。
データ型名、および複数の異なるデータ型をそのメンバとして指定します。
(2)変数テーブルにて、データ型として上記の共用体型を指定し、変数を登録します。
■各メンバの指定方法
プログラム中で、共用体型のメンバを指定するには、共用体全体(*2)を表す変数名に、半角ピリオド「.」とメンバ名を付けて、「共用体変数名.メンバ名」と記述します。
例)
Output.WordData … 共用体変数Outputを1個のWORD型変数とみなした場合の値
Output.BoolData[11] … 共用体変数Outputを16ビットのBOOL型の配列指定の変数とみなした場合の要素番号11、つまり11ビットめの値
(*2)共用体を構成する全メンバを指して、「共用体全体」と呼びます。
共用体全体は、共用体の変数名だけで書き表します。この例では、「Output」が共用体全体になります。
ラダー図での例
ST(ストラクチャードテキスト)言語での例
ST言語で値を書き込む場合は、代入記号の半角コロン「:」と半角イコール「=」を用いて、「共用体変数名.メンバ名 := 値」と記述します。文の末尾には半角セミコロン「;」を必ず記述します。
(変数への格納イメージ)
以上のように、共用体型の変数を用いることで、同一のデータに対して、1ビット単位、あるいは16ビット単位のいずれのデータ型でもアクセスすることができます。
■共用体型の仕様
(表1)共用体型の仕様
|
項目
|
仕様
|
|
メンバに指定できるデータ型
|
(表2)をご参照ください。
|
|
メンバ数
|
最大4
|
|
初期値設定
|
不可。必ずゼロとなります。
|
(表2)共用体型のメンバに指定できるデータ型
|
分類
|
データ型
|
使用
|
|
基本データ型
|
BOOL型、ビット列型(BYTE、WORD、DWORD、LWORD)
|
可能
|
|
BOOL型、ビット列型の配列指定
|
可能
|
|
その他の基本データ型
|
不可
|
|
派生データ型
|
構造体型、共用体型、列挙型の配列指定
|
不可
|
|
POUインスタンス数
|
-
|
不可
|
【共用体をご使用いただく際の制限事項】
・共用体の初期値はゼロ固定となります。
・共用体全体の転送はできません。
・POU のパラメータに共用体全体を指定できません