Step 7 Uhrzeit DT - Tag auslesen fehlerhaft

ctrlS_ctrlL

Level-2
Beiträge
29
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag.

HW: CPU 315-2PN/DP, CP 343-Lean

Zustand alt:
Wir haben seit rund 15-20 Jahren diese SPS im Einsatz. Mittels HMI steuert und überwacht die Anlage die Beleuchtung, Feuer-Alarm, Belüftung etc. unserer Firma.
Beleuchtung: Auf dem HMI kann man von jeder Abteilung der Firma von 1-3 Schicht auswählen und ebenso das Schichtmodell (Uhrzeiten) anpassen. Man kann von jeder Beleuchtung also exakt sagen von wann bis wann das Licht eingeschaltet sein soll.

Meine Aufgabe:
Seitdem die Strompreise so hoch nach oben gehen, haben wir beschlossen diese Ein- und Ausschaltzeiten nochmals genauer zu hinterfragen -> Ich habe zwei Zeiten geändert. Alt: Licht leuchtet Das ganze Wochenende, Neu Licht wird jeden Samstag um 14:00 ausgeschalten und am Montag um 05:00 wieder eingeschalten.
Zusätzlich sollte ich noch einen Taster machen, mit welchem man das ganze Lichter dreier Abteilungen ausschalten kann.

Zustand aktuell:
Die Taste funktioniert, alles so wie's sein soll.
Jedoch das Licht schaltet anstelle von Samstag 14:00, am Freitag um 23:20 ab...

Hab folgendes rausgefunden:
Im Programm wird mittels SFC1 die aktuelle Systemzeit ausgelesen und in eine Date_And_Time-Variable geschrieben. Mit FC7 "DT_DAY" wird der Tag aus der Date_And_Time Variable ausgelesen und als Integer zurückgegeben. (So=1...Sa=7)

Gestern Abend um 23:20 hat sich das Licht ausgeschaltet und der ausgelesene Tag war 7 = Samstag anstelle von 6 = Freitag. Logischerweise löscht dann das Licht, weil auf der SPS ist es Samstag 23:20 Uhr und dann sollte das Licht aus sein.

Dieses Sympthom zeigt sich nun seit 2 Wochen. Bin unschlüssig ob die Systemzeit der CPU 315-2PN/DP auch die Zeitumschaltung miteinberechnet. Hab gesehen mit SFC0 könnte ich die Uhrzeit synchronisieren..? Könnte das mein Problem beheben?
 
Zunächst stelle mal die Uhr auf die richtige Uhrzeit. Zielsystem > Uhr stellen

Dann solltest Du drüber nachdenken, ob Du die Uhr der CPU mit einem Uhrzeit-Server synchronisieren kannst, z.B. per NTP, siehe in den Eigenschaften des CP343-1 und/oder der CPU.
Welche Artikelnummern genau haben Deine CPU und der CP?

Die Uhr der CPU 31x unterstützen keine Sommerzeit-Umschaltung, die haben nur eine Systemzeit, die Du noch in Lokalzeit umrechnen müsstest. Dafür gibt es von Siemens den FC BT_LT, oder einfacher: Suche mal hier im Forum nach meinem abgespeckten Baustein BT_LT_3, den gibt es in 2 Versionen, je nachdem ob die CPU-Uhr wegen der Uhrzeitsync in UTP oder CET läuft.
(Ich schreibe grad am Smartphone, da ist mir das suchen und verlinken zu umständlich)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deine SPS hat 2 Ethernet (PN) Schnittstellen. Die an der CPU ist vermutlich für Netzwerk-Teilnehmer der Anlage? Und der CP343-1 ist vermutlich verbunden mit dem Firmennetzwerk? Über den CP könntest Du da vermutlich eine Uhrzeit-Synchronisation mit einem NTP-Server der Firma machen.

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.

Welche SIMATIC S7-300/S7-400 Baugruppen unterstützen das NTP-Uhrzeittelegramm zur Synchronisation der Systemzeit und wie aktiviere ich diese Art der Zeitsynchronisation?

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.

Große Linkliste: Uhrzeitsynchronisation - Zeitsynchronisation im Automatisierungsumfeld

Harald
 
Passiert denn das aktuelle Schalten überhaupt durch Logik in der SPS oder war da etwas im HMI programmiert, was sich jetzt mit Deiner Änderung in der SPS beisst?
Ansonsten poste hier den alten und neuen SPS Code.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank @ducati , @DeltaMikeAir und @PN/DP für eure Inputs.

@PN/DP korrekt, die CP343-1 ist für das Firmennetzwerk. Ich werde mich in naher Zukunft mit dem NTP-Server auseinander setzen... scheint eine gute Sache zu sein.

Die Zeit, welche am HMI angezeigt wird, ist aktuell nicht synchronisiert mit der Systemzeit der CPU. Für das "Arbeiten" mit der Zeit wird eine alternative Zeit als Integer Variable verwendet, welche unter anderem auf dem HMI sichtbar ist. Ich nenne diese mal Arbeitszeit.

Die Systemzeit ist 45 Minuten voraus. Wieso weshalb warum exakt 45 Minuten idk...
Auf jeden Fall ist in meinem Beispiel gemäss Arbeitszeit 23:25 und gemäss Systemzeit 00:00. Ab diesem Zeitpunkt ist in der CPU bereits Samstag und somit löscht das Licht. Bin noch nicht dazu gekommen, aber ich werde die Systemzeit mit der Arbeitszeit synchronisieren und nochmals Bericht erstatten. Ich denke damit wird sich das Problem von Alleine lösen (temporär). Ich denke dieses Problem war schon seit längerer Zeit vorhanden... Mein Pech dass es sich bei meiner Anpassung "gezeigt" hat.

Wenn sich die Systemzeit kontinuierlich über den NTP-Server aktualisieren würde, hätte ich dieses Problem nicht... Somit denke ich es lohnt sich Zeit für den NTP-Server zu investieren.
 
Die Systemzeit ist 45 Minuten voraus. Wieso weshalb warum exakt 45 Minuten idk...
Auf jeden Fall ist in meinem Beispiel gemäss Arbeitszeit 23:25 und gemäss Systemzeit 00:00. Ab diesem Zeitpunkt ist in der CPU bereits Samstag und somit löscht das Licht.
Will nicht pingelig sein, aber das sind 35 Minuten, nicht dass du nach dem Falschen suchst. :)
Wahrscheinlich Zufall???
 
Die Systemzeit ist 45 Minuten voraus. Wieso weshalb warum exakt 45 Minuten idk...
Nach Deinen Aussagen im ersten Beitrag müsste die Uhr noch viel mehr falsch gehen...
Wie bereits geschrieben, ist es zunächst wichtig, daß die Uhr der SPS-CPU überhaupt erstmal wieder auf die richtige Uhrzeit gestellt wird.
Hast Du die Uhr gestellt?

Wenn die Uhr der CPU richtig geht und die Schaltungen immer noch zu falschen Zeiten stattfinden, dann müsstest Du die Fehler im Schaltzeiten-Programm suchen und beseitigen. Ggf. müsstest Du uns den betreffenden Programmcode zeigen, wo die Schaltungen programmiert sind.

Die Zeit, welche am HMI angezeigt wird, ist aktuell nicht synchronisiert mit der Systemzeit der CPU. Für das "Arbeiten" mit der Zeit wird eine alternative Zeit als Integer Variable verwendet, welche unter anderem auf dem HMI sichtbar ist. Ich nenne diese mal Arbeitszeit.
Wo werden denn die Soll-Schaltzeiten mit der aktuellen Uhrzeit verglichen und lösen die Schaltungen aus?
Üblicherweise findet das im SPS-Programm statt. Dann ist es völlig egal, ob die Uhr der HMI richtig geht oder nicht. Wenn im HMI Meldungen mit Zeitstempel angezeigt werden, dann ist aber zu empfehlen, daß die Uhr des HMI mit einer genauen Uhr synchronisiert wird (damit die Zeitstempel korrekt sind). Üblicherweise synchronisiert das HMI mit der SPS-CPU. Es sei denn, das HMI kann selber Uhrzeit-Synchronisation per NTP und kann das auch richtig und ein NTP-Server ist vom Netz des HMI aus erreichbar.
Was für ein HMI/Panel hast Du?

korrekt, die CP343-1 ist für das Firmennetzwerk (...)
Wenn sich die Systemzeit kontinuierlich über den NTP-Server aktualisieren würde, hätte ich dieses Problem nicht... Somit denke ich es lohnt sich Zeit für den NTP-Server zu investieren.
Schlachtplan für Dich:
1. die Uhr der SPS auf korrekte Uhrzeit stellen
2. eventuelle Programm/Programmier-Fehler bei der Verarbeitung der Uhrzeit für die Schaltzeiten beseitigen.
3. Uhrzeitsynchronisation der SPS-Uhr mit einem NTP-Server über den CP343-1 einrichten.
Empfehlung: beim CP343-1 die Zeitzone "(GMT +01:00)" einstellen, dann wird die SPS-Uhr auf "(GMT +01:00)" synchronisiert und im Winter gilt Lokalzeit = Systemzeit
im CP "Uhrzeit an Station weiterleiten" aktivieren
In den Eigenschaften der CPU muß bei Diagnose/Uhr die Uhr-Synchronisation "auf MPI: Als Slave" eingestellt werden.
siehe die Beispiel-Bilder
4. Wenn die SPS-Uhr synchronisiert wird, dann kann sie nicht mehr auf Sommerzeit umgestellt werden. Deshalb muß während der Sommerzeit die Lokalzeit automatisch an die Sommerzeit angepasst werden und das SPS-Progamm muß bei den uhrzeitabhängigen Schaltzeiten nicht mehr mit der Systemzeit sondern mit der Lokalzeit arbeiten. Im SPS-Programm muß eine Umrechnung der Systemzeit zur Lokalzeit eingefügt werden (siehe die Beiträge #2 und #3 die Funktionen BT_LT und BT_LT_3), und die Lokalzeit muß für globale Verfügbarkeit in einem DB abgelegt werden, und alle Uhrzeit-Verwendungsstellen müssen auf die Verwendung der Lokalzeit aus dem globalen DB umgestellt werden.
5. Uhrzeit-Synchronisation des HMI-Panels, z.B. mit der Lokalzeit der SPS-CPU, oder mit einem NTP-Server, falls die HMI das richtig kann.

Harald
 

Anhänge

  • Uhrsync_CP.png
    Uhrsync_CP.png
    16,8 KB · Aufrufe: 12
  • Uhrsync_CPU.png
    Uhrsync_CPU.png
    14,5 KB · Aufrufe: 12
Zuletzt bearbeitet:
Nach Deinen Aussagen im ersten Beitrag müsste die Uhr noch viel mehr falsch gehen...
Wie bereits geschrieben, ist es zunächst wichtig, daß die Uhr der SPS-CPU überhaupt erstmal wieder auf die richtige Uhrzeit gestellt wird.
Hast Du die Uhr gestellt?

Wenn die Uhr der CPU richtig geht und die Schaltungen immer noch zu falschen Zeiten stattfinden, dann müsstest Du die Fehler im Schaltzeiten-Programm suchen und beseitigen. Ggf. müsstest Du uns den betreffenden Programmcode zeigen, wo die Schaltungen programmiert sind.
Ja, hab die Uhrzeit aktualisiert. Ich behaupte nun wird sich das Licht nicht mehr ungewollt ausschalten. Kann ich aber schlecht prüfen, da ich nicht das Licht löschen darf tagsüber :/

Wo werden denn die Soll-Schaltzeiten mit der aktuellen Uhrzeit verglichen und lösen die Schaltungen aus?
Üblicherweise findet das im SPS-Programm statt. Dann ist es völlig egal, ob die Uhr der HMI richtig geht oder nicht. Wenn im HMI Meldungen mit Zeitstempel angezeigt werden, dann ist aber zu empfehlen, daß die Uhr des HMI mit einer genauen Uhr synchronisiert wird (damit die Zeitstempel korrekt sind). Üblicherweise synchronisiert das HMI mit der SPS-CPU. Es sei denn, das HMI kann selber Uhrzeit-Synchronisation per NTP und kann das auch richtig und ein NTP-Server ist vom Netz des HMI aus erreichbar.
Was für ein HMI/Panel hast Du?
Die Schaltzeiten werden in der CPU ausgewertet und von der CPU aus geschalten.
Wir haben ein Eaton Touchpanel MS2-430-10-MPI.
 
Ja, hab die Uhrzeit aktualisiert. Ich behaupte nun wird sich das Licht nicht mehr ungewollt ausschalten. Kann ich aber schlecht prüfen, da ich nicht das Licht löschen darf tagsüber :/
- Du könntest das SPS-Programm mit PLCSIM simulieren und testen. Da kannst Du auch sehr gut die Uhrzeit der CPU-Uhr manipulieren/verstellen.
- Du könntest den oder die Digitalausgänge der Lichtschaltung der realen SPS auf 1 forcen und das Programm beobachten, wenn das Programm so geschrieben ist daß das forcen nicht stört (z.B. wenn die Ausgänge im Programm verknüpft sind). (Dabei darfst Du natürlich keine Fehler machen, die zum STOP der CPU führen.)
- Du könntest den Schütz oder das Relais der Lichtschaltung mechanisch oder elektrisch auf dauerhaft Ein festsetzen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
- Du könntest das SPS-Programm mit PLCSIM simulieren und testen. Da kannst Du auch sehr gut die Uhrzeit der CPU-Uhr manipulieren/verstellen.
- Du könntest den oder die Digitalausgänge der Lichtschaltung der realen SPS auf 1 forcen und das Programm beobachten, wenn das Programm so geschrieben ist daß das forcen nicht stört (z.B. wenn die Ausgänge im Programm verknüpft sind). (Dabei darfst Du natürlich keine Fehler machen, die zum STOP der CPU führen.)
- Du könntest den Schütz oder das Relais der Lichtschaltung mechanisch oder elektrisch auf dauerhaft Ein festsetzen.
Das forcen scheint mir sympathisch, besten Dank.
 
Update:
Das Problem ist vorübergehend gelöst. Das Licht hat sich zum richtigen Zeitpunkt aus- und wieder eingeschalten.

Besten Dank für eure Inputs, cheers
 
Zurück
Oben