INT in 2 BYTE wandeln

S7Anfänger

Level-2
Beiträge
263
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.
Wir sind derzeit dabei auf Phoenix Steuerungen umzusteigen und jetzt ist die erste Anlage mit der Programmierung dran.

Jetzt habe ich das Problem, das ich einen Zahlenwert +9999 bis -9999 in 2 getrennte BYTE aufteilen muss sozusagen 1 INT in 2 BYTE.

Könnt ihr mir da weiter helfen?
Als Software nutze ich die PLCnext.

Beste Grüße
Hagen
 
Kann sein, das die wieder weiterverkauft wurden. Mir persönlich hatte PCWorx eh nie gefallen, kenne das schon seit Interbus-S Zeiten.
 
PCWorx, Produkt von Klöpper und Wiege, die gehören nun zu Claas.

Sorry, aber PCWorx und Claas halte ich für Fakenews.

Laut Claas gab tatsächlich mal einen "Anbieter für Agrarsoftware, Klöpper & Wiege" wie hier steht:


Aber das war lange vor PC Worx und Phoenix:

 
Das sollte man nicht nur aus Neugier wissen wollen, sondern als Programmierer von Maschinen und Anlagen sollte man überhaupt verstehen was man da programmiert... ;)

Ich habe keine Ahnung ob der Code von kafiphai bei Codesys oder Deiner Phoenix Software überhaupt unterstützt wird, aber bei Siemens nennt sich das Slice-Zugriff auf die einzelnen Bytes von Bitstring-Datentypen (Word, DWord, ...)

Was immer und in jeder SPS geht: die Bytes ausmaskieren, vorher sollte eine Wandlung von INT nach WORD nötig sein, weil man das Maskieren nicht auf INT anwenden darf/sollte.
Code:
Byte1 := SHR(INT_TO_WORD(iTest), 8) AND 16#FF;  //H-Byte isolieren/ausmaskieren
Byte2 := INT_TO_WORD(iTest) AND 16#FF;          //L-Byte isolieren/ausmaskieren
(Syntax kann im Detail abweichen)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, PLCnext kann den Slice-Zugriff. Und schön daß der auf ANY_BIT-Variablen beschränkt ist.
Allerdings schade, daß bei der Erklärung der Syntax dann immer der Punkt vergessen wurde und bei dem Beispiel das % ... haben die zuviel bei Siemens abgeschrieben, auch die Fehler? Kann denn heutzutage gar keine Firma mehr fehlerfreie Dokumentationen schreiben, werden die von künstlicher Intelligenz getippt die noch nicht ausgelernt hat? :rolleyes: Und wie muß die Schreibweise wirklich sein?

Harald
 
Das sollte man nicht nur aus Neugier wissen wollen, sondern als Programmierer von Maschinen und Anlagen sollte man überhaupt verstehen was man da programmiert... ;)

Ich habe keine Ahnung ob der Code von kafiphai bei Codesys oder Deiner Phoenix Software überhaupt unterstützt wird, aber bei Siemens nennt sich das Slice-Zugriff auf die einzelnen Bytes von Bitstring-Datentypen (Word, DWord, ...)

Was immer und in jeder SPS geht: die Bytes ausmaskieren, vorher sollte eine Wandlung von INT nach WORD nötig sein, weil man das Maskieren nicht auf INT anwenden darf/sollte.
Code:
Byte1 := SHR(INT_TO_WORD(iTest), 8) AND 16#FF;  //H-Byte isolieren/ausmaskieren
Byte2 := INT_TO_WORD(iTest) AND 16#FF;          //L-Byte isolieren/ausmaskieren
(Syntax kann im Detail abweichen)

Harald
OK. Ich glaube das ich das begriffen habe.
Aber ein WORD hat doch keine Vorzeichen oder doch?
Ich könnte das Vorzeichen Bit aber auch extra ansteuern. Das wäre vielleicht sogar einfacher.
🤔🤔
 
OK. Ich glaube das ich das begriffen habe.
Aber ein WORD hat doch keine Vorzeichen oder doch?
Ich könnte das Vorzeichen Bit aber auch extra ansteuern. Das wäre vielleicht sogar einfacher.
🤔🤔
Ups, Vorsicht. Ein Integer hat auch kein echtes Vorzeichen Bit. Aufgrund der Ablage einer Integerzahl als Zweierkomplement ist bei negativen Zahlen das oberste Bit immer 1, das macht es aber nicht zu einem Vorzeichen Bit. Du erhälst bei einer -1, wenn Du das oberste Bit auf 0 setzt keine 1.
 
Zurück
Oben