Int in Hi - und Lowbyte aufteilen

Pepper

Level-1
Beiträge
24
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich bastel gerade an einer Modbuskommunikation für eine Wärmepumpe rum und komm an einer Stelle nicht weiter.

Zum Programmieren benutze ich Codesys. Der Controller ist ein Wago 750-841.

Ich muss einen Integer wert als 2 Byte über Modbus zur Wärmepumpe schicken. Leider gelingt mir das nicht.

Ich hab mir überlegt den INT-Wert in Binär umzurechnen und dann die ersten 8 bits wieder in Dezimal umzurechnen um das Lowbyte zu bekommen. Mit den zweiten 8 bit würde ich das selbe machen.

Beispiel:

INT:= 563 (Binär: 0000001000110011)


Hibyte Lowbyte
Aufteilen: 00000010 / 00110011


Lowbyte:= 51 (Binär:= 00110011)
Hibyte:= 2 (Binär:= 00000010)

Ich habs bis jetzt programmiertechnisch leider nicht hinbekommen. Wenn jemand einen Tipp hat wäre ich sehr dankbar. Oscat & Co haben für diesen fall leider auch keine passenden Bausteine (Oder ich hab sie nicht gefunden:confused:).
Vielleicht habt ihr aber auch einen ganz anderen Lösungsansatz. Ich freu mich auch eure Antworten.

Gruß Pepper
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wo ist das Problem? 2 * 256 + 51 = 563. Das passt doch oder was soll da herauskommen?

@Pepper

Suchst du den umgekehrten Weg? Dann einfach deinen Int-Wert durch 256 teilen. Die Ganzzahl die rauskommt ist dein HighByte und der Rest der Division dein LowByte.
 
Vielen Dank euch beiden. Ihr habt mir den sehr weitergeholfen. Manchmal denkt man einfach zu komliziert, dabei kann es so einfach sein.

Ich hab jetzt einfach meine INT:= 563 durch 256 dividiert und dann mit dem Oscat-Funktion "swap_byte" Hi- und Lowbyte getauscht (von 563) und nochmal durch 256 dividiert

Nach der ersten Division kommt das raus (Hibyte:= 2)

563---> Swap_byte ----> wert2:= 13058

Zweite Division wert2( 13058 ) durch 256 kommt das raus (Lowbyte:= 51)

Also wie gesagt.... Vielen Dank:D
 
Zurück
Oben