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

Ergebnis 1 bis 7 von 7

Thema: SPS-Data logging

  1. #1
    Registriert seit
    20.05.2008
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo allerseits,
    ich wuerde gern mit einer SPS wie zB. Siemens Simatic S7 daten loggen.
    d.h. alle messdaten die am analog input anliegen aufzeichen, aber ohne eine PC zu benutzen. Viellecht gibt es in der SPS einen internen Speicher mit dem ich das machen kann und diesen dann spaeter auslesen und die Daten speichern.
    Bitte um schnellst moegliche hilfe, vielen Dank im Vorraus
    Zitieren Zitieren SPS-Data logging  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Die Daten kannst du in einem Datenbaustein speichern. Als Einführung mal folgendes lesen
    Pointer Zeiger FIFO LIFO

  3. #3
    Si Mon ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.05.2008
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo marlob, erstmal vielen dank fuer deine schnelle antwort, habe mich vielleicht schlecht ausgedrueckt oder ich kapiers einfach nicht
    Ich erklaere mal meine situation: ich habe eine SPS(z.B.:MicroLogix 1100 von allen-bradley), an diese ist ein druckluftsensor angeschlossen der mir signale liefert (4-20mA Industriestandard), diese signale lese ich am pc mit einem programm aus und visualisiere sie. natuerlich koennte ich die daten mit der software loggen, aber was ist wenn der pc aus ist? Deswegen wuerde ich gerne die daten mit zeitstempel und wert in der SPS speichern und spaeter mit dem pc abrufen. geht das ueberhaupt, wenn ja wie?
    z.B.: Input1:20/05/2008,11:52,7.85mA,13.25bar in etwa so

  4. #4
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Was du möchtest ist mir klar, aber du solltest schon wissen welche SPS du verwenden willst.

    Zitat Zitat von Si Mon Beitrag anzeigen
    ...mit einer SPS wie zB. Siemens Simatic S7 daten loggen.
    ....
    Zitat Zitat von Si Mon Beitrag anzeigen
    ... ich habe eine SPS(z.B.:MicroLogix 1100 von allen-bradley),
    ...
    Mein Beispiel mit dem FIFO sollte ja auch nur ein Einführung sein. Habe ich ja auch geschrieben. Das muss man natürlich noch ein wenig an deine Bedürfnisse anpassen.
    Aber um jetzt weitere Tipps zu geben, solltest du dich erstmal festlegen, welche SPS du benutzen willst

  5. #5
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ich würde die sps nur lückenfüllend als datenhure mißbrauchen.

    heißt: die datenerfassung auf dem angeschlossenen hmi durchführen und nur für den fall, diese falle aus, eine datenerfassung temporär in einen datenbaustein ... diese da dann auch wieder als bald möglich entfernen.

    technisch ist es so lösbar wie marlob vorschlug, man kann da noch einiges an automatismen drumrum basteln:

    watchdog mit hmi um aufzeichnung starten zu können
    automatisch db erstellen
    aufzeichnungstriggerung (zyklusgenaues aufzeichnen verbrät speicherplatz)
    datenaustausch mit hmi nach wiederkehr
    erstellte db löschen ...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #6
    Si Mon ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.05.2008
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke, vierlagig, das ist genau die antwort, die ich gesucht hab, sowie ich das verstanden hab sollte ich daten auf dem pc loggen, nur im worstcase sollte die sps ein programm aufrufen das dann die daten fuer mich logt und bei einschalten des pc's zieht der sich die daten aus dem baustein, right?
    So da dass meine ersten erfahrungen mit SPSen ist und ich nicht viel ahnung von der programmierung hab, koenntest du mir mal son programm-beispiel fuer deine vorgehensweise mal posten, waere echt nett.
    @marlob ich muss mich fuer eine SPS entscheiden, das ist wahr deswegen schrieb ich zum Beispiel "z.B." und habe mich nicht festgelegt vielleicht weiss du ja ne SPS mit der das ohne probleme und mit brvur moeglich ist, trotzdem danke fuer deine sschnelle antwort

  7. #7
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    programmbeispiel wofür? es sieht in ner 300er s7 anders aus als in ner micrologix 1100, da müßte es fast so aussehen wie in ner 200er s7 aber auf keinen fall wie in ner logo aber zwischen 300er und 400er sollte der unterschied nicht so groß sein. mit moeller bin ich zwar nicht so vertraut aber ich glaub da wird die IEC unterstützt ...

    aber ich will ja nicht so sein, anbei ein S7-beispiel zum aufzeichnen eines wertes nach startimpuls. ist nicht ganz was du willst, weil hier nur der wert aufgezeichnet wird uns kein timestamp, aber als überblick sollte es genügen (die beschränkung auf zehn db ist im beispiel notwendig bei dir evtl. nicht...)

    Code:
    *
    Kurvenschreiber
    
    Aurufumgebung: Weckalarm OB mit 10ms
    Interface: EXCEL, Visu, other direkt auf IDB
    
    Dieser Baustein erstellt nach einem Startimpuls einen Datenbaustein mit aus 
    Aufzeichnungsdauer und Stützpunktanzahl berechneter Länge. Der Datenbaustein 
    wird mit den Daten des angegebenen MD gefüllt.
    
    Es können max. 10 DB angelegt werden. Bevor eine neue Messung gestartet werden 
    kann, müssen diese 10 DB gelöscht werden.
    
    DATE:     19.05.2008
    AUTHOR:   4lagig
    VERSION:  V0.0
    
    
    
    // ---------> Interrupt-Daten sichern <--------- //
    
    
          L     DBNO                        // letzten offenen Globaldatenbaustein ...
          T     #wDbnoSave                  // ... sichern
          TAR1  #dAr1Save                   // AR1 sichern
          TAR2  #dAr2Save                   // AR2 sichern
    
    
    // --------> Startbedingungen ermitteln <------- //
    
    
          U     #xOutOnAir                  // Aufzeichnung läuft bereits
          SPB   log                         // dann aufzeichnen
    
          U     #xInStart                   // Startimpuls
          FP    #xHelpFlag1
          UN    #xDbOverflow                // bereits 10 Aufzeichnungen gemacht
          SPBN  late                        // neuer DB oder Möglichkeit zu löschen
    
    
    // -------> Datenbausteinnummer prüfen <-------- //
    
    
          L     #wBuffer9                   // der letzte Pufferplatz
          L     0                           // ungleich 0
          <>I                               // heißt 10 DBs angelegt
          O                                 // oder
          L     #iDbCounter                 // der DB-Zähler
          L     10                          // ist auf 10
          ==I   
          SPBN  go                          // wenn noch Platz ist, ist alles i.O.
          S     #xDbOverflow                // 10-DBs angelegt
          SPA   late                        // maximale Anzahl erreicht, erst löschen
    
    
    // ------> Datenbausteinlänge ermitteln <------ //
    
    
    go:   L     #iInTimeWriting             // Länge der Aufzeichnung
          L     #iInTimeStamp               // Trigger 10, 20, 30, ... 100ms ...
          /I                                // = Anzahl der Aufzuzeichnenden Werte
          L     4                           // REAL in Bytes ...
          *I                                // ...Anpassung
          T     #wDbLength                  // Datenbausteinlänge
    
    
    // ----------> Datenbaustein erzeugen <--------- //
    
    
          CALL  "CREAT_DB"
           LOW_LIMIT:=W#16#1                // Bereich der DB-Nummer
           UP_LIMIT :=W#16#FF               // angeben
           COUNT    :=#wDbLength            // Länge übergeben
           RET_VAL  :=#iCreateReturn        // Fehlercode
           DB_NUMBER:=#wDbNumber            // DB Nummer zur weiterbearbeitung
    
    
    // --------> Datenbausteinnr. ablegen <--------- //
    
    
          L     #wBuffer8                   // shift-Register begin...
          T     #wBuffer9                   // 
          L     #wBuffer7                   // 
          T     #wBuffer8                   // 
          L     #wBuffer6                   // 
          T     #wBuffer7                   // 
          L     #wBuffer5                   // 
          T     #wBuffer6                   // 
          L     #wBuffer4                   // 
          T     #wBuffer5                   //                
          L     #wBuffer3                   // 
          T     #wBuffer4                   // 
          L     #wBuffer2                   // 
          T     #wBuffer3                   // 
          L     #wBuffer1                   // 
          T     #wBuffer2                   // 
          L     #wBuffer0                   // 
          T     #wBuffer1                   // 
          L     #wDbNumber                  // 
          T     #wBuffer0                   // ... end
    
          L     #iDbCounter                 // DB-Zähler
          +     1                           // 
          T     #iDbCounter                 // inkrementieren
    
    
    // -------------> Initialisierung <------------- //
    
    
          L     0                           // 0
          T     #iDataCounter               // für den Wertezähler
    
          L     0                           // 0
          T     #iCycleCounter              // für Aufzeichnungszähler
    
          L     #iInTimeStamp               // Trigger 10, 20, 30, ... 100ms ...
          L     10                          // 10
          /I                                // dividiert
          T     #iCycleTimes                // macht die Pausen
    
          L     #wDbLength                  // verfügbarer Speicherplatz
          +     -4                          // -4 
          T     #wDbLength                  // macht Adressierung
    
          SET                               // 1
          S     #xOutOnAir                  // für Aufzeichnung läuft
    
    
    // --------------> Daten erfassen <------------- //
    
    
    log:  U     #xOutOnAir                  // Aufzeichnung läuft
          SPBN  late                        // 
    
          L     #iCycleCounter              // Aufzeichnungszähler
          L     1
          +I                                // inkrementieren
          T     #iCycleCounter
    
          L     #iCycleCounter
          L     #iCycleTimes                // mit Soll
          ==I                               // vergleichen
          SPBN  late                        // wenn nich, dann nich
    
          L     0                           // wenn doch, dann 0
          T     #iCycleCounter              // in Aufzeichnungszähler
    
          L     #wDbNumber                  // DB-Adresse
          T     #wDbNumberTemp              // für Weiterverarbeitung
    
          L     #iInMdNumber                // MD-Adresse
          SLD   3
          T     #dMdNumber                  // für Weiterverarbeitung
    
          L     #iDataCounter               // Adressierungszähler
          SLD   3                           // Bits maskieren
          LAR1                              // in AR1  laden
          AUF   DB [#wDbNumberTemp]         // DB öffnen
          L     MD [#dMdNumber]             // Wert
          T     DBD [AR1,P#0.0]             // in DB schreiben
    
          L     #iDataCounter               // Adressierung
          +     4                           // um vier
          T     #iDataCounter               // erhöhen     
    
          L     #wDbLength
          L     #iDataCounter               // mit Adressierungszähler
          <=I                               // vergleichen
          SPBN  late
          R     #xOutOnAir                  // Aufzeichnung beendet
    
    
    // ---------> Datenbausteine löschen <---------- //
    
    
    late: U     #xInDeleteDb                // löschen angefordert
          FP    #xHelpFlag2
          UN    #xOutOnAir                  // und keine Aufzeichnung aktiv
          SPBN  end
    
          L     10                          // max. angelegte DBs
    next: T     #iLoop                      // als Schleifenzähler benutzen
    
          L     #wBuffer0                   // DB-Adresse auf 0 prüfen
          L     0
          ==I                               // wenn 0 (=ungültige DB-Adresse)
          SPB   shif                        // löschen überspringen
    
          CALL  "DEL_DB"                    // Datenbaustein löschen
           DB_NUMBER:=#wBuffer0
           RET_VAL  :=#iDelReturn
    
    shif: L     #wBuffer1                   // shift-Register begin...
          T     #wBuffer0                   //  
          L     #wBuffer2                   // 
          T     #wBuffer1                   // 
          L     #wBuffer3                   // 
          T     #wBuffer2                   // 
          L     #wBuffer4                   // 
          T     #wBuffer3                   // 
          L     #wBuffer5                   // 
          T     #wBuffer4                   // 
          L     #wBuffer6                   // 
          T     #wBuffer5                   // 
          L     #wBuffer6                   // 
          T     #wBuffer7                   // 
          L     #wBuffer7                   // 
          T     #wBuffer8                   // 
          L     #wBuffer9                   // 
          T     #wBuffer9                   // 
          L     0                           // 
          T     #wBuffer9                   // ... end
    
          L     #iLoop
          LOOP  next
          SET   
          R     #xDbOverflow                // max-Bit rücksetzen
          L     0
          T     #iDbCounter                 // Datenbausteinzähler zurücksetzen
    
    
    // -------------> Schlußbehandlung <------------ //
    
    
    end:  LAR1  #dAr1Save                   // AR1 rücksichern
          LAR2  #dAr2Save                   // AR2 rücksichern
          AUF   DB [#wDbnoSave]             // letzten Globaldatenbaustein öffnen
          SET   
          SAVE                              // EN0 eins machen
          BE
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. EtherCAT Data Logger
    Von DAckermann im Forum Werbung und Produktneuheiten
    Antworten: 2
    Letzter Beitrag: 15.04.2011, 20:51
  2. OPC data exchange between PLCSIM and PCS7
    Von krcedinac im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 09.12.2009, 11:06
  3. e-plan data portral
    Von piffpaff im Forum E-CAD
    Antworten: 3
    Letzter Beitrag: 01.12.2009, 18:58
  4. Plc Data Logger
    Von salih im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 18.05.2009, 10:54
  5. Global Data Communication Mit CPU S7-317-2DP
    Von buitrecillo im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.05.2005, 08:12

Lesezeichen

Berechtigungen

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