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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Umrechnung 32-Bit-Werte in Low- und High-Wort (1 x DINT in 2 x INT)

  1. #1
    Registriert seit
    04.02.2006
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!!!

    Brauche Hilfe eine 32-Bit-Variable in zwei 16-Bit-Variablen umzurechnen für eine Positionsvorgabe über Profibus.

    lt Hersteller hat das auf folgende weise zu geschehen:

    Umrechnung von einer 32-Bit-Variable (dnOriginalValue_p) in zwei 16-Bit-Variablen (Low-Word (wLowWord) und High-Word (wHighWord)):
    wHighWord:=DINT_TO_WORD(SHR(DINT_TO_DWORD(dnOriginalValue_p),16))
    wLowWord:=DINT_TO_WORD(dnOriginalValue_p);

    So jetzt die Frage an die "C" Profis: Wie schaut das für S7 aus?

    MfG

    Joe
    Vertrauen ist gut, Kontrolle ist besser.
    Zitieren Zitieren Umrechnung 32-Bit-Werte in Low- und High-Wort (1 x DINT in 2 x INT)  

  2. #2
    Registriert seit
    10.02.2009
    Ort
    Karlsruhe
    Beiträge
    42
    Danke
    0
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo Joe,

    was für eine Umwandlung soll das denn eigentlich sein?

    Die Zeilen, die Du gepostet hast, sind ja wohl aus einer SCL-Quelle.
    Wenn der Hersteller meint, dass das so geht kann man das ganze in AWL übersetzen - und fertig.

    MFG
    quax

  3. #3
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Also die einfachst wenn auch unsauberste Variante:
    Originalvalue steht beispielsweis im DBD0 irgend eines DB's, dann einfach:
    L DBW0 fürs LowWord
    L DBW2 fürs HighWord

    Wobei ich mir bei Low und Highword jetzt grad nicht sooo sicher bin, je nachdem ob das Codeschnipsel bereits für Siemens war oder allgemein ist ...
    Also für Little oder Big Endian ...

    Mfg
    Manuel
    Geändert von MSB (27.08.2009 um 12:01 Uhr)
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  4. #4
    Registriert seit
    14.05.2009
    Beiträge
    310
    Danke
    59
    Erhielt 18 Danke für 15 Beiträge

    Standard

    gibt der Befehl RND eigentlich eine INT oder DINT aus?

  5. #5
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.242 Danke für 973 Beiträge

    Standard

    Zitat Zitat von AWL-Joe Beitrag anzeigen
    Hallo!!!

    Brauche Hilfe eine 32-Bit-Variable in zwei 16-Bit-Variablen umzurechnen für eine Positionsvorgabe über Profibus.

    lt Hersteller hat das auf folgende weise zu geschehen:

    Umrechnung von einer 32-Bit-Variable (dnOriginalValue_p) in zwei 16-Bit-Variablen (Low-Word (wLowWord) und High-Word (wHighWord)):
    wHighWord:=DINT_TO_WORD(SHR(DINT_TO_DWORD(dnOriginalValue_p),16))
    wLowWord:=DINT_TO_WORD(dnOriginalValue_p);

    So jetzt die Frage an die "C" Profis: Wie schaut das für S7 aus?

    MfG

    Joe
    Ich würd erstmal testen, ob du überhaupt was wandeln musst.
    Ansonsten so ähnlich:

    Code:
    L #Sollwert
    AUF DB10
    T DBD10
    L DBW10
    T DBW14
    L DBD12
    T #AUSGABE
    Gruß
    Dieter

  6. #6
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard

    Zitat Zitat von element. Beitrag anzeigen
    gibt der Befehl RND eigentlich eine INT oder DINT aus?
    Du willst doch eine 32-Bit Realzahl runden. Also kommt auch eine 32-Bit Ganzzahl raus -> Dint.

    wobei bei den positiven Zahlen kein Unterschied zu Int bis 32767 besteht.

    Gruß wolder

  7. #7
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Wenn die Bytrereihenfolge beim Empfängersystem gleich ist würde ich es so probieren:
    Code:
    L  #32BitVar
    T  #16BitLowWord
    SRD  16
    T  #16BitHighWord
    Ansonsten eben andersherum:
    Code:
    L  #32BitVar
    T  #16BitHighWord
    SRD  16
    T  #16BitLowWord
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  8. #8
    Registriert seit
    14.05.2009
    Beiträge
    310
    Danke
    59
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Zitat Zitat von wolder Beitrag anzeigen
    Du willst doch eine 32-Bit Realzahl runden. Also kommt auch eine 32-Bit Ganzzahl raus -> Dint.

    wobei bei den positiven Zahlen kein Unterschied zu Int bis 32767 besteht.

    Gruß wolder
    Mein Problem ist: Ich rechne in Real, runde, dann will ich das Ergebnis auf ein analoges AW geben will. Kann ich die Dint denn irgendwie zu int machen? Wenn ich die Dint einfach aufs AW transferiere, beeinflusse ich ja das nächste AW auch noch.

  9. #9
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von element. Beitrag anzeigen
    .....
    Wenn ich die Dint einfach aufs AW transferiere, beeinflusse ich ja das nächste AW auch noch.
    Nein, das stimmt so nicht.
    Code:
    L  MD 62    //Lade den Inhalt des Merkerdoppelwortes 62 in Akku 1
    T  AW 0    // transferiert das Lowword (Akku 1 L) in das AW 0
    Also genaugenommen wird mit obigen code nur das MW64 in das AW0 geschrieben. AW 2 bekommt davon nichts mit.
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  10. #10
    Registriert seit
    14.05.2009
    Beiträge
    310
    Danke
    59
    Erhielt 18 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ah, sehr gut. danke!

Ähnliche Themen

  1. Fifo für DINT Werte
    Von Poldi007 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 16.08.2010, 13:30
  2. Antworten: 11
    Letzter Beitrag: 04.10.2008, 12:30
  3. Umrechnung in AWL
    Von hans55 im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 17.03.2008, 21:35
  4. VAT: HEX <-> DEZ Umrechnung
    Von derbenny im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 13.11.2007, 16:00
  5. Antworten: 7
    Letzter Beitrag: 29.08.2006, 18:40

Lesezeichen

Berechtigungen

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