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,975
    Danke
    1,330
    Erhielt 1,155 Danke für 547 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,975
    Danke
    1,330
    Erhielt 1,155 Danke für 547 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
    232
    Danke
    13
    Erhielt 22 Danke für 17 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. TIA IN/OUT bei einem FB nicht belegen
    By SteSchlu in forum Simatic
    Replies: 1
    Last Post: 29.06.2016, 07:50
  2. Step 7 Bereichslängenfehler bei einem Multiinstanz-FC
    By Pimp.my.PC in forum Simatic
    Replies: 18
    Last Post: 22.04.2016, 10:54
  3. Folienantrieb bei einem Stretcher
    By Paule in forum Antriebstechnik
    Replies: 17
    Last Post: 14.07.2011, 19:43
  4. Bausteinadresse bei einem Fehler
    By mitchih in forum Simatic
    Replies: 5
    Last Post: 29.07.2010, 19:45
  5. speichern bei einem ereignis
    By Anonymous in forum Hochsprachen - OPC
    Replies: 11
    Last Post: 20.12.2005, 13:42

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
  •