Kapitel 18 ======================================================================= Aufgabe 18.1 PROGRAM PLC_PRG (****************************************************************** OOP Heizung ein/aus, Methoden Zur Simulation, nach dem Einloggen und Start, können Sie den Wert von xS1 ändern, beobachten Sie xQ1. *******************************************************************) VAR xS1:BOOL; // Schalter ein/aus Heizung1: FB_Heizung; // Objekt 1, Tanktyp 1 xQ1:BOOL; // Heizungsschütz END_VAR IF xS1 THEN Heizung1.M_On(); // Methodenaufruf ELSE Heizung1.M_Off(); END_IF; xQ1:= Heizung1.xOUT; _______________________________________________________________________ FUNCTION_BLOCK FB_Heizung VAR_OUTPUT xOUT:Bool; END_VAR METHOD M_Off VAR_INPUT END_VAR xOUT:= FALSE; METHOD M_On VAR_INPUT END_VAR xOUT:= TRUE; ======================================================================= Aufgabe 18.2 PROGRAM PLC_PRG (****************************************************************** OOP Heizung ein/aus, Methoden, Vererbung Zur Simulation, nach dem Einloggen und Start, können Sie die Werte von xS1 und rSollwert ändern, beobachten Sie xQ1, xQ2 und rLeistung. *******************************************************************) VAR xS1:BOOL; // Schalter ein/aus Heizung1: FB_Heizung; // Objekt 1, Tanktyp 1 xQ1:BOOL; // Heizungsschütz Heizung2: FB_Heiz_Leistungsteuerung; // Objekt 2, Tanktyp 2 xQ2:BOOL; rLeistung:REAL; // Wert für Leistungssteller rSollwert:REAL:= 0.8; // Vorgabewert END_VAR IF xS1 THEN Heizung1.M_On(); // Methodenaufruf Heizung2.M_SetzeLeistungswert(rSollwert); ELSE Heizung1.M_Off(); Heizung2.M_Off(); END_IF; xQ1:= Heizung1.xOUT; xQ2:= Heizung2.xOUT; rLeistung:= Heizung2.rLeistungswert; _______________________________________________________________________ FUNCTION_BLOCK FB_Heizung VAR_OUTPUT xOUT:Bool; END_VAR METHOD M_Off VAR_INPUT END_VAR xOUT:= FALSE; METHOD M_On VAR_INPUT END_VAR xOUT:= TRUE; _______________________________________________________________________ FUNCTION_BLOCK FB_Heiz_Leistungsteuerung EXTENDS FB_Heizung VAR_OUTPUT rLeistungswert:REAL;(*0...1.0*) END_VAR METHOD M_Off xOUT:= FALSE; rLeistungswert:=0.0; METHOD M_SetzeLeistungswert : REAL VAR_INPUT rNeuerWert:REAL; END_VAR IF rNeuerWert > 1.0 THEN rLeistungswert:= 1.0; ELSE rLeistungswert:= rNeuerWert; IF rNeuerWert > 0.0 THEN SUPER^.M_On(); ELSE M_Off(); END_IF END_IF; ======================================================================= Aufgabe 18.3 PROGRAM PLC_PRG (****************************************************************** OOP Heizung ein/aus, Methoden, Vererbung, Eigenschaften (Property) Zur Simulation, nach dem Einloggen und Start, können Sie die Werte von xS1 und rSollwert ändern, beobachten Sie xQ1, xQ2 und rLeistung. *******************************************************************) VAR xS1:BOOL; //Schalter ein/aus Heizung1: FB_Heizung; // Objekt 1 xQ1:BOOL; // Heizungsschütz Heizung2: FB_Heiz_Leistungsteuerung; // Objekt 2 xQ2:BOOL; // Heizungsschütz rLeistung:REAL; // Stellwert rSollwert:REAL:=0.7; // Vorgabewert END_VAR IF xS1 THEN Heizung1.M_On(); Heizung2.M_On(); Heizung2.P_Leistungwert:= rSollwert; ELSE Heizung1.M_Off(); Heizung2.M_Off(); Heizung2.P_Leistungwert:= 0.0; END_IF; xQ1:= Heizung1.xOUT; xQ2:= Heizung2.xOUT; rLeistung:= Heizung2.P_Leistungwert; _______________________________________________________________________ FUNCTION_BLOCK FB_Heizung VAR_OUTPUT xOUT:Bool; END_VAR METHOD M_Off VAR_INPUT END_VAR xOUT:= FALSE; METHOD M_On VAR_INPUT END_VAR xOUT:= TRUE; _______________________________________________________________________ FUNCTION_BLOCK FB_Heiz_Leistungsteuerung EXTENDS FB_Heizung VAR rLeistungswert:REAL;(*0...1.0*) END_VAR _______________________________________________________________________ PROPERTY P_Leistungwert : REAL //GET VAR END_VAR P_Leistungwert:= rLeistungswert; //SET VAR END_VAR rLeistungswert:= P_Leistungwert; ======================================================================= Aufgabe 18.4 PROGRAM PLC_PRG (****************************************************************** OOP Heizung ein/aus, Methoden, Vererbung, Interfaces Zur Simulation, nach dem Einloggen und Start, können Sie den Wert von xK1 ändern, beobachten Sie Tank1 ... Tank4. *******************************************************************) VAR K1:BOOL;// bei Normallast TRUE Tank1:FB_TankTyp1; Tank2:FB_TankTyp2; Tank3:FB_TankTyp1; Tank4:FB_TankTyp2; Tank:ARRAY[1..4] OF I_Energiemanagment:= [Tank1, Tank2, Tank3, Tank4]; i: INT:=1; END_VAR FOR i:=1 TO 4 DO IF K1 THEN Tank[i].Normallast(); ELSE Tank[i].Ueberlast(); END_IF; END_FOR; _______________________________________________________________________ INTERFACE I_EinAus METHOD Off : BOOL METHOD On : BOOL INTERFACE I_Energiemanagment METHOD Normallast METHOD Ueberlast INTERFACE I_Leistung METHOD SetLeistungswert : REAL VAR_INPUT rNeuerWert:REAL; END_VAR _______________________________________________________________________ FUNCTION_BLOCK FB_TankTyp1 IMPLEMENTS I_EinAus, I_Energiemanagment VAR_OUTPUT xOut:BOOL; END_VAR METHOD Off : BOOL xOut:= FALSE; METHOD On : BOOL xOut:= TRUE; METHOD Normallast On(); METHOD Ueberlast Off(); _______________________________________________________________________ FUNCTION_BLOCK FB_TankTyp2 EXTENDS FB_TankTyp1 IMPLEMENTS I_Leistung VAR_OUTPUT rLeistungswert:REAL; END_VAR METHOD SetLeistungswert : REAL VAR_INPUT rNeuerWert : REAL; END_VAR IF rNeuerWert > 1.0 THEN rLeistungswert:= 1.0; ELSE rLeistungswert:= rNeuerWert; IF rNeuerWert > 0.0 THEN SUPER^.On(); ELSE SUPER^.Off(); END_IF END_IF METHOD Normallast SUPER^.On(); SetLeistungswert(1.0); METHOD Ueberlast SetLeistungswert(0.5); =======================================================================