LabVIEWForum.de - Zweipunktregelung mit Hysterese

LabVIEWForum.de

Normale Version: Zweipunktregelung mit Hysterese
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich bins mal wieder Smile
ich habe noch ein weiteres Problem in meinem Programm.
Ich möchte gerne einen Füllstand regeln. Wenn der Füllstand zu hoch ist soll eine Pumpe an gehen und bis zu einem Minimalwert abpumpen. Wenn der Minimalpunkt erreicht ist soll die Pumpe wieder aus gehen. Dies soll über eine zweipunktregelung mit hysterese geschehen.
Ich hab hier auch schon ein bischen gestöbert und bin nur auf eine Temperaturregelung gestoßen. Ich habe dann versucht das mit meinen Werten zu ersetzen, aber das funktioniert nicht so richtig.
Ich hab mal im Anhang das vi. wie es im Moment ist und vielleicht auch zur Verdeutlichung was genau passieren soll.
Hallo yokokudo,

einfache 2Punkt-Regelung:
Code:
IF pv>sp+hyst THEN out:=TRUE
ELSEIF pv<sp-hyst THEN out:=FALSE
ELSE out:=out

Tipp: manchmal ist es hilfreich, sein VI nicht in LV2016, sondern runterkonvertiert für LV2014 anzuhängen… Big Grin
Huhu GerdW,

mit Codes kann ich leider nichts anfangen. Also ich verstehe was du da geschrieben hast ich weiß aber nicht wie ich das in LabVIEW umsetzten muss. Bin kompletter Newbie

Werd das nächste mal dran denken ich 2014 zu speichern Smile
Deine Fensterbereich kannst Du auch so auswerten.

Gruß
Freddy
Danke Freddy Smile

Jetzt habe ich noch eine weitere Frage Smile

Ich arbeite mit Profibus und ich besitzte ein Ausgangsmodul SM222. An dem Ausgang 0 hängt mein Magnetvetil welches ich ansteuere. An Ausgang 1 ist die Pumpe. Das Magnetventil ist nicht von der Pumpe abhängig und wird über verschiedene Schalter an und aus gemacht (Ist Zeitgesteuert).
Somit habe ich 4 Zustände die mein Ausgangsmodul annehmen kann:
Magnetventil aus, Pumpe aus= binär Code 0
Magnetventil ein, Pumpe aus = 1
Magnetventil ein, Pumpe ein = 11
Magnetventil aus, Pumpe ein= 10

Wie muss ich das dem Programm beibringen bzw. an welche Stelle wird dass dann eingefügt?
Zitat:Das Magnetventil ist nicht von der Pumpe abhängig und wird über verschiedene Schalter an und aus gemacht (Ist Zeitgesteuert).
Jetzt könnte man eventuell mit Queues arbeiten.
Ein Queue prüft den Füllstand, ein Queue die Zeit für das Magnetventil.
Das dritte Queue wird von den beiden oberen angestoßen und erstellt den aktuellen Zustand und sendet an die SM222.

Gruß
Freddy
Hallo Freddy,

so ganz hab ich die Funktion der Queue noch nicht verstanden.

Eine Queue sorgt für die First-in/First-out-(FIFO)-Reihenfolge der Datenobjekte. Ein alltägliches Beispiel wäre die Schlange in einem Schnellrestaurant. Der erste Kunde, der ankommt, ist auch der erste, der bedient wird.


Ich habe eigentlich keine Reihenfolge. Oder muss ich um eine Queue zu benutzen eine haben?
Hallo yokokudo,

Zitat:mit Codes kann ich leider nichts anfangen.
Das ist aber ungünstig, wenn du mit einfachen Algorithmus-Beschreibungen als Programmieren nichts anfangen kannst… Hmm

So könnte eine Umsetzung des oben erwähnten aussehen:
[attachment=57200]
Man könnte natürlich auch mit Case-Strukturen arbeiten…

Zitat:Wie muss ich das dem Programm beibringen bzw. an welche Stelle wird dass dann eingefügt?
Code:
output := Pumpe*2+Magnetventil /* falls du mit Integerwerten arbeitest */
output := BooleanArrayToNumber(BuildArray(Magnetventil, Pumpe)) /* falls du mit boolschen Werten arbeitest */
Nächster Versuch mit Pseudocode! Big Grin

Queues sind hier IMHO Overkill…
Hier nochmal eine Lösung aus.... 2010 Smile
Und wenn Du jetzt den Heizer-Ausgang invertierst , hast du deine Punpenansteuerung... ach, ich häng's an...

[attachment=57204]
Referenz-URLs