Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

TOD in Visu verändern / Wecker

2009-05-11
2009-05-14
  • firsteleven - 2009-05-11

    Hallo zusammen ich bin neu hier und habe ein Problem:

    Ich möcht einen Wecker programmieren.

    Dazu möchte ich eine Variable TOD aus der Visu heraus ändern können.

    Ich weis nicht wie ich eine TOD Variable ausgebe, welchen Platzhalter muss ich benutzen?

    Habe die Variable so deklariert, und bin mir auch da nicht sicher:

    Wecken:TOD :=TOD#6:30;

    Es soll in der Visu eine Zeit im Format h:m (z.B.6:30) entweder über eine Tastatur oder das Keypad eingegeben werden.

     
  • firsteleven - 2009-05-12

    Ich denke die Frage ist nicht präzise genug, aber viel anders kann ich es auch nicht formulieren:

    Es soll eine Zeit in der Visu veränderbar sein, diese ist vom Typ TOD.

    Die Weiterverarbeitung der Variablen dürfte dann kein Problem mehr sein.

    Kann mir hier keiner weiter helfen?

     
  • Anonymous - 2009-05-13

    Originally created by: Stephanie Kreutz

    Hallo,

    also zunächst mal zur Ausgabe:

    du kannst die TOD variable einfach mit dem Platzhalter %s ausgegeben

    werden. Damit die Zeit dann aber korrekt aussieht, muss man bei

    "Einstellungen Visualisierung" bei Datum/Zeit die formatierte Zeitausgabe

    einschalten.

    Dann sieht es zumindest bei mir ganz ordentlich aus.

    Bei der Eingabe einer neuen Zeit habe ich aber auch keine so richtig gute

    Lösung. Es geht, wenn du die Eingabe als normale Text-eingabe aktivierst..

    wenn man dann auch noch ein korrekte Format eingibt, dann wird die neue

    Zeit auch übernommen.

    Wenn hier aber jemand eine bessere Idee hat, dann gerne..

    Gruß Steffi

     
  • Benni85 - 2009-05-13

    Umwandeln in einen String und dann bearbeiten und wieder zurück wandeln

    VarString := TOD_TO_STRING(VarTOD);

    VarTOD := STRING_TO_TOD(VarString);

     
  • Matze001 - 2009-05-13

    Ich habe mir mehrere Eingabefelder gebastelt:

    Tag, Stunde, Minute und Sekunde... diese dann optisch passend angeordnet.

    Das lässt sich sogar an nem Touchpanel gescheit verändern, für nen String braucht man wieder die Tastatur und muss mit den Pfeiltasten durchtippen.

    MfG

    Marcel

     
  • firsteleven - 2009-05-13

    Danke für Eure Antworten!

    Diese Lösung hat mir wegen der Tastaturlosen Eingabe am besten gefallen:

    Matze001 hat geschrieben:
    Ich habe mir mehrere Eingabefelder gebastelt:
    Tag, Stunde, Minute und Sekunde... diese dann optisch passend angeordnet.

    Wie lautet dann der Syntax beim Eingabefeld damit ich auf die Std. und min einzeln zugreifen kann?
    Etwa so: Wecken#h und Wecken#m?

    Die Variable kann ich doch so deklarieren: Wecken:TOD :=TOD#6:30; ??

    Bei der Ausgabe werde Ich das mal probieren:

    Stephanie Kreutz hat geschrieben:
    du kannst die TOD variable einfach mit dem Platzhalter %s ausgegeben
    werden. Damit die Zeit dann aber korrekt aussieht, muss man bei
    "Einstellungen Visualisierung" bei Datum/Zeit die formatierte Zeitausgabe
    einschalten.
    Dann sieht es zumindest bei mir ganz ordentlich aus.

     
  • Matze001 - 2009-05-13

    Hallo,

    ich habe einfach einige Rechtecke nebeneinander gemacht...

    in einem verändere ich die variable stunde, in dem anderen die variable minute, ...

    ich benutze nur TOD nicht, ich habe mir die Systemzeit angezapft und als string "zusammengebastelt".... sieht dann etwa so aus:

    20090513131631

    und den vergleiche ich einfach mit einem string den ich mir aus den eingabefeldern zusammenstricke... nicht die schönste version, aber sie hat bisher immer funktioniert. Ich denke im Milisekundenbereich wirds dann eng, aber wer muss schon auf die milisekunde genau aufstehen?

    MfG

    Marcel

     
  • firsteleven - 2009-05-13

    Matze001 hat geschrieben:
    Hallo,
    ich habe einfach einige Rechtecke nebeneinander gemacht...
    in einem verändere ich die variable stunde, in dem anderen die variable minute, ...

    ok, soweit habe ich das auch verstanden.

    Matze001 hat geschrieben:
    .. string "zusammengebastelt".... sieht dann etwa so aus:
    20090513131631

    wär es möglich, den syntax des zusammen gebastelten strings hier einzustellen?

    Wecker:STRING(4):='wie schreibe ich die h und min variablen hier rein?';

     
  • firsteleven - 2009-05-14

    Matze001 hat geschrieben:
    aber wer muss schon auf die milisekunde genau aufstehen?

    Kannst Du mal den Syntax des zusammengebastelten Strings einstellen, das ich in Zukunft minutengenau aufstehen kann

    Danke

     
  • Matze001 - 2009-05-14
    (* Systemzeit lesen und Werte vereinzeln *)
    Echtzeit:=SysRtcGetTime(dummy);               (* Echtzeit lesen *)
    Echtzeit_String:=DT_TO_STRING(Echtzeit);         (* Echtzeit umwandeln in String *)
    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));
    

    Ist hier aus dem Forum, stammt also nicht von mir...

    ich habs etwas umständlich gemacht und die int wieder zu strings gemacht und mit concat zusammengebastelt... da war mein wissen um formate noch nicht so weit Funktionieren tut es bis heute, muss mich aber mal wieder dransetzen... gibt viel zu verbessern... nicht nur auf den Wecker bezogen.

    MfG

    Marcel

     
  • firsteleven - 2009-05-14

    Hab die Zeilen mit der Hilfe von der Programierumgebung "verdaut".

    Dankeschön.

     

Log in to post a comment.