Step 7 CPU315-2 PN/DP NTP Server Lokalzeit Umstellung

kruz_07

Level-2
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle,
Ich habe eine CPU 315-2 PN/DP, die mit einem NTP-Server synchronisiert werden soll. Der NTP-Server liefert jedoch nur UTC-Zeit. Da die Anlage in Asien ist, benötige ich die UTC +05:30.
Da meine CPU die Zeitzone nicht unterstützt, muss dies über das Programm erfolgen.

Frage: kann ich auch die Zeit Zone mit FC61 BT_LT umstellen oder gibt s andere Funktionen ?
 
FC61 (BT_LT) hilft dir hier nicht, der konvertiert nur Zeitformate.

Bei der 315 musst du das Offset selbst im Programm draufrechnen. Also UTC lesen und dann +5:30h addieren, z. B. über DATE_AND_TIME bzw. entsprechende Bausteine. Sommerzeit etc. musst du dann auch selbst berücksichtigen, falls relevant.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
S7-300 unterstützen eigentlich Zeitzonen nicht wirklich. Dafür gibt es aber den FC61 BT_LT. Der FC61 ist dazu da, die Zeit der CPU-Uhr in eine Lokalzeit umrechnen, z.B. von UTC in die Lokalzeit der gewünschten Zeitzone. Also den Regel-DB entsprechend ausfüllen und FC61 spuckt die zugehörige Lokalzeit aus.

Sowas wie den FC61 BT_LT kann man auch selbst programmieren. An verschiedenen Stellen hier im Forum kann man meinen BT_LT_3 finden, wo ich die Umrechnung fest in AWL programmiert habe.
 
Zuletzt bearbeitet:
Wir nutzen den FC61 ebenfalls, seitdem wir UTC über MPI einspeisen (z.B. mit IBH oder Process-Informatik). Eine Schwachstelle: Für bestimmte Exoten, die eine Viertelstunde Versatz haben (Nepal), ist das keine fertige Lösung, da nur 30 Minuten-Sprünge möglich sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Harald,
ich verstehe die FC61 so dass man in der DB zwei Zeiten, wann die Zeit umgestellt werden soll, eintragen. In meinem Fall es soll immer die UTC +5:30 sein. Die DB nach Struktur UDT60 lässt sich nicht ändern bzw. keine Zeile entfernen, so dass ich nur eine Zeit habe.
 
Wenn deine Zeitzone keine Sommerzeit hat, dann ist es ganz einfach. Dann brauchst du einfach nur mit (FC1) AD_DT_TM 5:30 auf die Uhrzeit der CPU addieren. Wegen der NTP-Sync läuft die Uhr der CPU ja in UTC.

Ansonsten schau mal hier:
 
Falls andere Systeme über die SPS synchronisiert werden sollen (z.B. CP oder HMI) hatte ich mal ein ähnliches Problem. Ich hab mir dann letzlich eine kleine 1512 die noch rumlag genommen, diese als NTP-Server für die Ziel-SPS konfiguriert und dann im NTP Baustein von Siemens ein händisch das Antwort Telegramm an die gewünschte Zeitzone angepasst. Ging um ein System mit mehreren 300er und 1500ern und die IH hatte sich (zurecht) immer über Fehlerhafte Zeitstempel bei Störauswertungen beschwert. Dadurch waren alle System auf dem gleichen Stand und auf Lokalzeit.

Der zusätzliche HW Aufwand muss sich aber natürlich lohnen.
 
Danke Harald,

Meine OB1 sieht so aus :

CALL FC 50
BT:=#OB1_DATE_TIME
LT:=DB6.Var1 //P#DB6.DBX0.0
NOP 0

ich sehe auch, dass die zeit in mein "DB6.Var1" DATE AND TIME +5:30 H ist.
Wie kann ich jetzt die zusammen addierte Zeit "DB6.Var1" auf mein CPU bzw. System Zeit übertragen ? Habe versucht mit SFC0 , habe leider kommische Ergebnisse.
Danke im Voraus
 
@ kruz_07

Es gibt grundsätzlich 2 Strategien:

"Alt": Ich versuche meine Systemzeit immer auf Lokalzeit zu aktualsieren. Bekomme ich von außen ein Zeitsignal, so muss ich es in Lokalzeit umrechenn, und dann in der CPU-Uhr speichern.

"Neu": Deine CPU-Uhr (Systemzeit) läuft immer auf UTC. Deine Lokalzeit errechnest Du kontinuierlich aus der CPU-Zeit gemäß Deinen Regeln und verwendest sie in Deinem Programm oder per Bereichszeiger im HMI.

Das neuere Verfahren passt besser zu einem NTP-Server. Der Step7-Manager bietet schon länger auch die UTC-Version bei der Uhrzeitaktualisierung an. Mir scheint, Du versuchst aber, das alte Verfahren beizubehalten??
 
Zurück
Oben