Verwendung von DUTs

Themenpunkte:

  1. Enumerationsvariablen nur zugehörige Enumeratoren zuweisen [++]

Enumerationsvariablen nur zugehörige Enumeratoren zuweisen

Der Instanz einer Enumeration sollten nur die Enumeratoren der dazugehörigen Enumeration zugewiesen werden. Um diese Regel zu erzwingen, wird empfohlen, bei Typdefinition der Enumeration das Attribut {attribute 'strict'} zu setzen. Siehe auch: Attribute 'qualified_only' und 'strict' bei Enumeration verwenden

Static Analysis:

Überprüfen mit Hilfe der folgenden Static Analysis Regeln:

Negatives Beispiel:

{attribute 'qualified_only'}
TYPE E_ColorTrafficLight :

    Red    := 0,
    Yellow := 1,
    Green  := 2
); 
END_TYPE
PROGRAM Sample_neg
VAR
    eColorTrafficLight : E_ColorTrafficLight;  // Used to handle the state of the traffic light
END_VAR 
CASE eColorTrafficLight OF
    E_ColorTrafficLight.Green: 
        eColorTrafficLight  := E_ColorTrafficLight.Yellow;
    E_ColorTrafficLight.Yellow:
        eColorTrafficLight  := E_ColorTrafficLight.Red;
    E_ColorTrafficLight.Red:
        eColorTrafficLight  := 2;              // NON COMPLIANT: Only values defines in E_StandardColor should be assigned to enum instance eColorTrafficLight
ELSE
    eColorTrafficLight := E_ColorTrafficLight.Red;
END_CASE

Positives Beispiel:

{attribute 'strict'}
{attribute 'qualified_only'}
TYPE E_ColorTrafficLight :

    Red    := 0,
    Yellow := 1,
    Green  := 2
); 
END_TYPE
PROGRAM Sample_pos
VAR
    eColorTrafficLight : E_ColorTrafficLight;             // Used to handle the state of the traffic light
END_VAR 
CASE eColorTrafficLight OF 
    E_ColorTrafficLight.Green: 
        eColorTrafficLight  := E_ColorTrafficLight.Yellow;
    E_ColorTrafficLight.Yellow:
        eColorTrafficLight  := E_ColorTrafficLight.Red;
    E_ColorTrafficLight.Red:
        eColorTrafficLight  := E_ColorTrafficLight.Green; // COMPLIANT 
ELSE
    eColorTrafficLight := E_ColorTrafficLight.Red;
END_CASE

 

Siehe auch: