ich würde das mit einem skript lösen.
skript ausführen bei wertänderung und datum/zeit und wert in csv-datei schreiben.
http://www.sps-forum.de/showthread.php?t=15348
Hallo ich möchte gern auf einem MP277Touch/TP270 Wertänderungen von ca.
20 Variablen mitloggen mit Änderungszeit und Variablenwert. Am besten wär
csv datei ... muss aber jetzt noch nich sein. mit nem Archiv?
wie kann man sowas realisieren.?
hab bereits audittrail getestet ... bin aber nicht so sehr zufrieden da ich dafür
eine speicherkarte benötige und das ganz irgendwie nicht so funzt wie ich mir
das vorstelle.
Hintergrund ist das es öfters vorkommt das bei Schichtübergabe Werte sich
urplötzlich ändern und keiner wars.
Never touch a running system
ich würde das mit einem skript lösen.
skript ausführen bei wertänderung und datum/zeit und wert in csv-datei schreiben.
http://www.sps-forum.de/showthread.php?t=15348
Gruß
crash
Ich bin nicht bekloppt,
ich bin verhaltensoriginell!
wincc (11.12.2008)
Partys sind krass, am besten ist das Bier aus dem fränkischen Fass...
"Programming today is a race between the programmers and software engineers to create better
and more idiot-proof programs, and the universe, creating bigger and better idiots. So far,
the universe is winning". - Rich Cook
wincc (11.12.2008)
wincc (11.12.2008)
Hallo WinCC,
ich gehe mal davon aus, dass es sich bei den genannten Werten um eine Art Maschinen-Parameter handelt.
Bei uinseren Anlagen mache ich es so, dass diese Daten nur auf einer speziellen Parameter-Seite änderbar sind. Alle diese Parameter speichere ich außer im DB der Anlage noch in einer Datei (Parameter.DAT).
Beim Verlassen der Seite vergleiche ich die archivierte Parameter-Datei mit den aktuellen Parametern. Gibt es Unterschiede, so schreibe ich die Änderung in eine zusätzliche Log-Datei ("10.12.08 - 07:15:27 - Wert von Variable xyz geändert von 1.375 nach 1.444").
Bei Bedarf stelle ich das Script-Konstruct dafür mal hier ein (ist allerdings für ProTool - das sollte m.E. aber kein Problem darstellen).
Bei manchen Anlagen wird sogar mit aufgezeichnet wer ändert. Dort kommt der bediener nur dann an die Parameter-Seite, wenn er sich mit seinem ID-Chip angemeldet hat und authorisiert ist.
Gruß
LL
wincc (11.12.2008)
@Larry
Das würde mich bitte auch mal interessieren.
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
Nun denn - es ist ja bald Weihnachten ...
Zunächst die Scripte :
Code:Script "Parameter_Speichern" : Const ForReading = 1, ForWriting = 2, ForAppending = 3 Dim fs , f , Datei , sD , sT Set fs = CreateObject("Scripting.FileSystemObject") Datei = a_Daten_Verzeichnis + "Parameter.DAT" Set f = fs.OpenTextFile(Datei, ForWriting, true) f.WriteLine "Parametersatz Anlage " + a_Anlage_Nummer + " :" f.WriteLine "--------------------------" sD = Mid(Date,1,6) + Right(Date,2) : sT = Right(Time,8) f.WriteLine sD + " - " + sT f.WriteLine "--------------------------" f.WriteLine "--- St.00 ----------------" f.WriteLine PtVar."Par_St.00_Verpackung_IO" f.WriteLine PtVar."Par_St.00_Verpackung_NIO" f.CloseCode:Script "Parameter_Vergleichen" : Const ForReading = 1, ForWriting = 2, ForAppending = 3 Dim fs, f , Z , Datei , alter_Wert Datei = a_Daten_Verzeichnis + "Parameter.DAT" Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.OpenTextFile(Datei, ForReading, true) Z = f.ReadLine ' "Parametersatz Anlage xyz :" Z = f.ReadLine ' "--------------------------" Z = f.ReadLine ' PtVar.Par_Daten_geändert Z = f.ReadLine ' "--------------------------" Z = f.ReadLine ' "--- St.00 ----------------" alter_Wert = CInt(f.ReadLine) Call PtScp.Parameter_Logging("Füllstand max. Behälter IO" ,alter_Wert,PtVar."Par_St.00_Verpackung_IO") alter_Wert = CInt(f.ReadLine) Call PtScp.Parameter_Logging("Füllstand max. Behälter NIO" ,alter_Wert,PtVar."Par_St.00_Verpackung_NIO") f.CloseVorausgehend zu Allem ist, dass es die gespeicherten Parameter als Datei schon gibt. Das erledigt das Script "Parameter_Speichern".Code:Unter-Script "Parameter_Logging" : dieses Script hat die Übergabe-Parameter "Beschreibung , alter_Wert , neuer_Wert" Dim fs , f , i , Verzeichnis , Ziel_Datei , Check Const ForReading = 1, ForWriting = 2, ForAppending = 8 ' ---------------------------------------------------------- Check = alter_Wert - neuer_Wert If (Check > 0.00001) Or (Check < -0.00001) Then ' ---------------------------------------------------------- Verzeichnis = a_Daten_Verzeichnis + "Logging\" Ziel_Datei = Verzeichnis +_ "Log-File " + Right(Year(Now) ,4) + "-" + Right(100 + Month(Now) ,2) + ".csv" ' Ziel-Verzeichnis schon vorhanden ? ' ... wenn nein, dann erst erzeugen ... Set fs = CreateObject("Scripting.FileSystemObject") If Not fs.FolderExists (Verzeichnis) Then fs.CreateFolder (Verzeichnis) End If ' Ziel-Datei schon vorhanden ? ' ... wenn nein, dann erst erzeugen ... If Not fs.FileExists (Ziel_Datei) Then Set f = fs.OpenTextFile(Ziel_Datei , ForWriting, true) f.WriteLine " - Log-Daten Anlage " + a_Anlage_Nummer Else Set f = fs.OpenTextFile(Ziel_Datei , ForAppending) End If f.Write Right(100 + Day(Now) ,2) & "." & Right(100 + Month(Now) ,2) & "." & Right(Year(Now) ,2) & " - " f.Write Right(100 + Hour(Now) ,2) & ":" & Right(100 + Minute(Now) ,2) & ":" & Right(100 + Second(Now) ,2) & " - " f.Write "Parameter »" & RTrim(Beschreibung) & "« geändert " f.Write "von »" & Chip_Person & "« " f.WriteLine "- alter Wert : " & CStr(alter_Wert) & " in neuen Wert : " & CStr(neuer_Wert) f.Close End If
Beim Verlassen der Parameter-Seite in der Visu wird das Script "Parameter_Vergleichen" aufgerufen, dass seine Arbeit erledigt. Nach diesem Script werden dann die "neuen" Parameter auch wieder abgespeichert.
Das Unter-Script "Parameter_Logging" vergleicht die Werte und macht ggf. einen Eintrag im Log-File.
Diese Scripte laufen auf einer PC-Runtime mit ProTool 6.0 SP3. Das Übertragen auf Flex und WinCE sollte m.E. aber machbar sein.
Ich hoffe, das ist für euch brauchbar ...
Gruß
LL
Ralle (10.12.2008),rostiger Nagel (10.12.2008),rr_zx (19.12.2008),wincc (11.12.2008)
Das mit dem script bzw archiv käme mir am gelegensten... da die parameter auf einigen bilder verteilt sind.
kann man die csv dadei oder das archiv als tabelle am mp277 anzeigen???
werden da nur die wertänderungen archiviert bzw mitgeloggt die auf diesen panel geändert werden oder auch die in anderen panels geändert werden ?
sind 4 panels mit den gleichen parametern ... 2x mp277 2xTP177 .. was wenn am tp 177 geändert wird? werden die dann am mp277 auch mitgeloggt?
Never touch a running system
Du mußt hier dann nur darauf achten, dass beim Verlassen der jeweiligen Seiten das Überprüfungs-Script aufgerufen wird - es wird dann zwar Alles überprüft, aber das wäre ja nicht so schlimm ...
Im Prinzip ja - du wirst dafür dann nur einen gewissen Aufwand betreiben müssen ...
Logischerweise wird bei dieser Vorgehensweise natürlich "nur" das mitgeloggt, das auf dem jeweiligen Panel passiert. Um Aktionen, die auf anderen Panels stattfinden, mitschreiben zu können wäre es Voraussetzung, dass alle Panels alle Änderungen mitbekommen - das ist wahrscheinlich auch machbar - allerdings nicht so einfach ...
s.o.
Was hällst du in dem Fall davon, wenn du nur eine Möglichkeit für das Ändern der Parameter festlegst ?
Das würde dann auch für eine mögliche Anzeige ganz hilfreich sein - Das Log-File liegt ja schließlich ggf. auch nur auf einem Panel ...
Gruß
LL
die wertänderungen kann ich leider nicht auf 1 panel beschränken da bei auftragswechsel ein rezept geladen wird und dann an den verschiedenen stationen nachoptimiert wird und da die Maschine 40m lang ist wäre es fatal
immer an 1 bestimmtes Panel laufen zu müssen.
ahja handelt sich um eine Papier/Folien Silikonisiermaschine.
Also beschränk ich mal die Anforderugen
1. Logfile auf einem MP277 ausreichend
2. Änderungen von anderen Panels müssen mitgelogt werden
3. Anzeige des Logfiles am Panel
.... irgendwie komm ich nich weiter
Never touch a running system
Bookmarks