Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Results 1 to 10 of 10

Thread: Wandeln Big Endian in Little Endian

  1. #1
    Join Date
    09.11.2006
    Posts
    773
    Danke
    44
    Erhielt 31 Danke für 29 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich stehe gerade ein wenig auf dem Schlauch.
    Ich verwende TIA V15 SP1 und eine 1512FSP als PLC.

    Nun muss ich von einem Microcontroller über Profinet Daten auslesen. Ich habe 32 byte Steuerdaten und 64 Byte Empfangdaten.

    Ich habe natürlich die Daten schön in die vorgegebenen Strukturen gepackt und nun in einem DB gepackt. In den Struktueren habe ich DINT, Real, Bool, INT als Datentypen.

    Bei der S7 300 konnte man das ja mit TAW lösen. Das klappt bei mir nicht mehr der Befehl wird immer rot dargestellt. Außerdem möchte ich das natürlich gerne möglichst symbolisch machen.
    In SCL hab ichs mit SWAP WORD versucht, aber das geht ja nicht bei Strukturen.

    Also ich habe aktuell einen Bereich im Rohdaten Format. Hier könnte ich auch ein Array anlegen wenns einfacher ist.
    Schlussendlich sollen die Daten aber in der STruktur liegen, da ich damit ja arbeiten muss.

    Wie stelle ich das mit Tia am geschicktesten an ?

    Danke für eure Hifle
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!
    Reply With Quote Reply With Quote Wandeln Big Endian in Little Endian  

  2. #2
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    15,663
    Danke
    1,294
    Erhielt 4,613 Danke für 3,729 Beiträge

    Default

    Quote Originally Posted by mitchih View Post
    In SCL hab ichs mit SWAP WORD versucht, aber das geht ja nicht bei Strukturen.
    Das sollte aber gehen, z.B. so
    Code:
    #iResult := WORD_TO_INT( SWAP(INT_TO_WORD(#myStruct.iVar)) );
    #rResult := DWORD_TO_REAL( SWAP(REAL_TO_DWORD(#myStruct.rVar)) );
    TAW und TAD können nur in AWL verwendet werden - will TIA V15.1 die Anweisungen nicht mehr?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Join Date
    14.01.2015
    Posts
    5,850
    Danke
    1,255
    Erhielt 1,273 Danke für 948 Beiträge

    Default

    Ist das Gerät denn per gsdml angebunden? Evtl könnte man dann in der Hardwarekonfig von Intel auf Motorola umstellen
    Mit Grüßen

    Gesendet von meinem Nokia 6310

  4. #4
    mitchih is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    09.11.2006
    Posts
    773
    Danke
    44
    Erhielt 31 Danke für 29 Beiträge

    Default

    Hallo,
    Danke für die Tips,
    Also TAD bzw TAW wollen nicht. Also in AWL.
    Das hatte ich getestet.
    Wie bekommen ich den die Daten in mein struct?
    Also
    Struct:= swap_word( meine andere Struktur oder 2 Byte )
    Am liebsten würde ich ja auch den ganzen Block wandeln. Mit einer Schleife oder so.



    Gesendet von iPhone mit Tapatalk
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!

  5. #5
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    15,663
    Danke
    1,294
    Erhielt 4,613 Danke für 3,729 Beiträge

    Default

    Quote Originally Posted by mitchih View Post
    Am liebsten würde ich ja auch den ganzen Block wandeln. Mit einer Schleife oder so.
    Es muß jede Variable einzeln ge-SWAP-t werden. Schleife oder so ginge nur wenn das ein Array ist. Wie sieht die Struktur der 64 Byte Empfangdaten aus?
    Ich denke mal, 20 Variablen mit einzelnen Anweisungen zu SWAPen ist eh effizienter und auf jeden Fall verständlicher als eine Schleife basteln.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    mitchih is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    09.11.2006
    Posts
    773
    Danke
    44
    Erhielt 31 Danke für 29 Beiträge

    Default

    Ich habe ein Struct mit 16 Bool dann ein int ein paar Ding und reals
    Bei den Ausgängen sind das 2 Strukturen mit je 16 bool und dann real und int.
    Die Ints und real usw sind ja kein Problem suche nur eine Lösung fur meine Boolschen Strukturen.



    Gesendet von iPhone mit Tapatalk
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!

  7. #7
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    15,663
    Danke
    1,294
    Erhielt 4,613 Danke für 3,729 Beiträge

    Default

    Warum willst Du die BOOLs SWAPen? Du brauchst die doch nur in der Reihenfolge symbolisch deklarieren wie sie tatsächlich kommen und dann einfach symbolisch ansprechen.

    Die Byte-Reihenfolge Big Endian und Little Endian gilt nur für die Bytes innerhalb eines einfachen mehrByte-Datentyps (z.B. xINT, xWORD, xREAL). Bei BOOL und einByte-Datentypen (z.B. BYTE, CHAR) und bei zusammengesetzten Datentypen (z.B. Struct, Array) ist die Reihenfolge immer so, daß erst das erste Element und zuletzt das letzte Element kommt.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    15,663
    Danke
    1,294
    Erhielt 4,613 Danke für 3,729 Beiträge

    Default

    Quote Originally Posted by mitchih View Post
    Also TAD bzw TAW wollen nicht. Also in AWL.
    Das hatte ich getestet.
    Ich habe (noch) kein TIA V15.1, doch vielleicht hat man festgestellt, daß TAW anders funktioniert als in der Hilfe beschrieben, und anstatt die Hilfe/Dokumentation/Handbuch zu korrigieren hat man die Anweisung entfernt/gesperrt?
    Systemhandbuch STEP 7 und WinCC Engineering V15.1 (10/2018 )
    Abschnitt TAW: Bytes im rechten Wort des Akkumulators 1 tauschen (S7-1500)
    Das Beispiel "Funktionsweise der Anweisung anhand konkreter Operandenwerte" ist seit V13 SP1 (2014) falsch. Siemens bekommt die zig hundert Fehler in den vielen tausend Seiten der TIA-Dokumentation einfach nicht korrigiert... Hauptsache viele neue Funktionen einführen, die ein echter Programmierer nicht braucht...

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Heinileini (17.01.2020)

  10. #9
    mitchih is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    09.11.2006
    Posts
    773
    Danke
    44
    Erhielt 31 Danke für 29 Beiträge

    Default

    Danke für alle tips also ich muss auch die boolsche Struktur ändern aber da passe ich dann die Struktur beim Empfang jetzt an


    Gesendet von iPhone mit Tapatalk
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!

  11. #10
    Join Date
    08.03.2012
    Posts
    12
    Danke
    10
    Erhielt 5 Danke für 4 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dafür gibt es in TIA in SCL doch die Befehle READ_LITTLE, WRITE_LITTLE, READ_BIG und WRITE_BIG.
    Benötigt zwar einen Zwischenspeicher, etwas umständlich, aber funktioniert.

    Juppi

Similar Threads

  1. TIA Umwandlung von little Endian to Big Endian DWORD
    By KaiserA in forum Simatic
    Replies: 7
    Last Post: 25.09.2015, 10:38
  2. Big Endian und Little Endian vereinen
    By SY50 in forum CODESYS und IEC61131
    Replies: 1
    Last Post: 11.10.2013, 08:25
  3. Replies: 13
    Last Post: 12.08.2012, 16:21
  4. Little Endian / Big Endian in S7 und DP Slave
    By superkato in forum Simatic
    Replies: 8
    Last Post: 15.05.2011, 08:12
  5. Little/Big Endian
    By Hannes in forum Sonstige Steuerungen
    Replies: 0
    Last Post: 18.06.2007, 09:57

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •