TIA HMI Write geht nicht wenn "normal" Übersetzt - Bug oder Feature?

LowLevelMahn

Level-1
Beiträge
766
Reaktionspunkte
90
Zuviel Werbung?
-> Hier kostenlos registrieren
BUG: HMI Write geht nicht wenn SPS "normal" Übersetzt

TIA V13 SP1 UP2, HMI 300,400,700, S7-1200 1211C Firmware 4.1.1

Ich habe hier ein Projekt an dem ich schon ein Weile arbeite - doch jetzt plötzlich kann ich alle Variablen im HMI (300, 400, 700) nur noch lesen, NICHT mehr schreiben

Ich habe eine Testvariable für die ich ein Eingabe und ein Ausgabefeld definiert habe - im Fehlerfall führt eine Eingabe zu ###### in dem Ausgabefeld

Nach vorsichtigen Tests (das Testprojekt werde immer wieder frisch aus einem Sicherungsordner kopiert - damit nichts aus versehen gespeichert werden kann)
mit verschiedenen Versionen des Projektes ist das meine reproduzierbare Fehlerkette:

der Schlechtfall:

1. SPS "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" - nur damit der Anfang immer definiert ist
2. mein Problem-Projekt laden
3. Übersetzmethode 1: mit den Icons "Übersetzen" und "Laden in Gerät" auf die SPS
4. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt ########

der Gutfall:

1. SPS "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" - nur damit der Anfang immer definiert ist
2. mein Problem-Projekt laden
3. Übersetzmethode 2: mit rechter Maustaste: "Hardware komplett übersetzen", "Software Bausteine komplett übersetzen" und dann laden mit den Icon "Laden in Gerät"
4. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt den geschriebenen Wert

Dieser "Fehler" ist über mehrere Tests hinweg nachvollziehbar - leider habe ich es noch nicht geschafft das Szenario in ein kleines Beispiel umzuwandeln - ich
bin da aber noch drann damit das hier jemand bestätigen kann

Kennt jemand diese Effekte - oder kann sie erkären?
Ich denke es ist ein Fehler weil es kein Feeback von TIA gibt das irgendetwas nicht in Ordnung ist - nur durch probieren ist mir das Aufgefallen

Noch ein Frage:

Die Funktion in Online&Diagnose SPS-Reset (Knopf unter SPS-auf Start/Stop) scheint nicht wirklich die SPS vollständig zu leeren/killen -
Das Feature "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" scheint radikaler zu sein - danach sind alles Programmblöcke weg und auch die SPS-Sprache steht dann auf Englisch
https://support.industry.siemens.com/cs/document/98161300?lc=de-WW

Update 1:

Es liegt nicht am HMI - nur die Art wie ich das SPS-Projekt übersetze macht den unterschied aus

Update 2: ES IST EIN BUG

Es reicht wenn ich den Datenblock umbenenne damit auch Übersetzmethode 1 wieder richtig arbeitet und das HMI die Variable schreiben kann
Vermutung: Das Umbenennen scheint wohl ein projektinternes Flag ala "vollständige Kompilierung benötigt" zu setzen Also ist es ein BUG weil dieses "Flag" in meinem Testprojekt nicht gesetzt ist
ich es aber dennoch brauche damit die SPS richtig übersetzt wird

Das Problem ist vergleichbar mit VStudios Precompiled-Headers-Problemen - normalerweise ist der IDE klar wann wirklich neu kompiliert werden muss - aber in alten Versionen hat das manchmal nicht richtig funktioniert -
was dazu geführt hat das viele Entwickler im Falle von komischen Fehlern nur dem Rebuild wirklich vertrauen - ABER wie man vergleichbare Probleme in so ein Einschränktes System wie die SPS-Programmierung bekommt ist mir echt ein Rätsel
 
Zuletzt bearbeitet:
Ich hatte solche Probleme mit der V12 in Zusammenhang mit einer S7-1200. Ich habe da sehr oft an den Variablen etwas geändert und das Projekt geladen, und irgendwann funktionierte der HMI-Zugriff auf bestimmte Variablen nicht mehr. Auch auf Merkerbereiche. Die einzige Möglichkeit zur Behebung war die SPS auf Werkseinstellungen zurückzusetzen, ein Reset reichte nicht aus.

Ich vermute mal, dass entweder die neu vergebenen Variablen-IDs nicht an die SPS oder nicht an das HMI-Projekt übertragen werden. Da es nach einem Rücksetzen der SPS aber wieder funktioniert, würde ich eher vermuten dass die IDs nicht korrekt in die SPS übertragen werden, oder diese ihre internen Zugriffe nicht immer aktualisiert.

Mit der V13 ist mir das noch nicht wieder aufgefallen, wobei ich damit bei weitem nicht so viel "rumgespielt" habe wie mit der V12.

Die Steuerung meldet übrigens recht eindeutig woran der Zugriff scheitert, also ob es eine falsche ID ist, oder eine falsche Prüfsumme übermittelt wurde. Ich habe mir das damals aber nicht genau angesehen, weil mein Wireshark-Plugin noch nicht so weit war um die Fehlercodes auszuwerten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich vermute mal, dass entweder die neu vergebenen Variablen-IDs nicht an die SPS oder nicht an das HMI-Projekt übertragen werden.

Es liegt nicht an den Variable-IDs (diese haben sich ewig nicht geändert - kein Namen oder Typ-Wechsel)

1. Read und Write nutzen richtigerweise die selbe ID - sieht man schön mit deinem Wireshark-Plugin

2. Read funktioniert - nur das Write auf die SELBE Variable geht nicht

3. Der Zustand der HMIs ist unrelevant (diese ändere ich genau so wenig wie die DB-Variablen (und damit also auch nicht die IDs)
nur die Übersetzungsart der SPS bringt den Fehler zum Vorschein

4. Egal ob mit Methode 1 oder Methode 2 - die Variable-IDs sind immer gleich - nur die SPS verweigert den Write-Zugriff (AccessDenied) bei Methode 1
bei Read kommt in beiden Fällen 0 als Fehlercode - auf die SELBE Variable

5. ausser Projekt laden und Übersetzen mache ich gar nichts - kein Speichern

Ich denke es ist irgendein Compiled-Cache der nicht richtig invalidiert wurde - eine Namesänderung forciert das, womit dann auch das normale "Übersetzen" per Icon wieder
eine volle Kompilation anstoesst
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das deutet ja eher auf ein Problem mit den Zugriffmodifizierern hin, d.h. die Haken die man bei den DB-Variablen setzen kann.
Es gibt unter anderem die Flags HMI-Visible und HMI-Accessible. Mit WinCC V7.3 lässt sich der Variablenhaushalt der Steuerung browsen, dann kann man in Wireshark sehen was für Informationen die Steuerung für die Variablen herausgibt.

Aber wie auch immer, das Problem beheben kann nur Siemens.
 
Das deutet ja eher auf ein Problem mit den Zugriffmodifizierern hin, d.h. die Haken die man bei den DB-Variablen setzen kann.
Es gibt unter anderem die Flags HMI-Visible und HMI-Accessible. Mit WinCC V7.3 lässt sich der Variablenhaushalt der Steuerung browsen, dann kann man in Wireshark sehen was für Informationen die Steuerung für die Variablen herausgibt.

Diese Flags sind doch nur zum Filtern in TIA und bei der Kommunikation völlig unbedeutend - und die stehen alle auf Visible/Accessible = true - auch schon immer
Der einzige Unterschied ist nur die Art wie ich Übersetze - sonst mache ich absolut nichts mit dem Testprojekt (kein Ändern/Speichern) - nur die SPS kompilieren und übertragen
alles andere ist 100% fix und konstant

Code:
[COLOR=#3E3E3E]mein Test Loop
[/COLOR][COLOR=#3E3E3E]  1. SPS "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" - nur damit der Anfang immer definiert ist[/COLOR]
[COLOR=#3E3E3E]
[/COLOR][COLOR=#3E3E3E]  2. TIA öffnen[/COLOR]
[COLOR=#3E3E3E]  3. mein (Konstant/Unverändert)Problem-Projekt laden[/COLOR]
[COLOR=#3E3E3E]  
  4. Übersetzmethode 1: mit den Icons "Übersetzen" und "Laden in Gerät" auf die SPS[/COLOR]
[COLOR=#3E3E3E]  5. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt ########[/COLOR]
[COLOR=#3E3E3E]oder[/COLOR]
[COLOR=#3E3E3E]  4. Übersetzmethode 2: mit rechter Maustaste: "Hardware komplett übersetzen", "Software Bausteine komplett übersetzen" und dann laden mit den Icon "Laden in Gerät"[/COLOR]
[COLOR=#3E3E3E]  5. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt den geschriebenen Wert
[/COLOR]
  6. TIA beenden / nicht speichern
und wieder von vorne

Ich verstehe nicht ganz wie du da den HMI-Visible und HMI-Accessible Bezug herstellst - aber koennte ja auch irgendwie drann hängen

Aber wie auch immer, das Problem beheben kann nur Siemens.

Wie immer :{
 
@LowLevelMahn :

Ich hatte das Problem auch schon - leider tritt es nicht immer auf und ist auch nicht wirklich nachvollziehbar. In meinem Fall mit meinem Bildbaustein, der auf ein UDT innerhalb eines DBs zugreift.
Ich habe mir mittlerweile angewöhnt, immer "komplett übersetzen" zu wählen.
Nur so bin ich auf der sicheren Seite, denn wer hat schon die Zeit, die komplette HMI jedesmal durchzutesten?

Ich liebe TIA... :(


Gruß,

Michael
 
Das äußerte sich bei mir durch einen scheinbaren Versatz der Schreibadresse um (ich glaube mich erinnern zu können) 2 Bytes oder so. D.h. die Eingabe landete dann woanders als der Wert, den das Feld angezeigt hat. Aber das kam jetzt auch nicht oft oder regelmäßig vor - sicherheitshalber hört man dann aber doch auf, die kurze Version zu nehmen.
So lange dauert das komplette Übersetzen auch nicht, dass ich da ein Risiko eingehen möchte. Das ist es dann doch nicht Wert... ;)
 
Diese Flags sind doch nur zum Filtern in TIA und bei der Kommunikation völlig unbedeutend

Ich war gerade bei einem Siemens Workshop, soweit ich mich erinnern kann, wurde hier das Verhalten mit SP1 sehr wohl etwas (wieder einmal) geändert, und die Häkchen habe nunmehr einen Sinn, im Zusammenhang mit weiteren Einstellungen. Stichwort Security
Ich würde da mal nachhaken.
LG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich war gerade bei einem Siemens Workshop, soweit ich mich erinnern kann, wurde hier das Verhalten mit SP1 sehr wohl etwas (wieder einmal) geändert, und die Häkchen habe nunmehr einen Sinn, im Zusammenhang mit weiteren Einstellungen. Stichwort Security
Ich würde da mal nachhaken.
LG

Das macht natürlich schon Sinn, sich das bei der spezifischen Variablen anzuschauen - trotz allem darf es am Ende keinen Unterschied im Resultat geben, wie man das Projekt übersetzt. Das Ergebnis sollte immer konsistent sein.
 
Zurück
Oben