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

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

Thread: Wiederholende Datenerfassungen in einem DB bei s7

  1. #1
    Join Date
    28.07.2003
    Posts
    108
    Danke
    112
    Erhielt 7 Danke für 7 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe folgendes problem bei einem s7 prog:
    ich möchte 10 daten(bei mir zeiten) in einem db so hinterlegen, das sie nacheinander geschrieben werden und nach der 10ten wieder von vorne.
    habe mir auch eine möglichkeit mit zähler, dann mit vergleicher ins dementsprechende dw zuschreiben "gebaut". es muß doch aber auch eine elegantere lösung dafür geben(sfc,fc oder fb oder indierekte Adre.).
    wer kann mir dabei wohl tipps geben?
    Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat
    Reply With Quote Reply With Quote Wiederholende Datenerfassungen in einem DB bei s7  

  2. #2
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    4,856
    Danke
    1,281
    Erhielt 1,125 Danke für 537 Beiträge

    Default

    ohne garantie, nicht getestet.
    eventuell um das ganze noch ne schleife legen wenn alle zeiten in einem zyklus gespeichert werden sollen.
    bzw. von wo sollen die zeiten ausgelesen werden?

    Code:
          L     MD     0                    //Pointer DB-Wort
          L     20
          >=I                                //Wenn DW20 erreicht wurde
          SPBN  M001
          L     0
          T     MD     0                    //Setze Pointer wieder auf 0
    
    M001: NOP   0
    
          L     MD     4                    //Zeitwert steht in MD4
          T     DBW [MD 0]                  //Schreibe Zeit in DBW0 - DBW20
    
          L     MD     0
          +     2                            //pointer um ein Wort erhöhen
          T     MD     0

  3. #3
    loop2003 Gast

    Default

    Hey DEGO,

    ich versuche jetzt mal dein Problem zu analysieren:

    also du möchtest alle x Sekunden ein Wert in ein Register eintragen, welches eine bestimmte Länge hat! Richtig?

    Warte auf Antwort
    Grüsslies

  4. #4
    Anonymous Gast

    Default

    :P Hi, in der S7 gibt es eine viel elegantere Lösung.

    Versuch mal den Befehl "Loop"

    Die Funktion ist im Hilfetext F1 gut beschrieben.

  5. #5
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    4,856
    Danke
    1,281
    Erhielt 1,125 Danke für 537 Beiträge

    Default

    loop zählt aber runter, und wir wollen immer zwei hochzählen...
    man könnte loop wie beschrieben einsetzen um alle zeiten in einem zyklus zu verarbeiten.

    also um das ganze programm herum noch ne loop schleife...

  6. #6
    Join Date
    19.06.2003
    Posts
    206
    Danke
    13
    Erhielt 21 Danke für 16 Beiträge

    Default

    Hallo,
    Ich setzte für solche Aufgabe sehr oft das Zusatzproramm "SCL" ein.
    Mit diesem Programmen lassen sich For..Next-Schleifen und Arrays mit variablen Index programmieren.
    Wenn die Zykluszeit aber möglichst kurz sein soll, sollte aber in AWL programmiert werden.
    Gruss Martin

  7. #7
    Anonymous Gast

    Default


    Schreibe im FC-Kopf die temporären Variablen
    0.0 Zaehler WORD Schleifenzähler
    0.2 Zeiger DWORD Zeiger zum Speichern

    Netzwerk 1

    AUF DB 10 // Aufschlagen des Datenbausteines
    // um die Zeiten zu speichern
    L P#0.0
    T #Zeiger
    L 10 // Schleife mit dem Zählwert 10 laden
    Next: T #Zaehler
    L #Zeiger
    LAR1
    L MD 4
    T DBD [AR1,P#0.0]
    L #Zeiger
    L P#4.0
    +D
    T #Zeiger

    L #Zaehler
    LOOP Next

    Ich hoffe, ich konnte helfen.

  8. #8
    Anonymous Gast

    Default

    Tschuldigung habe mich nicht zu Erkennen gegeben.

  9. #9
    Join Date
    17.06.2003
    Posts
    18
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo DEGO,

    einen umlaufenden Zeiger kannst du ganz einfach mit der MOD-Anweisung berechnen:

    //*** Umlaufregister mit MOD
    L #REGISTER_ZEIGER
    L #ANZAHL
    MOD
    T #REGISTER_ZEIGER // 0..ANZAHL


    Ein Beispiel findest du auch unter

    http://www.sps-net.de/infos/info_main.htm
    "Verwaltung eines FiFo's für Integerwerte"


    mfG, Stefan



    Zwei Dinge sind unendlich:
    Das All
    und
    die Dummheit der Menschen.

    (bei Ersterem bin ich mir nicht so sicher)

  10. #10
    Join Date
    17.06.2003
    Posts
    18
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo DEGO,

    noch ein Hinweis. Wenn du in meinem o.g. Beispiel (unter www.sps-net.de) den Ausgang "VOLL" mit dem Eingang "AUSTRAGEN" verschaltest, sollte der Baustein als reines Umlaufregister funktionieren!

    mfG, Stefan

Similar Threads

  1. Multiinstanzing aus einem OB
    By vollmi in forum Simatic
    Replies: 15
    Last Post: 18.02.2011, 14:08
  2. UDT in einem DB
    By Bensen83 in forum Simatic
    Replies: 5
    Last Post: 10.08.2010, 13:39
  3. Ausgang von einem BK9100 aus einem BC9050 steuern
    By merlin in forum CODESYS und IEC61131
    Replies: 2
    Last Post: 28.09.2008, 10:51
  4. 2 mastersysteme an einem cp
    By delphie in forum Feldbusse
    Replies: 0
    Last Post: 15.03.2008, 04:02
  5. Verbindungskontrolle zu einem MP
    By Frustrated in forum HMI
    Replies: 8
    Last Post: 19.12.2006, 16:06

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
  •