# Würfel zufallsgenerator



## jugger (18 April 2008)

guten tag ,
hab ein problem ich weiss nicht wie ich das hinbekommen soll das bei einer 7 segment anzeige immer eine zufalls zahl von 1-9 angezeitgt wird.
programmiere meistens in FUP.
danke im vorraus für die hilfe.


----------



## marlob (18 April 2008)

Das sagt Siemens dazu


> Zum Erzeugen einer Zufallszahl können Sie die Systemfunktion SFC64  "TIME_TCK" verwenden. Bilden Sie von der Systemzeit den Absolutwert  und führen Sie anschließend eine ganzzahlige Division mit der  Obergrenze als Divisor durch. Ermitteln Sie den durch diese  Operation entstandenen Divisionsrest. Diese Zahl können Sie dann  als Zufallszahl weiter verwenden.


----------



## Perfektionist (18 April 2008)

was ist Dein Problem? die 7-Segment-Anzeige? in der Forumssuche den Begriff Zufallsgenerator einzutippen? oder den Wertebereich auf 1 bis 9 zu begrenzen?


----------



## jugger (18 April 2008)

die 7 segment anzeige ist nicht das problem sonder den zufallsgenerator zu programmieren.


----------



## marlob (18 April 2008)

jugger schrieb:


> die 7 segment anzeige ist nicht das problem sonder den zufallsgenerator zu programmieren.


http://www.sps-forum.de/showthread.php?t=12655
ansonsten hier mal nach  zufallsgenerator suchen


----------



## jugger (18 April 2008)

ja das habe ich ja schon getan nur das problem ist ich arbeite mit S5


----------



## marlob (18 April 2008)

jugger schrieb:


> ja das habe ich ja schon getan nur das problem ist ich arbeite mit S5


Das hättest du ja auch mal in deinem ersten Beitrag sagen können


----------



## marlob (18 April 2008)

Gucke mal hier
http://www.sps-forum.de/showpost.php?p=33366&postcount=18
ich habe nicht reingeguckt, aber vielleicht passt es


----------



## jugger (18 April 2008)

ich werds mal ausprobieren


----------



## marlob (18 April 2008)

jugger schrieb:


> ich werds mal ausprobieren


Und sag Bescheid, wenn es funktioniert. Vielleicht ist es auch für andere interessant


----------



## Perfektionist (18 April 2008)

hier mal ein Klassiker, der sich in fast beliebiger Programmiersprache koden lässt:

http://de.wikipedia.org/wiki/Kongruenzgenerator#Fibonacci-Generator


----------



## peter(R) (19 April 2008)

Ich gebe zu es ist nicht so richtig elegant aber es funktioniert.

Es wird einfach ständig von 1 nach 9 gezählt. Mit dem M0.0 wird dann die gerade anstehende Zahl angezeigt ( Im DB1 DW 1 ). Da die Zählung im DB1 DW0 ständig in der Zykluszeit läuft dürfte es wohl zufällig genug sein.


;

    A    DB 1
    L    DW 0
    L    KF +1
    +F
    T    DW 0    ; Zählt immer vor sich hin

    A    DB 1
    L    DW 0
    L    KF +10
    <F
    SPB    =M001
    A    DB 1
    L    KF +1
    T    DW 0    ; Setzt wieder auf 1 wenn 10 erreicht
M001:

    UN    M  0.0    ;Würfeltrigger
    SPB    =M002

    U    M  0.1
    SPB    =M002
    A    DB 1
    L    DW 0
    T    DW 1    ;Würfelergebnis

    U    M  0.0
    R    M  0.0

M002:

    BE


peter(R)


----------



## jugger (19 April 2008)

ja werds mal versuchen


----------



## peter(R) (19 April 2008)

Benutzt du s5 von Siemens oder zB. S5 für Windows von IBH ??
Das mit der 7-Segmentanzeige ist klar ??


peter(R)


----------



## jugger (19 April 2008)

s5 von siemens 
ja ist klar


----------



## peter(R) (19 April 2008)

Hier das gesamte Programm(chen)

peter(R)


----------



## jugger (19 April 2008)

jop das ganze prog


----------



## jugger (24 April 2008)

die dateien die du als anhang bei gefügt hast wie öffnet man die ?


----------



## vierlagig (24 April 2008)

jugger schrieb:


> die dateien die du als anhang bei gefügt hast wie öffnet man die ?



dateien in S5_daten kopieren

Step5 offmachen

Datei -> Projekt -> Einstellen

Tab 2 Bausteine -> Programmdatei -> "zufallst.s5d" eingeben

uebernehmen -> Ini erzeugen lassen

und dann ganz normal weiter über editor


----------



## jugger (24 April 2008)

> Zum Erzeugen einer Zufallszahl können Sie die Systemfunktion SFC64 "TIME_TCK" verwenden. Bilden Sie von der Systemzeit den Absolutwert und führen Sie anschließend eine ganzzahlige Division mit der Obergrenze als Divisor durch. Ermitteln Sie den durch diese Operation entstandenen Divisionsrest. Diese Zahl können Sie dann als Zufallszahl weiter verwenden.


 

Danke schon mal meine frage ist nun, Hab jetzt den SFC64 "TIME_TCK" baustein (war verwundert das es den bei S5 gibt  )Wie bilde ich nun von der Systemzeit den ABsolutwert und ein ganzzahlige Divison mit der Obergrenze als Divisor durch.

Danke im Vorraus .


PS die eine lösung klappt aber Ist nit so mein fall ich bin der meinung das nach einer zeit man rausfinden wann man drücken muss das welche zahl kommt. aber danke.


----------



## peter(R) (24 April 2008)

Betrachte mal die Zykluszeit für einen Durchlauf und versuche dann mal genau zu stoppen. Geht garantiert NICHT. Zumal es dann noch drauf ankommt wo im Zyklus die Taste gedrückt wird. Vergiss es eine Zahl wiederholen zu wollen.

peter(R)


----------



## jugger (24 April 2008)

kannst du das auch mal in fup reinschreiben also mit nem screen würde das gerne mal in der form sehen danke


----------



## peter(R) (24 April 2008)

Ist leider nicht sinnvoll in FUP darstellbar. 
Bei S5 ist FUP fast nur für Bitspielereien brauchbar (ausser Zählen, Vergleichen und so ).

Ist was nicht klar bei der AWL Darstellung ??? Wenn ja was ????


peter(R)


----------



## jugger (24 April 2008)

ist halt sehr kopliziert für einen anfänger kann mir eher fup die funktion vorstellen


----------



## vierlagig (24 April 2008)

zum funktion verstehen müßte dann ja auch S7-FUP reichen ... guckst du anhang

[edit] der vergleicher ist flasch, aber mit bißchen nachdenken... ;-) [/edit]


----------



## peter(R) (24 April 2008)

@ vierlagig

schööön gemacht ..... 

peter(R)


----------



## vierlagig (24 April 2008)

peter(R) schrieb:


> @ vierlagig
> 
> schööön gemacht .....
> 
> peter(R)



danke *g*

hab da jetzt mal mit CMP==I auf 6 abgefragt ... reproduzierbarkeit fehlanzeige! bei den kleinen zahlen schaffst du es echt nich


----------



## peter(R) (24 April 2008)

Der Zähler läuft ja auch IMMER durch. Würde der Zähler zB. mit dem Trigger FP gestartet und mit FN gestoppt, dann wäre da evt. wsa drin aber so ...

Mal sehen vielleicht mache ich mal einen automatischen Würfler, lasse ihn 500 mal Würfeln und checke die Verteilung. Wär doch mal was fürs Wochenende 


peter(R)


----------



## jugger (25 April 2008)

sorry aber mal ne blöde frage was ist der DB10 ?


----------



## marlob (25 April 2008)

jugger schrieb:


> sorry aber mal ne blöde frage was ist der DB10 ?


Ein Datenbaustein, wo deine Daten drin stehen


----------



## marlob (25 April 2008)

jugger schrieb:


> sorry aber mal ne blöde frage was ist der DB10 ?


und hier schreibts du 


jugger schrieb:


> hab en super buch SPS grunlagen S7 mit beispiel aufgaben und Lösungen.


Warum weisst du dann nicht was ein Datenbaustein ist. Oder hattest du eine andere Frage dazu


----------



## jugger (25 April 2008)

meine frage ist, ist der db10 schon in der Bibiothek drin oder muss man den selber programmieren ?


----------



## vierlagig (25 April 2008)

jugger schrieb:


> meine frage ist, ist der db10 schon in der Bibiothek drin oder muss man den selber programmieren ?



siemens hat dir den speziell für deine anwendung schon mitgeliefert, sei froh das du noch die S5 hast, bei den 300er und 400er S7 is der nich mehr dabei - es ist zum aus der haut fahren, wenn ich nicht bald die struktur durchschaue, werd ich wohl nie mehr mit meiner steuerung würfeln können ...

ein tipp: es würde auch mit merkerwörtern funktionieren


----------



## peter(R) (25 April 2008)

... oder Ausgangswörtern. Man könnte es auch in einem Zähler speichern 
oder .... mir fällt da bestimmt noch mehr ein.
Verblüffend ist schon ein wenig, daß du erst schreibst, daß das Programm so nicht gut  genug ist es aber scheinbar nicht richtig durchschaust. 

peter(R)


----------



## marlob (25 April 2008)

peter(R) schrieb:


> ...
> Verblüffend ist schon ein wenig, daß du erst schreibst, daß das Programm so nicht gut  genug ist...


Hier meinte er wohl den Algorithmus



peter(R) schrieb:


> ...
> es aber scheinbar nicht richtig durchschaust.


und hier die Implementierung


----------



## vierlagig (25 April 2008)

marlob schrieb:


> Hier meinte er wohl den Algorithmus
> 
> und hier die Implementierung



wie kann man den algorithmus verstehen, wenn man die implementierung nicht rafft bzw. wie kann man die implementierung nicht verstehen, wenn man den algorithmus kennt? da beißt die maus den faden durch, oder wie das heißt, ich denke es hat sich herauskristallisiert, das man mit einem S7 buch keine S5 proggen und ohne dem wunsch etwas zu lernen beides als treibgut in die spree werfen kann.


----------



## peter(R) (25 April 2008)

Hugh ich habe gesprochen ....  

peter(R)


----------



## marlob (25 April 2008)

vierlagig schrieb:


> wie kann man den algorithmus verstehen, wenn man die implementierung nicht rafft bzw. wie kann man die implementierung nicht verstehen, wenn man den algorithmus kennt? da beißt die maus den faden durch, oder wie das heißt, ich denke es hat sich herauskristallisiert, das man mit einem S7 buch keine S5 proggen und ohne dem wunsch etwas zu lernen beides als treibgut in die spree werfen kann.


Der Algorithmus um die Zufallszahl zu berechnen ist mathematisch gesehen nicht die beste. und das meinte er wohl damit (sagt mir meine Glaskugel).
Ausserdem hat Peter(R) ihn ja deutlich genug erklärt.


peter(R) schrieb:


> ...
> Es wird einfach ständig von 1 nach 9 gezählt. Mit dem M0.0 wird dann die gerade anstehende Zahl angezeigt ( Im DB1 DW 1 )....


Das heisst aber noch lange nicht, das er ihn implemetieren kann, aber verstehen wie es soll schon.


----------



## peter(R) (25 April 2008)

Ich behaupte mal eine mathematisch auch nur halbwegs gute Art eine Zufallszahl zu erzeugen ist mit einer S5 nicht zu machen.

peter(R)


----------



## marlob (25 April 2008)

peter(R) schrieb:


> Ich behaupte mal eine mathematisch auch nur halbwegs gute Art eine Zufallszahl zu erzeugen ist mit einer S5 nicht zu machen.
> 
> peter(R)


Hauptsache für ihn ist es Zufall genug und darauf kommt es ja an


----------



## peter(R) (25 April 2008)

Ist es ja scheinbar nicht ....  


peter(R)

siehe auch   http://de.wikipedia.org/wiki/Rekursiver_arithmetischer_Zufallszahlengenerator


----------



## vierlagig (25 April 2008)

marlob schrieb:


> Hauptsache für ihn ist es Zufall genug und darauf kommt es ja an



selbst wenn die zykluszeit jenseits von gut und böse ist schafft man es nicht ... außer man zieht so schnell wie lucky luke ... aber ich warte auf die tests von peter


----------



## marlob (25 April 2008)

vierlagig schrieb:


> selbst wenn die zykluszeit jenseits von gut und böse ist schafft man es nicht ... außer man zieht so schnell wie lucky luke ... aber ich warte auf die tests von peter


Was schafft man nicht, du meinst 2 mal die gleiche Zahl hintereinander zu bekommen?
Seltsame Antwort auf meinen Beitrag


----------



## vierlagig (25 April 2008)

marlob schrieb:


> Was schafft man nicht, du meinst 2 mal die gleiche Zahl hintereinander zu bekommen?


japp, genau das oder dreimal oder viermal


marlob schrieb:


> Seltsame Antwort auf meinen Beitrag





			
				Profil ansehen: vierlagig schrieb:
			
		

> *Interessen*:
> Verwirrungspunkte sammeln - aktueller Stand: 500


----------



## marlob (25 April 2008)

vierlagig schrieb:


> japp, genau das oder dreimal oder viermal


Eine Zufallszahl definiert sich aber dadurch, das die zufallszahl nicht von früheren Ergebnissen abhängig ist, also nicht deterministisch ist.
Das ist hier aber nicht der Fall. Es handelt sich dann wohl eher um Pseudozufallszahlen, da immer mit dem gleichen Startwert begonnen und immer die gleiche Folge durchlaufen wird. 1. Zyklus 1, 2. Zyklus 2 usw.
Demnach ist die Zufallszahl berechenbar und keine echte Zufallszahl.
Als Pseudozufallszahl scheint sie aber wohl zu taugen


----------



## peter(R) (25 April 2008)

In Rechnern und erst recht in SPSen gibt es keine echten Zufallszahlen.
Alles nur pseudo. Ist immer nur sehr verwickelt gemacht und/oder als Egebnis pseudo Zufallszahl von pseudo Zufallszahl ABER BERECHNET.

Natürlich kann ich theoretisch ausrechnen, daß  2,456789 sec nach dem Start des Programmes die 7 drinsteht (abhängig von der CPU )aber hilft mir das ???

peter(R)


----------



## marlob (25 April 2008)

peter(R) schrieb:


> In Rechnern und erst recht in SPSen gibt es keine echten Zufallszahlen.
> ...


Man könnte über eine Zusatzbaugruppe, das Rauschen elektrischer Bauteile messen und daraus eine Zufallszahl erzeugen. Ich denke, das diese Zahl dann den Kriterien einer echten Zufallszahl entsprechen würde. Aber da sollten wir vielleicht einen Mathematiker fragen


----------



## peter(R) (25 April 2008)

Zumindest was Zufallszahlen in rechnern angeht habe ich mich wohl getäuscht:

siehe  http://de.wikipedia.org/wiki/Physikalischer_Zufallszahlengenerator

die so im Rechner erzeugte Zufallszahl könnte man ja auf den üblichen wegen einer SPS zukommen lassen.

peter(R)


----------



## Perfektionist (25 April 2008)

ich denke mal, in einem Rechnersystem, wo vom CPU-Taktgenerator unabhängig noch irgend ein anderes dazu asynchrones Ereignis stattfindet (sei es ein Interrupt oder auch nur eine Hardware-Echtzeituhr), da ist mehr als Pseudozufall machbar. Das Hauptproblem wird vor allem die Gleichverteilung der generierten Zahlen und eine Unstrukturiertheit der Folge sein (z.B.: auf zwei kleine Zahlen darf nicht zwangsläufig eine große folgen).


----------

