SPS- Programmierung mit ST

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

Vorlagen Kapitel 6  Unterprogramme, Tasks

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


Aufgabe 6.1 Kompensationsanlage aus Kapitel 1
 
PROGRAM PLC_PRG
(*Kompensationsanlage U,I,P-Werte zum Testen des Codes ändern*)
VAR
 r_U :REAL:= 230.0;(*Die Variable wird mit 230.0 initialisiert*)
 r_I :REAL:= 10.5; (*Testwert*)
 r_P :REAL:= 1500.0; (*Testwert*)
 r_S, r_lamda, r_Q :REAL;
END_VAR
(*Scheinleistung berechnen*)
r_S:= r_U * r_I;
(*Leistungsfaktor berechnen*)
r_lamda:= r_P / r_S;
(*Blindleistung berechnen*)
r_Q:= SQRT(EXPT(r_S,2)- EXPT(r_P,2));

Kompensationsanlage aus Kapitel 4

PROGRAM PLC_PRG
(*****************************************************
Kompensationsanlage: Erhöhen Sie zum Testen des Codes
den I-Wert beobachten Sie die Schütze.
******************************************************)
VAR
 r_U :REAL:=230.0;(*Spannung*) r_I :REAL:=10.0;(*Strom*)
 r_P :REAL:=1000.0;(*Wirkleistung*)
 r_S, r_lamda, r_Q :REAL;(*Scheinleistung, Leistungsfaktor, Blindleistung*)
 xQ1, xQ2, xQ3:BOOL;(*Schütze*)
END_VAR
(*Scheinleistung berechnen*)
r_S:= r_U * r_I;
(*Leistungsfaktor berechnen*)
r_lamda:= r_P / r_S;
(*Blindleistung berechnen*)
r_Q:=SQRT(EXPT(r_S,2)-EXPT(r_P,2));
(*Schütze abhängig von der Bildleistung schalten*)
IF r_Q <1000 THEN
  xQ3:=FALSE; xQ2:=FALSE; xQ1:=FALSE;
 ELSIF r_Q <2000 THEN
  xQ3:=FALSE; xQ2:=FALSE; xQ1:=TRUE;
 ELSIF r_Q <3000 THEN
  xQ3:=FALSE; xQ2:=TRUE; xQ1:=TRUE;
 ELSE
  xQ3:=TRUE; xQ2:=TRUE; xQ1:=TRUE;
END_IF;
  

Übung 6.2 Positionieren

Wenn Sie die Vorlage auf InfoClick verwenden, so können Sie die Anlage in einer Visualisierung steuern.
 
VAR_GLOBAL
 iIstPosition:INT; (*z.B. IO-Link fähigen Distanzsensor, Wert in mmm, z.B.IW0*)
 xQ0 AT %QX0.0:BOOL; (*Schütz-zurück*)
 xQ1 AT %QX0.1:BOOL; (*Schütz-vor*)
END_VAR

PROGRAM PLC_PRG
(*************************************************************************************
Mit dem Taster S0 wird über ein Schütz Q0 ein Antrieb eingeschaltet,
bis die Position 0 erreicht ist. Mit dem Taster S1 wird die Position 1 angefahren usw.
Die Position könnte über einen IO-Link fähigen Distanzsensor erfasst werden,
sein Wert in mm könnte im zugehörigen Speicher, z.B. %IW0 gelesen werden.
In dieser Übung wird der Wert des Distanzsensor im Unterprogramm MODELL abhängig von den
den Variablen xQ0 und xQ1 (Schütze) erzeugt, dieses Programm simuliert den Sensor.
**************************************************************************************)
VAR
END_VAR
(*Unterprogrammaufrufe*)
MODELL();(*nicht löschen, verändert den Positionswert abhängig von den Schützen*)
POSITIONIEREN();

PROGRAM MODELL
(*******************************************************
Verändern Sie den Programmcode nicht, er stellt
die Intelligenz des visualisierten Anlagenmodells dar.
********************************************************)
VAR
END_VAR
IF xQ1 THEN
  iIstPosition := iIstPosition + 1;
 ELSIF xQ0 THEN
  iIstPosition := iIstPosition - 1;
END_IF;

PROGRAM POSITIONIEREN
VAR
 xS0_Visu, xS1_Visu, xS2_Visu, xS3_Visu:BOOL;
 iSollPosition: ARRAY[0..3] OF INT:= 0, 50, 100, 150;
END_VAR
??????
  


© Vogel Buchverlag