TIA Zufallsgenerator in KOP (notfalls SCL) | S7-1200

Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute!

Ich soll mich mit einer SPS auseinandersetzen und probier einfach aus was mir gerade in den Kopf kommt. :)
Mein nächster Plan: Ich möchte einen Würfelwurf (bzw. mehrere) simulieren (bspw. Taste F1 auf dem HMI drücken und dann im jeweiligen Feld einen zufälligen Wert bekommen).

Hoffe ihr versteht wie ich mir das vorstelle und könnt mir einen Tipp geben (blutiger Anfänger).

Mit freundlichen Grüßen
Simon
 
In ner separaten kleinen Toolsammlung gibt's einen Baustein der Integer-Zufallswerte liefert. Wird wahrscheinlich gut genug sein...
https://support.industry.siemens.com/cs/ww/de/view/29851674

Der liefert Werte von -32768 bis 32767. Den Bereich kannst du mit ner Modulo-Division durch 6 auf -5 bis 5 eingrenzen wobei 0 der Würfelzahl 6 entspricht.
Zufallsverteilung wird wahrscheinlich nicht perfekt sein.

EDIT: hucki hat in Beitrag #11 den richtigen Link für die TIA-Version gepostet. Danke.
 
Zuletzt bearbeitet:
Hallo Simon,

würde dir auch die von Ronin empfohlene Toolsammlung nahelegen.
Wenn du selbst einen Zufallsgenerator schreiben willst ist das denke ich als Anfänger doch eine größere Herausforderung als du dir vorstellst ;-)
 
Okay, bevor ich die aber installiere/runterlade: Kann ich die Zufallswerte eingrenzen, so dass entweder nur Zahlen zwischen 1-20 kommen, oder 1-4, 1-6 etc.?

Falls nicht, dann hat das Vorhaben sowieso wenig Sinn :sad:
 
Wenn es etwas ganz einfaches werden soll, könntest du z.B. zyklisch eine Variable hochzählen bis z.B. 6, dann rücksetzen auf den Minwert 1

Dann rotiert diese Variable zwischen 1-6 aufsteigen. Mit einer Trigger-Flanke könntest du dann diesen Wert auslesen und in eine andere Variable schreiben.

Wie gesagt, dies wäre halt eine ganz einfache Möglichkeit, hat halt den Nachteil, dass bei einer großen Range z.B. 1-10.000 und mehrmaligen triggern
immer aufsteigende Werte kommen. Für eine Würfelspiel also 1-6 sollte es ja reichen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hatte am Anfang nur gesehen dass du einen Zufallsgenerator suchst und die Sache mit Anfänger und Würfelspiel ein wenig übersehen.
Einfacher ist definitiv die Idee von DeltaMikeAir, da hast du es dann auch selbst programmiert.
Deine Anforderungen an den Generator bezüglich Wiederholung und Vorraussage-Sicherheit werden ja nicht so hoch sein.

Jetzt hast du zwei Lösungen zum probieren... ;)
 
Naja "einfacher" ist Ansichtssache. Muss ja herausfinden wie das von ihm beschriebene umzusetzen ist. Hatte gehofft es ist so einfach wie ein Programm für die pq-Formel :D
 
Definiere "Zufallszahl"!

Wenn es für deine Definition des "Zufalls" ausreicht, das Ergebnis aus menschlichem Ermessen nicht beeinflussen zu können, so wie es beim Würfeln der Fall ist, so nimm ganz einfach die ms der Tageszeit, die µs der Zykluszeit, oder irgend so etwas, multipliziere dies mit dem Brustumfang deiner Nachbarin und berechne den Rest der Division durch x (MOD) und addiere y dazu.

Das Ganze kannst du ja mal statistisch auswerten, in dem du die Ergebnisse zählst. Diese Zählerstände dürften dann nur gering voneinander abweichen.

Für einen Würfel solltest du eine Art von "Ausrolleffekt" programmieren :ROFLMAO: .
 
Für einen Würfel solltest du eine Art von "Ausrolleffekt" programmieren :ROFLMAO: .

Die Zufallszahl des Würfels, wenn er denn wieder "feste" liegt, ist ja wohl das Einfachste...

Die zufällige Bewegungsrichtung, Rollanimation und dann noch die Anzeige der Würfelpunkte während des Wurfes, damit es auch später zum Ergebnis passt... Auf dem HMI bei der Anzeige, das ist ja wohl die knifflige Geschichte :D

Und wenn man das hat, fehlen noch in versteckten Einstellungen, Variablen mit denen man die Würfelkanten "beeinflussen" kann um das Würfelverhalten sowie das Ergebnis zu manipulieren ;)

MfG Fabsi
 
Die Random Funktion aus der LGF hat leider meine statistischen Tests nicht bestanden. Deshalb habe ich hier die Zufall Funktion neu geschrieben. Ich verwende eine CRC32 Funktion die 32Bit DWord liefert. Daraus mache ich dann beliebige Real Zahlen. Jede Funktion besitzt einen Seed Eingang. Dort einfach den letzten Wert einspeisen. Getestet mit Tia 14.1 und 15 unter 1200 und 1500.

https://pastebin.com/E6Y3Lh52

Text in eine Datei mit der Erweiterung .scl packen. Dann Einfügen mit PLLC -> Programmbausteine -> Externe Quellen -> Neue externe Datei hinzufügen. Dann nur noch mit "Bausteine aus Quelle generieren" Bausteine erzeugen.
 
Zurück
Oben