SA0147: Unübliche Schiebeoperation - strikt
Funktion | Ermittelt Bitshift-Operationen, die nicht auf Bitfeld-Datentypen (BYTE, WORD, DWORD, LWORD) erfolgen. |
Begründung | Die Norm IEC 61131-3 erlaubt nur Bitzugriffe auf Bitfeld-Datentypen. Der TwinCAT 3 Compiler erlaubt jedoch auch Bitshift-Operationen mit nicht vorzeichenbehafteten Datentypen. |
Wichtigkeit | Niedrig |
![]() | Sehen Sie auch die nicht strikte Regel SA0052: Unübliche Schiebeoperation. |
Beispiele:
PROGRAM MAIN
VAR
nBYTE : BYTE := 16#45;
nWORD : WORD := 16#0045;
nUINT : UINT;
nDINT : DINT;
nResBYTE : BYTE;
nResWORD : WORD;
nResUINT : UINT;
nResDINT : DINT;
nShift : BYTE := 2;
END_VARnResBYTE := SHL(nByte,nShift); // no error because BYTE is a bit field
nResWORD := SHL(nWORD,nShift); // no error because WORD is a bit field
nResUINT := SHL(nUINT,nShift); // => SA0147
nResDINT := SHL(nDINT,nShift); // => SA0147