Step 7 Zweipunktregler für Füllstandsreglung

hbremer

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich beschäftig mich neulich mit step7, und versuche gerade in AWL das Programm für eine Füllstansreglung zu schreiben, leider bis jetzt ohne Erfolg.

Meine Vorstellung sieht so aus:
1. Regler ein-/ausschalten
2. Regler eingeschaltet?
Nein => Ausgänge und Merker zurücksetzten
Ja => Anzeige: "Regler ein" einschalten
3. Werte einlesen (CALL FC1)
4. Berechnung Hysterese
5. Berechnung halbe Schaltdifferenz (für Ober-/Untergrenze)
6. Berechnung untere Schaltschwelle xu
7. Istwert kleiner als xu?
Ja => Pumpe ein & Lampe leuchtet
Nein =>
8. Berechnung obere Schaltschwelle xo
9. Istwert größer als xo?
Ja => Pumpe aus & Lampe aus
Nein => dann von Anfang an anfangn

so habe ich es geschrieben,leider funktioniert nicht wenn ich es simuliere:roll:, wo könnte der Fehler sein ?

U "BD_Star" E1.3 -- Bedienpult start grün SH10
S "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
U "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
S "BD_Anz_SH10" A1.0 -- Bedienpult Anzeige SH10 Anlage eingeschaltet
UN "BD_Stop" E1.4 -- Bedienpult Stop rot (öffner) SH11
R "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
R "BD_Anz_SH10" A1.0 -- Bedienpult Anzeige SH10 Anlage eingeschaltet
R "BD_Star" E1.3 -- Bedienpult start grün SH10

U "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
SPBN AUS
S "BD_Anz_SH10" A1.0 -- Bedienpult Anzeige SH10 Anlage eingeschaltet
CALL FC 1
L "Al_Fuell_Norm" MD20 -- Normierter wert für den Füllstand
L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert

L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
L 1.000000e+001
/R
T "M_xs" MD28 -- Zwischenschalthysterese

L "M_xs" MD28 -- Zwischenschalthysterese
L 2.000000e+000
/R
T "M_x1" MD32 -- zwischenmerker halbe Schatdifferenz

L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
L "M_x1" MD32 -- zwischenmerker halbe Schatdifferenz
-R
T "M_xu" MD40 -- Zwischenmerker untere Schaltschwelle

L "Al_Fuell_Norm" MD20 -- Normierter wert für den Füllstand
L "M_xu" MD40 -- Zwischenmerker untere Schaltschwelle
<R
SPB nex1

L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
L "M_x1" MD32 -- zwischenmerker halbe Schatdifferenz
+R
T "M_xo" MD36 -- Zwischenmerker obere Schaltschwellen
L "Al_Fuell_Norm" MD20 -- Normierter wert für den Füllstand
L "M_xo" MD36 -- Zwischenmerker obere Schaltschwellen
>R
SPB nex2

U "Regler_Ein" M10.0 -- Merker Regler eingeschaltet

nex1: S "Pumpe" A0.0 -- Pumpenansteuerung binär
= "BD_Anz_Sh6" A1.3 -- Bedienpult Anzeige SH6 Pumpe eingeschaltet

nex2: R "Pumpe" A0.0 -- Pumpenansteuerung binär
R "BD_Anz_Sh6" A1.3 -- Bedienpult Anzeige SH6 Pumpe eingeschaltet

AUS: R "Pumpe" A0.0 -- Pumpenansteuerung binär
R "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
R "BD_Anz_Sh6" A1.3 -- Bedienpult Anzeige SH6 Pumpe eingeschaltet
R "BD_Anz_SH10" A1.0 -- Bedienpult Anzeige SH10 Anlage eingeschaltet
 
Hab's erstmal nur ausgerichtet . . .
Code:
      U     "BD_Star"             E1.3  -- Bedienpult start grün SH10
      S     "Regler_Ein"          M10.0 -- Merker Regler eingeschaltet
      U     "Regler_Ein"          M10.0 -- Merker Regler eingeschaltet
      S     "BD_Anz_SH10"         A1.0  -- Bedienpult Anzeige SH10 Anlage eingeschaltet
      UN    "BD_Stop"             E1.4  -- Bedienpult Stop rot (öffner) SH11
      R     "Regler_Ein"          M10.0 -- Merker Regler eingeschaltet
      R     "BD_Anz_SH10"         A1.0  -- Bedienpult Anzeige SH10 Anlage eingeschaltet
      R     "BD_Star"             E1.3  -- Bedienpult start grün SH10
      U     "Regler_Ein"          M10.0 -- Merker Regler eingeschaltet
      SPBN  AUS
      S     "BD_Anz_SH10"         A1.0  -- Bedienpult Anzeige SH10 Anlage eingeschaltet
      CALL  FC 1
      L     "Al_Fuell_Norm"       MD20  -- Normierter wert für den Füllstand
      L     "Al_Fuell_Soll_Norm"  MD24  -- Normierter Wert für den Füllstandssollwert
      L     "Al_Fuell_Soll_Norm"  MD24  -- Normierter Wert für den Füllstandssollwert
      L     1.000000e+001
      /R
      T     "M_xs"                MD28  -- Zwischenschalthysterese
      L     "M_xs"                MD28  -- Zwischenschalthysterese
      L     2.000000e+000
      /R
      T     "M_x1"                MD32  -- zwischenmerker halbe Schatdifferenz
      L     "Al_Fuell_Soll_Norm"  MD24  -- Normierter Wert für den Füllstandssollwert
      L     "M_x1"                MD32  -- zwischenmerker halbe Schatdifferenz
      -R
      T     "M_xu"                MD40  -- Zwischenmerker untere Schaltschwelle
      L     "Al_Fuell_Norm"       MD20  -- Normierter wert für den Füllstand
      L     "M_xu"                MD40  -- Zwischenmerker untere Schaltschwelle
      <R
      SPB   nex1
      L     "Al_Fuell_Soll_Norm"  MD24  -- Normierter Wert für den Füllstandssollwert
      L     "M_x1"                MD32  -- zwischenmerker halbe Schatdifferenz
      +R
      T     "M_xo"                MD36  -- Zwischenmerker obere Schaltschwellen
      L     "Al_Fuell_Norm"       MD20  -- Normierter wert für den Füllstand
      L     "M_xo"                MD36  -- Zwischenmerker obere Schaltschwellen
      >R
      SPB   nex2
      U     "Regler_Ein"          M10.0 -- Merker Regler eingeschaltet
nex1: S     "Pumpe"               A0.0  -- Pumpenansteuerung binär
      =     "BD_Anz_Sh6"          A1.3  -- Bedienpult Anzeige SH6 Pumpe eingeschaltet
nex2: R     "Pumpe"               A0.0  -- Pumpenansteuerung binär
      R     "BD_Anz_Sh6"          A1.3  -- Bedienpult Anzeige SH6 Pumpe eingeschaltet
AUS:  R     "Pumpe"               A0.0  -- Pumpenansteuerung binär
      R     "Regler_Ein"          M10.0 -- Merker Regler eingeschaltet
      R     "BD_Anz_Sh6"          A1.3  -- Bedienpult Anzeige SH6 Pumpe eingeschaltet
      R     "BD_Anz_SH10"         A1.0  -- Bedienpult Anzeige SH10 Anlage eingeschaltet
Was auf den ersten Blick auffällt:
- sehr viele R und S, nur 1 =
- die Befehle ab AUS: werden immer durchlaufen, so dass auch bei Regler_Ein = True Regler_Ein sofort wieder rückgesetzt wird (nach einem SPB bzw. SPBN ist immer das VKE = 1).
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
Danke erst mal heinileini,

Wie ich es in der Hilfe von s7 gelesen habe, ist bei spb das VKE=1 und bei spbn das VKE= 0.

Was ich gerne hätte wie ich beide Fällen betrachen kann:
1. wenn Regler aus ist dann sollen merker und Ausgänge gelöscht werden
2. wenn der Regler ein ist soll die Berechnung durchgeführt werden. Und vergleiche gemacht.

Irgendwo ist ein denkfehler bei mir..

Gruß
 
Wie ich es in der Hilfe von s7 gelesen habe, ist bei spb das VKE=1 und bei spbn das VKE= 0.
spb springt, wenn VKE=1 ist,
spbn springt, wenn VKE=0 ist.
Aber beide fragen das VKE nicht nur ab, sondern setzen es, wenn es nicht ohnehin schon 1 ist - oder vertue ich mich da, was den spbn betrifft?

PS:
Habe nicht gelogen, siehe:
spb-spbn.jpg
 
Zuletzt bearbeitet:
Hi Heinileini,

Ich habe noch mal versuch das Programm zu schreiben .
sobald ich in der Simulation auf Start drücke geht Regler auf 1 aber die Berechnungen werden nicht durchgeführt.

Kannst du mir kurz erklären was ich oder wo ich genau missbau.

Danke im vorraus
Gruß
hbremer

code:
Zweipunktregler Ein/Aus

U "BD_Star" E1.3 -- Bedienpult start grün SH10
S "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
UN "BD_Stop" E1.4 -- Bedienpult Stop rot (öffner) SH11
R "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
NOP 0
Bedienpult Anzeige SH10 Anlage eingeschaltet/ CALL FC1

U "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
SPBN AUS
= "BD_Anz_SH10" A1.0 -- Bedienpult Anzeige SH10 Anlage eingeschaltet
CALL FC 1
L "Al_Fuell_Norm" MD20 -- Normierter wert für den Füllstand
L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
Xs = W/10

L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
L 1.000000e+001
/R
T "M_xs" MD28 -- Zwischenschalthysterese

X1 = Xs/2

L "M_xs" MD28 -- Zwischenschalthysterese
L 2.000000e+000
/R
T "M_x1" MD32 -- zwischenmerker halbe Schatdifferenz

Xu = W-X1

L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
L "M_x1" MD32 -- zwischenmerker halbe Schatdifferenz
-R
T "M_xu" MD40 -- Zwischenmerker untere Schaltschwelle

X < Xu

L "Al_Fuell_Norm" MD20 -- Normierter wert für den Füllstand
L "M_xu" MD40 -- Zwischenmerker untere Schaltschwelle
<R
SPBN nex1
= "Pumpe" A0.0 -- Pumpenansteuerung binär
= "BD_Anz_Sh6" A1.3 -- Bedienpult Anzeige SH6 Pumpe eingeschaltet

X0 = W+ X1

nex1: L "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
L "M_x1" MD32 -- zwischenmerker halbe Schatdifferenz
+R
T "M_xo" MD36 -- Zwischenmerker obere Schaltschwellen
L "Al_Fuell_Norm" MD20 -- Normierter wert für den Füllstand
L "M_xo" MD36 -- Zwischenmerker obere Schaltschwellen
>R
R "Pumpe" A0.0 -- Pumpenansteuerung binär
Regler Aus

AUS: R "Regler_Ein" M10.0 -- Merker Regler eingeschaltet
R "Pumpe" A0.0 -- Pumpenansteuerung binär
R "BD_Anz_SH10" A1.0 -- Bedienpult Anzeige SH10 Anlage eingeschaltet
L 0.000000e+000
T "Al_Fuell_Norm" MD20 -- Normierter wert für den Füllstand
T "Al_Fuell_Soll_Norm" MD24 -- Normierter Wert für den Füllstandssollwert
T "M_x1" MD32 -- zwischenmerker halbe Schatdifferenz
T "M_xo" MD36 -- Zwischenmerker obere Schaltschwellen
T "M_xs" MD28 -- Zwischenschalthysterese
T "M_xu" MD40 -- Zwischenmerker untere Schaltschwelle
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
U    TastePumpenFreigabeEIN (NO)
S    PumpenFreigabe

UN   TastePumpenFreigabeAUS (NC)
R    PumpenFreigabe

U    PumpenFreigabe
=    KontrollLeuchteFreigabe

L    Hysterese
L    2.0 // Schreibweise?
:R
T    HystereseHalbe

L    SollNorm
L    HystereseHalbe
+R
L    IstNorm
>R
R    ZuflussAN

L    SollNorm
L    HystereseHalbe
-R
L    IstNorm
<R
S    ZuflussAN

U    ZuflussAN
U    FreigabePumpe
=    PumpeZufluss
=    KontrollLeuchtePumpeZufluss
// alternativ:
UN   ZuflussAN
U    FreigabePumpe
=    PumpeAbfluss
=    KontrollLeuchtePumpeAbfluss
Vielleicht in dieser Art?

PS:
Ich habe nicht vorgesehen, den Regler auszuschalten (nach dem Motto "frisst kein Brot" darf er sich pausenlos "abstrampeln").
Lediglich die Wirksamkeit des Reglers wird beeinflusst über die PumpenFreigabe.
HilfsMerker und MerkerDoppelWorte werden auch nicht bei "Inaktivität" gelöscht.
 
Zuletzt bearbeitet:
Zurück
Oben