Zufallsgenerator in einer SPS

Hier kommt alles rein was mit Programmieren zu tun hat ( HTML, Java, Perl etc. )
Benutzeravatar
Oberwelle
Beiträge: 8770
Registriert: Montag 4. April 2005, 17:54

Zufallsgenerator in einer SPS

Beitrag von Oberwelle »

Moin..

hat jemand eine Idee, wie man eine Zufallszahl zwischen 1 und 5 generieren kann. Die SPS die ich benutze hat leider keinen Zufallsgenerator.

:cool:
.
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 »

Ist hier Interaktion mit dem Benutzer gefragt, oder muss diese zu beliebigen Zuständen ermittelt werden?

Pseudozahlen kann man ermitteln, indem man z.B. die Zeit (und sei es Zeit seit dem Einschalten) ausliest, diese in ein weiterverarbeitbares Format bringt, ggf. noch mit dem Datum oder nem anderen Zähler multipliziert, und dann Modulo etc. nimmt...

Alternativ: Zeit zwischen zwei Tastendrücken wird gestoppt, Zehntelsekunden extrahiert und diese gerundet als Zahl zwischen 1-5 genommen, wenns ausserhalb 1-5 ist, geteilt 2.
jf27el
Null-Leiter
Beiträge: 4312
Registriert: Donnerstag 2. August 2007, 09:10
Wohnort: BW

Beitrag von jf27el »

Die Frage ist, wie das getriggert wird.

Handtriggerung bringt fast zwangsläufig Zufallszahl.

FUB Zähler 1bis 5 (oder Null auch ?)
Auslesen auf Trigger (im ersten Durchgang)

Gruß
jf27el
Benutzeravatar
50Hertz
Null-Leiter
Beiträge: 3559
Registriert: Sonntag 11. Februar 2007, 15:53
Wohnort: Dümmerland
Kontaktdaten:

Beitrag von 50Hertz »

ohoyer hat geschrieben:
Alternativ: Zeit zwischen zwei Tastendrücken wird gestoppt, Zehntelsekunden extrahiert und diese gerundet als Zahl zwischen 1-5 genommen, wenns ausserhalb 1-5 ist, geteilt 2.
Zeit zwischen zwei Tastendrücken wird gestoppt, Zehntelsekunden extrahiert und diese gerundet als Zahl zwischen 1-5 genommen, wenns >5 ist, wird -5 gerechnet.
So entstehen immer ganzzahlige Ergebnisse.

Gruß
50Hertz
geloescht

Beitrag von geloescht »

Hallo Oberwelle,

hat das Ding einen programmierbaren Zähler?

Wenn ja, den Zähler so programmieren, dass er von eins bis fünf zählt wenn eine Taste gedrückt wird. Die Zahl, die beim Loslassen dran war wird verwertet.


Gruß

Alois
Benutzeravatar
Oberwelle
Beiträge: 8770
Registriert: Montag 4. April 2005, 17:54

Beitrag von Oberwelle »

Ich entschuldige mich für die unpräzise Frage :(

Wenn eine Pumpe länger als 3 Std läuft, soll diese mit einer anderen Pumpe tauschen ( insgesamt 5 Pumpen sind vorhanden )

Timer und Zähler jeglicher Art sind genügend vorhanden, die Zeit vom Start an oder auch die echte Zeit kann ich nicht nehmen, weil nach "3 Std" immer die "gleiche" sek. Zeit errechnet wird.

Ein Benutzer greift auch nicht ein, so daß man nicht die Zeiten nehmen könnte.

Gibt es keinen anderen Trick, wie man ein Zufallsgenerator "bauen" kann...?

:rolleyes:

Nachtrag:
Idee ??

Der Pumpenstart wird über eine Höhenstandsmessung ausgelößt ( Messwert direkt auf SPS ) , diesen Messwert könnte man ja verwenden ?! Der schwankt ständig.
Den Messwert durch schieben ( SLL und SLR ) bis auf die letzte Stelle dezimieren und diese "zufällige" Zahl benutzen ?!

Werde ich mal testen...

Die SPS ist eine Bosch CL150A
.
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 »

An dieser Stelle würde ich das anders machen: Es werden doch sicher auch Betriebsstundenzähler mitgeschrieben, welche Pumpe wielange in Betrieb ist/war?


Dann würde das so aussehen:

- WENN Betriebszeit Pumpe x >3h dann AUS
- Vergleich Betriebszeiten aller Pumpen
- Test, ob Pumpe mit kleinster Betriebszeit noch ggf. Ruhepause nach Abschaltung einhalten muss
- START Pumpe mit kleinster Betriebszeit

Betriebszeit ist hier die absolute Zeit, die das Teil in ihrem Leben gelaufen ist.

Den Vergleich kann man ggf. auch so realisieren, dass man Flags setzt, wer angeworfen wurde, und beim Test, wer als nächstes rangeht, schaut, wer noch nicht reihum dranwar.

- START Pumpe x
- Setze Merker Pumpex-Betrieb auf 1
- WENN Betriebszeit Pumpex >3h Pumpe3 AUS
- LESE Merker Pumpe1, WENN Pumpe1 = 0 dann pruefe auf Ruhepause, sonst Pumpe1 START
- WENN Pumpe1Betrieb=1 dann LESE Merker Pumpe2 ...
...
- Wenn Merker Pumpe5=1 dann SETZE Merker Pumpe1-5=0 (Hier sind offensichtlich alle Pumpen mal gelaufen
- LESE Merker Pumpe1 (also nochmal von vorne)
Benutzeravatar
Oberwelle
Beiträge: 8770
Registriert: Montag 4. April 2005, 17:54

Beitrag von Oberwelle »

Moin ohoyer,

wenn aber eine Pumpe zu wartungszwecken längere Zeit außer Betrieb war, wird diese die Zeit nachholen wollen....:(

Es geht nicht darum, daß alle Pumpen die gleiche Gesamt-Laufzeit haben, sondern das alle Brunnen-Pumpen die Brunnen in der Woche etwa gleichmäßig belasten.

:)
.
Ich kann über die Richtigkeit / Vollständigkeit meiner Angaben keine Gewähr übernehmen. Immer alle Vorschriften beachten !
jf27el
Null-Leiter
Beiträge: 4312
Registriert: Donnerstag 2. August 2007, 09:10
Wohnort: BW

Beitrag von jf27el »

Da Du sowieso jede Pumpe einmal am Tag laufen lassen solltest würde ich die nehmen die am längsten auf der "Ersatzbank" gesessen hat.:D
Welche war zum Zeitpunkt des Bedarfs am längsten aus. :cool:

Gruß
jf27el
Benutzeravatar
SPS
Beiträge: 6019
Registriert: Freitag 16. Juli 2004, 20:27
Kontaktdaten:

Beitrag von SPS »

hallo zusammen,

ich denke auch das Betriebsstunden ausgewertet werden sollen.
Die können ja jede Woche wieder zurückgesetzt werden.
Hat eine Pumpe wegen Wartung weniger Stunden, kann hier sicher ein Faktor eingerechnet werden. Bzw ein Wechsel erzwungen werden.

Bei Zufallszeit kann auch eine Pumpe länger laufen
Antworten