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

Ergebnis 1 bis 8 von 8

Thema: Sytemzeit ändern

  1. #1
    Registriert seit
    26.11.2007
    Ort
    Schweiz
    Beiträge
    97
    Danke
    25
    Erhielt 5 Danke für 3 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen

    Ich hab einen CX1020 mit Windows CE 6.0 am laufen.
    TargetVisu als Benutzeroberfläche, Windows Taskleiste ist ausgeblendet.

    Nun möchte ich, dass der Anwender die Uhrzeit und das Datum selber verändern kann.
    Über die Visu kann ich über Programme konfigurieren mit dem Befehl \windows\control.exe das ganze Control Panel aufrufen. Nun kann der Anwender die Uhrzeit über Date/Time verändern - er hat aber auch auf alles andere Zugriff wie die CX Configuration etc und das gefällt mir nicht.

    Gibt es eine Möglichkeit direkt das Fensterchen für Datum und Uhrzeit aufzurufen? Kann ich den \windows\control.exe Befehl erweitern damit sich sofort das Date/Timer Fenster öffnet?

    Oder gibt es etwas ähnliches wie bei XP die 'RunDLL32 shell32.dll, Control_RunDLL.......' ?

    Danke und Gruss
    Itus
    Wahr ist nicht was A sagt, sondern was B versteht. Paul Watzlawick
    Zitieren Zitieren Sytemzeit ändern  

  2. #2
    Registriert seit
    02.09.2007
    Ort
    Wels, Austria
    Beiträge
    61
    Danke
    0
    Erhielt 11 Danke für 9 Beiträge

    Standard

    Hallo !
    Es gibt in der TCUtilities.lib die Funktionen

    NT_SetLocalTime und NT_SetTimeToRTCTime, damit kannst du über einen Zeitstring die Uhrzeit am CX setzen, den du in der VIsu eingibst.

    Steht im Inofsystem näher beschrieben

  3. #3
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Daumen runter

    Hallo cybertracepda,

    Hier im Info-System steht noch viel mehr:

    FUNCTION_BLOCK NT_SetTimeToRTCTime
    Diese Funktionalität ist in dem SPS-Laufzeitsystem unter Windows CE nicht verfügbar!

    Leider hab ich für Windows CE auch keine Lösung.

    Gruß
    Chräshe

  4. #4
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    Wie wäre es über NT_StartProcess die CMD.exe mit Parameter "time" aufzurufen?

  5. #5
    Registriert seit
    07.12.2009
    Ort
    Oberösterreich
    Beiträge
    17
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo

    Auslesen der Zeit aus dem Betriebssystem: NT_GetTime
    Schreiben deer Zeit in das Betriebssystem: NT_SetLocalTime
    Hab ich selbst in einem kleinen CP mit WinCE5 laufen, sieht etwa so aus:
    PROGRAM P_Uhrzeit
    VAR
    CLK_PRG1: CLK_PRG;
    NT_GetTime1: NT_GetTime;
    F_TRIG1: F_TRIG;
    RTC1: RTC;
    NT_SetLocalTime1: NT_SetLocalTime;
    R_TRIGedit: R_TRIG;
    bZeitEdit: BOOL; (*öffnet/ schliesst das Fenster zum editieren der Uhrzeit in der Visu*)
    SYSTEMTIMEpuffer: TIMESTRUCT; (*Buffer zum editieren der Uhrzeit in der Visu*)
    bZeitSave: BOOL; (*Befehl zum Speichern der Uhrzeit*)
    F_TRIGedit: F_TRIG;
    sAktuelleUhrzeit: STRING(10);
    todAktuelleUhrzeit: TOD;
    END_VAR

    #################################################
    (*Takt für Aktualisierung der Zeit*)
    CLK_PRG1(PT:= t#30s, Q=> );

    (*Auslesen und Umrechnen der aktuellen Systemzeit*)
    NT_GetTime1(
    NETID:= '',
    START:= CLK_PRG1.Q OR F_TRIGedit.Q,
    TMOUT:= DEFAULT_ADS_TIMEOUT,
    BUSY=> ,
    ERR=> ,
    ERRID=> ,
    TIMESTR=> );
    F_TRIG1(CLK:= NT_GetTime1.BUSY AND NOT NT_GetTime1.ERR, Q=> );
    RTC1(EN:= F_TRIG1.Q, PDT:= SYSTEMTIME_TO_DT(NT_GetTime1.TIMESTR), Q=> , CDT=> );
    todAktuelleUhrzeit:= DT_TO_TOD(RTC1.CDT);
    sAktuelleUhrzeit:= DT_TO_STRF(RTC1.CDT, 0, '#M:#Q:#S', 2);

    (*Schreiben der Uhrzeit ins Betriebssystem*)
    R_TRIGedit(CLK:= bZeitEdit, Q=> );
    IF R_TRIGedit.Q THEN
    SYSTEMTIMEpuffer:= NT_GetTime1.TIMESTR;
    END_IF

    NT_SetLocalTime1(START:= FALSE);
    IF bZeitSave THEN
    NT_SetLocalTime1(
    NETID:= '',
    TIMESTR:= SYSTEMTIMEpuffer,
    START:= TRUE,
    TMOUT:= DEFAULT_ADS_TIMEOUT,
    BUSY=> bZeitSave,
    ERR=> ,
    ERRID=> );
    END_IF
    F_TRIGedit(CLK:= bZeitSave, Q=> );
    IF F_TRIGedit.Q THEN
    bZeitEdit:= FALSE;
    END_IF

    Soweit ich mich erinnern kann, sind auch Befehle der Oscart.lib verwendet.
    In der Visualisierung wird mittels bZeitEdit:= TRUE ein Popup Fenster geöffnet in dem die
    SYSTEMTIMEpuffer editiert werden kann, Speichern mit bZeitSave:= TRUE; Abbrechen mit bZeitEdit:= FALSE;

    Funktioniert wunderbar.
    Christian

  6. #6
    Avatar von Itus
    Itus ist offline Benutzer
    Themenstarter
    Registriert seit
    26.11.2007
    Ort
    Schweiz
    Beiträge
    97
    Danke
    25
    Erhielt 5 Danke für 3 Beiträge

    Standard

    Hallo Zusammen

    Besten Dank für die Vorschläge.

    Fx64, deine Idee hab ich implementiert. Cmd wird schön aufgerufen, nun müsste ich noch wissen, wie ich ein Keypad einblende. Ich hab reine Touchoberfläche - gehe ich mit Cerhost auf den Rechner kann ich die Zeit über meinen Laptop verändern.

    Danke und Gruss
    Itus
    Wahr ist nicht was A sagt, sondern was B versteht. Paul Watzlawick

  7. #7
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Frage

    Hallo allerseits,

    das mit den vielen Zeiten finde ich doch etwas verwirrend.
    Ich hab 5 unterschiedliche Zeiten zur Auswahl!?! -> TwinCAT Zeitquellen

    Mit dem FB NT_GetTime kann ich die „Windows/NT Zeit“ mit 1ms Auflösung auslesen. Das ist für meine Anwendungen praktisch immer ausreichend.

    Wenn ich jetzt mit dem FB NT_SetLocalTime die „Windows/NT Zeit“ neu einstelle, läuft die „Windows/NT Zeit“ nach einem Neustart dann mit der neu eingestellten Zeit weiter, oder wird diese von der RTC frisch initialisiert?
    Leider hab ich gerade keine Steuerung zum testen parat.

    Weiß jemand, ob es bei Win CE, mit Ausnahme von „NT_SetTimeToRTCTime“, weitere Einschränkungen gibt?
    Ich konnte aktuell nichts finden, aber das heißt ja nichts...

    Gruß
    Chräshe

  8. #8
    Registriert seit
    07.12.2009
    Ort
    Oberösterreich
    Beiträge
    17
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn du NT_SetLocalTime verwendest, verstellst du die Zeit im Betriebssystem (egal ob du das Recht dazu hast oder nicht ) die Uhrzeit bleibt also auch beim Neustart erhalten, war zumindest bei meinem CP so.

    Christian

  9. Folgender Benutzer sagt Danke zu Christian_EWW für den nützlichen Beitrag:

    Chräshe (12.03.2010)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 30.04.2010, 08:06
  2. S7 Ip's ändern
    Von beowonne im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 06.04.2008, 11:14
  3. DB`s ändern
    Von mitchih im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 16.03.2008, 12:18
  4. OP7 mpi ändern
    Von Jelly im Forum HMI
    Antworten: 3
    Letzter Beitrag: 19.04.2006, 09:27
  5. MMC auf PG ändern?
    Von platinum im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 13.06.2005, 20:32

Stichworte

Lesezeichen

Berechtigungen

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