SA0147:異常な移動操作-strict
ビットフィールドデータ型に適用されないビットシフト操作を決定します(BYTE、 WORD、 DWORD、 LWORD) それぞれ。
理由:IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYSただし、コンパイラは、符号なしデータ型を使用したビットシフト演算も許可します。
重要度:低
ヒント
非厳密なルールも参照してください SA0018。
例 108. 例
PROGRAM PLC_PRG
VAR
in_byte : BYTE := 16#45; // 2#01000101
in_word : WORD := 16#0045; // 2#0000000001000101
in_uint : UINT;
in_dint : DINT;
erg_byte : BYTE;
erg_word : WORD;
erg_uint : UINT;
erg_dint : DINT;
n: BYTE := 2;
END_VAR
erg_byte := SHL(in_byte,n); // no error because BYTE is a bit field erg_word := SHL(in_word,n); // no error because WORD is a bit field erg_uint := SHL(in_uint,n); // SA0147 erg_dint := SHL(in_dint,n); // SA0147
での出力 メッセージ ビュー:
SA0147: 異常なシフト操作 – 厳密