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

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

Thema: Wago 750 Messwerte in Array schreiben

  1. #1
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte ,wenn ein Triggersignal anstand, die Messwerte erst in einen Array schreiben und dann wenn die eingestellte Zeit abgelaufen ist den Array auslesen und in eine CSV Datei schreiben.
    Wenn ich die Messwerte direkt in eine CSV Datei schreibe wird es zu langsam.Das dauert dann um die 60-80ms.Ich erhoffe mir das es beim Array schreiben schneller geht.Ziel ist es um die 10ms.
    Wenn jemand eine andere Idee hat wäre es auch super.Kenne mich nicht so gut mit Wago aus,muss es aber realisieren.
    Danke im vorraus.
    Zitieren Zitieren Wago 750 Messwerte in Array schreiben  

  2. #2
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Code:
    HM_TRIG : P_TRIG;
    Array[0..100] of INT; (War schon lange net mehr an der Wago, Syntax muss nicht stimmen)
    Index : INT
    
    HM_TRIG(Eingangstrigger); // Flanke erzeugen
    
    
    
    IF HM_TRIG.OUT THEN
    
        Array[Index]:= Sensorwert; // Wert in Array schreiben
        Index:= Index + 1; // Index inkrementieren
    
    END_IF
    
    IF Index == 101 THEN
    
    // CSV Schreiben (darfste selbst machen)
    
    Index:=0; // Index rücksetzen
    
    
    // Optional, nicht nötig aber "sauber"
    
    While Index <= 100 DO // Array initialisieren
        Array[Index]:='';
        Index:= Index + 1;
    
    END_WHILE
    
    Index:=0; // Index rücksetzen
    
    END_IF
    Denke das sollte in groben Zügen stimmen, kein Gewähr!

    MfG

    Marcel

    Edit: Ach ja, das Array ist hier auf 100 begrenzt, kannst du aber gern anpassen! Natürlich muss dann auch die 101 vor dem CSV schreiben angepasst werden
    Geändert von Matze001 (31.10.2010 um 10:10 Uhr)

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.786
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    du möchtest also einen Kurvenverlauf oder ähnlich erst aufzeichnen und am Schluß dan abspeichern ?
    Wenn ja ... ich gehe hierbei auch grundsätzlich so vor, dass ich solche Werte für die Dauer einer Freigabe in ein Array einlese und dann nach der Aufzeichnung damit arbeite. Dein Vorhaben ist also in dieser Form praktikabel.
    Du solltest aber 1. berücksichtigen, dass du beim Aufzeichnen nicht über die Array-Grenzen hinaus schreibst und 2. dass du ein sinnvolles Aufzeichnungs-Intervall (also z.B. jede Millisekunde oder alle 5 ms oder ...) wählst.

    Gruß
    Larry

  4. #4
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard

    Hi

    Ich denke, er will permanent abspeichern/schreiben ?


    Falls ja, benötigt er einen FiFo-Buffer.
    Karl

  5. #5
    emsbootsmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Erst mal danke an alle.
    Was ist ein Fifo Buffer?

    Ich will eigendlich so ca. alle halbe Stunde für ca. 2-3min Daten mitschreiben.Es werden dann 10 DI und 4AI mitgeschrieben.Es soll so schnell wie möglich Daten aufzeichen um im Fehlerfall der Anlage genau Daten zur Fehleranalyse zu bekommen.
    Wenn ich jeden Zyclus die Daten direkt in die Datei schreibe dauert ein Datensatz ca.60-80ms.Das ist mir zu lang.Ziel ist es um die 10ms zu kommen.

  6. #6
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    FiFo - First in First out

    Kannst ja mal Wikipedia bemühen.

    Das brächstest du wenn du kontinuirlich aufzeichnest!

    Ansonsten könnte man mein Programm um ein Array erweitern, wenn das erste Array voll ist es in das zweite Array schieben... dieses dann in die CSV... und wenn Schreiben fertig und Array1 wieder voll das selbe von vorn.

    MfG

    Marcel

  7. Folgender Benutzer sagt Danke zu Matze001 für den nützlichen Beitrag:

    gravieren (31.10.2010)

  8. #7
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    ...
    Wenn ich die Messwerte direkt in eine CSV Datei schreibe wird es zu langsam.Das dauert dann um die 60-80ms.
    ...
    Ich hatte vor einiger Zeit mal das Vergnügen mit einer Wago 750-841 eine Textdatei zu erstellen.

    Der Trick bestand darin die Geschichte aufzuteilen in Programm Abarbeitung und Filehandling.
    Das eigentliche SPS-Programm lief in einem zeitgesteuerten Task (z.B. 10ms) das Filehandling, erzeugen der Datei und in meinem Fall auch noch das versenden via FTP lief in einem zweiten Task der über die Prioritätssteuerung von dem SPS Task unterbrochen wurde.
    If you open your Mind too much, your Brain will fall out.

  9. #8
    Registriert seit
    24.10.2010
    Beiträge
    9
    Danke
    6
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Ahoi EmsBootsMann,

    Leider kenne ich die WAGO nur aus Hochglanzprospekten.

    Aber, ganz allgemein:
    Was für Analogeingänge hast Du?
    Successive Approximation?
    Bekommst Du die Analogwerte mit dieser hohen Geschwindigkeit?

    Das Lesen eines Analogeingangs ist ein kleiner Ablauf, der entweder durch die Leseanweisung ausgelöst wird oder zyklisch über das Prozessabbild mit dem Timing der Haupttask.

    Im ersten Fall (spontaner Zugriff) sollte die Reaktionszeit (Konversionszeit) in den technischen Daten des Analogmoduls dokumentiert sein.

    Im zweiten Fall wird eine schnelle Leseschleife zum Laden eines Arrays während eines SPS Zyklus nur immer die gleichen Werte in das Array eintragen. Nur bei jedem neuen SPS Zyklus erhältst Du einen neuen Wert. Die von Dir beobachteten 60 - 80 ms riechen stark nach einer gemütlichen SPS Zykluszeit


    BFlat
    Zitieren Zitieren timing Analog Eingang?  

  10. #9
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard

    Hi

    Zitat Zitat von BFlat Beitrag anzeigen
    Die von Dir beobachteten 60 - 80 ms riechen stark nach einer gemütlichen SPS Zykluszeit
    Die Task verhart/wartet bis die Daten in das Filesystem geschrieben werden.

    Deshalb auch eine separate Task wie schon von "Zotos" erwähnt.
    Geändert von gravieren (31.10.2010 um 21:03 Uhr)
    Karl

  11. #10
    emsbootsmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wie wurde das realisiert mit den 2 tasks,hast du ein Beispielcode

Ähnliche Themen

  1. Messwerte in einen DB schreiben
    Von INST im Forum Simatic
    Antworten: 36
    Letzter Beitrag: 28.05.2015, 15:54
  2. Antworten: 5
    Letzter Beitrag: 24.10.2013, 10:37
  3. Array in DB schreiben(any-pointer)
    Von Limette im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 28.10.2011, 22:17
  4. Daten In Array schreiben
    Von MatthiasH24 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 04.09.2008, 11:08
  5. Array von Bytes per OPC in SPS schreiben
    Von ingmar im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 02.11.2006, 08:51

Stichworte

Lesezeichen

Berechtigungen

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