TIA Uhrzeitsynchronisation CPU - HMI

Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit dem Uhrzeit Slave im Panel funktioniert doch schon mit TIA V14.
Dazu eine Variable anlegen die bei Änderung die SommerWinterzeitumschaltung macht. Da braucht man keine Scripts dazu.
Anhang anzeigen 65323
Beide Variablen habne dieselbe Funktion bei Wertänderung hinterlegt.
Code:
#Loc_Return := RD_LOC_T(#Lokalzeit);
#Sommerzeit := 1 = BITSUM(INT_TO_WORD(#Loc_Return));

Hallo vollmi!

Das dachte ich auch und hätte es auch so implementiert, aber wenn man ein paar Mal Zeitmaschine spielt um die Umschaltung zu triggern, stellt sich das HMI scheinbar auf UTC+2.
Bei HMI-Firmware 16 funktioniert es anstandslos, aber mit 14 und 15 trat dieses Phänomen auf, welches sich nur beheben ließ indem man die Runtime schließt, das Häkchen bei Winterzeit hin und her toggelt und dazwischen übernimmt.
Danach stimmt wieder die Zeit von CPU und HMI überein...
 
Code:
#Loc_Return := RD_LOC_T(#Lokalzeit);
#Sommerzeit := 1 = BITSUM(INT_TO_WORD(#Loc_Return));
Warum verwendest Du da umständlich BITSUM ?? Laut Dokumentation hast Du "Glück", daß es nur einen Rückgabewert gibt, wo genau ein Bit gesetzt ist.
Meiner Meinung nach müsstest Du auf #Loc_Return = 1 vergleichen: #Sommerzeit := #Loc_Return = 1;

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sommer/winterzeit Umstellung bei TIA 14, 15.1 funktioniert mangelhaft
Das Problem ist, daß Siemens die Sommerzeit-"Umstellung" noch nie ganz richtig für alle HMI/Panele hinbekommen hat.
Das Verständnisproblem geht schon los, wenn man das ganze "Umstellung" nennt und versucht, die Sommerzeit als Umstellung zu implementieren. Dabei muß doch gar keine Uhr "umgestellt" werden, sondern das System könnte und müsste einfach nur feststellen, ob die Systemzeit in die Sommerzeit fällt und könnte automatisch die Umrechnung Systemzeit zu Lokalzeit anpassen. Bei Siemens HMI muß aber zusätzlich eingestellt/umgestellt werden, daß gerade die Sommerzeit (daylight saving time) "aktiv" ist. Und das funktioniert bekanntlich mal und mal nicht ...


Die einzige Möglichkeit, die ich bei TIA15.1 abwärts sehe ist, dass man nur die CPU synchronisiert und IRGENDWIE die Lokalzeit der CPU stumpf als Systemzeit in das HMI schreibt, ohne Zeitzone und Sommer/Winterzeit...

Aber ich habe noch nirgendwo gelesen, wie/ob das möglich ist...


Edit:
Vielen Dank Volker für deinen raschen Input! Das mit dem Bereichszeiger hab ich auch schon öfter wo gelesen, hab mich aber zu sehr auf das TIA Verfahren versteift 🤦‍♂️

Anbei nochmal kurz meine Einstellungen.
CPU erhält über NTP die Zeit, stellt lokal die Sommer/Winterzeit ein und gibt mittels Bereichszeiger die aktuelle lokale Zeit an das HMI weiter.
Das Übergeben der korrekten Lokalzeit per Bereichszeiger "Datum/Uhrzeit PLC" ist in der Tat die zur Zeit einzige wirklich immer funktionierende Variante, wie man die Lokalzeit der HMI-Panele automatisch auf Sommerzeit bekommt. (TIA V17 und V18 kenne ich nicht)
Allerdings funktioniert die Bereichszeiger-Variante nicht mehr lange, wenn Siemens nicht bis 2029 die künstliche Begrenzung des Bereichszeigers auf max 2029 bei den HMI entfernt. siehe hier im Thread den Beitrag #44


Erklärung von beiden Varianten: Bereichszeiger und Master/Slave TIA Verfahren:

Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
(Erklärung Bereichszeiger 2:50)
Naja, in dem Video wird auch viel Mist erzählt...

Harald
 
Warum verwendest Du da umständlich BITSUM ?? Laut Dokumentation hast Du "Glück", daß es nur einen Rückgabewert gibt, wo genau ein Bit gesetzt ist.
Meiner Meinung nach müsstest Du auf #Loc_Return = 1 vergleichen: #Sommerzeit := #Loc_Return = 1;

Harald
Gute Frage. Keine Ahnung wieso ich das gemacht habe. Kann es sein das mich V13/14 irgendwie dazu gezwungen hat?
eigentlich könnte man das gleich in eine einzelne Zeile Packen.
Code:
#Sommerzeit := RD_LOC_T(#Lokalzeit) = 1;
Wie könnten denn die anderen zwei Stati entstehen? Oder mache ich der Programmierer Generation im Jahr >= 2262 einen gefallen wenn ich die abfange?
1669881973768.png
 
eigentlich könnte man das gleich in eine einzelne Zeile Packen.
Code:
#Sommerzeit := RD_LOC_T(#Lokalzeit) = 1;
Ja. Wenn das heute funktioniert, dann wird das auch bis mindestens 2089 oder 2262 funktionieren. Es sei denn, die Systemuhr wird irgendwie auf ein zu großes Datum verstellt, falls das irgendwie möglich ist.

Wie könnten denn die anderen zwei Stati entstehen? Oder mache ich der Programmierer Generation im Jahr >= 2262 einen gefallen wenn ich die abfange?
Vielleicht gab oder gibt es mal CPU oder Firmware-Versionen, die keine Lokalzeit kennen (wie S7-300) oder wo keine oder falsche Parameter für die Umrechnung zu Lokalzeit hinterlegt sind?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Allerdings funktioniert die Bereichszeiger-Variante nicht mehr lange, wenn Siemens nicht bis 2029 die künstliche Begrenzung des Bereichszeigers auf max 2029 bei den HMI entfernt. siehe hier im Thread den Beitrag #44

Ich hab jetzt mal ein Datum im Sommer und Winter im Jahr 2100 eingestellt (unter Verwendung des Bereichszeigers) und es scheint zu funktionieren... (Habe es mit TIA 16 getestet)
 
Ich hab jetzt mal ein Datum im Sommer und Winter im Jahr 2100 eingestellt (unter Verwendung des Bereichszeigers) und es scheint zu funktionieren...
Na, dann teste nochmal und wähle ein Datum zwischen 2030 und 2089 und schau genau hin. Ein Datum 2100 kann gar nicht per Bereichszeiger übergeben werden.

Harald
 
Na, dann teste nochmal und wähle ein Datum zwischen 2030 und 2089 und schau genau hin. Ein Datum 2100 kann gar nicht per Bereichszeiger übergeben werden.

Harald
Hi,

also ich hab nochmal rumgespielt und konnte keine Auffälligkeiten bei >2030 feststellen. Hat Siemens eventuell was bereinigt im Zuge der Update Collections? Das System begrenzt auf 31.12.2200. Dabei stellt sich auch die HMI Uhr auf UTC+0 um..
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also ich hab nochmal rumgespielt und konnte keine Auffälligkeiten bei >2030 feststellen. Hat Siemens eventuell was bereinigt im Zuge der Update Collections? Das System begrenzt auf 31.12.2200. Dabei stellt sich auch die HMI Uhr auf UTC+0 um..
Ich habe nun zielgerichtet Handbuch gelesen und festgestellt: Die Begrenzung der Funktion der Uhrzeitsynchronisation per Bereichszeiger "Datum/Uhrzeit PLC" auf 2029 existiert nur bei S7-300/400. Bei S7-1200/1500 hat Siemens den Aufbau der Bereichszeiger rund um Datum/Uhrzeit (und des Steuerungsauftrags 41) geändert und verwendet da den Datentyp DTL (*), so daß laut Handbuch ein Datum bis 2554 übertragen werden könnte. Von einer Begrenzung auf 31.12.2200 wird nichts erwähnt (bzw. habe ich nichts gefunden). Die Begrenzung hast Du beim Testen festgestellt?

(*) Im Handbuch und in der TIA Hilfe wird bei S7-1500 behauptet, daß alle Angabe in den Datum/Uhrzeit-Bereichszeigern BCD-codiert wären, was allerdings nicht stimmt. :rolleyes:

Harald
 
Von einer Begrenzung auf 31.12.2200 wird nichts erwähnt (bzw. habe ich nichts gefunden). Die Begrenzung hast Du beim Testen festgestellt?

Das ergibt natürlich Sinn, dass die neue Generation das anders handhabt.

Ja, habe versucht ein Datum jenseits von 2200 einzustellen und wurde darauf begrenzt.
Ich denke die Begrenzung sitzt in der CPU selbst und nicht in der Limitierung des Bereichszeigers.

Mit dem Limit kann ich auf jeden Fall gut leben ^^
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke die Begrenzung sitzt in der CPU selbst und nicht in der Limitierung des Bereichszeigers.
Das kann man leicht testen, indem man nach dem Übertragen der CPU-Uhrzeit in den Bereichszeiger (oder in eine temp. Variable und danach in den Bereichzeiger) im DTL.YEAR 200 (oder mehr) dazuaddiert.

Harald
 
Zurück
Oben