Probleme mit Uhrzeit stellen

Dennish23
2008-10-18
2008-10-24
  • Dennish23 - 2008-10-18

    Hallo liebe Forumgemeinde

    Ich habe ein Problem mit der Uhrzeit. Ich möchte gern aus meiner Visu heraus die Uhrzeit des MFD4 Panels ändern. Dazu schreibe ich als Programm folgendes:

    If Eingabezeit<>Eingabezeit_old THEN

    SysRtcSetTime(Eingabezeit);

    Eingabezeit_old:=Eingabezeit;

    END_IF

    Gebe auch in der Taskkonfig ne Task vor für 200ms. Aber wenn er darauf zugreift schmeißt mich das Panel aus dem Onlinemodus raus und das Panel hängt sich zudem noch weg.

    Hat jemand einen Lösungsvorschlag für mich.

    Danke im vorraus.

    MFG Dennis[/code]

     
  • Softwerker59 - 2008-10-20

    Hallo Dennis,

    SysRtcSetTime() funktioniert eigentlich tadellos, allerdings sollte man beachten, dass intern noch der batteriegepufferte RTC-Baustein seriell programmiert wird. Das kann mehrere 100ms dauern.

    Wenn Du mehrere SPS-Zyklen hintereinander diese Funktion aufrufst, kann es zu Deinem beschriebenen Fehlverhalten kommen.

    Ich würde Dir raten, um den den Aufruf einen Timer zu setzen, sodass SysRtcSetTime() für mehrere 100ms nicht mehr aufgerufen wird. Das sollte das Problem lösen, vorausgesetzt, Du generierst den LONG-Wert für das Datum richtig.

    Gruß

    Klaus

     
  • Oberchefe - 2008-10-21

    SysRtcSetTime() wird in obigem Programm nur einmalig nach Verändern vom Eingabewert aufgerufen.

     
  • Tobi - 2008-10-22

    Guten Morgen!

    Ich will mal wieder etwas Licht ins dunkel bringen, bevor ihr hier aneinander vorbei redet:

    Dennish23 hat geschrieben:
    Hallo liebe Forumgemeinde
    ...
    Gebe auch in der Taskkonfig ne Task vor für 200ms.
    ...

    Softwerker59 hat geschrieben:
    Das kann 100ms dauern.

    Was der Softwerker geschrieben hat, wäre also schon ein möglich Fehlerquelle, allerdings konnte ich das bei meiner Hardware noch nicht beobachten...

    Gruß

     
  • Oberchefe - 2008-10-24

    Wieso soll denn die Funktion mehrmals hintereinander aufgerufen werden, Taskzeit und Taskkonfiguration hin oder her?

    Der Benutzer gibt eine neue Uhrzeit ein, diese landet in "Eingabezeit". Weil diese nicht mehr mit "Eingabezeit_old" übereinstimmt, wird die Bedingung wahr und die Funktion einmal aufgerufen, anschließend wird aber "Eingabezeit" nach "Eingabezeit_old" kopiert, das heißt im nächsten Programmdurchlauf ist die Bedingung nicht mehr wahr, auch wenn erst ein paar Millisekunden vergangen sind. Erst wenn der Benutzer mit der Eingabe schneller ist als die Funktion zum Stellen der Uhr braucht gibt es ein Problem.

     

Log in to post a comment.