Zufallszeit

forellengarten

Level-1
Beiträge
217
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
ich möchte eine Zufallszeit (TIME) generieren mit der Möglichkeit, einen gewünschten MIN und MAX Zeitwert vorzugeben.

Ich kenne die Funktion DRAND und RND2 (oscat) - was ich vermutlich bräuchte wäre ein Zufallsgenerator der mir ein DWORD (weil auch TIME 32bit hat) generiert, das ganze mit Max.- und Minwert vorgabe. Wer hätte hier einen Ansatz für mich?

danke!
 
Ich kenne die OSCAT-Zufalls-Funktionen nicht und weiß nicht was da rauskommt (kann man den gewünschten Bereich da vielleicht direkt angeben oder kommt ein normierter Wert raus?), doch üblicherweise braucht man den von einer Zufallsfunktion gelieferten Wert einfach nur passend skalieren. Angenommen der Zufallswert ist ein REAL-Wert zwischen 0.0 und 1.0, dann könntest Du etwa so rechnen:
Code:
zeitwert := REAL_TO_DINT( zufallswert * (MAX - MIN) + MIN );

Harald
 
die oscat-funktion mach nur 16bit, während TIME 32 bit hat.... wünschenswert wäre daher ein 32bit zufallsgenerator mit min/max vorgabe....
Und wo ist da jetzt das Problem?
Hast Du ein bisschen eigene Phantasie oder vielleicht sogar ein bisschen Ahnung von dem was Du da tust?
Könntest Du evtl. auch ein bisschen mithelfen bei der Lösungsfindung für Dich oder dürfen wir uns die Details von OSCAT selber zusammensuchen?


Ich kenne die Funktion DRAND und RND2 (oscat)
DRAND und RND2 finde ich nicht bei OSCAT
In der OSCAT-Lib Basic gibt es die Funktionen RDM und RDM2 (ich hoffe mal daß der aktuelle Quelltext mit der Version bei GitHub übereinstimmt)

RDM liefert eine REAL-Zufallszahl "zwischen 0 und 1" - die Funktion kannst Du nehmen und das Ergebnis in meine Formel von Beitrag #2 geben, welche Dir einen 32-Bit Ganzzahl-Wert kompatibel zu TIME# liefert - hast Du das denn mal ausprobiert?

RDM2 behauptet, eine INT-Zufallszahl zwischen vorgegebenen Grenzen zu liefern - Du könntest den Quelltext übernehmen und auf DINT umschreiben (RDM2 macht im Grunde auch nichts anderes als meine Formel) und ausführlich testen und durchdenken und Fehler beseitigen

Ich habe die OSCAT-Funktionen nicht getestet. Zumindest die S7-Version von RDM2 ist fehlerhaft - ich weiß nicht welche Fehler in der Version für IEC1131 drin sind.
Ich weiß nicht ob das OSCAT-Team noch Bugs entfernt - die OSCAT-Webseiten und die Libs machen einen relativ ungepflegten/unaktuellen Eindruck.

Harald
 
Und wo ist da jetzt das Problem?
Hast Du ein bisschen eigene Phantasie oder vielleicht sogar ein bisschen Ahnung von dem was Du da tust?
Könntest Du evtl. auch ein bisschen mithelfen bei der Lösungsfindung für Dich oder dürfen wir uns die Details von OSCAT selber zusammensuchen?
Harald
ich mag so konstruktive Beiträge :TOOL: :sw5:
 
Die Oscat Lib ist unverschlüsselt, Opensource.

Einfach die Lib in CODESYS öffnen, dann kannst Du die Bausteine komplett sehen, z.B. den Du brauchst als Vorlage exportieren, entsprechend modifizieren usw.

Es ist nicht immer sofort ersichtlich, welche Fähigkeiten ein Themenstarter hat.

PN/DP muss ich zustimmen

@forellengarten etwas genauer Fragen, wo es noch hakt.
 
Die Oscat Lib ist unverschlüsselt, Opensource.

Einfach die Lib in CODESYS öffnen, dann kannst Du die Bausteine komplett sehen, z.B. den Du brauchst als Vorlage exportieren, entsprechend modifizieren usw.

Es ist nicht immer sofort ersichtlich, welche Fähigkeiten ein Themenstarter hat.

PN/DP muss ich zustimmen

@forellengarten etwas genauer Fragen, wo es noch hakt.

Kann man die Lib auch mit etwas anderem als CODESYS öffnen?
 
Zurück
Oben