2-Punkt Regler mit Hilfe von Niveaumessung

srle

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend

Nach vielen Stunden des Lesen in diesem Forum meld ich mich auch mal zu Wort. Nun ja, eigentlich ist es das 2. mal, vor 5 Monaten eröffnete ich einen Thread und fragte, was dieses Wölkchen sei da oben im Step 7.

Und als Antwort kam, PLCsim.

Heute bin ich weiter, auch dank eurer Beiträge.

Danke dafür.

So nun zu meiner Frage

Ich möchte gerne ein Programm erstellen, bzw. habe es schon erstellt und würde euch gerne fragen was ihr davon haltet oder ob man es noch vereinfachen kann.

Aufgabenstellung:

Ein Behälter verfügt über einen Einlass, am Einlass sitzt ein Ventil (A0.0).

Im Behälter befindet sich eine Niveaumessung die mir einen Analogen Wert zur verfügung stellt.

Aus dem Behälter geht eine Leitung zu einer Maschine, die die Abflussmenge bestimmt, nun schwankt das Niveau im diesem Behälter.

Meine Aufgabe ist es eine 2_Punkt_Regelung zu programmieren um den Behälter immer auf einem Niveau zu halten (in meinem Fall zwischen 60 und 70%).

P.S. ich habe kein PEW benutzt weil ich das Programm im PLCsim simuliert habe (deshalb EW).

Was haltet ihr von dem Programm und was ist verbesserungswürdig bzw. was würdet ihr anders machen?

Netzwerk 1: Skalierung des Analogwertes

CALL "SCALE"
IN :=EW0 // Analogwert
HI_LIM :=1.000000e+002 // Obergrenze
LO_LIM :=0.000000e+000 // Untergrrenze
BIPOLAR:=FALSE
RET_VAL:=EW20 // Fehlerauswertung
OUT :=MD10 // Realwert

L MD 10 // Realwert der Niveaumessung
RND
DTB
BTI
T MW 20 // Niveaumessung als Integerwert



Netzwerk 2: Bestimmung der Sollwerte

L 60 // Sollwert
T MW 30 // Sollwert tief im Merkerwort 30
L 70 // Sollwert
T MW 40 // Sollwerthoch im Merkerwort 40



Netzwerk 3: Vergleichen der Sollwerte und Schalten des Ventils

L MW 20 // Istwert Niveaumessung (INT)
L MW 30 // Sollwert tief im Merkerwort 100
<I // Vergleich Istwert kleiner als Sollwert
SPBN NEXT // Springe wenn VKE 0
S A 0.0 // Einlassventil EIN

NEXT: L MW 20 // Istwert Niveaumessung (INT)
L MW 40 // Sollwert hoch im Merkerwort 100
>I // Vergleiche Istwert grösser als Sollwert
SPBN END // Springe wenn VKE 0
R A 0.0 // Einlassventil AUS

END: NOP 0
 
Das sieht schon ganz gut aus.
Du weist den Ausgang A0.0 zweimal zu.
Nimm stattdessen einen Merker
und verknüpfe dann den Merker mit dem Ausgang.
Symbolisch adressieren wäre auch nicht schlecht.

Code:
Netzwerk 1: Skalierung des Analogwertes
 
CALL "SCALE"
IN :=EW0 // Analogwert
HI_LIM :=1.000000e+002 // Obergrenze
LO_LIM :=0.000000e+000 // Untergrrenze
BIPOLAR:=FALSE
RET_VAL:=EW20 // Fehlerauswertung
OUT :=MD10 // Realwert
 
L MD 10 // Realwert der Niveaumessung
RND 
[B][COLOR=Red]DTB  / darauf kannste verzichten
BTI   / darauf auch[/COLOR][/B]
T MW 20 // Niveaumessung als Integerwert
 
 
 
Netzwerk 2: Bestimmung der Sollwerte
 
L 60 // Sollwert
T MW 30 // Sollwert tief im Merkerwort 30
L 70 // Sollwert
T MW 40 // Sollwerthoch im Merkerwort 40
 
 
 
Netzwerk 3: Vergleichen der Sollwerte und Schalten des Ventils
 
L MW 20 // Istwert Niveaumessung (INT)
L MW 30 // Sollwert tief im Merkerwort 100
<I // Vergleich Istwert kleiner als Sollwert
SPBN NEXT // Springe wenn VKE 0
[COLOR=Red][B]S A 0.0 // Einlassventil EIN[/B][/COLOR]
 
NEXT: L MW 20 // Istwert Niveaumessung (INT)
L MW 40 // Sollwert hoch im Merkerwort 100
>I // Vergleiche Istwert grösser als Sollwert
SPBN END // Springe wenn VKE 0
[COLOR=Red][B]R A 0.0 // Einlassventil AUS[/B][/COLOR]
 
END: NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Funktioniert so

Vorschlag

direkt als Real vergleichen.

in KOP sieht es dann etwa so aus

MD10 | ----- | A0.0
. | <R | |---|
60.0 | -----|--------- |S |
. | |
. | |
MD10 |-------|------- | R |
. | >R | |--|
70.0 |-------|
 
Zurück
Oben