38.9.5.8 ビットデータのアクセス

WinGP SDKは、ビットデバイスへアクセスする場合、そのビットデータを扱う方法として3種類の方法を提供しています。

  1. 16ビット単位での扱い : ビットデバイスに対し、16ビット単位のビット列として扱う方法です。
    ビットデータはD0ビットから指定された個数分、右詰めで格納/使用されます。
    データバッファは指定個数が1個でも、16ビット分必要となります。また、指定個数に16ビット単位で必要になります。

(例)20個のビットデバイスを指定した場合のデータバッファの格納順序

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

20

19

18

17

適用API

ReadDeviceBit/WriteDeviceBit()

ReadDevice/WriteDevice(),ReadDeviceVariant/WriteDeviceVariant()で、データ型に1(EASY_AppKind_Bit)を指定した場合

ReadSymbol/WriteSymbol()で、ビットシンボルやビットシンボルを含むグループを指定した場合

  1. VariantのBOOL単位での扱い : 1ビットをVariantのBOOLデータとして扱う方法です。

データバッファは1ビットが1 VariantのBOOL型となり、指定個数分のBOOL型の配列として扱います。

適用API

ReadDeviceVariant/WriteDeviceVariant()で、データ型に0x201 (EASY_AppKind_BOOL) を指定した場合

ReadSymbolVariant/WriteSymbolVarinat()で、ビットシンボルやビットシンボルを含むグループを指定した場合

  1. ロジック命令の構造体変数によるアクセス時のビットオフセットシンボルの扱い
    ビットオフセットシンボルを直接指定してデバイスへアクセスした場合、そのデータバッファは、上記で説明した“16ビット単位での扱い”か“VariantのBOOL単位での扱い”になります。
    ただし、グループシンボル内にビットオフセットシンボルがあり、ロジック命令の構造体変数でデバイスへアクセスした場合、データバッファ内にそのビットオフセットシンボル用のデータ領域は確保されません。
    ビットオフセットシンボルはそのシンボルが単体で存在することはなく、必ず、その親となるワードシンボルがあります。データ領域としてはその親の分が確保されるので、ビットオフセットシンボルの分はその親の分の一部を利用してください。