システム変数のバーチャルアドレス(VA)はターゲットのヘッダファイルdsys0def.hで定義されていて、先頭に ISA_SYSVA_ が付加された文字列です。
アクセス方法
まず、変数テーブル(バーチャルマシンのリアルタイムデータベース)の先頭アドレスを取得します。I/Oドライバ内部からアクセスする場合は、I/Oデバイスのチャンネルへのポインタがあるはずです。これを pChannel とします。
strRtIoChan* pChannel; uchar *curBfData = NULL; pChannel = pRtIoSplDvc->pRtIoChan; curBfData = (uchar*)pChannel->pvKerData - pChannel->KerVa; |
これで curBfData に先頭の変数へのポインタが格納されます。これ以降は、下記のマクロで任意の変数にアクセスできるようになります。
BF_BOOL(BfData,va)
BF_SINT(BfData,va)
BF_DINT(BfData,va)
BF_REAL(BfData,va)
BF_TIME(BfData,va)
'va'はアクセスする変数のバーチャルアドレスです。
【例】
BF_DINT(curBfData,ISA_SYSVA_TCYCURRENT)
※ISaGRAF Ver.4/5ワークベンチ上では、システム変数名は"__SYSVA_**"と表示されます。