Aktivitätsüberwachung Kopplung S7 => PC

steffen21m

Level-1
Beiträge
71
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum :) !
Bei uns ist eine S7 (CPU 400) mittels CP5611 an einen PC gekoppelt. Die S7 ist mit verschiedenen Analogwerten beschaltet, welche mit dem PC-Programm eingelesen und auf einem Netzlaufwerk geloggt werden. (In der PC Software stellt man das PEW ein und sagt in welcher Datei der Wert gespeichert werden soll). Die Dateinamen der geloggten Dateien ergeben sich aus dem aktuellen Datum (z.B 120207.txt). Inhalt der Datei sind die verschieden Messwerte (21,0 22,3 ....) und am Schluß kommt die Uhrzeit 12:35. Diese Daten werden dann von einem anderen Programm eingelesen, das für jedermann zugänglich ist um die Daten als Kurvenform auszugeben.
Nun zum Problem:
Wenn sich das Programm aufhängt und keine Daten schreibt, bekommt dies keiner mit. Quelltext des PC Programmes ist leider auch nicht zugänglich.
Gibt es eine Möglichkeit auf dem PC (Netzlaufwerk) abzufragen ob die Datei des aktuellen Tages sich alle 2 Minuten ändert (alle 2 Minuten wird die Datei größer, da ein neuer Datensatz geschrieben wird) ?
Kann man daraus eine Störmeldung für die S7 generieren und als Digital Out rausgeben ?
Oder gibt es eine Möglichkeit in der S7 dies zu überwachen ?

Vielen Dank für Eure Mühe (sorry viel Text)

Gruß Steffen
 
Hallo liebes Forum :) !
Bei uns ist eine S7 (CPU 400) mittels CP5611 an einen PC gekoppelt. Die S7 ist mit verschiedenen Analogwerten beschaltet, welche mit dem PC-Programm eingelesen und auf einem Netzlaufwerk geloggt werden. (In der PC Software stellt man das PEW ein und sagt in welcher Datei der Wert gespeichert werden soll). Die Dateinamen der geloggten Dateien ergeben sich aus dem aktuellen Datum (z.B 120207.txt). Inhalt der Datei sind die verschieden Messwerte (21,0 22,3 ....) und am Schluß kommt die Uhrzeit 12:35. Diese Daten werden dann von einem anderen Programm eingelesen, das für jedermann zugänglich ist um die Daten als Kurvenform auszugeben.
Nun zum Problem:
Wenn sich das Programm aufhängt und keine Daten schreibt, bekommt dies keiner mit. Quelltext des PC Programmes ist leider auch nicht zugänglich.
Gibt es eine Möglichkeit auf dem PC (Netzlaufwerk) abzufragen ob die Datei des aktuellen Tages sich alle 2 Minuten ändert (alle 2 Minuten wird die Datei größer, da ein neuer Datensatz geschrieben wird) ?
Es ist nicht einmal sicher, daß die Datei bei jedem Datensatz größer wird: Wenn das Programm sie zwischen 2 Sätzen nicht schließt oder physisches Schreiben per flush() erzwingt, wird sie erst größer, wenn Windows meint, es sei Zeit mal den Puffer zu leeren.
Kann man daraus eine Störmeldung für die S7 generieren und als Digital Out rausgeben ?
Ja, mach ein Skript oder Programm, das in die Datei schaut. Dann nimmst du Libnodave oder sonst was, um eine zweite Verbindung zur S7 aufzubauen und damit sagst du ihr, wenns nicht funktioniert. Das ist natürlich so ätzend, daß ich das Log-Programm gleich neu schreiben würde. So, wie du es schilderst, ist mit unter 50 Zeilen C getan. Dann hast du auch den Quellcode.
Eine Überwachung durch die SPS mache ich dann so: Im PC-Programm zähle ich einen Wert hoch. Den schreibe ich bei jedem Zugriff in die SPS, sagen wir, in MB102.
Code:
U M 102.0 //LSB, muß sich jedesmal ändern
U M 103.0 //alter Zustand
O(
UN M 102.0 //LSB, muß sich jedesmal ändern
UN M 103.0 //alter Zustand
)
// VKE ist genau dann wahr, wenn M102.0 sich nicht geändert hat
L KT S5T#5s   //oder was du willst
SE T 106		// die Zeit fängt jedesmal von Neuem an
			// wenn sich das Bit geändert hat.
			// Deshalb läuft sie nie ab, wenn alles funktioniert.
U T 106
S A17.5 //den Alarm-Ausgang
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beim SPS-Code fehlt natürlich noch:
Code:
U M102.0
= M103.0
Mit Flankenbefehlen FP und FM wäre das nicht passiert. Aber ich bin altmodisch. Und der "Ädern"-Knopf geht bei mir auch nicht, also wird es noch ein Beitrag.
 
Danke für die schnelle Antwort !
Für das Programm neu in C zu schreiben reicht mein Grips nicht.
Ich schaue heute noch mal, ob die Datei wirklich alle 2 Minuten größer wird. Wenn dies der Fall ist kann wir vielleicht jemand einen Tipp geben mit welchem Programm man dies auf dem PC abfragen kann und wie der Code aussieht ? Wie erwähnt in C ?

Vielen Dank
Gruß Steffen
 
vielleicht hilft dir das weiter. ist vbscript.

pruefe.vbs
Code:
filespec="deinedatei.txt"
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(filespec)
    s = s & "Erstellt: " & f.DateCreated & vbCrLf
    s = s & "Letzter Zugriff: " & f.DateLastAccessed & vbCrLf
    s = s & "Letzte Änderung: " & f.DateLastModified  
    MsgBox s, 0, "Dateizugriffsinformationen"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke das hat mir sehr weitergeholfen. Ich bastele an einem Skript. Wegen der Weitergabe an die S7 über Libnodave werde ich mich wahrscheinlich noch mal melden, da ich da auch keinen Plan habe.


Vielen Dank

Gruß Steffen
 
Hallo,
eine sehr einfache Form der Kommunikationsüberwachung ist die mit einem Lebensbit. Verwende einen Taktmerker und sende diesen zum PC. Im PC-Programm negiere den Taktmerker und sende ihn zur SPS. Nun kannst du in der SPS eine Fehlerauswertung programmieren, wenn (z.B. über eine einstellbare Zeit) sich das Bit nicht geändert hat.

Mfg
Ritter Bodo
 
Danke für eure ganzen Ideen :)

Das Skript habe ich laufen und es funzt super. Nun wollte ich an die S7 => PC Kopplung gehen. Leider wurde heute aber das ganze Projekt gecancelt :???: . Also darf ich nicht weiter machen. Sorry. Wenigstens konnte ich mich so weit durchsetzen, daß das Skript auf dem Rechner laufen darf.

Vielen Dank noch Mal für eure Mühe (echt super Forum)
Wünsche noch ein schönes Wochenende

Gruß Steffen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ritter_bode
völlig am thema vorbei.
setzen ! 6 !

hier ging es um die überwachung ob sich eine 'datei' ändert.

@steffen21m
schön das es geklappt hat.
ist natürlich traurig wenn man sich viel arbeit für nothing macht.
aber sieh mal den positiven effekt.... hast was dabei gelernt. ;)
 
Zurück
Oben