SPS- Programmierung mit ST

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

Vorlagen Kapitel 9  Funktionsblöcke (FBs)

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


Aufgabe 9.2 Bandsteuerung
 
VAR_GLOBAL
 S0_Band_AUS AT %IX2.0:BOOL;(*Öffner*)
 S1_Band_Ein AT %IX2.1:BOOL;
 Q1_Band1 AT %QX0.0:BOOL;
END_VAR

PROGRAM PLC_PRG
VAR
(*Global deklariert*)
END_VAR
BANDANL();(*Aufruf des Unterprogramms*)

PROGRAM BANDANL
VAR
(*Instanzen*)
 RS_Band_1:RS;
 TOF_1:TOF;
END_VAR
(*Band 1*)
RS_Band_1(SET:= S1_Band_Ein, RESET1:= NOT S0_Band_AUS);
TOF_1(IN:= RS_Band_1.Q1, PT:= T#2s);
Q1_Band1:= TOF_1.Q;
  
Aufgabe 9.3 Behälterfüllung
 
VAR_GLOBAL
 M10_Ventil_A AT %QX0.0:BOOL;
 M11_Ventil_B AT %QX0.1:BOOL;
END_VAR

PROGRAM PLC_PRG
(*Behälter füllen*)
VAR
 xStart:BOOL;(*visu. Schaltfläche*)
 rK :REAL:=2.0;(*Mischverhältnis VA/VB*)
 tTa, tTb: TIME;(*Ventilöffnungszeiten*)
 rTa, rTb: REAL;(*in ms*)
 TP_A, TP_B :TP;(*Instanzen*)
END_VAR
(*Öffnungszeit abhängig von k berechnen*)
IF rK > 0.0 THEN
 rTa:= 30.0/(rK + 1.0)*rK;
 rTb:=30.0-rTa;
 tTa:=REAL_TO_TIME(rTa*1000.0);
 tTb:=REAL_TO_TIME(rTb*1000.0);
 (*Aufruf der Instanzen von TP*)
 TP_A(IN:=xStart , PT:=tTa);
 M10_Ventil_A:=TP_A.Q;
 TP_B(IN:=TP_A.Q , PT:=tTb);
 M11_Ventil_B:=TP_B.Q;
END_IF;
  
Aufgabe 9.5 b) Zweipunktregler,
 
VAR_GLOBAL
 Temp0 AT %IW0:INT; Temp1 AT %IW1:INT; Temp2 AT %IW2:INT;
 Q0 AT %QX0.0:BOOL; Q1 AT %QX0.1:BOOL; Q2 AT %QX0.2:BOOL;
END_VAR

PROGRAM PLC_PRG
(*Mehrere FBs-Zweipunktregler über eine Schleife aufrufen*)
VAR
 i: INT;
 Z_REG_:ARRAY [0..2]OF Z_REG;
 rW:ARRAY [0..2]OF REAL:= [150.0, 120.0, 180.0];
 rX:ARRAY [0..2]OF REAL;
 rH:ARRAY [0..2]OF REAL:= [10.0, 20.0, 30.0];
END_VAR
(**Temperaturen lesen*)

(*Instanzen des Zweipunktreglers aufrufen*)

(*Heizungsschütze schalten*)

FUNCTION_BLOCK Z_REG
(*Zweipunktregler*)
VAR_INPUT
 W:REAL;(*Sollwert*)
 X:REAL;(*Istwert*)
 H:REAL;(*Hysterese*)
END_VAR
VAR_OUTPUT
 Y:BOOL;(*Stellwert*)
END_VAR
(*Schalten*)
  ???

© Vogel Buchverlag