Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: Aktuelle Zeit und Datum auslesen ?

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    kann mir jemand sagen wo und wie ich das aktuelle Datum und die aktuelle Zeit aus dieser CPU auslesen kann ?

    Wird eigentlich auch irgendwo eine Zeit mitgeführt die mir anzeigt wie lange die SPS z.B. nach einem Stromausfall oder nach dem Einschalten läuft ?

    Besten Dank
    Uwe
    Zitieren Zitieren Gelöst: Aktuelle Zeit und Datum auslesen ?  

  2. "Das ist klar, aber ich möchte die Zeit und den Tag im Programm auslesen und z.b. in 4 Merker Bytes abspeichern.

    Trotzdem Danke."


  3. #2
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Wenn Du das meinst, kannst Du das in Simatic Manager:

    Zielsystem -> Diagnose/Einstellung -> Uhrzeit stellen

    Zur zweiten Frage, mir ist nichts bekannt - aber ich bin auch kein Guru!

  4. #3
    Anonymous Gast

    Standard

    Das ist klar, aber ich möchte die Zeit und den Tag im Programm auslesen und z.b. in 4 Merker Bytes abspeichern.

    Trotzdem Danke.

  5. #4
    Registriert seit
    27.04.2005
    Beiträge
    200
    Danke
    22
    Erhielt 13 Danke für 10 Beiträge

    Standard

    Hallo,

    als erstes brauchst Du aus der Bibliothek des Simatikmanagers folgendende Bausteine:
    SFC20 BLKMOV
    SFC1 Read_clk clk_func
    (Beschreibung des Bausteins in der Hilfe beachten)


    Diese Bausteine kopierst Du in dein Projekt.
    Um die Daten zu speichern benötigst Du einen DB.
    Hier erstellst Du einen Datenbereich mit dem Format DAT oder auch DT (beides ist gleuch)
    Dieser Bereich wird 8 Bytes belegen.

    Format DT:
    JJ-MM-TT-STDSTD:MINMIN:SECSEC:MSMSMS

    Am CDT Ausgang des SFC1 kanst Du nur lokal in dem Baustein ablegen,
    in dem Du den SFC1 aufrufst.
    Diesen Lokalbereich must du als Date_AND_TIME Format im TEMP Register kennzeichnen.
    Jetzt muß dieses TEMP Register global nutzbar gemacht werden.
    Dazu wird das Register in den DB übertragen.
    Hierzu braucht man den SFC20.
    An den Parametereingang SRCBLK trägst Du nun dein TEMP Register an.
    Für den Parameterausgang musst Du einen Zeiger in AWL schreiben.
    Dieser Zeiger zeigt dann auf den Datenbereich im DB.(z.B. DB1 ab DBX0.0)
    Der Zeiger wird auch lokal im TEMP Register abgelegt.
    z.B. Name:"Zeiger", Datentyp:Any, Adresse:0

    AWL Anweisung für den Zeiger auf DB1 mit Anfang DBX0.0

    L B#16#10-- Codierung für Any Zeiger
    T LB 0 -- Transferiert Code in Lokalbyte 0 (Adresse 0)
    L B#16#E-- Code für Datentyp DT
    T LB 1 -- Transferiert Code in Lokalbyte 1
    L 8 -- Anzahl der zu übertragenden Bytes
    T LW 2 -- Transferiert 8 in Lokalwort 2
    L 1 -- Nummer des DB (hier DB1) auf dem gezeigt wird
    T LW 4 -- Transferiert 1 in Lokalwort 4
    L P#DBX0.0 -- Pointer des Anfangsbit des DT Formats im DB1
    T LD 6 -- Transferiert Pointer in Lokaldoppelwort 6

    Dieser Zeiger heißt "Zeiger" und wird an DSTBLK vom SFC20 angetragen.
    Das aktuelle Datum mit Uhrzeit wird nin zyklisch in den DB geschrieben.
    Kann für S7 300 und 400 angewendet werden.

    Es gibt auch die Möglichkeit das Datum und die Uhrzeit vom SPS Programm zu ändern.
    Schau mal in die Bibliothek rein.

    MFG
    Zitieren Zitieren SPS Uhrzeit  

  6. #5
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Es geht auch einfacher. In den Lokaldaten für OB1 findest Du die Zeit (und Datum, glaube ich) wann OB1 gestartet wurde, ich bin zu Hause im Moment, also kann ich die genaue Variablennamen nicht nennen, aber sie müssen leicht zu erkennen sein.

    Gegenüber eine weit verbreitete Meinung, diese Zeit ist nicht die Zeit wann OB1 zum 1. mal nach Power-Up gestartet wurde, sondern wird jeden Zyklus aktualisiert. Dann kannst Du SFC1 getrost vergessen!

    Ansonsten weiter wie von cmm1808 geschildert.

  7. #6
    Registriert seit
    06.10.2003
    Beiträge
    3.410
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Hallo,

    Zitat Zitat von RMA
    ...Gegenüber eine weit verbreitete Meinung, diese Zeit ist nicht die Zeit wann OB1 zum 1. mal nach Power-Up gestartet wurde, sondern wird jeden Zyklus aktualisiert....
    Stimmt, diesen Irrtum unterlag ich auch einmal . Ich war fälschlicherweise der Ansicht, dass der OB1 nicht jeden Zyklus neu gestartet wird.


    Zitat Zitat von s7-312C user
    ...Wird eigentlich auch irgendwo eine Zeit mitgeführt die mir anzeigt wie lange die SPS z.B. nach einem Stromausfall oder nach dem Einschalten läuft ?...
    Der Zeitstempel des letzten Neustarts müsste in den Lokaldaten des OB100 abgelegt sein. Man kann diese Daten im OB100 z.Bsp. in einen DB übertragen.

    Gruss, Onkel

  8. #7
    Anonymous Gast

    Standard

    Hallo zusammen,

    danke schon mal für Eure Antworten.
    Ich habe mal folgendes daraus gemacht:

    Und zwar habe ich ganz dreist in der Funktion eine temp var vom Typ DATE_AND_TIME angelegt und an die Funktion SFC 1 übergeben.
    Die dort enthaltenen Zeiten von BCD nach int konvertiert und in globale Merker transferiert. (siehe Source) Und ich kann die Zeit und das Datum sehen. Ist das mit den Pointern was cmm1808 geschrieben hat den zwingend ? Sprich stürtzt mir das Programm irgendwann ab wenn ich das so wie unten geschrieben mache ?

    FUNCTION "ZeitUndDatum" : VOID
    TITLE =
    VERSION : 0.1


    VAR_TEMP
    reti : INT ;
    zeit : DATE_AND_TIME ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =


    CALL "READ_CLK" (
    RET_VAL := #reti,
    CDT := #zeit);


    NETWORK
    TITLE =
    L LB 4;
    BTI ;
    T "Tag";

    L LB 5; // Stunde
    BTI ;
    T "Stunde";

    L LB 6; // Minute
    BTI ;
    T "Minute";

    L LB 7; // Sekunde
    BTI ;
    T "Sekunde";

    END_FUNCTION


    Genaueres sehe ich erst morgen in der Früh wenn die "Kiste" noch läuft. (Hoffnung)

    @Onkel Dagobert

    Das mit dem OB100 habe ich so ähnlich heute auch noch gehört. Der OB100 wird doch nur einmal am Start durchlaufen und dann könnte ich da ja auch einmal die Zeit auslesen und abspeichern falls es nicht schon in den lokalen Daten steht.
    Wo finde ich den solche Informationen was wo wie steht ?

    Beste Grüße
    Uwe

  9. #8
    Registriert seit
    06.10.2003
    Beiträge
    3.410
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Uwe,

    dein code müsste so funktionieren. Den Pointer (cmm180 brauchst du nicht, wenn du die Daten direkt adressierst, so wie du es getan hast. Sinnvoll wäre ein Pointer z.Bsp. dann, wenn du die Daten über einen Bausteinparameter in einen globalen Datenbereich (z.Bsp. DB) schreiben würdest.

    Informationen über die Lokaldaten eines OB findest du, wenn du die Onlinehilfe in Step7 verwendest (OB100 selektieren und Taste F1).


    Gruss, Onkel

Ähnliche Themen

  1. aktuelle Zeit bzw. Minuten vergleich
    Von Fragwürdig im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 28.09.2011, 14:47
  2. Aktuelle Systemzeit aus der WAGO auslesen
    Von LL0rd im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 09.07.2011, 10:22
  3. Aktuelle Zeit und Datum in Array schreiben
    Von JanMichael im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 25.02.2011, 13:04
  4. Zeit/Datum auslesen und weiterverarbeiten
    Von amateur im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 25.01.2008, 15:18
  5. Antworten: 9
    Letzter Beitrag: 27.09.2004, 14:24

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •