Zufallsgenerator in einer SPS

Hier kommt alles rein was mit Programmieren zu tun hat ( HTML, Java, Perl etc. )
ohoyer
Null-Leiter
Beiträge: 3426
Registriert: Mittwoch 27. Dezember 2006, 13:10
Wohnort: Koblenz

Beitrag von ohoyer »

Hallo Oberwelle,

ich habe da noch ein oder zwei Ideen, bräuchte dafür aber etwas mehr Hintergrundinfos, wie die bisherige Regelidee funktionieren soll, bzw. wovon der Höhenstand im Brunnen abhängt- ist dieser vom Verbrauch abhängig, oder einem Zufluss?
Benutzeravatar
Oberwelle
Beiträge: 8770
Registriert: Montag 4. April 2005, 17:54

Beitrag von Oberwelle »

Moin..

nach einer Brunnen ( Pumpen- ) Revision müsste dann aber jemand die Stundenzähler zurücksetzen... Die Anlage soll immer ohne irgendwelche sonderlichen Eingriffe laufen.
Ein Zugriff in die Steuerung soll nur bei sehr ungewöhnlichen Ereignissen geschehen.

Zur Zeit läuft die Anlage, ohne Pumpenwechsel im laufenden Betrieb, ohne Probleme. Der zufällige Pumpenwechsel wird beim Start der Pumpen durchgeführt, was mehrere male am Tag passiert, es laufen dann auch mal mehrere Pumpen ( Leistungsoptimiert ).
Jetzt soll die Brunnen-Anlage wegen einer Prozesserweiterung so gesteuert werden, das möglichst immer ein Brunnen läuft. Die Leistungsoptimierung fällt praktisch weg.
Die Optimierung muß dann ein großer Wasserspeicher übernehmen. Dadurch kann es natürlich passieren ( mit der jetzigen Steuerung ), daß eine Pumpe ( Brunnen ) mehrere Tage durchläuft.
Das soll / darf nicht passieren.
Eine Kaskadenschaltung sollte nicht gewählt werden ( nach 1 folgt 2 dann 3 usw.). Warum kann ich garnicht mehr sagen. :confused:
.
Ich kann über die Richtigkeit / Vollständigkeit meiner Angaben keine Gewähr übernehmen. Immer alle Vorschriften beachten !
Benutzeravatar
Oberwelle
Beiträge: 8770
Registriert: Montag 4. April 2005, 17:54

Beitrag von Oberwelle »

ohoyer hat geschrieben:Hallo Oberwelle,

ich habe da noch ein oder zwei Ideen, bräuchte dafür aber etwas mehr Hintergrundinfos, wie die bisherige Regelidee funktionieren soll, bzw. wovon der Höhenstand im Brunnen abhängt- ist dieser vom Verbrauch abhängig, oder einem Zufluss?
Von beiden, die 5 Brunnen füllen indirekt einen großen Behälter, von dem dann Wasser abgenommen wird.

Es ist für die Wasserversorgung einer kleinen Stadt.

:)
.
Ich kann über die Richtigkeit / Vollständigkeit meiner Angaben keine Gewähr übernehmen. Immer alle Vorschriften beachten !
ohoyer
Null-Leiter
Beiträge: 3426
Registriert: Mittwoch 27. Dezember 2006, 13:10
Wohnort: Koblenz

Beitrag von ohoyer »

Hmm, dh. es wird quasi über den Schwimmerschalter in dem grossen Wasserbehälter eine Pumpe angefordert? Dh. es kann theoretisch auch passieren, dass die Pumpen mal gar nicht angefordert werden?

Ist der Schwimmer einfach nur offen oder zu vom Schalter, oder ist über Mechanismen eine Hysterese implementiert?

Soll exakt eine Pumpe laufen, oder kann es vorkommen/gewünscht sein, dass mal mehrere Pumpen laufen (weil z.B. viel zuviel Verbrauch da ist?)
ohoyer
Null-Leiter
Beiträge: 3426
Registriert: Mittwoch 27. Dezember 2006, 13:10
Wohnort: Koblenz

Beitrag von ohoyer »

Ok, mal ein anderer Ansatz:

Voraussetzung ist, dass hier die Volumenströme der Pumpen gleich sind, wenn dieses mit der Brunnenbelastung gleichzusetzen ist, der Schwimmerschalter wird hier mal vereinfacht mit 0/1 angenommen, also binär.
Um zu verhindern, dass nach dem Zufallsprinzip nach 3h (immerhin mit 20% Wahrscheinlichkeit) die gleiche Pumpe wieder angeworfen wird, wird diese nach Ausschalten erstmal für eine Zeit gesperrt, z.B. eine Stunde

Wir haben u.a. einen Echtzeitzähler, und dann machen wir uns diverse Zähler dazu:
- Laufzeit der jeweiligen Pumpen/Betriebsstunden
- Zähler seit letztem Reset der Counter



KALTSTART:
- Reset aller Zwischenzähler etc.
- Starte Zeitmessung ab Reset, wenn x Stunden vergangen (z.B. eine Woche), dann Reset aller Zwischenzähler


- Beginn normales Programm
- Prüfen, ob Anforderung da ist (Schwimmer unten, resp. Füllstand unter Sollpegel)
- Nehme Zahl (z.B. letzte Stelle der Uhrzeit oder des Füllstandes durch Bitschiebereien), vergleiche, ob Zahl zwischen 1-5, wenn nein, Zahl +5
- Prüfe, ob Pumpe (Zahl) nicht in Nachlaufsperre ist oder ggf. gerade noch läuft (Fehlerabfangen), andernfalls Zahl=Zahl+1, erneute Prüfung
- Lösche die Sperrmerker
- Starte Pumpe (Zahl) und setze Merker auf "gestartet"
- Zähle Betriebsstunden während des Beriebes hoch, wenn 3h erreicht, oder wenn Schwimmer auf Maximum etc., stoppe Pumpe.
- Lösche Merker, dass Pumpe läuft, setze Merker, dass Pumpe (Zahl) gerade gelaufen hat
->Von vorne
Alle x Stunden: Reset der Zwischenzähler/Betriebsstunden



Soll bewirken:

Nach Neustart der Steuerung sind alle Register/Merker auf Null, mit Ausnahme ggf. der Gesamtbetriebsstundenzähler.
Es läuft nur die Uhr, und der Füllstandszähler als Kriterium für den Regelalgorithmus.
Bei Neustart isses egal, welche Pumpe rangeht, im Tages/Wochenmittel sollen die ja nur gleichmässig laufen.
Wenn eine Pumpe gestartet ist, ist die Abschaltbedingung entweder keine Anforderung seitens der Verbraucher, oder aber ein Timeout nach 3h, oder eben Störungen etc.
Die Pumpe soll ja nicht sofort wieder in Betrieb gehen, also muss sich die Steuerung merken, dass diese gerade gelaufen ist.
Beim Pumpenwechsel resp. Start einer anderen Pumpe muss also geprüft werden, ob diese Pumpe vorher dran war, dh. man erzeugt eine Zufallszahl zwischen 1-5, hier würde ich meinetwegen die letzte Stelle des Füllstands nehmen, prüft, ob die Pumpe dazu davor gelaufen hat, wenn nein, wird diese gestartet, und der Merker zur Sperre gelöscht und für die jetzt aktuelle Pumpe gesetzt, wenn ja (also Pumpe hat gelaufen) wird einfach die Nachbarpumpe genommen.

Hmm, merke gerade, dass ich hier die Betriebsstunden auch als Regelkriterium wegoptimiert habe ...


Beispiel: Steuerung wird resettet/gestartet, Zufallszahl ist 2. Nachschauen, ob Laufmerker für Pumpe2 gesetzt ist, wenn nein, start Pumpe2, Löschen aller Laufmerker, setzen Laufmerker Pumpe2.

Nach 3h oder Überschreiten Füllgrenze:

Stoppen aller Pumpen, Zufallszahl ermitteln. Diese sei jetzt ebenfalls mal wieder 2. Nachschauen, ob Laufmerker gesetzt ist (ja, ist gesetzt). Starten Pumpe 3, Löschen aller Laufmerker, Setzen Laufmerker Pumpe3.


Auf diese Art wir sichergestellt, dass nicht die Pumpe, die schon dran war, genauso zufällig wieder drankommt, und genau eine Pumpe laufen darf.

Alternativ Bestimmung über Betriebsdauer:
Alle x Stunden (meinetwegen 168h/Woche) werden die Zähler resettet.
Bei Anforderung Prüfen, ob Pumpe1 Betriebsstundenzähler seit Reset kleiner als Zeit seit Reset/5 ist. Wenn wahr, dann Prüfen, ob Pumpe1 bereits gelaufen ist, wenn nein, Start Pumpe1, Löschen aller Merker, Setzen Merker Betrieb Pumpe1.

Wenn falsch, dann Prüfen, ob Pumpe2 Betriebsstundenzähler kleiner .....
Benutzeravatar
Oberwelle
Beiträge: 8770
Registriert: Montag 4. April 2005, 17:54

Beitrag von Oberwelle »

ohoyer, du legst dich ja mächtig in Zeug :)

Ich hatte schon beschrieben, daß die SPS den Höhenstand über einen Messwert bekommt ( 4-20mA ). Dieser wird mit Rechenoperationen so angepasst, daß danach eine % Einteilung möglich wird.

Die Pumpen befüllen indirekt ( über Filter etc. ) einen Behälter.

Zur Zeit läuft die Steuerung so ab:


Messwert im Sollwert > keine Reaktion

Messwert ein wenig zu klein über einen längeren Zeitraum > jeweils eine weitere Pumpe zuschalten

Messwert viel zu klein > jeweils eine weitere Pumpe in ein paar min zuschalten

Messwert ein wenig zu hoch über einen längeren Zeitraum > Pumpen aus

Messwert viel zu hoch > Pumpen sofort aus

Sowie ober- und unterhalb der Pumpenbefehle sind Grenzwerte für Alarme gesetzt.


Es gab so bisher noch nie Probleme, auch nicht bei Rohrbrüchen etc.

----------------

Jetzt wird eine Enthärtungsanlage aufgebaut, die zwischen den Filter und dem Behälter eingebaut wird.
Diese Enthärtungsanlage benötigt einen kontinuierlichen Wasserdurchfluß d.h. der Behälter wird ( fast ) immer befüllt.
Bei einer sehr hohen Wasserabnahme wird eine zweite Straße der Enthärtungsanlage zugeschaltet ( welche übrigens auch dauernd wechseln müssen, daß Problem habe aber nicht ich :D )
Da die Wasserabnahme nie konstant ist, muß jetzt der Behälter alles abpuffern.
Das Problem was ich jetzt habe, mit der "alten" Steuerung, waren die Pumpen öfter abgeschaltet ( Pumpenwechsel io ), daß jetzt die Pumpen viele Stunden am Stück laufen..

Dabei fällt mir das nächste Problem auf:

Wenn zwei Pumpen über einen längeren Zeitraum laufen ( > 3Std. ) muß ich nacheinander die Pumpen wechseln. Alles auf einmal aus und mit neuen Pumpen beginnen wird die Enthärtungsanlage nicht mögen..

:schimpf:

Nachtrag: ein noch viel schöneres Problem wartet noch, die ges. Steuerung inkl. SPS ist gedoppelt. Alle Messwerte, Relais, Meldungen etc. gibt es zwei mal..

Nachtrag 2: Betriebsstunden werden übrigens nicht in der SPS erfasst, da keine Visualisierung vorhanden ist und die Pumpen auch über eine Umgehung betrieben werden können ( z.B. Super Gau, beide SPS Anlagen def. ).
.
Ich kann über die Richtigkeit / Vollständigkeit meiner Angaben keine Gewähr übernehmen. Immer alle Vorschriften beachten !
ohoyer
Null-Leiter
Beiträge: 3426
Registriert: Mittwoch 27. Dezember 2006, 13:10
Wohnort: Koblenz

Beitrag von ohoyer »

Nunja, das "Pumpen alle aus" dient dazu, mit möglichst wenig Aufwand in der SPS (die ja auch nur eine begrenzte Anzahl Schritte Zeitnah abarbeiten kann) einen definierten Zustand herzustellen.

Frage ist dann hier, wie lange eine Pumpe braucht, um nach Anlaufbefehl resp. Stopsignal anzulaufen bzw. zu stoppen.

Dann muss eben die SPS statt stumpf alles auszuknipsen, eben schauen, was gerade wirklich eingeschaltet ist, darauf die Merker setzen, was sie jetzt beim nächsten Check nicht neu einschalten darf (können ja mehrere Pumpen sein), und dann beschriebene Zufallszahl ermitteln. Das Hochzählen bei besetzt würde ich beibehalten, aber dann nochmal prüfen, was ob da ebenfalls ein Merker gesetzt ist, wenn ja, nochmal hochzählen.

Andererseits: Kann eigentlich entfallen, da die Zykluszeit einer SPS im Millisekundenbereich liegt, wenn die Pumpe gewechselt werden soll, und mehrere Pumpen gerade was tun müssen, isses meist eh egal, wer gerade was liefert, und eine davon wird dann meist kurz danach, wenn der Pegel stimmt, wieder abgeschaltet.

Beispiel: Pumpe 3+5 Laufen, Pumpe 3 soll gewechselt werden, Zufallszahl ist 2- also alles klar, beide Pumpen aus, Pumpe 2 an- Steuerung wird danach feststellen, dass mehr Bedarf da ist, und eine weitere Pumpe reinnehmen, die wahrscheinlich recht schnell wieder aus ist ->Betriebszeitmässig egal.

Ist der Wert hier aber 3, so wird erhöht auf 4- Also alles klar, beide Pumpen aus, Pumpe 4 an und kurz danach wird kurzfristig eine weitere Pumpe reingenommen.

Problem ist hier 5, hier muss man die Sinnigkeitsprüfung machen, bei einer 6 dann Pumpe 1 einzuschalten...


Trick ist nun, das Einschalten der neuen Pumpen ohne Übergang zu gestalten. Da ein Ausgleichsbehälter ja vorhanden ist, und die Enthärtung sicherlich gewisse Mengen an Durchfluss für eine kurze Zeit verträgt, würde ich hier die Routine in der Steuerung so gestalten, dass die neue Pumpe erst gestartet wird, und nach einer Verzögerung die anderen Pumpen abgeschaltet werden.

Dh.:

- feststellen, was gerade laufen soll (also welche Register gesetzt sind)
- ->diese in Merker
- nach obigen Algorithmus auswürfeln Zufallszahl
- Wenn Zufallszahl eine der aktiven Pumpen trifft, +1
- Diese Zahl in Merker
- Starten neuer Pumpe
- Abschalten der anderen Pumpen nach Verzögerungszeit


Betrachtung: Da es nicht oft vorkommt, dass mehrere Pumpen parallel laufen, und diese auch nicht immer direkt nebeneinander liegen, sollte es von der Belastung über die gemittelte Betriebszeit recht egal sein, wenn bei zwei laufenden Pumpen eine auch nach dem Wechsel nochmal weiterläuft.


Beispiel: Pumpen 2+3 laufen, Pumpe 3 ist jetzt 3h in Betrieb, Pumpe 2 wurde kurzfristig dazugeschaltet. Zufallszahl ist 2, also wird automatisch Pumpe3 in Betrieb gesetzt... resp. gelassen. Pumpe 2 würde abgeschaltet werden, kurz darauf (je nachdem, wie Hysteresen und Schaltverzögerungen implementiert sind) würde die Steuerung eine weitere Pumpe anfordern, die dann ja auch wieder per Zufallszahl ausgewählt werden würde.

Die genaue mathematische statistische Betrachtung möchte ich hier anderen Leuten überlassen, aber mal mit alleine etwas gesundem Menschenverstand gehen hier doch zum Grossteil nur folgende Dinge ein:

- Wie oft in der Betriebszeit (also prozentual) sind mehr als eine Pumpe gleichzeitig angefordert? ->Wahrscheinlichkeit, überhaupt in eine solche Situation zu kommen
- wenn mehr als eine Pumpe angefordert ist, wie hoch ist die Wahrscheinlichkeit, eine der laufenden Pumpen zu wählen?
- wie hoch ist dann die Wahrscheinlichkeit, dass beide Pumpen von der Zahl nebeneinanderliegen, und die Zufallszahl die kleinere von beiden ist?
jf27el
Null-Leiter
Beiträge: 4312
Registriert: Donnerstag 2. August 2007, 09:10
Wohnort: BW

Beitrag von jf27el »

Hallo Oberwelle,

hast Dir da was schönes angelacht:D :p

verräts du uns noch
1.ob das verschieden Brunnen der Pumpen sind.
2.Der Hochbehälter Nachtstromabhängig aufgefüllt wird.
3.Eine Feuerwehrschaltung gebraucht wird oder im Einsatz ist.
4.Da noch Chlor beigemischt werden muss,
5.Das wirklich ein Hochbehälter ist oder ein Druckausgleichsbehälter bedient werden muss.(Dann wird auch ein Luftkompressor nötig.
6.Fernwirktechnik eingesetzt ist.
7.Ein Notstromaggregat vorhanden ist (öffentliche Wasserversorgung)
8. werden die filter automatisch rückgespühlt?

mmmh .....waren jetzt die Kleinigkeiten die mir spontan eingefallen sind; die aber das Programm und deren Parameter erheblich beeinflussen.
Hast Du noch Speicherplatz übrig? Die alten Dinger haben oft keine Reserve.


Gruß
jf27el
-der sich momentan 20 Jahre zurückversetzt fühlt-und überlegt ob es nicht billiger ist eine neue SPS (hochverfügbar) dort einzubauen.
ohoyer
Null-Leiter
Beiträge: 3426
Registriert: Mittwoch 27. Dezember 2006, 13:10
Wohnort: Koblenz

Beitrag von ohoyer »

Bei weiterem Nachdenken fallen hier bei der Regelung noch folgende Dinge an:


- Verbrauchsverhalten der Abnehmer, was sicherlich nicht über den Tag konstant ist- dürfte morgens, wenn alle Duschen und nen Kaffee kochen, am höchsten sein, und dann den Tag schwanken, wahrscheinlich zwischen Mitternacht und morgens um 5 ein Minimum erreichen

Hat da jemand mal ne anschauliche Grafik zu?

- Leistung einer Pumpe
(sind die alle gleich dimensioniert?)

- Leistung einer "Enthärtungsstrasse"

- Fassungsvermögen des Ausgleichsbehälters

- ANschaltverhalten einer Pumpe (wie lange vom Startbefehl bis zur kontinuierlichen Menge isses? Und haben die Pumpen einen festen Wert, oder sind die auch nochmal in der Menge geregelt?)


Sowas ist dann hier auch das klassische Problem eines Kaufmanns, der ein begrenztes Lager hat, Lieferzeiten des Grosshandels/Herstellers kennt und jetzt anhand des Verkaufs abschätzen muss, wieviel Bestand er immer da haben muss- also Minimalbestand, Maximalbestand und Eiserne Reserve- so mit den Optimierungspotentialen nach liquidem Kapital, bestmöglichster Pufferung zur Befriedigung sämtlicher Kunden, Ausnutzung von Lagerkapazitäten etc.

Dann isses u.U. ganz interessant, tagsüber einen recht niedrigen Füllstand im Ausgleichsbehälter zu fahren, und nachts dafür ab Mitternacht eine Pumpe dauernd laufen zu lassen, bis morgens um 5 oder so sagen wir 90% erreicht sind, weil man weiss, dass um diese Zeit alle Leute schlagartig Duschen etc.- somit die Grenzwerte fürs Zuschalten/Abschalten von Pumpen nochmal Tageszeitabhängig verschiebt...
Benutzeravatar
kabelmafia
Beiträge: 7503
Registriert: Montag 7. April 2003, 22:25
Wohnort: eigentlich Hamburg, aber überall und nirgends
Kontaktdaten:

Beitrag von kabelmafia »

Moin,

dann lass´uns mal ne Schrittkette basteln.... wie gut, daß ich gerade zwei Wochen S7-Lehrgang hatte !
Der Strom kann ruhig bunt sein-ohne Kabel nützt das nix.
Bild: NAKBA 3x95/50sm 0,6/1kV VDE U 0250:1936
Dieser Beitrag wurde mit größtmöglicher Sorgfalt erstellt und basiert auf fundierten Kenntnissen der elektrotechn. Regelwerke. Er ist eine pers. Interpretation des Autors. Etwaige rechtliche Empfehlungen und Hinweise sind unverbindlich, eine Rechtsberatung findet nicht statt.
Haftungsansprüche gegen den Autor, die durch die Nutzung oder Nichtnutzung der angebotenen Informationen bzw. durch die Nutzung fehlerhafter und unvollständiger Informationen verursacht werden, sind ausgeschlossen.
Antworten