Skip to main content

SA0147:異常な移動操作-strict

ビットフィールドデータ型に適用されないビットシフト操作を決定します(BYTEWORDDWORDLWORD) それぞれ。

理由: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

での出力 メッセージ ビュー:

  • sa_icon_message.png SA0147: 異常なシフト操作 – 厳密