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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Messwert alle paar Minuten speichern und dann wieder überschreiben

  1. #1
    Registriert seit
    28.11.2006
    Ort
    Berlin
    Beiträge
    16
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    CPU: 312c
    Step 7 v5.4

    Guten Tag,

    ich weiß nicht mehr weiter, denn ich habe folgendes Problem:

    Ich bekomme einen Messwert im REAL-Format und möchte den aktuellen Wert zum Beispiel alle 10Minuten in einem Datenbaustein speichern.

    Damit der Baustein nicht zu groß wird, müsste die Steuerung nach z.B. 100 Werten in einer Art Endlosschleife wieder den ersten Messwert überschreiben und genauso weitermachen wie vorher.

    Wie kann ich sowas am besten ohne viel Schreibarbeit realisieren, denn bei zig Werten immer die Datenbausteinadresse einzugeben ist sehr mühsam.
    Gut wäre eine kleines Programmierbeispiel mit 2 oder drei Werten und einer einstellbaren Zeit.

    Danke für entsprechende Antworten im Voraus
    Zitieren Zitieren Messwert alle paar Minuten speichern und dann wieder überschreiben  

  2. #2
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    so etwa:
    Code:
    // Istwert abspeichern
          UN Zeitflanke                      // dein Zeitflag..
          SPB ende
    
          AUF   #Daten_DB
          L     Indexmerker                   // Index integer 0,1,2,3....
          L     4
          *D    
          SLD   3
          T     #Ind_pointer                // Pointer-Adresse berechnet:0,4,8,...
          L     #Ist_Wert
          T     DBD [#Ind_pointer]
    
    // Index erhöhen, bzw. reseten
          L     Indexmerker
          L     1
          +D    
          T     Indexmerker
     
          L     Indexmerker
          L     100
          >=D   
          SPBN  klei
          L     0
          T     Indexmerker
    klei: SET   
    
    ende:SET
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Wert speichern  

  3. #3
    alex_1704 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2006
    Ort
    Berlin
    Beiträge
    16
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die schnelle Antwort, habe das Programm gleich mit dem Simulator ausprobiert und funktioniert soweit, allerdings hatte ich das Problem mit dem #indexmarker, dass er sich nicht von allein erhöht hat und deshalb nur einen Messwert mit dem jeweiligen Index in die Adresse des DB's geschrieben hat.
    Deshalb habe ich einen Zähler mit meinem Timer verknüpft, der dann den Index hochzählt.
    Allerdings habe ich noch das Problem, dass es regelmäßige Aussetzter gibt, wo keine Werte in den Datenbaustein gespeichert werden, nämlich zwischen den Adressen DBXX.DBD40-DBXX.DBD60 oder DBXX.DBD104-DBXX.DBD124.

    Außerdem weiß vielleicht ein Spezialist, wie man die Online-Werte irgendwie auslesen kann, damit ich sie in Windows lesen kann z.B. im Editor oder MS-Excel. Geht das vielleicht einfach auf die MMC-Karte?

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.264
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Was willst du genau machen, bei jedem Speicherimpuls mehrere Werte Speichern?

    Der Indexmerker ist ein Merkerwort, Datenbausteinwort, oder Statische Integer!

    Wenn du mehrere Werte speichern willst:

    Code:
      L     #Ind_pointer
      L     P#4.0
      +D    
      T     #Ind_pointer    setzt den Indexpointer um 1 DBD weiter.
    Dann mußt du aber auch den Indexmerker mit erhöhen, damit beim nächsten Triggerimpuls die richtige Speicheradresse berechnet wird.

    Online-Werte auslesen:
    1. Direkt mit einer Software, z.Bsp. von Deltalogic
    2. Direkt mit Excel und Libnodave (dazu läuft grad ein Thread hier)
    3. Indirekt, Online gehen, den Datenbaustein kopieren in die Offline-Datei,
    daraus eine Quelle erzeugen, diese dann kopieren, oder exportieren und
    in Excel einfügen/Öffnen, vorher bei Bedarf mit einem Editor alles
    entfernen, was man nicht benötigt.
    Geändert von Ralle (23.01.2007 um 15:19 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    alex_1704 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2006
    Ort
    Berlin
    Beiträge
    16
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nein, ich will nur einen Wert speichern,
    trotzdem habe ich immer noch das Problem, dass der Datenbaustein manche Werte auslässt.
    Im Anhang habe ich nochmal meinen OB1 und den DB, den FC habe ich nicht geändert.

    Trotzdem Danke
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Antwort  

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.264
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Damit dein Indexmerker im FC hochgezählt wird, muß als IN/OUT deklariert sein, ich vermute mal du hast ihn als IN am FC stehen. Zeig mal noch deinen FC her, der Speicher wohl andauerndd, bis sich MW50 ändert?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    alex_1704 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2006
    Ort
    Berlin
    Beiträge
    16
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Den Indexmerker war al IN deklariert wie du vermutet hast.
    Habe jetzt geändert, allerdings besteht immer noch das selbe Problem.

    PS: Ich hab jetzt die Schnauze voll und muss jetzt Feierabend machen. Bin morgen wieder online.
    Mfg alex

    Den FC habe ich jetzt auch noch rangehängt
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Antwort  

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.264
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Ok, alles klar.
    Das Netzwerk mit den Zähler kannst du erstmal komplett rauswerfen. Die Lücken kommen im Übrigen daher:

    CV DUAL WORD E, A, M, D, L Aktueller Zählwert, hexadezimal codiert
    CV_BCD DEZ WORD E, A, M, D, L Aktueller Zählwert, im BCD-Format codiert
    Du hast den BCD-codierten Ausgang des Zählers genutzt.
    Da aber nun dein MW50 richtig am IN/OUT steht, funktioniert es ohne den Zähler.

    Außerdem solltest du eine Flanke als Trigger nutzen, siehe Bild. Den FC96 um eine IN Bool Trigger erweitern und im FC96 statt
    Code:
    UN T1 
    
    UN #Trigger
    einsetzen, dann funktioniert das Ganze.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Ralle (23.01.2007 um 15:21 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.264
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Ach so noch als Zusatz. Dein MW50 wird nicht auf ungültige Werte überwacht, also mindesten im OB100 Null ins MW50 laden! Sonst kann es passieren, daß der Index aus dem DB "rausläuft" und dein AG geht in Stop
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  10. #10
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    -der Indexmerker wird überwacht im FC(>=100).
    -dass die CPU nicht in STOP geht, gibt es die OB121, OB122.

    Ausserdem gibt es das CPU Taktmerkerbyte, von dessen Bits macht man
    sich eine passende Flanke, wozu die ganzen Timer...

    an Alex:
    - nicht vergessen, mit Flanken zu arbeiten ist das A und O
    für eine gute Implementierung. Und andere Sachen, wie z.B.:

    Code:
    U    E0.0     // Start/Stop Taste
    FP   M10.0  // Zustand speichern
    X    A0.0
    =    A0.0    // Ausgang
    Gruss: Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Kleine Ergänzung  

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 15.12.2009, 10:26
  2. libnodave gibt nicht alle Handles wieder frei
    Von Manni01 im Forum Hochsprachen - OPC
    Antworten: 24
    Letzter Beitrag: 28.05.2009, 22:42
  3. Antworten: 4
    Letzter Beitrag: 27.05.2009, 10:45
  4. Alle Jahre wieder... Stress im Ausland..
    Von h.scholli im Forum Stammtisch
    Antworten: 5
    Letzter Beitrag: 15.12.2008, 08:29
  5. fc alle x minuten aufrufen
    Von verona im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 24.01.2005, 18:25

Lesezeichen

Berechtigungen

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