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

Ergebnis 1 bis 6 von 6

Thema: Funktion um in einem DINT die beinhaltenden Worte zu tauschen?

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi zusammen

    ich kopiere mit
    Code:
    SysMemCpy(ADR(typSlaveData[1].Write_Data[0]), ADR(typModBus_Init[1].InitZustand), SIZEOF(typModBus_Init[1].InitZustand))
    wobei .Write_Data zwei Worte 16 Bit sind und .InitZustand ein DINT ist. Beim Kopieren muss ich die zwei Wörter im DINT tauschen. Also MSW gegen LSW austauschen.

    Gibt es da eine einfache Funktion?

    mfg René
    Zitieren Zitieren Funktion um in einem DINT die beinhaltenden Worte zu tauschen?  

  2. #2
    Registriert seit
    19.01.2012
    Ort
    Bielefeld
    Beiträge
    19
    Danke
    18
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Bin mir nicht 100% sicher aber in der OSCAT lib (www.oscat.de) gibts ne menge solche funktionen.. einfach mal die doku anschauen und gucken, ob was dabei ist, dass du suchst.

    http://oscat.de/downloadmanager/fini...on-german.html

  3. Folgender Benutzer sagt Danke zu m0erk für den nützlichen Beitrag:

    vollmi (10.02.2012)

  4. #3
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Kann man schnell selbst machen:
    Code:
    FUNCTION SwappedWords_to_DInt : DINT
    VAR_INPUT
       Words:ARRAY[0..1] OF WORD;
    END_VAR
    VAR
       WordsAt0 AT %MB0:ARRAY[0..1] OF WORD;
       WordsAt4 AT %MB4:ARRAY[0..1] OF WORD;
       DIntAt2 AT %MB2:UDINT;
    END_VAR
    
    WordsAt0:=Words;
    WordsAt4:=Words;
    SwappedWords_to_DInt:=DIntAt2;

  5. #4
    Registriert seit
    17.10.2007
    Ort
    35043 Marburg
    Beiträge
    176
    Danke
    4
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Hallo,

    kann man noch schneller selbst machen!
    Code:
    typSlaveData[1].Write_Data[0]:=DINT_TO_WORD(SHR(typModBus_Init[1].InitZustand,16)); //Schiebe MSW ins LSW
    typSlaveData[1].Write_Data[1]:=DINT_TO_WORD(typModBus_Init[1].InitZustand);//MSW wird ignoriert
    @StructuredTrash
    absolute Merkeradressen in einer Function, wir sind doch hier nicht bei Step 7...
    Grüße...
    Paradox ist, wenn sich jemand im Handumdrehen den Fuß bricht.

  6. Folgender Benutzer sagt Danke zu Simatiker für den nützlichen Beitrag:

    vollmi (15.02.2012)

  7. #5
    Registriert seit
    08.01.2007
    Beiträge
    54
    Danke
    1
    Erhielt 10 Danke für 8 Beiträge

    Standard

    MyDINT:=ROR(MyDINT,16);
    oder
    MyDINT:=ROL(MyDINT,16);

  8. Folgende 2 Benutzer sagen Danke zu soma für den nützlichen Beitrag:

    RobiHerb (16.02.2012),vollmi (16.02.2012)

  9. #6
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Simatiker Beitrag anzeigen
    @StructuredTrash
    absolute Merkeradressen in einer Function, wir sind doch hier nicht bei Step 7...
    Gerne mache ich das auch nicht, aber leider kann man sich in CoDeSys bei der absoluten Adressierung nicht auf andere Variablen beziehen. Solange man die Funktion nicht in eine Bibliothek packt, ist das für mich aber noch vertretbar.

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 04.01.2012, 07:45
  2. DINT HI and LOW Bytes tauschen
    Von HK09 im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 29.05.2011, 23:40
  3. Antworten: 5
    Letzter Beitrag: 17.03.2011, 12:12
  4. Array of Char To DINT - ich krieg die Krise
    Von Beren im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 26.11.2009, 10:12
  5. Funktion in einem FC nicht klar
    Von roman79 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 18.02.2009, 10:03

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •