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

Ergebnis 1 bis 4 von 4

Thema: 2 x 16 Bit Word in 1 x 32 (Low - und High Word) umwandeln

  1. #1
    Registriert seit
    20.10.2012
    Ort
    Hamburg
    Beiträge
    17
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin Zusammen!

    Ich verwende TIA V11 mit einer S7-1200. Über den Profinet - Bus erhalte ich von einem Lenze-Fu ein Statuswort mit einer aus zwei 16 Bit Variablen zusammengestetzen Positionsangabe einer Linearachse.

    Meine Frage:
    Wie kann ich diese beiden 16 Bit - Variablen zu einer 32 Bit Variablen zusammenfügen? Hilft mir CONVERT weiter?



    Lenze schreibt hier (für mich zu kryptisch...):

    Umrechnung von zwei 16-Bit-Variablen (Low-Word (wLowWord) und High-Word (wHighWord)) in eine 32-Bit-Variable (dnOriginalValue_p):
    dnOriginalValue_p:=DWORD_TO_DINT(SHL(WORD_TO_DWORD(wHighWord),16) OR wLowWord)

    Anwendungen:
    Bei der Übertragung von Positionswerten (32-Bit-Werte) steht auf den Systembausteinen CAN1, CAN2, CAN3 sowie AIF1, AIF2 und AIF3 jeweils nur ein 32-Bit-Wert als Systemvariable zur Verfügung. In Fällen, in denen zwei Positionswerte pro Systembaustein übertragen werden sollen, können über die o.a. Umrechnungsformeln auch die beiden anderen Datenwörter (16-Bit-Werte) zur Übertragung von 32-Bit-Werten genutzt werden, wenn der Wert in Low- und High-Word gesplittet wird und nach der Übertragung wieder in einen 32-Bit-Wert gewandelt wird.




    Grüße aus Hamburg
    Bero
    Zitieren Zitieren 2 x 16 Bit Word in 1 x 32 (Low - und High Word) umwandeln  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Zitat Zitat von Bero@ Beitrag anzeigen
    Wie kann ich diese beiden 16 Bit - Variablen zu einer 32 Bit Variablen zusammenfügen?
    Lenze hat Dir doch schon die Antwort gegeben - in SCL:
    Lenze schreibt hier (für mich zu kryptisch...):

    Umrechnung von zwei 16-Bit-Variablen (Low-Word (wLowWord) und High-Word (wHighWord)) in eine 32-Bit-Variable (dnOriginalValue_p):
    dnOriginalValue_p:=DWORD_TO_DINT(SHL(WORD_TO_DWORD(wHighWord),16) OR wLowWord)
    Schreibe diesen roten SCL-Code in einen FC mit den Inputs wHighWord und wLowWord und dem Output dnOriginalValue_p (DINT)

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Bin mir bei dem Siemens-SCL in TIA grad nicht sicher, es könnte sein, daß Du so schreiben mußt:
    Code:
    dnOriginalValue_p := DWORD_TO_DINT(SHL(WORD_TO_DWORD(wHighWord),16) OR WORD_TO_DWORD(wLowWord)) ;
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    Bero@ (07.06.2013)

  5. #4
    Avatar von Bero@
    Bero@ ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.10.2012
    Ort
    Hamburg
    Beiträge
    17
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Harald!

    Vielen Dank für die Antwort. Auf die einfachste Lösung, das der Code von Lenze schon SCL ist bin nicht gekommen.... Ich habe aber bis jetzt auch alles nur in KOP gemacht.

    Es funzt mit beiden Varianten. Die Syntax von SHL() ist im TIA ein wenig anders. Das wars auch schon.
    #dnOriginalValue_p := DWORD_TO_DINT(SHL(IN := WORD_TO_DWORD(#wHighWord), N := 16) OR WORD_TO_DWORD(#wLowWord))


    Ich habe leider noch eine Differenz vom tatsächlichen Wert (z.B. Verstellweg 55 mm) zum angezeigten/errechneten Wert (Anzeige 60 mm). Am Nullpunkt bzw. Referenzpunkt der Achse zeigen beide Wert 0. Ich schätze mal, es liegt in einer Ungenauigkeit in der Umrechnung zwischen dem Inkrementalgeber auf der Motorwelle und der tatsächlichen Umdrehung an der Getriebewelle. Das finde ich aber bestimmt nächste Woche noch mit Lenze raus.

    Danke für die Hilfe und ein schönes Wochenende!
    Bero

Ähnliche Themen

  1. Word in Real umwandeln
    Von babylon05 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 20.06.2012, 11:11
  2. Antworten: 10
    Letzter Beitrag: 16.09.2009, 07:50
  3. Datentyp word umwandeln
    Von win98 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 10.08.2009, 14:09
  4. WORD Variable umwandeln
    Von boggle im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 06.08.2009, 11:41
  5. Antworten: 4
    Letzter Beitrag: 08.07.2008, 08:52

Stichworte

Lesezeichen

Berechtigungen

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