CPU - Uhrzeit stellen klappt nicht

elektro_mensch

Level-1
Beiträge
90
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo – ich bräuchte mal wieder Rat und würde mich über eure Hilfe freuen.

Ich würde gern im Panel auf der Runtimeebene Datum und Uhrzeit eingeben und per Tastendruck in die CPU schreiben.
Eigentlich kein Problem – hab ich auch schon mal gemacht und hat einwandfrei funktioniert.

Die CPU mit der das funktioniert hat war eine 6ES7 317-2AJ10-0BA0 / V2.6.
Die CPU wo jetzt das Problem auftritt ist genau so eine, inklusive Versionsstand.

Gemacht hab ich das so – ich gebe die Uhrzeit in ein TOD-Feld und das
Datum in ein DATE-Feld ein. Die Daten stehen dann im Datenbaustein und dort sind die auch als TOD und DATE charakterisiert. Wenn ich reingucke stehen da auch die richtigen Werte vom Panel drin.

Im Programm füge ich die Werte dann mit dem FC3 „D_TOD_DT“ zusammen und schreibe das Ergebnis in eine Tempvariable (Date_and_Time). Per Tastendruck schreibe ich die Variable dann mit den SFC 0 "SET_CLK" in die CPU.

Wenigstens theoretisch – denn es funktioniert nicht.
Um irgendwelche Fehlerquellen auszuschliessen, hab ich die Panelgeschichte und den DB dann weggelassen und FC 3 direkt Werte für das Datum und Uhrzeit übergeben (Syntax ist in Ordnung) und schreibe dauernd mit den SFC0 in die CPU.
Geht auch nicht. Im RET-Val Ausgang des SFC0 steht 8080. Bedeutet laut Hilfe „Datumsfehler“ - Verstehe ich nicht wo da der Fehler sein soll ???

Der FC3 und der SFC0 wird nirgendswo anders im Programm benutzt.
In der CPU ist unter Synchronisation nichts eingetragen (Bild 1)

Wenn ich das Datum und die Uhrzeit über den Simaticmanger ändere (Zielsystem/Uhrzeit stellen) übernihmt die CPU die Änderung. Und zwar dauerhaft. Die Änderung bleibt wochenlang bestehen – also immer. Deshalb schliesse ich aus, dass da irgendeine andere Baugruppe oder Panel da was reinschreibt.

Weil ich nicht weiter weiss – hab ich meinen Baustein in eine „Versuchssteuerung“ in der Werkstatt eingespielt – es ist genau der gleiche Baustein mit genau den gleichen Werten.

Und siehe da – in der Versuchssteuerung funktioniert es (siehe Bild 2)
Das ist eine 6ES7 31-2AJ10-0BA0 / V2.6 aber daran kann es nicht liegen.

Anm.: Der FC 3 wurde in FC 163 umbenannt weil der „Name FC3“ durch einen bereits erstellten Baustein belegt war – aber das ist auch egal.

Das Ganze ist nicht eilig – es ist eher so „nice to have“ – aber irgendwie will ich es auch hinkriegen.

Ich weiss aber im Augenblick echt nicht weiter – wenn jemand einen Tip hat würde ich mich freuen….

Vielen Dank schon mal
elektromensch
 

Anhänge

  • CPUuhrzeit2.pdf
    31,1 KB · Aufrufe: 104
Hallo elektromensch,

poste doch am besten noch einen Screenshot von dem Zustand, wo es gerade nicht funktioniert.
"Fehler im Datum" erscheint eigentlich nur, wenn man versucht, sowas wie 31.6. einzustellen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Leg die Variable als Date_and_Time an.
Im Display kann man dann getrennt die Uhrzeit und das Datum auswählen ( aus dieser Variable )

Mach dir Gedanken, ob die Kommunikation SPS-HMI über Bereichszeiger sinnvoller ist.
Eigentlich brauchst du nur SFC0 und SFC1 ( Siemens S7-V5.5)

In deinem Bildchen schreibst du jeden Zyklus das DT in die CPU. Wieso?
Bei einer Änderung der Variable ( Uhrzeit stellen) z.B. über eine Taste "Uhrzeit speichern" den Auftrag anstossen oder
mit irgendeinem Trigger den Baustein "enablen".



Hier im Forum gibts schon etliche Beiträge zum Thema
Einfach mal nach Date_Time, Bereichszeiger Uhrzeit, Set Clock usw... suchen
 
Fehlerbaustein...

So hier der Baustein aus der CPU mit der es nicht klappt ....

Das erste NW hab ich eingefügt um sicher zu stellen das die Fehlermeldung vom SFC0 kommt (Anzeige in Hex)
 

Anhänge

  • dateundtime.jpg
    dateundtime.jpg
    108 KB · Aufrufe: 138
Leg die Variable als Date_and_Time an.
Im Display kann man dann getrennt die Uhrzeit und das Datum auswählen ( aus dieser Variable )

Okay darüber hab ich noch nicht nachgedacht. Allerdings wie ich bereits schrieb bei der anderen CPU geht es ja...


Mach dir Gedanken, ob die Kommunikation SPS-HMI über Bereichszeiger sinnvoller ist.
Eigentlich brauchst du nur SFC0 und SFC1 ( Siemens S7-V5.5)

Im Grunde soll es so werden, dass das Datum und Zeit der CPU massgeblich ist und die angeschlossenen Panels sich über den Bereichzeiger synchronisieren...
Datum und Zeit soll aber in dem Panel eingegeben werden und dann mit einen Butten "Eingabe übernehmen" in die CPU geschrieben werden.


In deinem Bildchen schreibst du jeden Zyklus das DT in die CPU. Wieso?

Das ist nur zum testen - um die Fehlerquellen zu mininieren - später kommt das Triggersignal per Buttendruck vom Panel

Hier im Forum gibts schon etliche Beiträge zum Thema
Einfach mal nach Date_Time, Bereichszeiger Uhrzeit, Set Clock usw... suchen

Das stimmt hab ich auch gemacht - aber es ist nicht wirklich was dabei was hilft..

mfg
elektromensch
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Grunde soll es so werden, dass das Datum und Zeit der CPU massgeblich ist und die angeschlossenen Panels sich über den Bereichzeiger synchronisieren...
Datum und Zeit soll aber in dem Panel eingegeben werden und dann mit einen Butten "Eingabe übernehmen" in die CPU geschrieben werden.

Und genau das kannst Du wunderbar per Bereichszeiger machen.

Ist hier erschöpfend erklärt: http://support.automation.siemens.c...objaction=csview&extranet=standard&viewreg=WW
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo - danke für euere Mühe...
aber irgendwie geht das alles an meiner Frage vorbei...

Ich hab KEIN Problem mit der Uhrzeitsynchronisation !
Vergeßt das alles !

Mein Problem ist das ich die Uhrzeit und das Datum in der CPU nicht stellen kann.
Siehe Beitrag Nummer 4 die angehängte Grafik...

Meine Frage ist - warum funktioniert das nicht so wie es da programmiert ist ?
Oder besser warum funktioniert es mit dieser CPU nicht und mit einer anderen schon ?

Mfg
elektromensch
 
So wie der Elektro_Mensch es gemacht hat, findet man es aber auch in der Hilfe von SET_CLK. Dort gibt es ein AWL-Beispiel.

Auszug:

Code:
// Ausgangsvariable (Format DATE_AND_TIME)
    CALL    FC 3        //Standard-FC 3 "D_TOD_DT" (Wandlung D und TOD nach DT) 
      (IN1        := #IN_DATUM,    //Fügt Datum der Eingangsvariable (Format DATE)
       IN2    :    = #IN_UHRZEIT,    //und Uhrzeit der Eingangsvariable

   RET_VAL    := #IN_UHRZEIT_DATUM);    //(Format TIME_OF_DAY)
                //zur Ausgangsvariable
                //(Format DATE_AND_TIME) zusammen

NETWORK
TITLE = Uhrzeit stellen bei positiver Flanke
    U    E 0.1 ;        //Uhrzeit stellen bei positiver Flanke an E 0.1
    FP    M 255.1 ; 
    =    M 255.0 ;        //Flankenmerker

NETWORK
TITLE = Stellen der Uhrzeit 
    U    M 255.0 ;        //Uhrzeit stellen, wenn M 255.0=1 (positive Flanke)
    SPBNB    _005 ;
    CALL    SFC 0        //SFC 0 "SET_CLK" (Uhrzeitalarm stellen)

  (PDT        := #IN_UHRZEIT_DATUM,    //Aktuelles Datum und Uhrzeit 
       RET_VAL    := MW 200);    //Fehlercode (falls SFC fehlerhaft bearbeitet)

Vielleicht mal das Zwischenergebnis aus dem D_TOD_DT in einen Dummy-DB ablegen um zu sehen, was der Baustein rausbringt.
 
Ich glaube die FC3 "D_TOD_DT" aus der IEC-Funktion Block darf nicht umbenannt werden (FC163). Ich hatte das Problem mal bei der Sommer/Winterzeit Funktion mit der FC8 "LOC_TIME".
 
Ich glaube die FC3 "D_TOD_DT" aus der IEC-Funktion Block darf nicht umbenannt werden (FC163). Ich hatte das Problem mal bei der Sommer/Winterzeit Funktion mit der FC8 "LOC_TIME".

Hm - wenn dem so wäre müsste ich den schon vorhanden FC3 um benennen und das Progie extra umschreiben...
Ganz schön heftig...

In der Probesteuerung hab ich den FC3 auch in FC163 umbenannt - da funktioniert es...
 
So wie der Elektro_Mensch es gemacht hat, findet man es aber auch in der Hilfe von SET_CLK. Dort gibt es ein AWL-Beispiel..

Ah danke - ich werde verstanden :) das tut gut !

Vielleicht mal das Zwischenergebnis aus dem D_TOD_DT in einen Dummy-DB ablegen um zu sehen, was der Baustein rausbringt.

DateandTime-Format wird einen im DB nicht angezeigt oder ?
Ich kann es gerade nicht ausprobieren - ich hab ne Woche frei - Juhu...

mfg
elektromensch
 
Ich denke Du musst den DB in der Online-Ansicht betrachten.
Dabei beachten, dass der Wert nur beim Aufruf der Ansicht 1x aktualisiert wird.
 

Anhänge

  • db.jpg
    db.jpg
    38,1 KB · Aufrufe: 32
CPU geht in Stop

Hallo,

wollte jetzt nicht extra ein neues Thema auf machen.

Mein Problem ist, dass meine CPU in Stop geht, sobald ich den OB1 reinlade mit Netzwerk 2+3.
Wenn ich die weglasse, passiert das nicht.
Weiß jemand woran das liegen könnte?

Dann hätte ich gerne noch gewusst, wie ich die Werte für die beiden INT- Eingänge des FC30 (NT2) direkt aus dem DB11 reinladen kann. Habe sie jetzt erstmal von Hand eingegeben.


Danke :)
 
Zuletzt bearbeitet:
Zurück
Oben