SPS- Programmierung mit ST

nach IEC 61131 mit CODESYS V2.3, CODESYS V3, e!COCKPIT

Lösungen Kapitel 18   Einführung in die objektorientierte Programmierung für CODESYS V3 oder e!COCKPIT

  Kopieren Sie den Programmcode und fügen Sie diesen in Ihre Entwicklungsumgebung ein.
  

 Aufgabe 18.2   Aufgabe 18.3   Aufgabe 18.4
Aufgaben 18.1 Tanktyp 1: Heizung ein/aus, in CODESYS V3 oder e!COCKPIT
 
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;

  
Aufgaben 18.2 Tanktyp 2: Heizung – Leistungssteuerung über eine weitere Methode,
in CODESYS V3 oder e!COCKPIT

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;

  

Aufgaben 18.3 Tanktyp 2: Heizung – Leistungssteuerung über eine Eigenschaft,
in CODESYS V3 oder e!COCKPIT
 
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;
  

Aufgaben 18.4
                     
Tankanlage, Programm mit Interface, in CODESYS V3 oder e!COCKPIT
 
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);

  


© Vogel Buchverlag