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

Ergebnis 1 bis 5 von 5

Thema: Messwert (Word) in Negativzahl umwandeln

  1. #1
    Registriert seit
    04.09.2012
    Beiträge
    38
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag,

    Ich habe das Problem das Ich von einem Modbus TCP Zähler Messwerte in Positiver und Negativer form erhalten kann.
    "Wirkleistung Phase 1 +/- kW/100"
    Jeder messwert besteht aus 2 Wörtern.

    bislang hatte Ich nur Positive werte, dies habe Ich mit folgenden Kode errechnet:
    Code:
    Spannung_A := (WORD_TO_REAL(MW1003)/100) + (WORD_TO_REAL(MW1002)*1000);
    aber Wie stelle Ich das an wenn Ich negativwerte auswerten muss?

    Ich erhalte z.B. momentan MW1004=65535 und MW1004=65328

    mein test war folgender aber leider ohne erfolg:
    Code:
    Spannung_A := (DWORD_TO_REAL((MW1003*1000000)+MW1002))/100
    Es gibt sicher eine Simple lösung aber Ich stehe auf der Leitung....
    Zitieren Zitieren Messwert (Word) in Negativzahl umwandeln  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Was genau für ein Format liegt dem denn zugrunde?
    Wäre auch ganz gut zu wissen, was bei einer positiven Zahl ankommt, damit man mal darüber nachdenken kann.
    Ich nehme mal an die beiden Word sind zusammengesetzt eine DINT.

    dann ist
    65535 = FFFF hex
    65328 = FF30 hex

    zusammengesetzt FFFF FF30 wäre dann als negative DINT --> -208


    Code:
    VAR
        myDInt : DInt;
        ptrWordArray : POINTER TO ARRAY[0..1] OF Word;
    END_VAR
    
    //Code:
    ptrWordArray := ADR(myDInt);
    
    ptrWordArray^[0] := MW1002;
    ptrWordArray^[1] := MW1003;


    Zum Schluß steht in myDint der Wert, das geht sowohl für die positiven, als auch für die negativen Werte, kann also immer so verwendet werden.
    Möglicherweise mußt du MW1002 und MW1003 noch vertauschen.

    Geändert von Ralle (04.07.2014 um 12:18 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    tiego ist offline Benutzer
    Themenstarter
    Registriert seit
    04.09.2012
    Beiträge
    38
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen dank Funktioniert super...

    eine Frage noch.
    Ich muss um die 200 werte so umrechnen.
    kann Ich das so 200x verwenden?


    danke

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    In myDInt steht ja dann dein "gewandelter" Wert, den kannst du wegspeichern und dann witermachen

    Code:
    ptrWordArray^[0] := MW1002;
    ptrWordArray^[1] := MW1003;
    
    Wert_001 := myDInt;
    
    
    ptrWordArray^[0] := MW1004;
    ptrWordArray^[1] := MW1005;
    
    Wert_002 := myDInt;
    
    
    ptrWordArray^[0] := MW1006;
    ptrWordArray^[1] := MW1007;
    
    Wert_003 := myDInt;
    
    ...
    
    


    Viel schöner wäre allerdings, wenn du die Word in einem Array hättest, dann ginge das perfekt mit einer Schleife zu machen.

    Code:
    For I:= 0 To 199 Do
    
        ptrWordArray^[0] := ModbusArray[(I * 2)];
        ptrWordArray^[1] := ModbusArray[((I * 2)+1)];
    
        WertArray[I] := myDInt;
    
    End_For;
    ModbusArray[0…399] of Word
    WertArray[0…199] of Dint
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    tiego ist offline Benutzer
    Themenstarter
    Registriert seit
    04.09.2012
    Beiträge
    38
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen dank,
    hatt sich alles erledigt und ich habe mir für so ne einfache sache 2 Tage verbraten.

    oft ist Fragen einfach besser...

    Vielen danke nochmals

Ähnliche Themen

  1. TIA Messwert in Zählwert umwandeln !
    Von ralalla im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 11.03.2014, 14:35
  2. Antworten: 3
    Letzter Beitrag: 07.06.2013, 17:37
  3. Word in Real umwandeln
    Von babylon05 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 20.06.2012, 11:11
  4. word in s5time umwandeln?
    Von nognogradio im Forum HMI
    Antworten: 7
    Letzter Beitrag: 20.04.2012, 13:04
  5. WORD Variable umwandeln
    Von boggle im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 06.08.2009, 11:41

Lesezeichen

Berechtigungen

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