TIA Script: Wertübernahme an eine lokale HMI-Variable

asm

Level-1
Beiträge
52
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

so langsam nervt mich TIA.. so, nun der Reihe nach..

Ich habe ein E/A-Feld, mit einer Prozessvariable von einer 1500er SPS. (Erfassungsart: zyklisch im Betrieb / alle 200ms)

Mit dem Ereigniss vom E/A-Feld "Aktivieren" löse ich ein Scipt aus. Mit dem Ereigniss "Eingabe abgeschlossen" starte ich nochmal das Scipt.

Das Script speichert den Wert der Prozessvariable in eine lokale HMI-Variable.

(Das Ganze hier ist erstmal nur zum testen. Ich habe später vor, geänderte Werte in einer txt oder csv Datei zu protokollieren.)


So schaut das Ganze momentan aus (HMI-Panel ist ein TP700, angebunden über Ethernet an die 1500er SPS):
tia1.png

tia2.png

tia3.png

Beim "Aktivieren" funktioniert das Scipt.

Beim Ereigniss "Eingabe abgeschlossen" aber wird die lokale Variable nicht auf den neuen Wert (sofern er geändert wurde) aktualisiert.. wenn ich das E/A-Feld ein 2. Mal bearbeite und die Eingabe abschließe, funktioniert es.

Ich vermute mal, es liegt an dem Erfassungszyklus von 200ms..

Wie schaffe ich es, dass nach erfolgter Eingabe der korrekte SPS-Wert an die lokale HMI-Variable übergeben wird.. :confused:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Kleiner Nachtrag:

Wenn ich die Erfassungsart auf "Zyklisch fortlaufend" stellt und mit dem Variablenereigniss "Wertänderung" das Script aufrufe - funktionert es.

Aber:
- ich will keine fortlaufende Kommunikation (es wären dann um die 100 Variablen betroffen)
- die SPS-Variablen liegen in einem UDT, welcher an die HMI übergeben wurde. Aus irgendwelchen Gründen gibt es in diesen UDT-HMI-Variablen keinen Reiter "Ereignisse"
 
Beim Ereigniss "Eingabe abgeschlossen" aber wird die lokale Variable nicht auf den neuen Wert (sofern er geändert wurde) aktualisiert.. wenn ich das E/A-Feld ein 2. Mal bearbeite und die Eingabe abschließe, funktioniert es.
Das hat nichts mit Erfassungsart oder Erfassungszyklus zu tun. Aus irgendeinem Grund hat Siemens es so implementiert, daß bei HMI-Variablen mit PLC-Anbindung ein im HMI geänderter Wert erst nach anschließendem Rücklesen aus der PLC verfügbar ist. Bei <internen> Variablen ist der neue Wert sofort verfügbar. (das ist auch in WinCC flexible schon so)

Wenn man Eingaben sofort mitloggen will, dann funktioniert das über Eingabe in eine interne Variable und Kopieren in die PLC-Variable.
z.B. über einen Eingabedialog mit Übernahme-Taste/Ereignis:
- ein EA-Feld für die Anzeige des Wertes der PLC-Variable (nur Ausgabe)
- vor das EA-Feld eine unsichtbare Schaltfläche
- Betätigung der Schaltfläche kopiert den Wert der PLC-Variable in die interne Variable und macht ein EA-Feld (Ein/Ausgabe) oder Eingabedialog für die interne Variable sichtbar
- bei "Eingabe abgeschlossen" (die Übernahme-Taste des Dialoges) den Wert aus der internen Variable in die PLC-Variable kopieren und das Log-Skript mit dem Wert der internen Variable aufrufen

Mitloggen bei "Wertänderung" ist keine gute Lösung, denn dann würden jegliche Wertänderungen den Eingaben des Bedieners zugeschrieben.

Harald
 
Mitloggen bei "Wertänderung" ist keine gute Lösung, denn dann würden jegliche Wertänderungen den Eingaben des Bedieners zugeschrieben.
Harald

Es kommt leider oft vor, dass Kunden anrufen "Maschine funktioniert nicht mehr gut [..]". Dann stellt sich heraus, dass in der Nachtschicht z.B. an den Parametern rum gespielt wurde.

Diese sind zwar PW gesichtert, was aber nur wenig bringt, wenn das PW "rumgereicht" wird von der Instandhaltung:)

Und so könnte ich in der Liste nachschauen lassen, welcher Wert, wann geändert wurde. Ich muss ja noch nicht einmal den Benutzernamen in das Log legen. Nur Datum/Uhrzeit, alter Wert, neuer Wert und die Bezeichnung.

Oder hast Du einen anderen Vorschlag?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt auch das Zusatzpaket AuditTrail. Das ist gar nicht mal so teuer. Damit kann man in der Variablentabelle, Variablen zum Loggen kennzeichnen. Dann wird bei Änderung der Variable u.a. der Zeitpunkt, der eingeloggte Nutzer und der Wert der Variablen geloggt. Die Daten landen z.B. auf der Speicherkarte als CSV-Datei. Wir haben ein Bild (ich glaube, das kam aus einem Siemens-Bsp.), da kann man die Daten dann auch am Panel anzeigen.
 
Und so könnte ich in der Liste nachschauen lassen, welcher Wert, wann geändert wurde. Ich muss ja noch nicht einmal den Benutzernamen in das Log legen. Nur Datum/Uhrzeit, alter Wert, neuer Wert und die Bezeichnung.
Wenn es nur darum geht, festzustellen wann sich ein Wert zu welchem Wert geändert hat, dann kann man das auch ganz einfach in der SPS selber loggen. Die SPS braucht nur vergleichen ob ein Wert sich ändert und einen Eintrag mit Zeitstempel in einem DB erzeugen. Dazu noch ein PC-Programm oder ein HMI was die Log-Einträge auslesen und anzeigen kann.

Bei "Wertänderung"-Ereignisse in HMI kommen auch bei jedem HMI-Neustart (möglicherweise auch nach Verbindungsunterbrechungen?)

Harald
 
Es gibt auch das Zusatzpaket AuditTrail. Das ist gar nicht mal so teuer. Damit kann man in der Variablentabelle, Variablen zum Loggen kennzeichnen.
Danke, das schaue ich mir an.

Wenn es nur darum geht, festzustellen wann sich ein Wert zu welchem Wert geändert hat, dann kann man das auch ganz einfach in der SPS selber loggen. Die SPS braucht nur vergleichen ob ein Wert sich ändert und einen Eintrag mit Zeitstempel in einem DB erzeugen. Dazu noch ein PC-Programm oder ein HMI was die Log-Einträge auslesen und anzeigen kann.
Das ist mir bewusst. Aber SIEMENS ist extrem geizig, wenn es im den Programm-Arbeitsspeicher geht. Wir verwendet hauptsächlich eine 1511C - und die muss mit 175kb auskommen. Was auch immer ich Panel-Intern lösen kann um Arbeitsspeicher der SPS zu sparen, versuche ich.

Bei "Wertänderung"-Ereignisse in HMI kommen auch bei jedem HMI-Neustart (möglicherweise auch nach Verbindungsunterbrechungen?)
Genau. Unter anderem deswegen will ich das Ereigniss "Wertänderung" dafür nicht hernehmen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber SIEMENS ist extrem geizig, wenn es im den Programm-Arbeitsspeicher geht. Wir verwendet hauptsächlich eine 1511C - und die muss mit 175kb auskommen. Was auch immer ich Panel-Intern lösen kann um Arbeitsspeicher der SPS zu sparen, versuche ich.
Echt jetzt? Du hast da keine ca 8KB/5% Arbeitsspeicher für das Mitloggen der Änderungen von ca. 100 Variablen mehr übrig?
Mir scheint, Siemens war in dem Projekt nicht derjenige der am meisten extrem geizig ist ... ;)

Gibt es noch andere Wege wie die Einstellparameter geändert werden können? Außer dem einen TP700? Dann könnten Änderungen vorkommen ohne daß das TP700 die mitloggt, wenn das Mitloggen nicht einfach an der puren Änderung festgemacht wird.

Harald
 
Gibt es noch andere Wege wie die Einstellparameter geändert werden können? Außer dem einen TP700? Dann könnten Änderungen vorkommen ohne daß das TP700 die mitloggt, wenn das Mitloggen nicht einfach an der puren Änderung festgemacht wird.

Hallo Harald,

(sorry, ich war im Urlaub), das TP ist das einzige Bediengerät. Änderungen direkt über die SPS finden auch nicht statt.
 
Zurück
Oben