CASE-Anweisung in ST
CASE ... OF ... ELSE ... END_CASE
Bedeutung |
---|
Mit der Einschränkung Sie dürfen nur solche →Ausdrücke für den Selektor eingeben, die als Ausdruck vom →allgemeinen Datentyp Eine Marke darf eine oder mehrere ganzzahlige →Literale/→Variablen, Aufzählungswerte oder Bereiche sein und muss als →konstanter Wert zur Laufzeit ausgewertet werden. Der Datentyp der Marken muss in den Datentyp des Selektors implizit konvertierbar sein. |
FUNCTION_BLOCK ExampleIfAndCaseDocumentation VAR up : BOOL; count : INT; notify : STRING[1000]; END_VAR VAR CONSTANT neg100 : int := -100; neg1 : int := -1; END_VAR IF up THEN /* Falls 'up' = 'TRUE', wird hochgezählt. */ count := count + 1; ELSE count := count - 1; END_IF; CASE count OF /* Falls 'count' im jeweiligen Wertbereich ist, gibt 'notify' den entsprechenden Text aus. */ 0 : notify := 'Counter is 0.'; 1..100 : notify := 'Counter is in the range between 1 and 100.'; /* Diese Marke definiert einen Bereich mit ganzzahligen Werten. */ neg100..neg1 : notify := 'Counter is in the range between -100 and -1.'; /* Diese Marke definiert einen Bereich mit konstanten Variablen. */ ELSE notify := 'Counter is more than 100 or less than -100.'; END_CASE; END_FUNCTION_BLOCK