TIA [Systemfehler Open Controller] Fehlverhalten SCL Funktion "+=" bei "Status beobachten" ?!

Stups

Level-2
Beiträge
82
Reaktionspunkte
20
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kumunity!

Hat das schon mal jemand von euch gehabt?

Im angehängten Video sind die Variablen CounterMBClientINAnalogDone und CounterMBClientINDigitalDone zu sehen. Dieser diese werden jedes Mal beim erfolgreichem Ausführen eines Sende- Befehls um 1 erhöht. Wenn man aber die Variablen online im Programmcode beobachtet, springt der Wert irgendwie umher. Dieser angezeigte undefinierte Wert ist tatsächlich in der SPS, da der Wert auch auf einer HMI- Runtime angezeigt wird.

Der Wert kann sich bei einer angezeigten minimalen Zykluszeit von ca. 1ms auch theoretisch nur um max. 500 pro Sek. erhöhen (es kann pro Zyklus nur eine der beiden Variablen erhöht werden).

Die Steuerung ist ein Siemens S7-1505SP F PC2 Open Controller, TIA ist V16 UPD6 in VMware® Workstation 15 Pro

Wäre sehr interessiert, ob das jemanden schon mal gleich ergangen ist und was die Ursache war.
Nachdem ich selbst nicht auffälliges in der Programmierung feststellen kann und Siemens noch am Untersuchen ist, hoffe ich doch, dass der Fehler bei mir liegt. Denn sonnst hätte das wohl schwerwiegende Auswirkungen auf die vielen installierten Systeme weltweit 😁


Hier noch ein paar Bilder:

Definition/Speicherort:
1.png


Zähler bzw. einzige Verwendung in der PLC:
2.png

Querverweis Baustein:
3.png
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Hier noch ein Video, wo man die Variablen und den Code schön sehen kann.

Hab bei einer Zählstelle anstatt "1" mal eine Konstante vom selben Datentyp verwendet. Selbes Verhalten.
 

Anhänge

Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man aber die Variablen online im Programmcode beobachtet, springt der Wert irgendwie umher.
Beobachtest Du einen FB, von dem mehrere Instanzen im Zyklus aufgerufen werden? Dann zeigt TIA vielleicht die Werte der Instanzen "gemischt". Lösung: "Beobachten mit Aufrufpfad"
Oder rufst Du die beobachtete Instanz mehrmals auf?

Dieser angezeigte undefinierte Wert ist tatsächlich in der SPS, da der Wert auch auf einer HMI- Runtime angezeigt wird.
Welche Variable zeigt denn die HMI-Runtime an? Was ist ein "undefinierter Wert"? (ich habe gerade kein Gerät um Dein Video anzusehen)

Harald
 
Was soll denn nicht funktionieren? Der += Befehl?

Dann bau das doch mal in ein leeres Programm ein. In dem ganzen Codegewusel versuch ich jetzt nicht, das zu reproduzieren...
 
Beobachtest Du einen FB, von dem mehrere Instanzen im Zyklus aufgerufen werden? Dann zeigt TIA vielleicht die Werte der Instanzen "gemischt". Lösung: "Beobachten mit Aufrufpfad"
Oder rufst Du die beobachtete Instanz mehrmals auf?
Es gibt nur diese eine Instanz des Bausteins.


Welche Variable zeigt denn die HMI-Runtime an? Was ist ein "undefinierter Wert"? (ich habe gerade kein Gerät um Dein Video anzusehen)

Harald
Undefiniert bedeutet hier, dass der Istwert frei im möglichen Wertebereich von UINT springt, anstatt aufwärts zu zählen; Auf der HMI wird der selbe Wert angezeigt wie im TIA;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was soll denn nicht funktionieren? Der += Befehl?

Dann bau das doch mal in ein leeres Programm ein. In dem ganzen Codegewusel versuch ich jetzt nicht, das zu reproduzieren...

Ja- das Addieren funktioniert nicht, wenn diese Zeile im Baustein beobachtet wird.

Hier der Test ohne irgendwelches Programm rundherum; Zeile wird jetzt jeden Zyklus genau ein Mal aufgerufen; Gleiches Fehlverhalten;

1678206308806.png
 
Als wenn noch etwas auf die Variable schreibt. Vielleicht das HMI? Ist die CPU vernetzt? Kannst Du die Vernetzung abziehen und nur Dein PG auf die CPU stecken?
Hast Du noch zyklische OB im SPS-Programm?

Welche SPS-CPU ist das genau? Welche Firmware-Version? Beobachtest Du eine echte CPU oder PLCSIM? Tritt das Verhalten auch in PLCSIM auf?
Welche Windows Version ist in der VM?

Harald
 
Der Wert kann sich bei einer angezeigten minimalen Zykluszeit von ca. 1ms
Die Steuerung ist ein Siemens S7-1505SP F PC2 Open Controller, TIA ist V16 UPD6 in VMware® Workstation 15 Pro

Ich habe mir jetzt nicht alles genau abgeschaut aber mal meine These.

der 1505SP Open Controller hat eine enorme Leistung ( Leistung einer 1517 ca. ). Die Anzeige der Zykluszeit liegt vielleicht bei 1ms, tatsächlich aber u.U. weit drunter ( bei 300/400 wird auch minimal 1ms angezeigt, auch wenn die Zykluszeit bei 0,5ms liegt ). Es könnte so sein, dass auch bei einer Zykluszeit von 100us => 1ms angezeigt wird.

Da sich der Wert dadurch so schnell ändert, beobachtest du halt Werte von irgendeinem Zeitpunkt.


PS:
Ich habe gerade mal ins Handbuch geschaut, dort steht dass die Zykluszeitanzeige die Auflösung "ms" hat.
D.h. das Minimum was angezeit wird ist 1 ( 0 geht ja nicht ).
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Als wenn noch etwas auf die Variable schreibt. Vielleicht das HMI? Ist die CPU vernetzt? Kannst Du die Vernetzung abziehen und nur Dein PG auf die CPU stecken?
Hast Du noch zyklische OB im SPS-Programm?

Welche SPS-CPU ist das genau? Welche Firmware-Version? Beobachtest Du eine echte CPU oder PLCSIM? Tritt das Verhalten auch in PLCSIM auf?
Welche Windows Version ist in der VM?

Harald

An der reellen CPU mit FW V 21.9.4 und BIOS V02.02_02.00 hängt aktuell nur ein Gerät, das über Modbus TCP angesprochen wird. Wenn dies abgesteckt wird, ändert sich das Verhalten nicht.
Als einzige Karte ist ein IO-Link Master 6ES7 137-6BD00-0BA0 V2.2 gesteckt, an dem zwei Signalgeber angeschlossen sind.
Also an der Profinet- Schnittstelle gesamt derzeit nur mein PG.

Es sind im Projekt viele Geräte vernetzt/projektiert, die aber aktuell nicht an der CPU hängen (Büroaufbau).

Es gibt nur einen Main (OB1) und auch keine weitern OBs, wie Cyclic Interrupt udgl.

Im HMI werden diese Variablen nur an einer einzigen Stelle angezeigt. Keine Skripte usw.

Die SPS ist ein Open Controller 6ES7 672-5SC11-0YA0 inkl. einer HMI- V16_06 Runtime, die darauf im Windows- Teil rennt.

Beobachtet wird die echte CPU. Open Controller sollen erst ab PLCSIM V19 simulierbar werden.

Windows- Version in der VM ist Win10 Pro 22H2 und Build 19045.2673 sowie Windows Feature Experience Pack 120.2212.4190.0.
 
Ich habe mir jetzt nicht alles genau abgeschaut aber mal meine These.

der 1505SP Open Controller hat eine enorme Leistung ( Leistung einer 1517 ca. ). Die Anzeige der Zykluszeit liegt vielleicht bei 1ms, tatsächlich aber u.U. weit drunter ( bei 300/400 wird auch minimal 1ms angezeigt, auch wenn die Zykluszeit bei 0,5ms liegt ). Es könnte so sein, dass auch bei einer Zykluszeit von 100us => 1ms angezeigt wird.

Da sich der Wert dadurch so schnell ändert, beobachtest du halt Werte von irgendeinem Zeitpunkt.


PS:
Ich habe gerade mal ins Handbuch geschaut, dort steht dass die Zykluszeitanzeige die Auflösung "ms" hat.
D.h. das Minimum was angezeit wird ist 1 ( 0 geht ja nicht ).

Hab mir das auch schon gedanklich durchgespielt; Es ist aktuell eine Mindestzykluszeit von 1ms eingestellt. Der OB/Controller sollte also warten, wenn der Programm schneller durch ist.

Die Mindest- Zykluszeit wurde Testhalber mal auf 10ms gestellt --> selbes Verhalten;


Bedeutet der Pfeil, dass diese Variable genau in dieser Zeile sich von 31778 (alt) auf 10826 (neu) ändert?
Würde das in dieser Instanz in dieser Zeile auch so angezeigt werden, wenn ein Hintergrundtask oder eine andere Instanz auf diesen Wert schreiben würde?
1678209085265.png
 
Also ich schließe nichts aus aber muss die Leistung der Open Controller bestätigen. Wenn die Mindestzykluszeit deaktiviert ist sind Zyklen weit unter 1ms kein Problem.

Was passiert denn wenn du das Programm in einem Weckalarm aufrufst mit einem 100ms Takt.
Oder alternativ einfach mal einen Trace auf die Variable machen im OB1 Zyklus. Dort sollte sich das Verhalten nachvollziehen lassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ja das absolut verwirrende an der ganzen Geschichte ist, dass diese Wertsprünge nur dann auftreten, wenn die Variable direkt im Programmcode beobachtet wird. Ist dies nicht der Fall, zählen die Werte wunderbar nach oben...

Hat was von Heisenberg 😂😂
 
Was ja das absolut verwirrende an der ganzen Geschichte ist, dass diese Wertsprünge nur dann auftreten, wenn die Variable direkt im Programmcode beobachtet wird. Ist dies nicht der Fall, zählen die Werte wunderbar nach oben...

Hat was von Heisenberg 😂😂
Trace starten und beobachten. Und schauen was passiert ;)
Schleifen oder ähnliches sind keine im Programm oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich schließe nichts aus aber muss die Leistung der Open Controller bestätigen. Wenn die Mindestzykluszeit deaktiviert ist sind Zyklen weit unter 1ms kein Problem.

Was passiert denn wenn du das Programm in einem Weckalarm aufrufst mit einem 100ms Takt.
Oder alternativ einfach mal einen Trace auf die Variable machen im OB1 Zyklus. Dort sollte sich das Verhalten nachvollziehen lassen.

Trace ist eine gute Idee!

Es zeichnet sich ein Muster ab:
1678209571557.png

Zoom:
1678209607896.png

Noch Zoomiger:
1678209792284.png


Und so ohne Beobachten an der Zählstelle:
1678209697123.png
 
Für mich sieht dass so aus, als ob halt verdammt schnell gezählt wird. Also passt irgendwie zur Theorie, dass die Zykluszeit weit unter 1ms liegt.
Springen tut da nichts.
Wenn der Trace im OB1 Zyklus war??? und jeden Zyklus sollte eigentlich jede Zahl zu sehen sein.
Ich würde es auch mit einem neuen Projekt versuchen. Wenn es dort das gleiche ist wird leider nur der Siemens Support übrig bleiben.

Das es bei der Soft SPS bei beobachten zu Problemen kommen kann, gab es schon einmal in 2.6 oder so. Besonders bei Bausteinschnittstellen.

Siemens kocht ja auch nur mit Wasser und der Satz "wir konnten das Verhalten nachstellen" ist auch nicht fremd.
 
Zurück
Oben