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

Ergebnis 1 bis 4 von 4

Thema: REAL wert in zwei worte aufteilen (SCL)

  1. #1
    Registriert seit
    19.04.2010
    Beiträge
    23
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich stecke wieder vor einem Problem mit Typumwandlungen.

    in einer ET200S wird ein Wert als REAL berechnet, anschließend soll er mittels Profibus auf einen DP/DP Koppler geschrieben werden wo es wieder mit einer TDC ausgelesen wird. Bisher habe ich das immer so gemacht

    Code:
    PQW30 := DWORD_TO_WORD(SHR(IN:=DINT_TO_WORD(REAL_TO_DINT(wert),N:=16));
    PQW32 := DWORD_TO_WORD(DINT_TO_WORD(REAL_TO_DINT(wert)))

    jetzt wollte ich diese umständlich Methode abkürzen und einfach mit einem Doppelwortausgabe verkürzen
    Code:
    PQD := REAL_TO_DWORD(wert);
    doch die Ausgabe stimmt leider nicht. hab keine Ahnung woran das liegen könnte; vielleicht hat ja von euch einer eine Lösung!
    -- > schon jetzt vielen dank fürs reindenken!
    Zitieren Zitieren REAL wert in zwei worte aufteilen (SCL)  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    dein Ansatz wäre bei dem Befehl AT richtig aufgehoben - du bildest auf deine REAL-Variable eine zusätzlich AT-Sicht, die aus 2 Worten besteht und die weist du dann zu ...

    Gruß
    LL

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Hallo SPS-newbie,

    kann es sein, daß das TDC hinter dem DP/DP-Koppler gar kein REAL benötigt, sondern DINT?
    Zitat Zitat von SPS-newbie Beitrag anzeigen
    Bisher habe ich das immer so gemacht

    Code:
    PQW30 := DWORD_TO_WORD(SHR(IN:=DINT_TO_WORD(REAL_TO_DINT(wert),N:=16));
    PQW32 := DWORD_TO_WORD(DINT_TO_WORD(REAL_TO_DINT(wert)))
    Wegen REAL_TO_DINT wird der REAL-Wert explizit in einen DINT-Wert umgewandelt (ganz anderes Format
    auf Bit-Ebene!) und dabei auf eine ganze Zahl gerundet (Nachkommastellen verschwinden).
    Zitat Zitat von SPS-newbie Beitrag anzeigen
    jetzt wollte ich diese umständlich Methode abkürzen und einfach mit einem Doppelwortausgabe verkürzen
    Code:
    PQD := REAL_TO_DWORD(wert);
    REAL_TO_DWORD wandelt den REAL-Wert nicht um, sonden erzeugt nur eine andere Sicht auf die
    32-Bit-Variable, damit der Compiler nicht meckert.

    Zusammenfassung:
    1. Programm gibt einen DINT aus (als zweimal 16 Bit zerlegt)
    2. Programm gibt einen REAL aus (als 32 bit)

    Wenn tatsächlich DINT als Ausgabe gewünscht ist, dann so:
    Code:
    PQD := DINT_TO_DWORD(REAL_TO_DINT(wert));
    Wenn REAL als Ausgabe gewünscht ist, dann so:
    Code:
    PQD := REAL_TO_DWORD(wert);
    Gruß
    Harald
    Zitieren Zitieren Was soll denn ausgegeben werden: REAL oder DINT?  

  4. #4
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In STL kann man einfach schreiben:

    Code:
    L "wert"
    T PQD30
    In SCL müssen die Typen übereinstimmen.
    Das ist aber auch kein Problem. Einfach PQD30 als ein REAL definieren.
    Dann ....

    Code:
    "pqd30_real" := "wert" ;
    Jesper M. Pedersen
    Zitieren Zitieren Wo ist das Problem ?  

Ähnliche Themen

  1. REAL-Wert in Word-Wert konvertieren
    Von Mohrchen im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.07.2011, 13:02
  2. Antworten: 5
    Letzter Beitrag: 17.03.2011, 12:12
  3. REAL Wert Vergleichen
    Von tomatensaft im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 05.09.2007, 16:22
  4. REAL-Wert simulator?
    Von michaonline im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.11.2006, 11:29
  5. Real Wert speichern
    Von Azubi im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 05.11.2006, 20:21

Lesezeichen

Berechtigungen

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