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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Date and Time, Bytes einzeln auswerten

  1. #1
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich hänge gerade an einem für euch sicher klitzekleinen Problem:

    Ich lese mit der Funktion SFC1 die Systemuhr einer S7-313C aus und schiebe das Ergebniss in einen Datenbaustein.
    Den Aufbau der Variable im Format Date and Time verstehe ich.

    Mein Problem besteht nun darin das ich das Datum, welches ja im BCD Format vorliegt in einem Byte ausgeben muss. Also ich meine für jede Ziffer soll ein Byte stehen.

    Damit z.B. 110208 so aussieht:

    DB1.DBB0 8
    DB1.DBB1 0
    DB1.DBB2 2
    DB1.DBB3 0
    DB1.DBB4 1
    DB1.DBB5 1

    Das ganze will ich später über eine OPC Verbindung an einen PC übergeben.

    Über BTI kann ich das das erste Byte von Date an Time, welches die Jahreszahl enthält in ein Integer wandeln.
    Das ist soweit ganz gut.

    Aber leider steht in diesem Byte dann die ganze Jahreszahl 8 (ohne 0 vorne dran !!) und beim Jahr 2011 steht dann da 11.

    Mein Problem ist nun wie bekomme ich den Wert aus diesem Byte gesplittet, so das in einem Byte 0 steht und im anderen 8.

    Ich hoffe ihr versteht was ich meine und könnt mir helfen, die Hilfefunktion hats nicht wirklich gebracht.


    Vielen Dank

    smartie
    Zitieren Zitieren Date and Time, Bytes einzeln auswerten  

  2. #2
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Nicht so ganz, aber wie wär's einfach 2000 zum Integer dazu addieren?
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Am Besten einzeln in BCD wandeln.

    Also:

    Code:
    L #Jahr                     //Byte, Jahr, BCD-Codiert
    SRW 4                       //Einerstelle rechts rausschieben
    BTI                         //Integer daraus machen 
    T #iZehnerJahr              //Zehnerstelle Jahr
    
    L #Jahr                     //Byte, Jahr, BCD-Codiert
    SLW 12                      //Zehnerstelle links rausschieben
    SRW 12                      //Einerstelle wieder zurückschieben
    BTI                         //Integer daraus machen 
    T #iEinerJahr               //Zehnerstelle Jahr
    Geändert von Ralle (11.02.2008 um 10:57 Uhr) Grund: Besser ganz rausschieben^^
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    smartie (11.02.2008)

  5. #4
    smartie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Hallo Ralle,

    dein Vorschlag funktioniert beim Jahr 08 ganz gut, aber beim Jahr 11 habe
    ich das Problem das in dem zweiten Byte (MB41) 11 steht.

    Code:
          L     DB201.DBB   18
          SRW   4
          BTI   
          T     MB    40
    
          L     MW    50
          SLW   4
          SRW   4
          BTI   
          T     MB    41
    Gruß smartie

  6. #5
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Versteh ich das richtig, du willst pro Byte jeweils einer der Ziffern 0-9 anzeigen?
    Wozu?
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  7. #6
    smartie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Weil der Kollege am PC das so haben will, evtl.muss ich sie noch nach ASCII wandeln.

  8. #7
    smartie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Hi Ralle,

    dein Vorschlag funktioniert klasse.
    Ich war einfach nur zu doof zum lesen.

    Der richtige Code bei mir muss lauten:

    Code:
          L     DB201.DBB   18
          SRW   4
          BTI   
          T     MB    40
    
          L     MW    50
          SLW   12
          SRW   12
          BTI   
          T     MB    41
    Danke !!


    smartie

  9. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Zitat Zitat von smartie Beitrag anzeigen
    Hi Ralle,

    dein Vorschlag funktioniert klasse.
    Ich war einfach nur zu doof zum lesen.

    Der richtige Code bei mir muss lauten:

    Code:
          L     DB201.DBB   18
          SRW   4
          BTI   
          T     MB    40
    
          L     MW    50
          SLW   12
          SRW   12
          BTI   
          T     MB    41
    Danke !!


    smartie
    Ne ne, du warst nicht zu doof. Ich hatte zu schnell geschrieben und es gleich darauf nochmal verbessert !
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  10. #9
    smartie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Puh, hatte ich doch schon ernsthaft an mir gezweifelt...

    Danke nochmal, vor allem das du mir wieder Vertrauen an
    mich selbst gegeben hast.


    smartie

  11. #10
    smartie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von smartie Beitrag anzeigen
    ..evtl.muss ich sie noch nach ASCII wandeln.
    Also genau das ist jetzt mein Problem, wie kann ich das denn jetzt anstellen?

    In der S7-200 gibt es dazu eine schöne Funktion ITA "Integer to ASCII".
    Gibts das in der 300er SPS auch? Habe nichts gefunden.

    Gruß smartie

Ähnliche Themen

  1. DATE Variable einzeln auslesen
    Von Bambam im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 17.08.2010, 12:38
  2. Time and Date
    Von paula23 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.10.2008, 08:50
  3. Date and Time im DB
    Von godi im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.05.2006, 15:56
  4. sps date and time ==> OP27
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.11.2005, 15:30
  5. Antworten: 3
    Letzter Beitrag: 02.02.2005, 17:41

Lesezeichen

Berechtigungen

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