-> Hier kostenlos registrieren
Hallo,
ich habe ein Verhalten, das ich jetzt einen Tag lang untersucht habe, aber ich kann einfach keinen Fehler finden.
Einfach erklärt wird der Wert einer Variablen eines UDTs an machen stellen des Programms falsch ausgelsen:
"Modus" wird von mir nur auf 1 gesetzt. Aus irgendeinem Grund wird es aber an einigen Stellen im Programm als 2 ausgelesen. Immer dann, wenn in der Beobachtung diese drei gelb hinterlegten Fragezeichen ??? erscheinen.
Ich weiß, dass die Variable in verschiedenen CASE-Abschnitten ausgelesen wird. Wenn ich ein Trace mitlaufen lasse bleibt "Modus" jedoch jeden Zyklus immer 1.
Die gesamte UDT "#statRezept" wird nur an einer Stelle für einen Zyklus im FB geschrieben und ansonsten nur ausgelesen.
Die Variablen "tmpTestview" und "Debugger" sind nur zur fehlersuche da, um den Zustand von "Modus" an vielen Stellen im Programm sichtbar zu machen.
Das gleiche Problem hatte ich auch mit der INT "Ziel" des gleichen Static-UDT. Diese war 1, obwohl sie 2 sein sollte, also genau vertauscht. Als ich jedoch die Variable mehrmals ausgelesen habe, um den Fehler einzugrenzen, verschwand der Fehler. Das fehlerhafte Auslesen der Variable " Modus " bleibt jedoch reproduzierbar.
Es wird nur eine Instanz dieses FBs ausgeführt.
System Information: Win10, TIA V19 Upd2 lokal installiert. CPU ist eine S7-1512SP-F FW2.9 Simuliert mit PLCSIM Advanced V6 Upd1 mit WinCC Unified V19.
Auch ein Upgrade auf neue Hardware mit FW3.1 brachte keine Änderung.
Ein Test mit einer realen CPU steht noch aus, wäre aber auch keine Lösung, da wir die komplette Entwicklung mit SIMIT und PLCSIM Advanced machen müssen. Da unsere Anlagen die Größe und den Stromverbrauch unseres Firmengebäudes um ein zigfaches übersteigen würden ->Steinbruch
Ich habe nur einen Beitrag gefunden mit einem Ähnlichen fehler: threads/merkw%C3%BCrdiges-verhalten-schnittstelle-out.75069/ Dort gab es auch diese gelb hinterlegten Fragezeichen und es wurde ein Optimierungsproblem des Compilers vermutet.
Aber eine statische Variable muss doch ohne Wenn und Aber immer korrekt auslesbar sein, meiner Meinung nach.
Am liebsten wäre es mir noch, wenn der Fehler bei mir läge, aber die Hoffnung schwindet immer mehr.
Ich bin für jede Anregung dankbar, wie man einen solchen Fehler beheben oder umgehen kann. Denn ein System, das anders reagiert als es programmiert wurde, ist einfach nicht akzeptabel.
Beste Grüße Steffen
ich habe ein Verhalten, das ich jetzt einen Tag lang untersucht habe, aber ich kann einfach keinen Fehler finden.
Einfach erklärt wird der Wert einer Variablen eines UDTs an machen stellen des Programms falsch ausgelsen:
"Modus" wird von mir nur auf 1 gesetzt. Aus irgendeinem Grund wird es aber an einigen Stellen im Programm als 2 ausgelesen. Immer dann, wenn in der Beobachtung diese drei gelb hinterlegten Fragezeichen ??? erscheinen.
Ich weiß, dass die Variable in verschiedenen CASE-Abschnitten ausgelesen wird. Wenn ich ein Trace mitlaufen lasse bleibt "Modus" jedoch jeden Zyklus immer 1.
Die gesamte UDT "#statRezept" wird nur an einer Stelle für einen Zyklus im FB geschrieben und ansonsten nur ausgelesen.
Die Variablen "tmpTestview" und "Debugger" sind nur zur fehlersuche da, um den Zustand von "Modus" an vielen Stellen im Programm sichtbar zu machen.
Das gleiche Problem hatte ich auch mit der INT "Ziel" des gleichen Static-UDT. Diese war 1, obwohl sie 2 sein sollte, also genau vertauscht. Als ich jedoch die Variable mehrmals ausgelesen habe, um den Fehler einzugrenzen, verschwand der Fehler. Das fehlerhafte Auslesen der Variable " Modus " bleibt jedoch reproduzierbar.
Es wird nur eine Instanz dieses FBs ausgeführt.
System Information: Win10, TIA V19 Upd2 lokal installiert. CPU ist eine S7-1512SP-F FW2.9 Simuliert mit PLCSIM Advanced V6 Upd1 mit WinCC Unified V19.
Auch ein Upgrade auf neue Hardware mit FW3.1 brachte keine Änderung.
Ein Test mit einer realen CPU steht noch aus, wäre aber auch keine Lösung, da wir die komplette Entwicklung mit SIMIT und PLCSIM Advanced machen müssen. Da unsere Anlagen die Größe und den Stromverbrauch unseres Firmengebäudes um ein zigfaches übersteigen würden ->Steinbruch
Ich habe nur einen Beitrag gefunden mit einem Ähnlichen fehler: threads/merkw%C3%BCrdiges-verhalten-schnittstelle-out.75069/ Dort gab es auch diese gelb hinterlegten Fragezeichen und es wurde ein Optimierungsproblem des Compilers vermutet.
Aber eine statische Variable muss doch ohne Wenn und Aber immer korrekt auslesbar sein, meiner Meinung nach.
Am liebsten wäre es mir noch, wenn der Fehler bei mir läge, aber die Hoffnung schwindet immer mehr.
Ich bin für jede Anregung dankbar, wie man einen solchen Fehler beheben oder umgehen kann. Denn ein System, das anders reagiert als es programmiert wurde, ist einfach nicht akzeptabel.
Beste Grüße Steffen