IEC61131-3 言語の直接表現変数 (DRV) には、「アドレス」にデータ幅指定子 ( X
1 ビット、B
バイト、W
ワード、D
dword など) が含まれます。
さらに、DRV が宣言されると、任意の変数 (BYTE、WORD、INT、REAL...) として IEC データ型が指定されます。
これらがどのように関連しているかはわかりません。それらは直交していますか?W
(バイト) アドレスで REAL 変数を定義できますか? 期待される結果は何ですか?
ある本は次のように述べています。
データ型をフラグまたは I/O アドレスに割り当てると、プログラミング システムは、変数が正しくアクセスされているかどうかをチェックできます。たとえば、によって宣言された変数は、または
AT %QD3 : DINT;
で誤ってアクセスすることはできません。UINT
REAL
それは私にとって物事をより明確にしません。たとえば、このフラグメントを取り上げます ( W
Word、つまり 16 ビットを意味することを思い出してください。両方とも32 ビットDINT
に対応します)。REAL
X AT %MW3 : DINT;
Y AT %MD4.1 : DINT;
Z AT %MD4.1 : REAL;
最初の行は、32 ビットの IEC var を 16 ビットの場所にマップします。これは合法ですか?書き込み/読み取りは「キャスト」または何と同等ですか?
他の行では、同じアドレスを指す異なる型の 2 つの 32 ビット IEC 変数を宣言しています (これは正しいと思います)。読み取りまたは書き込み時に期待される結果は何ですか?