Skip to main content

SA0052 : Opération de changement de vitesse inhabituelle

Détecte les opérations de décalage (décalage de bit) sur les variables signées. Dans le cas d'opérations de décalage sur des types de données de champ binaire (Byte, DWORD, LWORD, WORD), aucune erreur n'est signalée.

Justification : CODESYS permet les opérations de décalage sur les types de données signés. Cependant, ces opérations sont inhabituelles et peuvent prêter à confusion. La norme CEI 61131-3 ne prévoit pas ce type d'opérations. Il convient donc de les éviter afin d’augmenter la portabilité du code vers d’autres systèmes de développement.

Importance : Moyenne

Exemple 62. Exemple
PROGRAM PLC_PRG
VAR
    iTemp : INT;
    dwTemp1 : DWORD;
    byTemp2 : BYTE;
    diTemp3 : DINT;
    siTemp4 : SINT;
    liTemp5 : LINT;
END_VAR
//the following lines each will cause an  SA0052:
iTemp := SHL(iTemp, BYTE#2);
diTemp3 := SHR(diTemp3, BYTE#4);
siTemp4 := ROL(siTemp4, BYTE#2);
liTemp5 := ROR(liTemp5, BYTE#2);

//no error SA0052 because DWORD and BYTE are bitfield datatypes:
dwTemp1 := SHL(dwTemp1, BYTE#3);
byTemp2 := SHR(byTemp2, BYTE#1);

Sortie dans le messages voir:

  • sa_icon_message.png SA0052 : Opération de changement de vitesse inhabituelle