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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Bytes in INT wandeln

  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 habe hier gerade ein kleiner, ultradringendes Problem, vielleicht kann mir ja jemand von euch weiterhelfen?

    Ich lese mit einem Schnittstellenumsetzer einen Höhensensor aus und erhalte den gemessenen Abstand in 6 einzelnen Bytes.

    Zur weiteren Berechnung benötige ich den gemessenen Wert jedoch in einem Integer.

    Meine Frage ist nun wie geht das?

    Wäre echt gut wenn mir jemand von euch weiterhelfen kannm müsste nämlich dringenst heute fertig werden.

    Danke
    Zitieren Zitieren Bytes in INT wandeln  

  2. #2
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 23 Danke für 20 Beiträge

    Standard

    Um zu helfen, mussen wir zuerst wissen welche Format die Bytes haben - ASCII, BCD...?

  3. #3
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Wäre gut zu wissen, was die sechs Byte beinhalten.
    ASCII, Real oder was steht da drin ?

    Bei sechs Byte tippe ich schon fast auf Ascii.

    UpS
    Da war wieder einer schneller.......

  4. #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

    Die sechs Bytes beinhalten jeweils eine einstellige Zahl, wenn ich mir diese in der Variablentabelle ansehe muss ich auf Zeichen umstellen.

    Das müsste dann also ASCII sein, oder?

  5. #5
    Registriert seit
    15.07.2007
    Ort
    Wuppertal
    Beiträge
    65
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Spontan würde ich sagen.
    Byte 0 mal 1
    Byte 1 mal 10
    Byte 2 mal 100
    usw

    ...und dann zusammen addieren

    Mal sehen was die anderen sagen wie es richtig geht...
    Wer Schmetterlinge lachen hört, der weiß, wie Wolken schmecken,
    der wird im Mondschein, ungestört von Furcht, die Nacht entdecken...
    -Novalis-

  6. #6
    Registriert seit
    08.07.2007
    Ort
    Burbach
    Beiträge
    366
    Danke
    80
    Erhielt 34 Danke für 32 Beiträge

    Standard

    Wie der schwarze Kater schon sagt, wirst Du wahrscheinlich einen String mit 6 ASCII-Zeichen haben, den Du umsetzen musst.
    Das heißt, die Multiplikation der Zahl mit dem Stellenwert ist richtig, nur musst Du vorher noch das ASCII-Zeichen in eine Zahl konvertieren.
    L Zeichen
    L W#16#F
    UW
    T Integer
    Dazu muss man wissen, daß die Zahlen im ASCII-Code von Hex 30-39 gehen. Mit der Maskierung von Hex F auf das Zeichen schneidet man das obere Nibble der Zahl ab und erhält somit den Wert der Zahl.
    Aus ASCII 35 wird dann Integer 5.

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von smartie Beitrag anzeigen
    Die sechs Bytes beinhalten jeweils eine einstellige Zahl, wenn ich mir diese in der Variablentabelle ansehe muss ich auf Zeichen umstellen.

    Das müsste dann also ASCII sein, oder?
    Dann wird Ascii sein als in Hex werte von 30h = 0 bis 39h = 9.
    Das Einfachste wäre der Vorschlag von schwarzer Kater, allerdings vorher jeweils 30h Abziehen um so in eine normale Zahl zu wandeln. Zweite Möglichkeit, die Bytes in eine String-Var kopieren in die ersten 2 Byte des Strings jeweils 06 reinschreiben und mit dem FC37 (String_DI) aus der IEC-Library wandeln.

    Nachtrag: Oder siehe Blasterbock, der war schneller .
    Geändert von Ralle (27.07.2007 um 12:36 Uhr)
    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

  8. #8
    Registriert seit
    15.07.2007
    Ort
    Wuppertal
    Beiträge
    65
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Zitat Zitat von smartie Beitrag anzeigen
    Die sechs Bytes beinhalten jeweils eine einstellige Zahl, wenn ich mir diese in der Variablentabelle ansehe muss ich auf Zeichen umstellen.

    Das müsste dann also ASCII sein, oder?
    Ja kann das denn dann ASCII sein? Oder wandelt die Variablentabelle automatisch den Zahlenwert in das Zeichen?
    Wer Schmetterlinge lachen hört, der weiß, wie Wolken schmecken,
    der wird im Mondschein, ungestört von Furcht, die Nacht entdecken...
    -Novalis-

  9. #9
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Laut ASCII-Tabelle gilt:

    CHAR '0' = HEX 30 = DEZ 48
    CHAR '1' = HEX 31 = DEZ 49
    CHAR '2' = HEX 32 = DEZ 50
    CHAR '3' = HEX 33 = DEZ 51
    CHAR '4' = HEX 34 = DEZ 52
    CHAR '5' = HEX 35 = DEZ 53
    CHAR '6' = HEX 36 = DEZ 54
    CHAR '7' = HEX 37 = DEZ 55
    CHAR '8' = HEX 38 = DEZ 56
    CHAR '9' = HEX 39 = DEZ 57

    http://de.wikipedia.org/wiki/ASCII

    Es sollte also folgendes funktionieren:

    Code:
    // BYTE 1 (Wert x 1)
     
          L     MB     1
          L     48
          -D    
          L     1
          *D    
          T     MD    10
     
    // BYTE 2 (Wert x 10)
     
          L     MB     2
          L     48
          -D    
          L     10
          *D    
          L     MD    10
          +D    
          T     MD    10
     
    // BYTE 3 (Wert x 100)
     
          L     MB     3
          L     48
          -D    
          L     100
          *D    
          L     MD    10
          +D    
          T     MD    10
     
    // BYTE 4 (wert x 1.000)
     
          L     MB     4
          L     48
          -D    
          L     1000
          *D    
          L     MD    10
          +D    
          T     MD    10
     
    // BYTE 5 (Wert x 10.000)
     
          L     MB     5
          L     48
          -D    
          L     10000
          *D    
          L     MD    10
          +D    
          T     MD    10
     
    // BYTE 6 (Wert x 100.000)
     
          L     MB     6
          L     48
          -D    
          L     L#100000
          *D    
          L     MD    10
          +D    
          T     MD    10
    Gruß Kai

  10. #10
    Registriert seit
    15.07.2007
    Ort
    Wuppertal
    Beiträge
    65
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also Kai, ich muss schon sagen.
    Deine Beiträge sind jedesmal super! Klasse beschrieben und dann auch gleich so detailiert. Die kann ich auch jedes mal voll nachvollziehen.
    Ein großes Lob an Dich!


    Musste ich jetzt einfach mal loswerden.
    Wer Schmetterlinge lachen hört, der weiß, wie Wolken schmecken,
    der wird im Mondschein, ungestört von Furcht, die Nacht entdecken...
    -Novalis-

Ähnliche Themen

  1. Bytes aus DB Laden und vergleichen
    Von bluebird277 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.09.2010, 15:10
  2. max bytes mit libnodave
    Von Praseodym im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 13.02.2008, 12:29
  3. Zusammenfassen von 20 Bytes in INT
    Von ice6461 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 02.08.2007, 20:40
  4. scl bytes in temp_var
    Von volker im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 25.02.2007, 11:38
  5. Array von Bytes per OPC in SPS schreiben
    Von ingmar im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 02.11.2006, 08:51

Lesezeichen

Berechtigungen

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