Bits in einem Byte auf einer S5 spiegeln

matziane

Level-1
Beiträge
120
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Leute,
ich soll Daten von einer S5 115U an ein Gerät schicken das am Profibus angeschlossen ist.
Habe nun festgestellt, dass in diesem Gerät die Bits in den Bytes nicht von rechts nach links aufsteigend angeordnet ausgewertet werden, sondern anders herum.
Die Bytes ansich sind richtig herum, das niederwertigste Byte steht rechts.

Ich schicke dort ein DWORD rüber, war anfangs etwas verwirrt was da für ein Wirrwarr ankommt, bis ich begann den Zahlensalat mittels Tabelle mal auseinanderzuklamüsern.
Schicke aktuell mal Testweise eine 1 rüber und angezeigt wird die Zahl 16777216.
Was in diesem Fall heisst, dass nicht im ganz rechten Byte das ganz rechte Bit eine 1 hat sondern im rechten Byte das linke Bit

Gibt es bei der S5 eigentlich eine einfache Möglichkeit das so zurechtzuschieben, dass das passt?

Vielen Dank im voraus
 
Guten Morgen,
das mit dem TAD wäre ja zu einfach, da hab ich erst auch dran gedacht.
Aber es sind ja nicht die Bytes im DWORD vertauscht, es sind in den einzelnen Bytes die Bits vertauscht.
Heisst also nicht wie man es kennt,
Bit
7 6 5 4 3 2 1 0
sondern
Bit
0 1 2 3 4 5 6 7

ich müsste also per Hand im Programm alle Bits spiegeln, dass die Daten dort richtig ankommen.
Die haben das aber mittlerweile in dem Gerät geändert, trotzdem interessierts mich obs auf der Steuerungsebene da eine Möglichkeit gibt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
hatte mich im ersten Beitrag etwas vertan, es zieht sich so durchs gesamte DWORD.
Also es wird alles von links nach rechts gezählt, die Bits in den die Bytes ansich sowie die einzelnen Bits im gesamten Doppelwort.
Hoffe, dass ist in dem Bild meiner Tabelle etwas besser erkennbar.

Unbenannt.JPG
 
... damit ist es doch dann aber haargenau so, wie schon von Sarek genannt - ich kann es mir (aus eigener Erfahrung) auch nicht anders vorstellen - das wäre dann ja vollkommen sinnfrei ...
 
Defintiv ist es sinnfrei, aber wie geht man denn vor wenn man dieses Problem hat.
Einen eigenen Baustein bauen der einem die ganzen Bits umhertauscht, sodass es passt?

Was ist überhaupt ein little Endian / big Endian Problem, mal ganz doof gefragt.
 
Ahja, über das mit dem Intel und Motorola Format bin ich schon bei einigen Dingen gestolpert, das kommt mir bekannt vor.
Da konnte man dann aber immer am Gerät umschalten.
Aber ein TAD nutzt mir da ja auch nichts, oder?
 
Hallo matziane,

ich denke ein "TAD" würde Dir schon helfen, denn ich glaube, so wie Du es in Deinem Bild
dargestellt hast, ist die Bit-Reihenfolge nicht. Das wäre ja gegen jede Konvention.
Versuchs mal so (x = Adresse des DWORD):
Code:
L DL x
T MB 253
L DR x
T MB 252
L DL x+1
T MB 251
L DR x+1
T MB 250

Dann sollte im MD 250 das gleiche stehen, wie in Deinem Profibusteilnehmer.

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ohne Witz, ich hab die Daten die da hin und her gingen ausgewertet und im Excel durchprobiert, das ist echt so wie da dargestellt.
Habe mit den Programmierern des Geräts gesprochen, die haben das bestätigt.

Wie ich bereits erwähnte haben die bei sich ja schon einige Änderungen gemacht und es funktioniert jetzt.
 
Sorry aber ein Beitrag nach 10 Jahren aufzuwecken.
Und dann am Thema vorbei statt S5 in S7 zu programmieren. Ist wie eine kleine Zeitreise mit Themaverfehlung.
 
Zurück
Oben