Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: Zufallszahlen erzeugen

  1. #1
    Join Date
    13.09.2008
    Posts
    36
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wie kann ich am besten in S7 Zufallszahlen erzeugen. Habe schon was mit nem Timer probiert aber so wirklich zufällig ist des dann auch nicht.
    Reply With Quote Reply With Quote Zufallszahlen erzeugen  

  2. #2
    Join Date
    20.10.2003
    Location
    Biberach
    Posts
    5,406
    Danke
    1,065
    Erhielt 1,531 Danke für 969 Beiträge

    Default

    Hallo,

    mit der Systemfunktion SFC64 "TIME_TCK" ?

    Nachtrag: Genauer siehe hier.
    Last edited by Gerhard Bäurle; 06.02.2009 at 13:50. Reason: Nachtrag
    Beste Grüße Gerhard Bäurle
    _________________________________________________________________

    Erfahrung heißt gar nichts. Man kann seine Sache auch 35 Jahre schlecht machen. Kurt Tucholzki

  3. #3
    Join Date
    08.04.2008
    Location
    Köln
    Posts
    846
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Default

    Hallo knubbl,

    das Siemens-Beispiel ist ein bisschen misverständlich. Deshalb mal meine Auslegung:

    Code:
     CALL  "TIME_TCK"
           RET_VAL:=#DTime
    
          L     #DTime
          ABS   
          L     #Obergrenze                 // höchste zufallszahl
          MOD   
          T     #Zufallszahl
    Dabei ist #DTime eine Temp-Variable vom Typ Time
    #Obergrenze IN-Variable als INT
    #Zufallszahl OUT-Variable als INT

    Grüße
    Gebs

  4. #4
    Join Date
    08.08.2007
    Location
    Dresden
    Posts
    9,882
    Danke
    1,064
    Erhielt 2,056 Danke für 1,632 Beiträge

    Default

    einfach:

    Code:
    *
          L     #iRandomNumber
          +     1
          T     #iRandomNumber
          L     #iRandomMax
          ==I   
          SPBN  none
          L     0
          T     #iRandomNumber
    none: NOP   0
    manuelle Reproduzierbarkeitschance bei relativ kleinem #iRandomMax nahe 0

    also als würfel echt ne alternative
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Join Date
    13.09.2008
    Posts
    36
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Default

    danke für die antowrten

  6. #6
    Join Date
    08.08.2007
    Location
    Dresden
    Posts
    9,882
    Danke
    1,064
    Erhielt 2,056 Danke für 1,632 Beiträge

    Default

    Quote Originally Posted by knubbl View Post
    "Bilden Sie von der Systemzeit den Absolutwert...."

    Muss ich das verstehen? Der Rest ist klar. Aber des mit dem Absolutwert weiss ich nicht ganz auf was die raus wollen.
    http://de.wikipedia.org/wiki/Betragsfunktion
    Last edited by vierlagig; 06.02.2009 at 14:18. Reason: email-benachrichtigung rulez *g*
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Join Date
    08.04.2008
    Location
    Köln
    Posts
    846
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Default

    Hallo knubbl,

    ich hab' das mal ausprobiert mit ner Obergrenze von 100.
    Da bekommt man die letzten zwei Stellen der Zeit raus. Ist nicht gerade zufällig.
    Das mit ABS ist schwachsinnig, da die Zeit eh positiv ist.
    Wenn Du aber ABS durch DTR ersetzt bekommt man wirklich Zufallszahlen.

    Grüße
    Gebs

  8. #8
    Join Date
    20.05.2008
    Location
    Attendorn
    Posts
    40
    Danke
    1
    Erhielt 7 Danke für 4 Beiträge

    Default

    Hallo , ich habe mir mal eine Baustein in SCL geschriben

    Code:
    //  LK @ 07. Juli 2008
    {Scl_OverwriteBlocks        := 'y'}   // Overwrite the blocks
    {Scl_GenerateReferenceData  := 'y'}   // Generate reference data
    {Scl_S7ServerActive         := 'y'}   // Take the "S7_server" server attribute into consideration
    {Scl_CreateObjectCode       := 'y'}   // Create the object code
    {Scl_OptimizeObjectCode     := 'y'}   // Optimize the object code
    {Scl_MonitorArrayLimits     := 'n'}   // Monitor the array limits
    {Scl_CreateDebugInfo        := 'y'}   // Create the debug info
    {Scl_SetOKFlag              := 'n'}   // Set the OK flag
    {Scl_SetMaximumStringLength := '254'} // Maximal string length
    FUNCTION_BLOCK FB31
    TITLE = 'RND_x'
    // Generiert eine Zufalzzahl
    VERSION : '1.0'
    AUTHOR  : lk
    NAME    : RND_x
    FAMILY  : S7SYSTEM
    //KNOW_HOW_PROTECT
    VAR_INPUT   // Eingangsparameter
        RND_MAX : INT;
        RND_MIN : INT;      
    END_VAR
    VAR_OUTPUT  // Ausgangsparameter
        RND_x   : INT;
    END_VAR
    VAR         // statische Variablen
        q       : DINT := 0;
    END_VAR
    VAR_TEMP    // temporäre Variablen
        x       : REAL;
        y       : REAL;
        z       : DINT;
    END_VAR
    CONST       // Konstanten
        a       := 1664525;
        b       := 2147483647;
        c       := 1013904223;
    END_CONST
        // Anweisungsteil
        z := TIME_TO_DINT(TIME_TCK());  // TIME_TCK = SFC 64
        ;
        IF q = 0 THEN
            q := z;
        END_IF
        ;    
        q := (a * (q + z) + c) MOD b;
        x := DINT_TO_REAL(q) / DINT_TO_REAL(b);
        y := x * INT_TO_REAL(RND_MAX - RND_MIN);
        ;
        RND_x := REAL_TO_INT(ABS(y)) + RND_MIN;
    END_FUNCTION_BLOCK
    viel Spaß damit
    Gruß Tommy

  9. #9
    Join Date
    09.10.2006
    Posts
    272
    Danke
    32
    Erhielt 26 Danke für 24 Beiträge

    Default

    Du kannst auch mal in die Bibliothek von Oscat rein schauen. Da gibt es die Funktionen RDM und RDM2 die liefern dir recht gute Zufallszahlen.

  10. #10
    Join Date
    17.06.2003
    Posts
    1,447
    Danke
    579
    Erhielt 80 Danke für 70 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by knubbl View Post
    Hallo,

    wie kann ich am besten in S7 Zufallszahlen erzeugen. Habe schon was mit nem Timer probiert aber so wirklich zufällig ist des dann auch nicht.
    Ich frage mich immer für was man Zufallszahlen braucht !??

Similar Threads

  1. Step 7 Werte von einem DB mit Zufallszahlen speichern
    By Vokal12 in forum Simatic
    Replies: 1
    Last Post: 22.11.2013, 08:53
  2. Zufallszahlen mit SCL generieren ???
    By bayerguard in forum Simatic
    Replies: 18
    Last Post: 24.12.2011, 15:43
  3. Taktsequenz erzeugen
    By Björn in forum Simatic
    Replies: 4
    Last Post: 26.03.2010, 17:28
  4. Zufallszahlen in S7 generieren
    By Black Scorpion in forum Simatic
    Replies: 3
    Last Post: 13.03.2009, 07:56
  5. Zufallszahlen mit S7
    By Anonymous in forum Simatic
    Replies: 8
    Last Post: 15.09.2003, 12:20

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •