Uhrzeit einer Variablen zuweisen

maddi67
2006-11-12
2006-11-13
  • maddi67 - 2006-11-12

    Hallo,

    bitte nicht lachen, bin noch Anfänger in Codesys.

    Ich möchte einer Variablen die Systemzeit zuweisen.

    Wenn dann die Variable einer vogegebenen Zeit (hh.mm.ss) entspricht,

    soll eine weitere Variable auf TRUE bzw. False gesetzt werden.

    Kann mir jemand sagen wie´s geht ?

    Danke

    Martin

     
  • Denkes - 2006-11-12

    Hallo maddi67,

    ich gehe mal davon aus, dass in diesem Forum niemand über eine Frage (oder den Fragenden) lacht

    Nun zu deinem Anliegen:

    1. Um die Systemzeit zu lesen, benötigst du die Bibliothek SysLibRtc.lib. Diese musst du in dein Projekt einbinden.

    2. Mit dem Befehl

        Echtzeit := SysRtcGetTime(dummy);     (* Echtzeit lesen *)
      

      wird die komplette Datum/Zeit-Information der CPU übernommen. Das bedeutet, die Variable "Echtzeit" muss vom Typ DT sein, also:

        VAR
      
        Echtzeit: DT;     (* Systemzeit komplett (z.B. DT#2006-11-21-18:42:31) im Format DT *)
      
    3. Diese DT-Info muss gewandelt werden in einen String

        Echtzeit_String:=DT_TO_STRING(Echtzeit);  (* Echtzeit umwandeln in String *)
      
    4. Je nach Bedarf werden die einzelnen Informationen vereinzelt und nach Int gewandelt.

        Jahr:=STRING_TO_INT(MID(Echtzeit_String, 4, 4));
      
        Monat:=STRING_TO_INT(MID(Echtzeit_String, 2, 9));
      
        Tag:=STRING_TO_INT(MID(Echtzeit_String, 2, 12));
      
        Stunde:=STRING_TO_INT(MID(Echtzeit_String, 2, 15));
      
        Minute:=STRING_TO_INT(MID(Echtzeit_String, 2, 18 ));
      
        Sekunde:=STRING_TO_INT(MID(Echtzeit_String, 2, 21));
      

    Alle Variablen müssen natürlich vereinbart werden. Am Besten global, dann stehen die Informationen projektweit zur Verfügung.

    1. Anwendungsbeispiel:
        Eine Schaltuhr soll täglich um 18.34 Uhr einen 1s langen Impuls liefern:
      
        IF Stunde = 18 AND Minute = 34 AND Sekunde = 0 THEN Schaltuhr := TRUE; ELSE Schaltuhr := FALSE; END_IF;
      

    Teste mal und viel Erfolg

    Norbert

     
  • maddi67 - 2006-11-12

    Hallo Norbert !

    Es funktioniert !

    Vielen Dank !!!

    Martin

     
  • mwatermann - 2006-11-13

    das war wirklich ausführlich und hat mich auch wieder auf einige ideen gebracht...

    danke!

    PS: ich hätte hier erst einmal mit TIME(TIME_TO_DWORD()) angefangen...

     

Log in to post a comment.