Skip to main content

SA0008 : Vérifier les types de sous-gamme

Détecte les violations hors plage des types de sous-plage. Les littéraux assignés sont déjà vérifiés par le compilateur. Lorsque des constantes sont affectées, les valeurs doivent être comprises dans la plage définie. Lorsque des variables sont affectées, les types de données doivent être identiques.

Justification : Si des types de sous-gamme sont utilisés, assurez-vous que cette sous-gamme n'est pas quittée. Le compilateur vérifie ces types de violations de sous-intervalle uniquement pour les affectations de constantes.

Importance : Faible

Astuce

Le contrôle n'est pas effectué pour les objets CFC car la structure du code ne le permet pas.

Exemple 20. Exemple
VAR_GLOBAL
    iVarGlob:INT;
END_VAR
PROGRAM PLC_PRG
VAR
    iSubr1: INT (INT#1..INT#10);
    iSubr2: INT (INT#1..INT#1000);
    iCount: INT;
    by_SubType : BYTE (BYTE#0..BYTE#11);
    iVar : INT (-4095..4095);
END_VAR
iSubr1 := nCount;              // SA0008
iSubr1 := subr2;               // SA0008
iSubr1 := gvl.iVarGlob;        // SA0008
//byBYTE_SubType := BYTE#123;  //already detected by compiler, error "Cannot convert type..."

Sortie dans le messages voir:

  • sa_icon_message.png SA0008 : La variable de sous-plage 'iSubr1' est peut-être hors de la plage autorisée