0

IEC61131-3 言語の直接表現変数 (DRV) には、「アドレス」にデータ幅指定子 ( X1 ビット、Bバイト、Wワード、Ddword など) が含まれます。

さらに、DRV が宣言されると、任意の変数 (BYTE、WORD、INT、REAL...) として IEC データ型が指定されます。

これらがどのように関連しているかはわかりません。それらは直交していますか?W(バイト) アドレスで REAL 変数を定義できますか? 期待される結果は何ですか?

ある本は次のように述べています。

データ型をフラグまたは I/O アドレスに割り当てると、プログラミング システムは、変数が正しくアクセスされているかどうかをチェックできます。たとえば、によって宣言された変数は、またはAT %QD3 : DINT;で誤ってアクセスすることはできません。UINTREAL

それは私にとって物事をより明確にしません。たとえば、このフラグメントを取り上げます ( WWord、つまり 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 変数を宣言しています (これは正しいと思います)。読み取りまたは書き込み時に期待される結果は何ですか?

4

1 に答える 1

2

残念ながら、PLCの世界のすべてと同様に、そのすべてはベンダーとモデル固有です。

Siemens コンパイラでは、MD4.1 のようなビット コンポーネントを含む実アドレスを宣言できませんでした。MD4 のみが許可され、データ長はダブル ワードである必要があり、MB4 は許可されませんでした。

読み取りはキャストと同等ではありません。たとえば、MW2 を整数として宣言し、そこに値をコピーします。PLCは整数を2の補数形式で保存します。プログラムの後半で、MD2 を実数として読み取ります。PLC は整数を実数に変換しようとはしません。何を保存したか、何を宣言したかに関係なく、盲目的にバイトを読み取り、実数として扱います。自動キャストはありませんでした。

これは、Siemens S7 plc-s での動作方法です。ただし、各ベンダーは独自の方法で処理を行うため、細心の注意を払う必要があります。

于 2016-01-24T00:10:06.873 に答える