Windows Systemzeit mit NT_GetTime auslesen, TwinCat3

MPri

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

für mein Projekt nutze ich den Funktions Block ,,NT_GetTime", um die Windows (7) Systemzeit auszulesen und in eine Datei abzuspeichern.
Eine Datei erstellen und einen String abspeichern funktioniert.

Wenn ich nun versuche die Systemzeit mit dem NT_GetTime auszulesen und in ein TimeStruct zu schreiben, bleibt dieses TimeStruct leer (lediglich 0). Mir kommt es so vor, dass der NT_GetTime nicht mal aufgerufen wird, weil ich setze den Start auf True, dennoch bleibt der Ausgang Busy auf False.

Hat jmd. eine Idee warum das Programm den NT_GetTime nicht aufruft bzw. ob für das oben genannte System ein anderer Baustein verwenden muss oder diese Zeit Bausteine irg wie speziell instanziieren muss?

Code:
GetTIME                : NT_GetTime;
     systemTime          : TIMESTRUCT;
    bGetTimeStart        : BOOL;
    bGetTimeBusy        : BOOL;
    bGetTimeERR            : BOOL;
    bGetTimeERRID        : UDINT;

Code:
GetTIME(
    NETID:='',         
    Execute:= bGetTimeStart,
    TMOUT:= T#2S,
    BUSY=> bGetTimeBusy,             
    ERR=> bGetTimeERR,
    ERRID=> bGetTimeERRID,
    TIMESTR=> systemTime);

Danke :)
 
Beckhoff ist bei mir zwar schon ein paar Jahre her aber Fehler sucht man ja doch immer auf die selbe Art...

Hast du mal versucht mit dem Busy-Flag einen Zähler zu inkrementieren oder Wechsel auf true auf andere Art festzuhalten? Könnte ja sein das die Rückmeldung innerhalb weniger Zyklen erfolgt, dass siehst du in der Watchlist nicht. Wenn der Zähler sich nicht ändert kannst du nach deinem Start-Flag schauen, wenn das passt wird die Zeile nicht abgearbeitet...

Laut Infosys :roll: sollte es passen, Bibliothek stimmt?
https://infosys.beckhoff.com/englis...clib_tc2_utilities/27021597799257739.html&id=
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erst mal vielen Dank für Deine Rückmeldung. :)
Ich werde das heute gleich mal ausprobieren mit dem Zähler... Würde mich dann nochmals melden.

Die Bibliothek sollte passen - zumindest bekomm ich die in meinem Library Repository angezeigt.. :)
 
Also ich hab jetzt mal nen Zähler eingebaut in mein Programm. Leider wird hier echt nichts hochgezählt.
Der Eingang des FBs wird weiterhin auf TRUE gesetzt, der Ausgang Busy bleibt allerdings immer auf FALSE.

Bzgl. Bibliotheken habe ich aktuell nur die Standardbibliotheken eingebunden.

Gibt es vllt. sonst noch Ideen, wie man das Problem beseitigen könnte bzw. woher es kommt?
Danke. :)
 
Code:
GetTIME(
    NETID:='',         
    [COLOR="#FF0000"]Execute[/COLOR]:= bGetTimeStart,
    TMOUT:= T#2S,
    BUSY=> bGetTimeBusy,             
    [COLOR="#008080"]ERR=> bGetTimeERR,
    ERRID=> bGetTimeERRID,[/COLOR]
    TIMESTR=> systemTime);
Müßte der "Execute"-Eingang nicht eigentlich "START" heißen?
Wird der GetTIME auch mal mit START=0 aufgerufen, weil er braucht eine positive Flanke?
Gibt der GetTIME vielleicht einen Fehler aus (ERR, ERRID)?

NT_GetTime (TwinCAT 3 PLC Lib: Tc2_Utilities)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wer lesen kann...

"START" wäre richtig, aber sollte es da nicht eine Fehlermeldung beim Übersetzen geben? "Execute" wäre laut Infosys nicht als Eingabevariable definiert.
 
Ich habe mir den FB nochmals selbst definiert und da dann den Eingang "Execute" genannt... (sorry, hab ich oben nicht erwähnt)

Wenn ich den FB nicht im Programm definiere bekomme ich die Fehlermeldung "Programmname oder Funktionsblockinstanz an Stelle von GetTIME erwartet" und "Unbekannter Typ NT_GetTime". Deshalb habe ich den selber nochmals definiert.
Kann es dann doch sein, dass mir eine Bibliothek fehlt? Weil sonst müsste der FB doch erkannt werden und müsste eigentlich nicht nochmals separat im Programm definiert werden?

Der Eingang Start wird auf TRUE gesetzt. Ich setze den Eingang aber wieder auf False, sobald die Daten im TimeStruct stehen.

Danke schon mal für eure Hilfe :)
 
Ich würde mal sagen, kein Wunder daß Dein GetTIME nichts tut, wenn Du einen eigenen Funktionsbaustein neu anlegst ohne Code drin. Dein Funktionsbaustein NT_GetTime heißt nur genauso wie der aus der Bibliothek.

Wie man in TwinCat TC3 Bibliotheken einbindet kann ich Dir aber leider nicht sagen. Vermutlich hilft diese Anleitung: Einführung SPS Bibliotheken
Vielleicht kann man die Einbindung auch in diesem Beispielprojekt sehen: Beispiel: Software-Uhren

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Anlegen war wohl eher reine Verzweiflung... :(
Jetzt wo Du es schreibst ist mir auch klar, dass das so nicht gehen kann.

Das Hinzufügen der Bibliothek hat mit Anleitung 1 gleich funktioniert.. Vielen Dank hierfür.. :)
Der Baustein funktioniert auch und ich hab ein TRUE beim Ausgang BUSY.

Nochmals allerbesten Dank für eure Hilfe.

Meike
 
Ja, das werd ich wohl mein restliches Berufsleben nicht mehr verlernen. Aber dafür ist ja das Praktikum gut :)

Meike
 
Zurück
Oben