Problem mit Raspberry Pi RTS_systimedate

Deutsch
2020-03-08
2020-04-08
<< < 1 2 3 > >> (Page 2 of 3)
  • Chris.O

    Chris.O - 2020-03-24

    Ich kanns leider nicht testen, hab kein LCD Display da.
    Aber versuch doch einfach mal statt dem Message Text den Uhrzeit-String drauf zu schreiben.... was macht er dann?

     
  • marcelszameitat

    marcelszameitat - 2020-03-24

    Hatte ich mir so ähnlich gedacht , bekomme aber keine STRING zeit im Ptogramm hin . In der funktion hätte ich diese aber bekomme diese nicht eingefügt.

    Das LCD Programm macht sowas ähnliches, ich tuh es mal hinzufügen . Vielleicht überseh ich etwas.
    VAR
    utcTime : DWORD;
    dwResult : DWORD;
    udiResult : UDINT;
    tCurrentDT : SYSTIMEDATE;
    sDisplayTime : STRING;
    END_VAR

    utcTime:= SysTimeRtcGet(pResult:= dwResult);
    udiResult := SysTimeRtcConvertUtcToDate(dwTimestampUtc:= utcTime, pDate:= tCurrentDT);
    IF LEN(STR:= WORD_TO_STRING(tCurrentDT.wMonth)) = 1 THEN
    sDisplayTime := '0';
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2 := WORD_TO_STRING(tCurrentDT.wMonth));
    ELSE
    sDisplayTime := WORD_TO_STRING(tCurrentDT.wMonth);
    END_IF

    IF LEN(STR:= WORD_TO_STRING(tCurrentDT.wDay)) = 1 THEN
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= '/0');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wDay));
    ELSE
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= '/');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wDay));
    END_IF

    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= '/');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wYear));

    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= ' - ');

    IF i_xDalightSavings THEN
    IF tCurrentDT.wHour <= 5 THEN
    tCurrentDT.wHour := 24 - (5 - tCurrentDT.wHour);
    ELSE
    tCurrentDT.wHour := tCurrentDT.wHour - 5;
    END_IF
    ELSE
    IF tCurrentDT.wHour <= 4 THEN
    tCurrentDT.wHour := 24 - (4 - tCurrentDT.wHour);
    ELSE
    tCurrentDT.wHour := tCurrentDT.wHour - 4;
    END_IF
    END_IF

    IF i_xMilitaryTime THEN
    IF tCurrentDT.wHour < 10 THEN
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= '0');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wHour));
    ELSE
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wHour));
    END_IF
    ELSE
    IF tCurrentDT.wHour > 12 THEN
    tCurrentDT.wHour := tCurrentDT.wHour - 12;
    END_IF
    IF tCurrentDT.wHour < 10 THEN
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= '0');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wHour));
    ELSE
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wHour));
    END_IF
    END_IF
    IF tCurrentDT.wMinute < 10 THEN
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= ':0');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wMinute));
    ELSE
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= ':');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wMinute));
    END_IF
    IF tCurrentDT.wSecond < 10 THEN
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= ':0');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wSecond));
    ELSE
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= ':');
    sDisplayTime := CONCAT(STR1:= sDisplayTime, STR2:= WORD_TO_STRING(tCurrentDT.wSecond));
    END_IF
    FC_GetLocalTime := sDisplayTime;
    RETURN;

     
  • Chris.O

    Chris.O - 2020-03-24

    Dann probier doch folgendes:

    Kommentier das hier mal alles aus und füg meinen Code ein.

    Bau dir am Ende meines Codes einen komplett-String mit Datum und Uhrzeit zusammen. Diesen legst du dann auf sDisplay Time.

    Schau mal was passiert...

     
  • marcelszameitat

    marcelszameitat - 2020-03-24

    Klingt jetzt vielleicht blöd, aber selbst da kommen nur "???" . Hab erstmal nur dein programm versucht.

     
  • Chris.O

    Chris.O - 2020-03-24

    Naja innerhalb der Funktion ist das klar.. ist ja auch ne Funktion. Gugg doch mal, was dir die Funktion als Rückgabewert bringt.

    Ansonsten mach das ganze als Funktionsbaustein und instanzier diesen in deinem Programm... dann siehst du auch Werte.

     
  • Chris.O

    Chris.O - 2020-03-24

    Funktionsbaustein:

    FUNCTION_BLOCK MyTimeFB
    VAR_INPUT
        xEnable:BOOL;
    END_VAR
    VAR_OUTPUT
        sMyTimeAndDate:STRING;
    END_VAR
    VAR
        //Read Time
        Ctrl_DateTime: SYSTIMEDATE;
        GetTimeResult: ULINT;
        sdateYear: STRING(4);
        sdateMonth: STRING(2);
        sdateDay: STRING(2);
        stimeHour: STRING(2);
        stimeMin: STRING(2);
        stimeSec: STRING(2);
        stimeMsec: STRING(3);
    
    END_VAR
    
    IF xEnable THEN
        SysTimeRtcHighResGet(pTimestamp:=GetTimeResult);
        SysTimeRTc.SysTimeRtcConvertHighResToDate(pTimestamp:=GetTimeResult, pDate:=Ctrl_DateTime);
    
        //Verwenden der Zeit z.B. als String. Oder Du lässt Sie halt als Word
            sdateYear := UINT_TO_STRING (Ctrl_DateTime.wYear);
            sdateMonth := UINT_TO_STRING (Ctrl_DateTime.wMonth);
            sdateDay := UINT_TO_STRING (Ctrl_DateTime.wDay);
            stimeHour := UINT_TO_STRING (Ctrl_DateTime.wHour);
            stimeMin := UINT_TO_STRING (Ctrl_DateTime.wMinute);
            stimeSec := UINT_TO_STRING (Ctrl_DateTime.wSecond);
            stimeMsec := UINT_TO_STRING (Ctrl_DateTime.wMilliseconds);
    
    
        //Als ein String ausgeben
        sMyTImeAndDate:=CONCAT(sdateYear, '-');
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, sdateMonth);
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, '-');
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, sdateDay);
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, '  ');
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, sTImeHour);
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, ':');
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, sTImeMin);
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, ':');
        sMyTimeAndDAte:=CONCAT(sMyTImeAndDate, sTimeSec);
    END_IF
    

    Programm:

    PROGRAM PLC_PRG
    VAR
        NewMyTImeFB:MyTimeFB;
        sMyTimeAndDate: STRING;
        xEnable: BOOL;
    END_VAR
    
    //Read Time and Date
    NewMyTImeFB(xEnable:=xEnable, sMyTimeAndDate=>sMyTimeAndDate);
    

    Jetzt kannst du Werte innerhalb deines FB's sehen und müsstest die aktuelle Zeit mit Datum auf dem String "sMyTimeAndDate" haben.

     
  • marcelszameitat

    marcelszameitat - 2020-03-24

    sehr seltsam ich hab jetzt auch dieses Programm nochmal versucht bringt trotzallem keine werte nicht mal auf sMyTimeAndDate.
    langsam hab ich das gefühl irgendwas vergessen zu haben ein Bibl. oder irgendwas ähnliches.

     
  • Chris.O

    Chris.O - 2020-03-24

    Hast du das Programm, in dem du deinen FB drin hast auch in einer Task aufgerufen?

     
  • marcelszameitat

    marcelszameitat - 2020-03-24

    Jup hatte was vergessen, das funktioniert lediglich eine Stunde zurück aber geht . Wenn ich das bei sMessage ausgeben möchte kommt ein Fehler.

     
  • marcelszameitat

    marcelszameitat - 2020-03-24

    Jup hatte was vergessen, das funktioniert lediglich eine Stunde zurück aber geht . Wenn ich das bei sMessage ausgeben möchte kommt ein Fehler.

     
  • Chris.O

    Chris.O - 2020-03-24

    Mach doch mal die Initialisierung raus... was passiert dann?

     
  • marcelszameitat

    marcelszameitat - 2020-03-24

    Ohne bringt er nur fehler, mit Var input bringt er das gleiche

     
  • Chris.O

    Chris.O - 2020-03-24

    schick mir doch mal das Programm (Projektarchiv bitte)... dann kann ich mal rein schauen... ansonsten brauch ich ne Glaskugel...

     
  • marcelszameitat

    marcelszameitat - 2020-03-24

    Wenn ich jetzt noch wüsste wie , ein Projektarchiv hab ich schon mal nur Hochladen lässt es sich nicht.

     
  • Chris.O

    Chris.O - 2020-03-24

    Wenn du hier nen Post schreibst und unten auf Post klickst... darüber gibt es "Add attachments" Hier kannst dus hochladen...

     
  • Chris.O

    Chris.O - 2020-03-25

    Kannst du bitte die Bibliotheken mit ins Archiv packen. Ich hab eigentlich keine Lust mir alle LIbs zusammenzusuchen.
    Danke

     
  • Chris.O

    Chris.O - 2020-03-25

    Ok,
    Ich hab mal bissl ausgemistet... Denk das müsste so laufen. Prinzipiell hab ich an deinem PRG nix geändert...
    Wenn du ein Archiv hier rein stellst, musst du keine online-Daten mitgeben...Dein Zielsystem hat sowieso keiner.

    Hab leider kein Panel, konnte es deshalb nicht wirklich testen...

     
  • marcelszameitat

    marcelszameitat - 2020-03-25

    Endlich es läuft , lediglich ist die Zeitzone Falsch quasi ist im Programm 1h hinter winterzeit.
    Wie bekomme ich das genau hin das es diese automatisch stellt?
    Seit ich das überarbeitete Programm nutz stürtzt es nach einer zeit einfach ab und bringt mir den Fehler im Bild.

     

    Last edit: marcelszameitat 2020-03-26
  • Chris.O

    Chris.O - 2020-03-26

    Vllt hängst du irgendwo in ner Schleife fest?

    Zeitzone kannst du auch mit der gleichen Bibliothek auslesen wie die Uhrzeit in meinem Baustein.
    Die kannst dann entsprechend vor der Konvertierung noch addieren...aber erst in Millisekunden umrechnen!
    Schau mal in der lib wie die Funktion heißt...habs ned im Kopf.

    Gruß Chris

     
  • marcelszameitat

    marcelszameitat - 2020-03-27

    Hab ich alles mal durchgeschaut,hab aber nichts gefunden . das problem tritt erst auf wenn ich MyNewTime in das Display Programm einfüge.
    Der Fehler tritt erst nach mehreren Minuten bis 1h auf.

     
  • Chris.O

    Chris.O - 2020-03-27

    Wenn du das Programm ausführst oder wirklich erst wenn dus ins Display schreibst?
    Wenn du auf den Ausnahmefehler Doppelklick machst....wo springt er hin?

     
  • marcelszameitat

    marcelszameitat - 2020-03-27

    Hab mich verschrieben , er tritt auf wenn er die zeit am Display schreibt.
    Hab ich versucht, nur der mittlerer der 3 fehler bringt dass er mich nicht weiterleiten kann da er mit keinem pou verknüpft ist.
    Hatte aber nichts gefunden wie das geht.

     
  • marcelszameitat

    marcelszameitat - 2020-03-28

    OKay hat sich alles erledigt das FC_GetLocalTime hatte eine Rechenoperation durchgefürt und somit die Stunden geändert.
    Für mich zwar noch etwas unverständlich aber läuft jetzt.

     

    Last edit: marcelszameitat 2020-03-29
<< < 1 2 3 > >> (Page 2 of 3)

Log in to post a comment.