Step 7 Lokaler NTP-Zeitserver mit lokaler PC-Zeit für S7-300

sventek

Level-2
Beiträge
98
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ins Forum,

bitte seht es mir nach, dass es sich hier um ein vielleicht nicht mehr ganz aktuelles Thema handelt, trotzdem versuche ich mein Glück hier. Es gibt auch viele Posts zu dem Thema, bin aber nicht fündig geworden.

Folgende Problemstellung: es gibt im lokalen SPS-Netz viele S7-300/S7-400er Steuerungen, welche alle mittels NTP auf Lokalzeit synchronisiert werden sollen. NTP sendet bekanntlich UTC-Zeit und unterstützt keine Sommerzeitumschaltung. Die Idee wäre jetzt einen Windowsrechner im SPS-Netz laufen zu lassen, welcher als NTP-Server arbeitet und die Zeit an die Steuerungen verteilt. Damit würde man sich den Aufwand in der SPS für die Lokalzeitberechnung bzw. Zeitumstellung (Sommer/Winterzeit) sparen. Den Windowsrechner als NTP-Zeitserver einzurichten ist relativ einfach. Das Problem ist aber, dass der Windowsrechner immer nur die UTC sendet und nicht die Lokalzeit vom Rechner. Kennt jemand eine Lösung, wie ich den NTP-Server auf dem Windowsrechner dazu bringe, die "echte" Lokalzeit zu schicken? Oder mache ich einfach nur etwas falsch?

Danke für eure Vorschläge.

Gruß
Wolfgang
 
S7-300/400 kennen keine Lokalzeit, da kann man mit FC BT_LT (FC61, Basetime to Localtime) die Lokalzeit berechnen (oder mit meiner abgespeckten Version BT_LT_3).

Wenn man bei einer S7-300-PN-CPU oder S7-400-PN-CPU oder ET200-PN-CPU die Uhrzeitsynchronisation per NTP aktiviert, dann läuft die CPU-Uhr in UTC - weil man für diese CPU keine Zeitzone einstellen kann und NTP ja UTC liefert.

Wenn man bei einem IE-CP CP343-1 oder CP443-1 die Uhrzeitsynchronisation per NTP aktiviert, dann berücksichtigt der CP eine einstellbare Zeitzonenkorrektur, so daß die CPU-Uhr bei standardmäßig eingestellter Zeitzone "(GMT +01:00)" "trotz" NTP-Synchronisation in UTC+1 läuft. Damit auch bei NTP-Synchronisation via CP die CPU-Uhr in UTC läuft, müßte man die Korrektur abschalten, indem man die Zeitzone auf "(GMT)" einstellt.

Weil nun wegen dieser CP-Geschichte manche meiner SPS-Uhren in UTC und manche in UTC+1 laufen, gibt es meinen Baustein BT_LT_3 in 2 Versionen, einmal für UTC+1 bei CP in GMT+1, und einmal für UTC bei PN-CPU oder CP mit GMT-Einstellung. Mein FC BT_LT_3 benötigt noch den FC AD_DT_TM aus der Bib IEC Function Blocks.


Es gibt von Siemens eine Lib, mit der man eine S7-CPU als SNTP-Server betreiben kann. Möglicherweise kann man die Lib so ändern, daß sie anstatt UTC auf die Lokalzeit synchronisiert? Dann könntest Du im lokalen SPS-Netz eine S7-1200 als SNTP-Server betreiben, der Lokalzeit liefert. Mit einem zusätzlichen CP könnte die S7-1200 ihre Uhr wiederum mit einem NTP-Server außerhalb des SPS-Netz synchronisieren.

Achtung: Bei Synchronisation der SPS-Uhr auf Lokalzeit anstatt auf UTC kommt es bei der Sommerzeit-Umschaltung zu Uhrzeit-Sprüngen! Das kann zum STOP der CPU führen, z.B. wenn dabei Uhrzeit-Alarme übersprungen werden. Allgemein muß man bei der Verarbeitung der Lokalzeit im SPS-Programm vorsichtig sein, daß nicht negative Zeitdifferenzen und Ähnliches entstehen.

Bibliothek SNTP-Server für S7-CPUs
Ich habe keine Erfahrung mit der SNTP-Server-Lib. Ich weiß nicht, wie viele Clients der Server bedienen kann. Siemens schreibt nichts dazu. (Vielleicht ist das nur wieder eine Vorführ-Lösung, die nur mit max 1 Client funktioniert??)

Aber: In den Dokumentations-pdf zu der Lib ist unabhängig von der Lib übersichtlich erklärt, wie man S7-300/400/1200/1500-CPUs allgemein als NTP-Client einrichtet.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,
entschuldige die (viel zu) späte Rückmeldung. Ich danke dir sehr für deine ausführliche Rückmeldung, vor allem aber, dass du dir die Zeit genommen hast (y). Ich habe es nun gänzlich anders gelöst. Über ein kleines selbstgestricktes Windowsprogramm, welches auf einem lokalen Rechner läuft, wird die Uhrzeit direkt in der SPS gesetzt. Dazu wird die lokale Zeit des Rechners verwendet. Das Programm kann eine Liste von IP-Adressen (CPUs) verwalten und diese in einem frei wählbaren Zeitabstand mit der aktuellen PC-Zeit synchronisieren.

Also nochmal Danke.
Gruß
Wolfgang
 
Zurück
Oben