TIA Sommerzeitumstellung für Comfort Panels TP mit S7-300 CPU

user525

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

In TIA Portal muss ein Programm für Sommerzeitumstellung für Comfort Panel TP700 mit CPU 314C-2PN/DP in TIA Portal implementieren.
Ich habe bereits im diesem Thread bereist wegen meiner Problematik geschrieben, aber habe mich entschieden ein separates Thema zu eröffnen.
Dieses Programm ist alter STEP7 geschrieben für S7-300. Alternative zum Datenbaustein vom Typ UDT60 (Step 7) ist Datenbaustein WS_RULES.

In meinem Programm habe ich DB2 Vom Typ WS_RULES. Im TIA wenn ich über Online Diagnose ->Funktionen-> Uhrzeit einstellen -> Zeit von PG /PC übernehmen ein Hacken setze und aktuelle Zeit einstelle 10.05.2023, 10:43, dann L_T zeigt Uhrzeit 12:43, obwohl aktuelle Tageszeit 10:43 ist.
Programm übernimmt als Datum aktuelle Uhrzeit und am L_T Ausgang von BT_LT kommt Uhrzeit mit 2 Stunden Unterschied.

Was mache ich hier falsch??

Aber mit Winter. und Sommerzeitumstellung funktioniert.
Ich habe simuliert und das Datum auf 10.11.2023 eingestellt über CPU Online Diagnose ->Funktionen-> Uhrzeit einstellen.
L_T hat sich Winterzeit übernommen mi Uhrzeit 11:49 (2023-11-10 11:49), ACT_TIME: 2023-11-10 10:49
 

Anhänge

  • 001.JPG
    001.JPG
    314,8 KB · Aufrufe: 25
  • 002.JPG
    002.JPG
    306,4 KB · Aufrufe: 24
  • 003.JPG
    003.JPG
    310,1 KB · Aufrufe: 21
  • 004.JPG
    004.JPG
    276,6 KB · Aufrufe: 21
  • 005.JPG
    005.JPG
    313 KB · Aufrufe: 20
  • 006.JPG
    006.JPG
    299,3 KB · Aufrufe: 25
Hall,

die 300er hat weder Zeitzonen noch Sommerzeit, nur eine einfache Uhr.

Ich weiß nicht, wie die Zeit bei der 300 Uhrzeit stellen von PG übertragen wird, bei 1200 und 1500 wird auf jeden Fall die Zeit im UTC Format übertragen, das würde erklären, warum du im Sommer 2 h Unterschied hast (Zeitzone + Sommerzeit).

Zusätzlich musst du auch im Panel beachten:
1683711392199.png
Mit anhaken von Punkt 4 schaltet das Panel nicht automatisch von richtiger Zeit zu Sommerzeit und umgekehrt, da ist nur eine Info für das Panel, das Sommerzeit aktiv ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hall,

die 300er hat weder Zeitzonen noch Sommerzeit, nur eine einfache Uhr.

Ich weiß nicht, wie die Zeit bei der 300 Uhrzeit stellen von PG übertragen wird, bei 1200 und 1500 wird auf jeden Fall die Zeit im UTC Format übertragen, das würde erklären, warum du im Sommer 2 h Unterschied hast (Zeitzone + Sommerzeit).

Zusätzlich musst du auch im Panel beachten:
Anhang anzeigen 68839
Mit anhaken von Punkt 4 schaltet das Panel nicht automatisch von richtiger Zeit zu Sommerzeit und umgekehrt, da ist nur eine Info für das Panel, das Sommerzeit aktiv ist.
Danke für Beitrag. das Programm oben habe ich mit Simulator getestet, ohne CPU und Touch Panel.
 
Deine Lösung mit dem Bereichszeiger "Datum/Uhrzeit PLC" funktioniert nur bis Ende 2029. Danach erhält man Systemfehler-Meldungen und die Uhrzeitsynchronisation wird nicht gemacht.

Ich würde es anders machen: für die S7-300 und das Comfort Panel jeweils die Uhrzeit-Synchronisation per NTP einrichten. (Das sollte wenigstens bis 2079 oder vielleicht sogar bis 2099 funktionieren?)
Die Uhr der S7-300 läuft dann in UTC. Mit dem Baustein BT_LT oder meiner Variante BT_LT_3 kann man aus der Systemzeit (UTC) die Lokalzeit inklusive Sommerzeit berechnen und verwenden. Das funktioniert.

Leider kann man nicht direkt die in der S7-300 berechnete Lokalzeit zur Uhrzeit-Sync des Comfort Panels verwenden, wenn die Lösung auch nach 2029 funktionieren soll. Daher auch das Comfort Panel eigenständig per NTP synchronisieren und im Control Panel des Comfort Panels die richtige Zeitzone einstellen. Dann stimmt die Lokalzeit des Comfort Panels schon mal im Winter.

Leider stellt sich die Sommerzeit beim Comfort Panel nicht selbständig ein, man muß mit der Systemfunktion SetzeSommerzeit (SetDaylightSavingTime) selbst zum richtigen Zeitpunkt die Sommerzeit ein-/ausschalten. Leider ist diese Lösung von Siemens wieder nur halbfertig, weil man kann zwar die Sommerzeit einschalten und ausschalten, man kann aber nicht zurücklesen wie die Einstellung gerade steht... Man darf aber die Funktion "vorsichtshalber" so oft ausführen wie man will, es wird nur einmal ein- oder ausgeschaltet. Bei manchen TIA-Versionen wird dabei leider jedes Mal eine unschöne Debug-Systemmeldung erzeugt. Und komischerweise schreibt Siemens in der Betriebsanleitung der Comfort Panels, daß man nach Umschaltung der Sommerzeit ("Daylight savings time currently in effect") das Panel neu starten müsse - was aber vermutlich unnötig ist.

Besser das Comfort Panel ruft SetzeSommerzeit nur auf, wenn nötig oder wenn nicht sicher ist, ob die Einstellung richtig steht. Ob gerade Sommerzeit ist, kann das Comfort Panel z.B. festellen, wenn es seine Uhrzeit (Lokalzeit!) mit der Lokalzeit von jemandem vergleicht, der nicht so doof ist und weiß wann Sommerzeit ist (z.B. eine Logo 8 oder die S7-300 mit BT_LT). Ist die Abweichung der Panel-Uhrzeit (Lokalzeit) zur Uhrzeit des "wissenden" Partners ca 1 Stunde, dann muß das Panel entsprechend seine Sommerzeit ein- oder ausschalten mit SetzeSommerzeit/SetDaylightSavingTime. Da braucht das ein-/ausschalten nur einmal gemacht werden, weil danach die Uhrzeit korrekt ist und mit dem Partner übereinstimmt.

Der Partner (z.B. die S7-300) könnte auch nur ein Bit "Jetzt_ist_Sommerzeit" zur Verfügung stellen. Oder das Comfort Panel könnte notfalls auch selbst minütlich mit einem VBS-Skript mit der Sommerzeit-Formel oder mit dem Algorithmus von BT_LT_3 ausrechnen (*), ob seine Uhrzeit in der Sommerzeit liegt oder nicht, und bei Änderung zur vorherigen Berechnung die Sommerzeit entsprechend ein-/ausschalten und sich merken daß es die Umschaltung gemacht hat!
(*) Wenn das Comfort Panel selbst die Berechnung macht, dann muß es berücksichtigen, ob es bereits die Sommerzeit-Umstellung gemacht hat, weil es nur Zugriff auf die eigene Lokalzeit hat.
Wie ein Comfort Panel sich etwas remanent merken kann (z.B. eine Panel-interne HMI-Variable), siehe in der VBS-FAQ die Skripte SettingsIniSpeichern und SettingsIniLaden Beim Start der Runtime auf dem Comfort Panel dann einmalig die gespeicherten Werte mit SettingsIniLaden in die HMI-Variablen zurückladen.


Am besten finde ich die Variante, die Uhrzeit (Lokalzeit) des Comfort Panels mit der Lokalzeit eines Partners zu vergleichen - das habe ich aber noch nicht getestet. Also die S7-300 per NTP synchronisieren, mit RD_SYS_T die Uhrzeit lesen und mit BT_LT in Lokalzeit umrechnen und die Lokalzeit in einer Date_and_Time-Variable für das HMI-Panel zur Verfügung stellen (nicht im Bereichszeiger!). Das Comfort-Panel ebenfalls per NTP synchronisieren und minütlich (Aufgabenplaner) ein Skript aufrufen, was die Differenz der eigenen Lokalzeit (Now) zur Uhrzeit in der Date_and_Time-Variable von der S7-300 ermittelt und ggf. SetDaylightSavingTime zum ein-/ausschalten der Sommerzeit aufruft.

Harald
 
Zuletzt bearbeitet:
Im TIA wenn ich über Online Diagnose ->Funktionen-> Uhrzeit einstellen -> Zeit von PG /PC übernehmen ein Hacken setze und aktuelle Zeit einstelle 10.05.2023, 10:43, dann L_T zeigt Uhrzeit 12:43, obwohl aktuelle Tageszeit 10:43 ist.
Programm übernimmt als Datum aktuelle Uhrzeit und am L_T Ausgang von BT_LT kommt Uhrzeit mit 2 Stunden Unterschied.

Was mache ich hier falsch??
Das TIA stellt die Uhr der SPS nach der Lokalzeit des PG. BT_LT geht aber davon aus, daß die Uhr der SPS in UTC läuft und addiert auf die Uhrzeit 2 Stunden drauf. Du musst also die gewünschte zu stellende "Baugruppenzeit" im Kopf nach UTC umrechnen (also 2 Stunden weniger) und die SPS-Uhr auf diese UTC-Zeit stellen (genau so wie es eine NTP-Synchronisation tun würde).
Oder kann Dein TIA einen Zeitzonen-Versatz berücksichtigen? (Step7 classic V5.x kann das) Wie sieht in Deinem TIA der "Uhrzeit einstellen" Dialog aus? Welche TIA-Version verwendest Du?

PS: ich habe es extra mal mit TIA V15.1 ausprobiert. Da behauptet die TIA-Hilfe zum Button "Übernehmen" auch bei S7-300, daß die PG-Zeit zu UTC umgerechnet würde. Das ist aber definitiv falsch. Bei S7-300 stellt mein TIA 15.1 die SPS-Uhr nach der Lokalzeit des PG. (Ist dieser Bug in einer neueren TIA-Version beseitigt oder als "Systemverhalten" immer noch drin?)

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Deine Lösung mit dem Bereichszeiger "Datum/Uhrzeit PLC" funktioniert nur bis Ende 2029. Danach erhält man Systemfehler-Meldungen und die Uhrzeitsynchronisation wird nicht gemacht.

Ich würde es anders machen: für die S7-300 und das Comfort Panel jeweils die Uhrzeit-Synchronisation per NTP einrichten. (Das sollte wenigstens bis 2079 oder vielleicht sogar bis 2099 funktionieren?)
Die Uhr der S7-300 läuft dann in UTC. Mit dem Baustein BT_LT oder meiner Variante BT_LT_3 kann man aus der Systemzeit (UTC) die Lokalzeit inklusive Sommerzeit berechnen und verwenden. Das funktioniert.

Leider geht momentan die NTP Uhrzeitsynchronisierung noch nicht. Nach Einrichtung des PC als NTP wird die Uhrzeit nicht synchronisiert.

Momentan wird bei mir Panel über Bereichszeiger synchronisiert, so dass HMI/panel über CPU/SPS synchronisiert.

Würde die NTP Synchronisierung NTP Server->SPS-> Panel/HMI (über Bereichszeiger) so funktionieren?
SPS wird von NTP synchronisiert und HMI Panel von SPS per Bereichszeiger? Ich wollte die SPS-Panel Synchronisierung per Bereichszeiger im ursprünglichem Programm lassen erstmal, wenn wie oben beschrieben gehen würde.


 
Das TIA stellt die Uhr der SPS nach der Lokalzeit des PG. BT_LT geht aber davon aus, daß die Uhr der SPS in UTC läuft und addiert auf die Uhrzeit 2 Stunden drauf. Du musst also die gewünschte zu stellende "Baugruppenzeit" im Kopf nach UTC umrechnen (also 2 Stunden weniger) und die SPS-Uhr auf diese UTC-Zeit stellen (genau so wie es eine NTP-Synchronisation tun würde).
Oder kann Dein TIA einen Zeitzonen-Versatz berücksichtigen? (Step7 classic V5.x kann das) Wie sieht in Deinem TIA der "Uhrzeit einstellen" Dialog aus? Welche TIA-Version verwendest Du?

PS: ich habe es extra mal mit TIA V15.1 ausprobiert. Da behauptet die TIA-Hilfe zum Button "Übernehmen" auch bei S7-300, daß die PG-Zeit zu UTC umgerechnet würde. Das ist aber definitiv falsch. Bei S7-300 stellt mein TIA 15.1 die SPS-Uhr nach der Lokalzeit des PG. (Ist dieser Bug in einer neueren TIA-Version beseitigt oder als "Systemverhalten" immer noch drin?)

Harald
Das habe ich auch festgestellt, dass BT_LT von RD_SYS_T die Lokalzeit des PG bekommt (+2 Stunden) und nicht Systemzeit. Und BT_LT macht wieder extra Berechnung des Lokalzeit (+2 Stunden), so dass aktuelle Lokalzeit schon + 4 Stunden gegenüber UTC Zeit.
Ja, mit PG Zeit übernehmen in Online Diagnose der CPU übernimmt CPU Lokalzeit und nicht UTC Zeit.
TIA Portal Version ist V16.
 
Würde die NTP Synchronisierung NTP Server->SPS-> Panel/HMI (über Bereichszeiger) so funktionieren?
SPS wird von NTP synchronisiert und HMI Panel von SPS per Bereichszeiger?
Ja, das funktioniert hervorragend. Allerdings nur bis Ende 2029.

Das habe ich auch festgestellt, dass BT_LT von RD_SYS_T die Lokalzeit des PG bekommt (+2 Stunden) und nicht Systemzeit.
RD_SYS_T liest nicht die Zeit des PG sondern die Uhrzeit der S7-300. Das ist die Systemzeit. BT_LT kann daraus die Lokalzeit berechnen. Diese Lokalzeit in den Bereichszeiger für das Comfort Panel kopieren und die Synchronisation des Comfort Panels inkl. Sommerzeit funktioniert prima (weil die Sync per Bereichszeigern auf Lokalzeit basiert). Wie bereits mehrfach geschrieben funktioniert das so allerdings nur bis Ende 2029. Das ist bald.

Harald
 
Wie kann ich im Comfort Panel Bildschirm als Text oder 0/1 anzeigen, ob aktuell Sommer- und Winterzeit ist?
 
Wie kann ich im Comfort Panel Bildschirm als Text oder 0/1 anzeigen, ob aktuell Sommer- und Winterzeit ist?
Als E/A-Feld oder als Symbolisches E/A-Feld. So wie man halt den Wert von HMI-Variablen mit Verbindung zu PLC-Variablen im HMI Panel anzeigt?
Dazu in der SPS mit BT_LT_3 feststellen, ob Sommerzeit ist und das Ergebnis als (Bool-)Variable an das Comfort Panel übergeben.

Oder meinst Du: "anzeigen, ob das Comfort Panel auf Sommerzeit eingestellt ist"? Das geht nicht, weil man die Einstellung nicht auslesen kann. Man kann nur im Control Panel bei Date/Time Properties nachschauen, ob die Einstellung "Daylight savings time currently in effect" aktiviert ist. Bild siehe Beitrag #2
Leider ist diese Lösung von Siemens wieder nur halbfertig, weil man kann zwar die Sommerzeit einschalten und ausschalten, man kann aber nicht zurücklesen wie die Einstellung gerade steht

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder meinst Du: "anzeigen, ob das Comfort Panel auf Sommerzeit eingestellt ist"? Das geht nicht, weil man die Einstellung nicht auslesen kann. Man kann nur im Control Panel bei Date/Time Properties nachschauen, ob die Einstellung "Daylight savings time currently in effect" aktiviert ist. Bild siehe Beitrag #2


Harald
Einfach auf dem Panel anzeigen, dass aktuell Sommer- oder Winterzeit ist. Wie kann das abfragen und HMI wiedergeben?
 
Als E/A-Feld oder als Symbolisches E/A-Feld. So wie man halt den Wert von HMI-Variablen mit Verbindung zu PLC-Variablen im HMI Panel anzeigt?
Dazu in der SPS mit BT_LT_3 feststellen, ob Sommerzeit ist und das Ergebnis als (Bool-)Variable an das Comfort Panel übergeben.
BT_LT_3_CET (für CPU-Uhr in UTC) findest Du hier, oder als AWL-Quelle BT_LT_3_UTC.awl im Anhang hier am Beitrag. Die Dateiendung ".txt" entfernen und im TIA-Projekt als "Externe Quelle" hinzufügen und dann "Bausteine aus Quelle generieren".
Dann mit RD_SYS_T die Systemzeit der S7-300-Uhr lesen und an BT_LT_3_CET übergeben. BT_LT_3_CET rechnet daraus die Lokalzeit CET/CEST und signalisiert am Ausgang SUMMER, ob gerade Sommerzeit ist. Am Ausgang SUMMER eine Bool-Variable für das HMI anschalten, z.B. im "DB_HMI" eine Bool-Variable "Summertime" anlegen. Den DB übersetzen. Dann die Variable "Summertime" in ein Bild in dem Comfort Panel ziehen - den Rest macht TIA dann selber (HMI-Verbindung auswählen oder anlegen, HMI-Variable anlegen, EA-Feld anlegen).

Harald
 

Anhänge

  • BT_LT_3_UTC.awl.txt
    5,9 KB · Aufrufe: 7
  • BT_LT_3_TIA.png
    BT_LT_3_TIA.png
    10,5 KB · Aufrufe: 9
BT_LT_3_CET (für CPU-Uhr in UTC) findest Du hier, oder als AWL-Quelle BT_LT_3_UTC.awl im Anhang hier am Beitrag. Die Dateiendung ".txt" entfernen und im TIA-Projekt als "Externe Quelle" hinzufügen und dann "Bausteine aus Quelle generieren".
Dann mit RD_SYS_T die Systemzeit der S7-300-Uhr lesen und an BT_LT_3_CET übergeben. BT_LT_3_CET rechnet daraus die Lokalzeit CET/CEST und signalisiert am Ausgang SUMMER, ob gerade Sommerzeit ist. Am Ausgang SUMMER eine Bool-Variable für das HMI anschalten, z.B. im "DB_HMI" eine Bool-Variable "Summertime" anlegen. Den DB übersetzen. Dann die Variable "Summertime" in ein Bild in dem Comfort Panel ziehen - den Rest macht TIA dann selber (HMI-Verbindung auswählen oder anlegen, HMI-Variable anlegen, EA-Feld anlegen).

Harald
Harald, ich habe bereits Sommerzeitumrechnung mit BT_LT realisiert, Datenbaustein nach Typ WS_RULE angelegt. Kann ich Sommerzeit aus BT_LT Baustein erfassen?
 
Protokollausdruck in pdf am Panel geht. Es muss im Panel eine Funktionalität realisiert werden, ob man Protokolle in pdf oder im Papierform ausdruken kann. Wie kann man das umsetzetzen. Im TP Systemsteuerung-Drucker kann ich als Default Drucker entweder PDF Drucker oder Papierdrucker einstellen und so wird dann gedruckt.
 
Ich habe folgende VB Skript zum Kopieren der Datei vom einem Ordner in anderen. Nach Triggerung in HMI Runtime wird die Test.txt nicht in Folder\ kopiert.
Bis jetzt sind alle VK Skriper in HMI Runtime funktioniert. Was könnte Grund sein?

Code:
Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "c:\Temp\Test.txt", "c:\Temp\Folder\"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Läßt Du das Skript auf einem Comfort Panel laufen? Da gibt es kein "Scripting.FileSystemObject" und auch kein Laufwerk C: . Siehe die TIA Hilfe "VBScript für Windows CE" und hier im Forum die FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script, wie die Anweisungen unter Windows CE heißen müssen. Probiere es mal so:
Code:
Dim FSO

Set FSO = CreateObject("FileCtl.FileSystem")
FSO.FileCopy "\Temp\Test.txt", "\Temp\Folder\Test.txt"

Und der Standard-Tipp: mache Dir in ein Bild eine Meldeanzeige zur Anzeige des Meldepuffers für Meldungen der Meldeklasse "System", damit Du die Runtimefehler-Meldungen sehen kannst. Da steht dann im Klartext drin, was dem VBS nicht gefällt.

PS: Die Methode zum Datei kopieren habe ich bei mir gekapselt, damit sie auf WinCE-Panel und auch auf Windows-PC laufen kann. siehe VBS-FAQ

Harald
 
Zuletzt bearbeitet:
Läßt Du das Skript auf einem Comfort Panel laufen? Da gibt es kein "Scripting.FileSystemObject" und auch kein Laufwerk C: .

Harald

Mein Beispiel oben habe ich in WinCC Runtime ausgeführt und sollte Text datei in neuen Ordner schreiben im PG C Laufwerk schreiben.

Harald, folgenden Kode habe ich jetzt im TP ausgeführt. Ich habe im TP PDF Drucker als Primär eingestellt damit Protokolle in PDF lokal im TP gedruckt und gespeichert werden.

Als Trigger für Skriptausführung [(VBFunction_2() ] dient Protokoll drucken Knop auf dem HMI des Panels. Es soll gleichzetig pdf Protokoll ausgedruckt und Kopie in "Storage Card SD" in SD karte kopiert werden.

Ich habe folgendes als Ergebnis: pdf Druck funktioniert: lokal im TP wird Protokoll abgelegt als pdf. Auf SD Karte wird eine Logs\Druckdaten\Druckdaten0.rdb Datei erstellt. .RDB Datei Erweiterung ist neu für mich.

Protokoll wird in SD nicht kopiert. Skript war fehlerfrei nach Kompilierung. Was funktioniert hier im Skript falsch..?

Code:
Sub VBFunction_2()

Dim FSO

Set FSO = CreateObject("FileCtl.FileSystem")
FSO.FileCopy "flash\*.pdf", "Storage Card SD\*.pdf"

End Sub
 
was sagt denn die systemmeldung?
siehe vorigen post von pn/dp

mach mal ein \ vor deiner quelle/ziel
UND WILDCARDS mag WinCE nicht

FSO.FileCopy "\flash\*.pdf", "\Storage Card SD\*.pdf"

und schau dir das mal an
 
Zuletzt bearbeitet:
Zurück
Oben