I/OドライバからISaGRAF Ver.4/5のシステム変数にアクセスすることはできますか?


注意
システム変数のバーチャルアドレス(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_**"と表示されます。
最終更新:
2008-07-31 11:53
改訂:
1.2
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

このカテゴリー内のレコード

タグ