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

Ergebnis 1 bis 8 von 8

Thema: Read_CLK in SCL

  1. #1
    Registriert seit
    26.03.2005
    Beiträge
    58
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Ich versuche die Aktuelle Systemzeit in SCL auszulesen und zu zerlegen.

    TEMP_INT := READ_CLK(CDT:=TEMP_DT);
    WOCHENTAG := WORD_TO_INT(BYTE_TO_WORD(CDT[7]));
    MILLISEC := WORD_TO_INT(BYTE_TO_WORD(CDT[6]));
    SEKUNDE := WORD_TO_INT(BYTE_TO_WORD(CDT[5]));
    MINUTE := WORD_TO_INT(BYTE_TO_WORD(CDT[4]));
    STUNDE := WORD_TO_INT(BYTE_TO_WORD(CDT[3]));
    TAG := WORD_TO_INT(BYTE_TO_WORD(CDT[2]));
    MONAT := WORD_TO_INT(BYTE_TO_WORD(CDT[1]));
    JAHR := WORD_TO_INT(BYTE_TO_WORD(CDT[0]));

    Bei denn Ausgaben stimmt nur das Jahr,Monat,Stunde beim Tag kommt zum Bespiel 34 raus.
    Was mach Ich falsch?
    Brauche die zerlegung wegen einer Zeitschaltuhr.
    Habe eine CPU 614 - Step7 5.3

    Danke Im Voraus
    Michael
    Zitieren Zitieren Read_CLK in SCL  

  2. #2
    Registriert seit
    13.04.2005
    Beiträge
    264
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Hallo,

    Der Datentyp Date_And_Time wird im BCD-Format gespeichert.

    Zahlenwerte bis 9 sind gleich. Größere Werte kannst du dir in Hex ansehen, dann passt es.
    Wenn du deine 34 in Hex anguckst hast du 22.

    Gruß Wilfried

  3. #3
    Registriert seit
    26.03.2005
    Beiträge
    58
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    stimmt dann gibst sinn,aber der Wochentag stimmt nicht.
    Ist da auch was mit dem Vormat?.

    MFG
    Michael

  4. #4
    Registriert seit
    13.04.2005
    Beiträge
    264
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Hallo,

    der Wochentag teilt sich das Byte mit den Ms.

    Bytes / Inhalt / Bereich
    7 / (4 MSB) LSD (least significant decade) von ms / 0 ... 9
    7 / (4 LSB) Wochentag / 1 ... 7 (1 = Sonntag).

    Welche Zahl hast du denn ?

    Gruß Wilfried

  5. #5
    Registriert seit
    19.06.2003
    Beiträge
    197
    Danke
    10
    Erhielt 17 Danke für 13 Beiträge

    Standard

    Hallo
    Der Wochentag benutzt nur Bit 0..3 im letzten Byte. Bit 4..7 wird für die ms benutzt.

    Schau dir in der Standard Library - IEC Function Block die Bausteine "DT_Date", "DT_DAY" und "DT_TOD" einmal an.
    Gruss Martin

  6. #6
    Registriert seit
    26.03.2005
    Beiträge
    58
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    Ok habe Dt_DAY eingefügt und Tag ausgelesen!

    Nun habe Ich aber ein anders Problem,wenn dies Werte als BCD codiert sind,
    wie vergleiche ich diese mit einem Int - Wert.



    Gruß Michael

  7. #7
    Registriert seit
    13.04.2005
    Beiträge
    264
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Hallo,

    entweder den Int- Wert zu BCD oder den BCD-Wert zu Int wandeln. Da es keine neg. Werte gibt bleibt es gleich.
    Eine andere Möglichkeit sehe ich nicht.

    Gruß Wilfried

  8. #8
    Registriert seit
    26.03.2005
    Beiträge
    58
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    eine Wandlung von BCD auf INT ist in SCL nicht möglich.
    Habe einen FC eingebunden.

    Danke an Alle.
    MFG
    Michael

Ähnliche Themen

  1. Read_clk ergebniss in DB1 verschieben
    Von siqo im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 20.04.2011, 14:07
  2. Problem mit READ_CLK()
    Von herdi im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 15.09.2008, 15:35

Lesezeichen

Berechtigungen

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