TIA DINT über UDP an B&R Steuerung senden... invertierte Werte?

Beiträge
622
Reaktionspunkte
67
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Ich möchte von einer S7-1215C Daten an eine B&R Steuerung senden.

Wir haben einen DB angelegt in dem ist lediglich ein Array von DWORD angelegt. Länge 50.


Die Daten kommen in der B&R auch an!


Das Problem: Eine Dezimal 1 wird in der B&R als Dezimal 16777216 ausgewertet und anders herum.
Ich nehme mal an das liegt an der Hi-Lo Byte Nummerierung? :rolleyes:

Wie löse ich das Problem am einfachsten, bzw in welcher der beiden Steuerungen?


Wenn ihr mir da helfen könntet wäre ich sehr glücklich! :D
 
Ich würde auch sagen, dass die B&R-Steuerung anscheinend die Byte-Reihenfolge im DINT (Achtung : wir sprechen hier von 4 Byte) anders interpretiert als Siemens. Dazu kann man sicherlich im Internet etwas nachlesen (dann spart man sich das Probieren).
An einer Stelle mußt du es dann programmieren. Ich würde es dort machen, wo es mir selbst am ehesten entgegen kommt - das mußt du für dich entscheiden ...

Gruß
Larry
 
Am ehesten würde es mir auf der B&R entgegen kommen...dort programmiert es nämlich jemand anders. :ROFLMAO:

Ich habe im Internet nicht so recht was gefunden, vermutlich weil ich mit den falschen Suchwörtern suche.
TAD wäre sicher ein passender Befehl, aber wo ist der in der 1200er? Gibt da ja keine AWL Befehle...

Bin nicht sicher ob es den gibt. ;)
 
Sorry ... ich hatte nur S7 und nicht 1215 gelesen - die 1200er ist nicht meine Welt, ich weiß also nicht, was da so geht ...
Es müßte m.E. aber dennoch ein Pendant dazu auf der 1200er geben ... der Befehl tauscht die Byte-Reihenfolge in einem Doppelwort ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, habe ich mir durchgelesen! Das wäre genau das was ich brauche.
Wobei es trotzdem mühsam ist, aber durchaus machbar.

Na ich werde mal suchen was die entsprechung auf der 1200er sein könnte.


Edit: Der richtige Befehl heißt in TIA:

Swap:
Mit der Anweisung "Anordnung ändern" ändern Sie die Anordnung der Bytes am
Eingang IN und fragt das Ergebnis am Ausgang OUT ab.

Der ändert die Reihenfolge von 1234 auf 4321.
In der B&R heißt der Befehl sogar gleich.


Nun noch Schere, Stein, Papier spielen wer es macht. :ROFLMAO:


Danke für die Unterstützung, hat mir sehr geholfen um nach dem richtigen Suchbegriffen zu suchen!
 
Zuletzt bearbeitet:
Am ehesten würde es mir auf der B&R entgegen kommen...dort programmiert es nämlich jemand anders. :ROFLMAO:
Ich würde das Bytes-drehen ebenfalls dem B&R-Partner auferlegen.

Ich würde wollen, daß die "TCP/IP network byte order convention" Big Endian verwendet wird, weil das nun mal der verbreitete Standard ist und sich auch besser für Diagnosezwecke eignet (ge-snifferte big-endian-Daten lassen sich leichter lesen).

https://de.wikipedia.org/wiki/Byte-Reihenfolge#Plattformübergreifende_Darstellung_von_Zahlen
Um einen fehlerfreien Datenaustausch zwischen Computern verschiedener Plattformen zu ermöglichen, ist bei Netzwerkprotokollen immer die Byte-Reihenfolge festgeschrieben. Diese wird als „Network Byte Order“ bezeichnet. Die natürliche Byte-Reihenfolge des Systems wird demgegenüber als „Host Byte Order“ bezeichnet. Arbeitet das System nicht mit dieser Byte-Reihenfolge, so muss diese im Netzwerktreiber beziehungsweise zum Teil im Anwendungsprogramm entsprechend umgewandelt werden.
Im Falle des heute vornehmlich verbreiteten Internetprotokoll-Satzes entspricht die Network Byte Order dem Big-Endian-Format.

Harald
 
Vielen Dank für die Erläuterung!

Hätte nicht gedacht das etwas das Siemens verwendet der Standard sein könnte. :ROFLMAO:
Tatsächlich haben wir uns auch bereits darauf geeinigt das es B&R-seitig gelöst wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Befehl heißt bei B&R swapDINT, meiner Erinnerung nach funktioniert nur der, TAD von Siemens würfelt für die B&R nur anders durcheinander.
(Ich habe die Kopplung CPU315 mit B&R 1484 über Profibus vor 6 Jahren programmiert, aber gerade mal nachgeschaut)
 
Der Befehl heißt bei B&R swapDINT, meiner Erinnerung nach funktioniert nur der, TAD von Siemens würfelt für die B&R nur anders durcheinander.
komisch, wenn aus der Siemens gesendet wird 16#00_00_00_01 und die B&R interpretiert das als 16777216 = 16#01_00_00_00 - wie bitte will die B&R das anders "gewürfelt" haben als es das Siemens-TAD tun würde? TAD würde wandeln 16#00_00_00_01 ---> 16#01_00_00_00

Gibt es von B&R ein Handbuch der Programmiersprache(n) zum Download?

Harald
 
Wenn es mit TAD auch geht, dann ist ja gut, dann trügt mich eben meine Erinnerung.
Unter B&R stehen die üblichen IEC-Programmiersprachen mit den IEC-Bibliotheken und mit eigenen nichtkonformen Bibliotheken zur Auswahl. swapDINT steckt in der IEC-Bibliothek CONVERT. TAD ist dagegen Siemens-historisch und steht z.B. nicht unter KOP zur Verfügung.
Alle Informationen stecken in der Hilfe, die könnte auf der Webseite unter Downloads frei zur Verfügung stehen. Allerdings gibt es für jedes Automationstudio eine entsprechende Hilfe, Hardwarenahes ist auch CPU-Serien-spezifisch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na wie auch immer, laut Simatic Manger Hilfe macht TAD genau das gleiche wie SWAP nämlich die Bytefolge von 1234 auf 4321 drehen. ;)


Wir haben uns jetzt darauf geeinigt das derjenige der die Daten sendet, sie vorher "swapt".
Funktioniert einwandfrei.

Da ich ja sowieso alle notwendigen Daten in den Send DB schicke verwende ich jetzt eben statt "Move" den "Swap" Befehl dafür.

Das "Problem" war das mein Kollege die Daten gerne direkt aus dem Empfangs-DB heraus visualisiert hätte, wenn er das aber erst bei sich dreht, springen die Werte teilweise hin und her auf der Visu. Zumindest hat er mir das so erklärt... :confused:

Bei dir S7-1200 hätte ich das Problem nicht, da ich den Wert aus dem Empfangs-DB dann über SWAP eh in einen anderen DB geschoben hätte.
Scheint auf der B&R anders zu funktioneren...
 
Wir haben uns jetzt darauf geeinigt das derjenige der die Daten sendet, sie vorher "swapt".
Funktioniert einwandfrei.
Ja typische Faulheits-Lösung, wo der Empfänger meint, er müsse die Empfangsdaten dann nicht anfassen. :ROFLMAO: Hoffentlich muß niemals der Datenverkehr analysiert/gesniffert werden - das muß ziemlich komisch aussehen, wenn in der einen Richtung Little Endian übertragen wird und in der Gegenrichtung Big Endian... naja, das werdet Ihr sicher in der Schnittstellen/Kommunikations-Dokumentation sauber dokumentieren, oder?

Das "Problem" war das mein Kollege die Daten gerne direkt aus dem Empfangs-DB heraus visualisiert hätte, wenn er das aber erst bei sich dreht, springen die Werte teilweise hin und her auf der Visu. Zumindest hat er mir das so erklärt... :confused:
Noch so eine typisch faule statt korrekte Lösung - wie will er da die Datentyp-Konsistenz sicherstellen?
Die Anzeige springt nur dann, wenn er die geswapten Daten auf die selbe Speicherstelle zurückspeichert. Wenn er aber den Swap gleich nutzt um die Daten aus dem Empfangspuffer heraus in einen Visu-Speicher zu kopieren dann springt nichts und die Puffer sind auch sauber getrennt und nebenbei ist auch noch Konsistenz garantiert, wenn er nur kopiert/swapt, wenn sein Programm den Empfang einer kompletten Nachricht signalisiert. Außerdem kann man dann zum Testen der Visu auch mal die Schnittstelle zur Visu steuern/manipulieren. Hat die B&R wirklich so wenig Datenspeicher und so schlechte Performance, daß nichtmal ein bisschen Reserve für ein sauberes Kopieren von Daten übrig ist?

Harald
 
Naja, das letzte Wort ist hier wohl eh noch nicht gesprochen. ;)
Es handelt sich hier um einen Firmeninternen Prototyp für eine neue Auftragsverwaltung.

Ist eh noch alles eher in der Alpha Test Phase an einer Anlage und noch lang nicht in Betrieb.


Die Anzeige springt nur dann, wenn er die geswapten Daten auf die selbe Speicherstelle zurückspeichert.

Jetzt wo du es sagst...so muss es wohl sein.
Hab nicht genau gewußt wie er das meint, weil ich nicht auf die Idee gekommen wäre das SO zu machen...

An Speicherplatz und Resourcen scheitert es sicher nicht. Eher an der Erfahrung und am Know How.
wir arbeiten dran. :ROFLMAO:


Danke für die wertvollen Anregungen.
 
Zurück
Oben