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

Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 37 von 37

Thema: Bit-Zustand zufällig ändern (Zufallsgenerator)

  1. #31
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe ja geschrieben dass es nur eine Idee ist.
    Bislang habe ich noch nichts brauchbares zusammenprogrammiert bekommen, mit den o.g. Vorschlägen. Vielleicht denke ich auch zu kompliziert, keine Ahnung.
    Bin jedenfalls noch am Rumprobieren, wenn es in der S7 klappt ist es natürlich das Beste!
    MfG
    DerMatze
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  2. #32
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Zitat Zitat von Shortman Beitrag anzeigen
    Hier ein kurzes Beispiel, wie ich, in gewissem Rahmen, Zufallszahlen mit einer S7-300 generiere. Je kleiner der gewählte Zahlenbereich (z.B. 0-100) desto größer der Zufall.

    // Durch Resteverwertung einer Division einer sich verändernden Zahl(Zeit)
    // erhält man einen Wert der immer kleiner ist als der Divisor. Durch Addition, kann noch die Untergrenze verändert werden.
    // M 0.0 ist für einen Zyklus 1 wenn die Zufallszeit abgelaufen ist

    UN M 0.0 //Auslöserbit für eine Aktion
    SPB M001
    // Berechnen der Zufallszahl
    CALL "TIME_TCK" //CPU Zeit seit dem Start in ms
    RET_VAL:=MD10
    L MD 10
    L 5000 //Divisor und gleichzeitig die Grenze des Restwerts
    MOD
    L 10 //z.B. 10s Mindestzeit
    +I
    T MW 20
    SET
    R M 0.0

    // Abarbeiten der Zeit
    M001: U M 1.5 //aus dem Merkertaktbyte der CPU (1s)
    FP M 0.1
    SPBN M002
    L MW 22 //Zeitzähler
    + 1
    T MW 22
    L MW 20 //berechnete Zufallszeit
    <I
    SPB M002
    SET
    S M 0.0
    L 0
    T MW 22
    M002: NOP 0

    Vielleicht ist es da was du suchst.
    Gerhard
    Danke Gerhard, ich werds mal versuchen...
    Ist der "TIME_TCK" ein SFB?

    MfG
    DerMatze
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  3. #33
    Registriert seit
    23.07.2010
    Ort
    Kärnten
    Beiträge
    13
    Danke
    7
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ja, das ist der SFB64zu finden in der Standardbibliothek.
    Gerhard

  4. #34
    Registriert seit
    23.07.2010
    Ort
    Kärnten
    Beiträge
    13
    Danke
    7
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Sorry, ich meinte den SFC64 .

  5. #35
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Hallo Shortman,

    ich habe mir einen Testbaustein erstellt in dem der o.g. Code läuft.
    Es scheint so dass "irendwann" der M0.0 gesetzt wird.
    Mit der "5000" und der "10" kann ich die Parameter zur Berechnung einstellen?
    Da AWL nicht so mein Ding ist, noch eine Frage:
    Kann ich es so einstellen dass die Grenzwerte einer Zeit entsprechen?
    z.B. wenn die Funktion gestartet ist, die Obergrenze 30min und die Untergernze 10min eingestellt wird - irgendwo dazwischen läuft die Zufallszeit ab und M0.0 = 1
    Falls du jetzt noch mitkommst was ich meine...?

    MfG
    DerMatze
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  6. #36
    Registriert seit
    23.07.2010
    Ort
    Kärnten
    Beiträge
    13
    Danke
    7
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Die Zeitbasis ist durch den Taktmerker von 1s vorgegeben und der Zufallswert ist eine Ganzzahl auf Sekundenbasis. Der Merker M0.0 entspricht einem Taster zum Ein- oder Ausschalten von ....
    Statt der 10 musst eben 10minx60s/min=600s als Untergrenze und statt der 5000 eben (30min-10min)x60s/min=1200s als variablen Bereich nehmen. Hat nichts mit AWL zu tun, das ist Mathematik.
    Wenn'st das ganze noch hübsch in einen Funktionsbaustein verpackst, die Merker als statische Variablen und den Merker 0.0 als Ausgang, dann kannst das ganze beliebig oft im Programm verwenden.
    Wie sinnvoll du dies in deinem Programm verwendest, musst schon selbst rausfinden und auch ausprogrammieren.
    Denn ich lebe davon Programme zu schreiben, vom Herschenken ist noch keiner satt geworden.

    Wenn ich da was falsch verstanden habe, dann musst es mir anders erklären.

    Gerhard

  7. #37
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Shortman Beitrag anzeigen
    Statt der 10 musst eben 10minx60s/min=600s als Untergrenze und statt der 5000 eben (30min-10min)x60s/min=1200s als variablen Bereich nehmen.
    genau da ist es, jetzt kann ich es nachvollziehen - danke

    Zitat Zitat von Shortman Beitrag anzeigen
    Wenn'st das ganze noch hübsch in einen Funktionsbaustein verpackst, die Merker als statische Variablen und den Merker 0.0 als Ausgang, dann kannst das ganze beliebig oft im Programm verwenden.
    Das habe ich schon gemacht. Im Programm wird es dann noch implementiert.

    Zitat Zitat von Shortman Beitrag anzeigen
    Wenn ich da was falsch verstanden habe, dann musst es mir anders erklären.
    Nein, genau das war es!
    Vielen Dank.
    Somit ist mein Problem gelöst und ich habe mein "Zufallsbit"

    MfG
    DerMatze
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

Ähnliche Themen

  1. Bit's mit Zustand 1 im DB Zählen
    Von norman im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 11.09.2014, 14:24
  2. digitalausgänge zufällig steuern
    Von McPaul im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.12.2007, 15:26
  3. Antworten: 4
    Letzter Beitrag: 23.10.2007, 22:06
  4. Ein Bit im Doppelwort ändern (SCL)
    Von M-Arens im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 14.03.2007, 15:29
  5. einzelne Bit eines Bytes ändern
    Von Farinin im Forum HMI
    Antworten: 10
    Letzter Beitrag: 29.09.2006, 11:24

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •