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

Ergebnis 1 bis 9 von 9

Thema: DT auflösen

  1. #1
    Registriert seit
    09.11.2010
    Beiträge
    53
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    folgendes Problem.

    Wie kann ich ein DT (BYTE) auflösen in Datum (Byte) Wochentag (Byte) Stunde (Byte) Minute (Byte)?

    Gruß
    Zitieren Zitieren DT auflösen  

  2. #2
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Moin moin,

    eine Möglichkeit ist:

    str := DT_TO_STRING gibt dir dein DT Wert als String zurück. den kannste dann ja mit String-Funktionen bearbeiten wie du willst ...

    Grüße

  3. #3
    msbes ist offline Benutzer
    Themenstarter
    Registriert seit
    09.11.2010
    Beiträge
    53
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    wie kann ich das jetzt alles einzeln rausfiltern?

    Ich bin neu bei Codesys. Bitte um eine ausführliche Antwort.

  4. #4
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Code:
    PROGRAM PLC_PRG
    VAR
    	dtDate : DT := DT#1996-05-06-15:36:30;
    	sDateString : STRING;
    	
    	bySeconds : BYTE;
    	byMinutes : BYTE;
    	byHours : BYTE;
    	
    	byDay : BYTE;
    	byMonth : BYTE;
    	wYear : WORD;
    END_VAR
    Code:
    sDateString := DT_TO_STRING(dtDate);
    
    bySeconds := STRING_TO_BYTE(STANDARD.RIGHT(STR := sDateString, SIZE := 2));
    byMinutes := STRING_TO_BYTE(STANDARD.MID(STR := sDateString, LEN := 2, POS := (LEN(sDateString)-4)));
    byHours := STRING_TO_BYTE(STANDARD.MID(STR := sDateString, LEN := 2, POS := (LEN(sDateString)-7)));
    
    byDay := STRING_TO_BYTE(STANDARD.MID(STR := sDateString, LEN := 2, POS := (LEN(sDateString)-10)));
    byMonth := STRING_TO_BYTE(STANDARD.MID(STR := sDateString, LEN := 2, POS := (LEN(sDateString)-13)));
    wYear := STRING_TO_WORD(STANDARD.MID(STR := sDateString, LEN := 4, POS := (LEN(sDateString)-18)));

  5. #5
    Registriert seit
    07.07.2011
    Ort
    Schrobenhausen/Schiefling
    Beiträge
    228
    Danke
    36
    Erhielt 29 Danke für 22 Beiträge

    Standard

    Hi,
    in der Wago lib scheduler03 gibt es die Funktion FuDT_To_DetailTime.
    Damin kannst du alle Details extrahieren...
    Gruß

  6. Folgender Benutzer sagt Danke zu tomrey für den nützlichen Beitrag:

    msbes (19.08.2013)

  7. #6
    msbes ist offline Benutzer
    Themenstarter
    Registriert seit
    09.11.2010
    Beiträge
    53
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @tomrey: nicht die richtige Funktion dabei. Trotzdem DANKE
    @Mensetta: bekomme eine Fehlermeldung. (siehe Anhang) was ist falsch gelaufen?
    Angehängte Grafiken Angehängte Grafiken

  8. #7
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    MID und RIGHT sind Funktionen aus der Standard.lib. Ich weiss nicht warum Mensetta den Aufruf mit STANDARD.MID bzw STANDARD.RIGHT gemacht hat. MID oder RIGHT sollte eigentlich reichen wenn die Lib eingebunden ist.
    Die Deklaration von Standard als bool kannst du bei dir wieder löschen. Das wäre so oder so falsch.

  9. #8
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Stimmt das sollte reichen, bei mir hat's die Auto Vervollständigung gemacht

  10. #9
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also DT erst in einen String zu konvertieren, und dann aus den Strings wieder Werte dürfte so ziemlich das unperformanteste sein was es gibt. Zum Glück sieht man nicht was dadurch im Hintergrund für unnütze Anweisungen ausgeführt werden. Hat natürlich den Vorteil dass man keine externen Bibliotheken benötigt.

    In der Oscat Bibliothek sind ebenfalls Funktionen enthalten um einen DT zu zerlegen - ohne String-Umweg.

Ähnliche Themen

  1. Byte im DB in Bits auflösen
    Von SIMREU im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 11.03.2016, 09:58
  2. Word auflösen
    Von holgermaik im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 25.02.2010, 10:10
  3. TwinCAT PLC-ARRAY auflösen???
    Von olitheis im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 20.06.2008, 13:18
  4. S7 Datum auflösen nach Monat Tag
    Von Guste im Forum Programmierstrategien
    Antworten: 7
    Letzter Beitrag: 03.11.2007, 00:25
  5. IP-Adresse auflösen mit flexible
    Von marvin im Forum HMI
    Antworten: 0
    Letzter Beitrag: 14.03.2007, 12:40

Lesezeichen

Berechtigungen

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