# Codesys Hexadezimal



## cro_shooter (18 November 2017)

Hallo an alle Experten,

bin mit meinem Problem etwas am verzweifeln. Ich programmiere für mein Abschlussprojekt eine Sabo-SPS. Auf dem Touchdisplay gebe ich aktuell einen Zahlenwert(dezimal) ein.
Diesen muss ich dann per RS-485 Schnittstelle an einen Motorcontroller versenden. Um diesen versenden zu können muss ich den Wert als HEX versenden werden.
Wie kann ich den dezimalen Zahlenwert nun in Hexadezimal umwandeln?
Vielleicht könnte mir da mal jemand helfen.

LG


----------



## hucki (18 November 2017)

cro_shooter schrieb:


> Auf dem Touchdisplay gebe ich aktuell einen Zahlenwert(dezimal) ein.
> ...
> Um diesen versenden zu können muss ich den Wert als HEX versenden werden.
> Wie kann ich den dezimalen Zahlenwert nun in Hexadezimal umwandeln?


Überhaupt nicht!
Dezimal und hexadezimal sind nur unterschiedliche Darstellungen für uns Menschen auf dem Bildschirm von ein und demselben Binärwert, womit die Elektronik arbeitet.
Für die Elektronik gibt es keinen Unterschied zwischen beiden.


Was Du vielleicht wirklich suchst, ist die Abbildung jeder Dezimalstelle des Wertes in je einem Halbbyte des zu versendenden Wertes. Dafür wird der (Integer?-) Wert in das *BCD*-Format umgewandelt.


----------



## cro_shooter (18 November 2017)

Kannst du mir sagen wie ich das am besten lösen könnte? Bin Neuling bei solcher Programmierung.

Danke


----------



## PN/DP (18 November 2017)

Um ganz sicher zu verstehen was Du meinst: hast Du mal ein Beispiel, was Du senden müsstest, wenn der eingegebene Zahlenwert z.B. 123 dezimal ist?
- 16#7B
- oder 16#0123
- oder 16#31 + 16#32 + 16#33 (= '123')
- oder ?
- eventuell auch noch Bytes vertauscht?

Harald


----------



## PN/DP (18 November 2017)

PS: hast Du eine Dokumentation was der Motorcontroller erwartet?

Harald


----------



## cro_shooter (18 November 2017)

Ich sende dir mal die Links für die Doku.
http://www.mctechnology.nl/pdf/TMCL_reference_2015.pdf

Ich habe das Model TMCM-1311.
https://www.trinamic.com/fileadmin/assets/Products/Modules_Documents/TMCM-1311_hardware_manual.pdf

Hier auch was ich alles an den Motorcontroller senden möchte.
Links drehen
Rechts drehen
Motor Stop
Strom
Schrittwinkel des Motors
Tatsächliche Stromaufnahme als Info zurückbekommen.

Vielen Dank


----------



## PN/DP (18 November 2017)

Wenn Du mit dem Controller im binary Mode kommunizierst dann brauchst Du keine Konvertierung des dezimalen Zahlenwertes. So wie hucki schon schrieb, sind dezimal und hexadezimal nur verschiedene Darstellungen eines Zahlenwertes:
123 dezimal = 16#7B = $7B

Ich kenne Deine Sabo-SPS nicht, doch wenn sie mit Codesys programmiert wird, dann musst Du vermutlich die Reihenfolge der Bytes von 16/32-Bit-Werten zwischen SPS-Variablen und Motorcontroller-Schnittstelle drehen - der Motorcontroller will das MSB zuerst (Big Endian). Dafür gibt es vielleicht eine SWAP-Funktion oder READ_BIG/WRITE_BIG-Funktionen oder andere Funktionen zum Konvertieren zwischen Host Byte Order und Network Byte Order, oder Du schreibst Dir so eine SWAP-Funktion selber (gibt es hier im Forum ..zig Beispiele).

Harald


----------



## cro_shooter (22 November 2017)

Hallo.
Also wenn ich das richtig verstehe soll ich einfach den dezimalen Wert in das zu versende Array eintragen?
Vielen Dank


----------



## PN/DP (22 November 2017)

Ja.

Kann man bei dem Sabo-Codesys Variablen oder Programmcode im hexadezimal-Format beobachten? Dann tue das mal.

Harald


----------



## cro_shooter (22 November 2017)

Wie kann ich das denn umstellen?
Finde nichts wo ich auf HEX umstellen kann den angezeigten Wert.


----------



## PN/DP (22 November 2017)

Weiß ich leider nicht, ich kenne Codesys nur ein klein bisschen.

Harald


----------



## holgermaik (22 November 2017)

Im Deklarationsteil rechte Maustaste.
Holger


----------



## cro_shooter (22 November 2017)

*Deklarationsteil auf HEX umstellen*



holgermaik schrieb:


> Im Deklarationsteil rechte Maustaste.
> Holger



Hallo. Finde das leider gar nicht zum Umstellen.
Kannst du mir es bitte genauer beschreiben.

Danke


----------



## oliver.tonn (22 November 2017)

Wie holgermaik schon schrieb,
wenn Du Online bist einen Rechtsklick auf den Onlinewert einer Variable machen, dann erscheint ein Kontextmenü in dem Du dann die Darstellung auswählen kannst.
Hier mal ein Screenshot aus TwinCAT, sollte bei anderen Codesys Derivaten aber ähnlich aussehen.


----------



## cro_shooter (22 November 2017)

Hab ich gefunden danke.
War nicht online desween wurde es nicht angezeigt.

Danke


----------



## Blockmove (22 November 2017)

Mich nervt's zwar, dass man Leute programmieren lässt ohne irgendwelche Ahnung Zahlenformaten und deren Darstellung.
Aber hier mal ein ganz simpler Tipp:
Nimm den Rechner von Windows.
Dort stellt du auf "Programmierer" und dann auf "Word". Damit kannst du dann "spielen"

Gruß
Blockmove


----------



## Heinileini (22 November 2017)

Blockmove schrieb:


> Mich nervt's zwar, dass Leute programmieren ohne irgendwelche Ahnung von Zahlenformaten und deren Darstellung. ...




Kleine Tipps, wie Dein Hinweis auf den Windows Rechner, können durchaus eine grosse Hilfe sein. Danke dafür! Lass Dich nicht durch Anfragen frustrieren, die scheinbar oder tatsächlich ein gewisses Niveau nicht erreichen. Dieses Forum will und soll schliesslich - nicht nur, aber auch - bei "simplen" Fragen weiterhelfen.


Habe auch schon fertige DiplomIngenieure mit BerufsErfahrung erlebt, die offensichtlich nicht dumm waren und logisch denken konnten, die aber an dieser oder ähnlichen Stellen eine "VerständnisBlockade" hatten. 
Wer macht sich schon Gedanken darüber, was für ein Aufwand dahinter steckt, den Inhalt einer SpeicherZelle in einer aus diversen DarstellungsFormen auswählbar auf dem Bildschirm anzuzeigen?
In der Zeit von MonoSpaceSchriften und HardwareZeichenGeneratoren hat man schon vieles als selbstverständlich hingenommen, ohne es wirklich zu verstehen. Wieviel grösser ist heute die Diskrepanz zwischen den einfachen, internen Grundlagen und dem, was man an der Oberfläche wahrnimmt und als selbstverständlich hinnimmt? ProportionalSchriften, Farbverläufe, 3D-Darstellung, ...
Gut, vieles davon mag SchnickSchnack sein, der nur einem gefälligeren oder sogar übersichtlicheren Aussehen dient. Aber es führt dazu, dass selbst Leute, die in der heutigen Zeit bestens einen PC bedienen können und als ComputerSpezialisten durchgehen, selten Kontakt z.B. mit der internen oder sonstigen ZahlenDarstellungen haben. 
Fertige Befehle für die FlankenErkennung z.B. fördern nicht gerade das Verständnis, sie verhindern oder behindern es! Wohl dem, der die FlankenErkennung noch "zu Fuss" programmieren musste! Der kann kaum nachvollziehen, warum dieses Thema immer wieder zu Verunsicherung und Missverständnissen führt. Der Einzug von "Hochsprachen" in den "Niederungen" der SPS-Programmierung wirkt sich ganz ähnlich aus. Die Bereitstellung von speziellen Bausteinen (Funktionen) für jeden erdenklichen Zweck ebenfalls. Der "Kontakt zur Basis" geht einfach verloren. Leider.
Es wird viel Wissen vermittelt und der Bezug zur praktischen Anwendung bleibt auf der Strecke. Ein Thema jagt das andere und es bleibt zu wenig Gelegenheit, das (auswendig) Gelernte so zu verdauen, dass man es richtig einordnen oder sogar in der Praxis anwenden könnte.
Gruss, Heinileini


----------



## Blockmove (23 November 2017)

@Heini

Ich lass mich nicht frustrieren. Ich mache hier aber ganz klar einen Vorwurf an Ausbilder, Lehrer und Dozenten.
Die Darstellung von Zahlenformaten und Datentypen gehört zu den Basics. Ende Aus Punkt!
Realvergleiche auf Gleich, Zahlenüberlauf bei Int, Längenprobleme bei Strings ... All dies sind Standardprobleme.
Wenn man schaut was so manche mit Analogwerte treiben, könnte man weinen.
Da werden sündteure 15Bit Karten genommen und dann durch unüberlegte Realrechnungen Genauigkeit verschenkt.
Aber dann gegen den Hersteller wettern.

Also hier meine Aufforderung an ALLE Lehrenden:
Eignet euch selber wieder die Grundlagen an und bringt sie dann vernünftig euren Azubis, Schülern oder Studenten bei!
Auch euch hilft das Forum 

Gruß
Blockmove


----------



## _Eddi_ (24 November 2017)

Als gegen Ende meines Studiums die Umstellung auf Bachelor/Master aufkam, haben die Dozenten sich darüber aufgeregt, daß im neuen "Lehrplan" gar nicht mehr vorgesehen war, Zahlendarstellungen wie Binär/Hexadezimal zu vermitteln.


----------



## Heinileini (25 November 2017)

_Eddi_ schrieb:


> Als gegen Ende meines Studiums die Umstellung auf Bachelor/Master aufkam, haben die Dozenten sich darüber aufgeregt, daß im neuen "Lehrplan" gar nicht mehr vorgesehen war, Zahlendarstellungen wie Binär/Hexadezimal zu vermitteln.


Die Dozenten haben sich aufgeregt ... na, immerhin haben sie es anscheinend bemerkt und nicht etwa verschlafen!!! Grosses Lob! 
Was ich trotzdem nicht verstehe: wenn man versucht, Stoff zu vermitteln und merkt, dass die notwendigen Grundlagen/Voraussetzungen nicht vorhanden sind (warum auch immer), drängt sich dann niemandem der Gedanke auf, dem Lehrplan zum Trotz, auf die Grundlagen einzugehen? Hauptsache, das Dach wird fertig und schützt das fehlende Fundament vor der Feuchtigkeit der Tränen?
*Plan*Wirtschaft haben wir nicht mehr, also muss der Lehr*plan* (Leerplan?) an ihre Stelle treten? Oder sind "Zahlendarstellungen wie Binär/Hexadezimal" damals in den Lehrplan für Kindergärten gerutscht, so dass nur einige Jahrgänge betroffen sind und wir hoffen dürfen, alles wird wieder besser?
Ich habe ja Verständnis für das Argument, dass die Zeit nicht ausreicht, wenn noch mehr Stoff bewältigt werden muss, als im Lehrplan steht.
Aber Zeit, an den richtigen Stellen investiert, könnte hilfreich sein, Zeit an anderen Stellen einzusparen.

Gruss, Heinileini


----------



## Blockmove (25 November 2017)

Einen kleinen Trost habe ich:
Ende des letzten Jahrtausends gab es ja immer noch einen gewissen (fachlichen) Wettstreit mit den jungen, aufstrebenden Kollegen.
Heute hab ich da kein Problem mehr, schließlich haben die Jungen genug damit zu tun sich die notwendigen Grundlagen anzueigenen.
Und da ja bekanntlich Google immer alles weiß, sind sie dann stundenlang mit Suchen beschäftigt.
Ich werf, wenn notwendig,  dann halt mal gelegendlich einen Blick in mein Old-School S7-Buch von Hans Berger (auch aus dem letzten Jahrtausend) und bin glücklich und zufrieden.

Vor zwanzig Jahren hätte ich sicher nicht gedacht, dass mal so einfach ist, den Wissens- und somit auch Gehaltsvorsprung zu halten  

Gruß
Blockmove


----------

