TIA HMI Werte setzten sich wieder zurück

Mino

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

System: TIA Portal v13, WinCC v13, HMI Panel Compfort 1200, 1500er SPS

Situation: Ich habe ein EA-Feld im HMI eingerichtet dessen eingegebener Wert in ein UDT geschrieben wird (HMI UDT) welcher sich in einer Datenbank auf der 1500er SPS befindet.
Desweiteren habe ich eine Funktion welche einen INPUT- und ein INOUT-Eingang hat. An den Input kommt der "HMI UDT" und an den INOUT kommt ein weiterer UDT (SPS UDT).
In den ersten Zeilen der Funktion werden nun Werte vom "HMI UDT" in den "SPS UDT" rüber kopiert (Variable A:=Variable B).
Im Rest der Funktion werden nun nurnoch die Werte vom "SPS UDT" gelesen, geschrieben wird nichts mehr.

Problem: Immer wenn ich einen Wert in das EA-Feld eintrage bleibt er kurz stehen um dann mit einer Null überschrieben zu werden.

Ich hatte dieses Problem schonmal und ich weiss das es irgendwas mit dem INOUT zu tun hat. Damals war die Lösung getrennte UDTs zu machen damit das HMI und die SPS nicht zur selben Zeit auf eine Variable im UDT zugreifen können. Das ist ja jetzt so aber das Problem ist für eine Variable zurückgekommen.

Hat jemand eine Idee ?

Vielen Dank für eure Hilfe.
 
Nach deiner Beschreibung wird der Datensatz "HMI_UDT" nirgends in der PLC beschrieben. Auch an der Funktion ist er als INPUT deklariert und dürfte dort nicht beschrieben werden. Sind denn im DB alle Häckchen richtig gesetzt, insbesondere der für "Schreibbar aus HMI.."?
 
Nach den Häckchen msus ich morgen mal schauen.
Ja ich habe es 100 mal überprüft, es gibt ausschliesslich das HMI das auf diese Variable schreibt. Die offizielle Lösung von Siemens habe ich bereits intuitiv so umgesetzt.

Danke für eure Hilfe mal schauen ob ich den Fehler morgen finde =D ...

Edit: Ja müsste alles im Optimierten Bausteinzugriff sein ...
 
Ich konnte heute leider nichts ausprobieren aber ich habe mir das Projekt nocheinmal genauer angesehen. Die Datenbank in der alle UDTs stecken ist nicht optimiert aber in der Funktion stecken noch einmal zwei FBs welche optimiert sind und meine Variable lesen aber wieder nicht schreiben.

Ich werd das ganze wohl umschreiben so das dieses Problem nichtmehr auftritt. Es ist nur Ärgerlich das man INOUTs nicht wirklich nutzen kann wenn bei jedem Projekt die Frage im Raum steht ob es dann funktioniert -.- ...
 
Das Problem ist in deinem Fall vermutlich der Wechsel zwischen "optimiert" und "nicht optimiert".
Wenn alles "optimiert" oder alles "nicht optimiert" ist, dann würde deine InOut-Struktur vermutlich als Zeiger übergeben und arbeitet direkt auf den Daten aus dem DB. Durch den Wechsel erfolgt die Parameterübergabe aber als Wert, d.h. so wie wenn du nur einen einzigen InOut-Parameter von einfachem Datentyp wie Bool, Int, Real, usw. hast. Dann wird der Parameter erst umkopiert, auf der Kopie im Baustein gearbeitet und der Wert der Kopie wieder auf den Parameter geschrieben. Alles was zwischenzeitlich an Befehlen auf diese Variable vom HMI im SPS-Programm eingetroffen ist geht verloren, bzw. wird wieder überschrieben.
 
Zurück
Oben