TIA Datalog bei S7-1200

tymanis

Level-1
Beiträge
140
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe bei einer kleinen 1200er mal die Datenlog-Funktion benutzt. Wenn man sich mit der Hilfe etwas auseinander setzt, geht das auch ganz gut.

Allerdings habe ich ein Problem mit meinem Datenlog:
Die Anzahl der Datensätze ist zu gering.

Ich habe an den Baustein der den Datalog erstellt einfach mal eine große Anzahl an Datensätzen eingetragen. Allerdings sieht man an meinem Excel, dass nur wenige Datensätze erstellt werden. Die ältesten fallen weg. Allerdings läuft auf der CPU nur ein sehr kleines Programm und es ist eine 4MB Speicherkarte drin.

Wer kann mir da Tipps geben.

Danke
 

Anhänge

  • datalog baustein.PNG
    datalog baustein.PNG
    20,3 KB · Aufrufe: 110
  • datalog excel.PNG
    datalog excel.PNG
    24,5 KB · Aufrufe: 96
Hallo tymanis

das excel.png irritiert mich.
Wieso sind die Werte in den Zeilen in fallender Reihenfolge. Ich vermute mal, dass Spalte 1 ein Zähler ist und dann folgen Datum und Uhrzeit. Wie kommt es, dass die im Schnitt 2min 30s auseinander liegen?

Die Funktionen für DataLog sind alles asynchron. Du musst darauf achten, dass sich deren Ausführung nicht überschneidet.
Solange das BUSY einer Funktion noch true ist, sollte kein REQ einer anderen true sein.
Also am besten wickelt man das alles in einen Zustandsautomaten ein. Die Faulen nehmen dafür Graph. Die anderen ein Tag namens LogState : INT

Code:
if LogState = 0 then[INDENT]DataLogCreate( REQ := true, ... STATUS => #state )[/INDENT]
[INDENT]if #state = 16#7001 then[/INDENT]
[INDENT=2]LogState = 1[/INDENT]
[INDENT]else[/INDENT]
[INDENT=2]// Fehlerbehandlung[/INDENT]
[INDENT]end_if[/INDENT]
end_if
if LogState = 1 then[INDENT]DataLogCreate( REQ := false, ... STATUS => #state )[/INDENT]
[INDENT]if #state = 16#7002 then[/INDENT]
[INDENT=2]LogState = 1 // warten !!![/INDENT]
[INDENT]elsif #state = 16#0 then[/INDENT]
[INDENT=2]LogState = 2[/INDENT]
[INDENT]else[/INDENT]
[INDENT=2]// Fehlerbehandlung[/INDENT]
[INDENT]end_if[/INDENT]
end_if
if LogState = 2 then[INDENT]DataLogWrite( REQ := true, ... STATUS => #state )[/INDENT]
[INDENT]if #state = 16#7001 then[/INDENT]
[INDENT=2]LogState = 3[/INDENT]
[INDENT]else[/INDENT]
[INDENT=2]// Fehlerbehandlung[/INDENT]
[INDENT]end_if[/INDENT]
end_if
if LogState = 3 then[INDENT]DataLogWrite( REQ := false, ... STATUS => #state )[/INDENT]
[INDENT]if #state = 16#7002 then[/INDENT]
[INDENT=2]LogState = 3  // warten[/INDENT]
[INDENT]elsif #state = 16#0 then
          if "more data"[/INDENT]
[INDENT=2]          // daten vorbereiten[/INDENT]
[INDENT=3]LogState = 2 [/INDENT]
[INDENT=2]elsif "fix und fertig"[/INDENT]
[INDENT=3]LogState = 4[/INDENT]
[INDENT=2]end_if[/INDENT]
[INDENT]else[/INDENT]
[INDENT=2]// Fehlerbehandlung[/INDENT]
[INDENT]end_if[/INDENT]
end_if
if LogState = 4 then[INDENT]DataLogClose( REQ := true, ... STATUS => #state )[/INDENT]
[INDENT]if #state = 16#7001 then[/INDENT]
[INDENT=2]LogState = 3[/INDENT]
[INDENT]else[/INDENT]
[INDENT=2]// Fehlerbehandlung[/INDENT]
[INDENT]end_if[/INDENT]
end_if
if LogState = 5 then[INDENT]DataLogClose( REQ := false, ... STATUS => #state )[/INDENT]
[INDENT]if #state = 16#7002 then[/INDENT]
[INDENT=2]LogState = 5  // warten[/INDENT]
[INDENT]elsif #state = 16#0 then[/INDENT]
[INDENT=2]LogState = 6[/INDENT]
[INDENT]else[/INDENT]
[INDENT=2]// Fehlerbehandlung[/INDENT]
[INDENT]end_if[/INDENT]
end_if

if LogState = 6 then
  // irgendie wieder auf 0 zurück wenn es in den Kram passt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ich nehme an, du lädst das log über das Web-Interface.
Dort hast du die Möglichkeit, das gesamte log oder nur (wie bei dir) die letzten 25 Einträge herunterzuladen.
Ich hab grad keine 1200er hier zum testen, musst halt mal im Web-Interface schauen.

Gruß
Otwin
 
@ Otwin

Oh man :)
Hatte die Zeil ausgeblendet. Hatte es ganz am Anfang mal beachtet, dachte aber in der Eile eher an so eine Eingabe wie "Anzeige pro Seite" wie man das von Foren kennt.
Kann ja keiner damit rechnen, dass Siemens meine Excel-Daten beschneidet.

Danke dir
 
Zurück
Oben