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

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

Thema: Probleme mit Modbus RTU Device

  1. #1
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe einen intelligenten Zähler in meinem Zählerschrank. Typ: SDM630 Modbus. Diesen versuche ich jetzt mit meiner Wago 750-881 + 750-653 ( RS485 ) auszulesen. Die Verdrahtung passt soweit, ich bekomme keinen TimeOut. Auch der SDM630 zeigt eine korrekte Kommunikation an. Allerdings bekomme ich es nicht hin, die Register auszulesen. Ich nutze den Modbus Konfigurator:

    Modbus.PNG

    Hier ein Auszug aus dem Register Datenblatt des SDM630:

    sdm630_modbus.jpg

    Ich versuche die aktuelle Spannung an L1 auszulesen. Dazu habe ich zwei Wörter deklariert mit der Adresse 1 + 2. Allerdings bekomme ich als Anzeige nicht die gewünschten z.B. 231.7V sondern 6183. Ich komme hier nicht weiter und hoffe es kann mir jemand auf die Sprünge helfen.

    Danke und Gruß
    Kay
    Zitieren Zitieren Probleme mit Modbus RTU Device  

  2. #2
    Registriert seit
    20.01.2012
    Beiträge
    98
    Danke
    0
    Erhielt 36 Danke für 34 Beiträge

    Standard

    Hallo,

    L1 ist auf Adresse 0, nicht 1. L2 ist dann Adresse 2. Leider wird bei Modbus immer so blöde gezählt und zum Teil implementiert. Von 30001 muß als Adresse im Telegramm 30001 abgezogen werden, so daß Du bei 0 landest. Siehst Du auch in der Spalte Modbus Protocol Start Address.

    Gruß

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

    Kayle (22.01.2016)

  4. #3
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo,

    ok das habe ich verstanden. Die beiden Register werden jetzt ausgelesen.

    Getestet habe ich den Zähler am PC mit RS485 Adapter. Mit den Einstellungen Float32 und Word Swap bekam ich die Spannung korrekt angezeigt. In Codesys muss ich das jetzt noch irgendwie zusammenbauen um korrekte Werte zu erhalten.

    Gruß Kay

  5. #4
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo nochmal,

    ich versuche verzweifelt die beiden ausgelesenen Register ( Word ) in ein lesbares Format zu wandeln. Auf dem PC erreiche ich das in dem ich "Word Swap" aktiviere. Wie kann ich das in Codesys realisieren ?

    Gruß Kay

  6. #5
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Poste doch mal die beiden Words und dann, was als Ergebnis rauskommen sollte.
    Als Freelancer immer auf der Suche nach interessanten Projekten.

  7. #6
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Also hier ein Screenshot:

    words.PNG

    Die Spannung beträgt: 233,9V

    Danke und Gruß Kay

  8. #7
    Registriert seit
    18.09.2013
    Beiträge
    66
    Danke
    0
    Erhielt 11 Danke für 9 Beiträge

    Standard

    Aus der Oscat Lib:
    erst DWORD_OF_WORD und dann DW_TO_REAL.

    Die Bibliothek kann man auch öffnen und reinschauen wie es gemacht wird. Ist kein Hexenwerk.

  9. #8
    Registriert seit
    15.05.2013
    Beiträge
    58
    Danke
    4
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Hi, kannst auch folgendes machen, wenn du dir nicht die Oscatlib reinladen willst. Deklarier dir einen neuen Baustein, Typ Funktion, Rückgabetyp REAL, Sprache ST, Name bspw. DW_TO_R:
    In der Variablendeklaration dann:
    Code:
    FUNCTION DW_TO_R : REAL
    VAR_INPUT
        w1: WORD;
        w2: WORD;
    END_VAR
    VAR
        w: ARRAY[0..1] OF WORD;
        pR: POINTER TO REAL;
    END_VAR
    Im Programmcode:
    Code:
    w[0] := w1;
    w[1] := w2;
    
    pR := ADR(w);
    
    DW_TO_R := pR^;
    In deinem gewöhnlichem Programm (PLC_PRG) oder was auch immer legst du dir dann eine Variable "Messwert : REAL" an.

    Im Programmteil kannst du dann die vorher angelegte Funktion nutzen:
    Code:
    Messwert:= DW_TO_R(65493, 17258);
    Dein Messwert besteht aus 2 Wörten, die "verdreht" sind, daher würden Sie umgekehrt in den Wert eingehen. Hatte mal das gleiche Problem.

  10. #9
    Registriert seit
    07.11.2010
    Beiträge
    132
    Danke
    4
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Mit der Function DW_TO_REAL sollte es auf jedenfall klappen. Verwendest du DWORD_TO_REAL klappt es nicht. Der Hintergrund ist das die Oscat Variante das BIT Muster in einer Variabele des Types REAL verschiebt. DWORD_TO_REAL würde nur den Zahlenwert transferieren.

  11. #10
    Kayle ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.10.2014
    Beiträge
    161
    Danke
    34
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo an alle Helfer,

    vielen Dank. Das mit der Oscat Lib hat prima funktioniert.

    @SPS-A: Werde ich gleich probieren.

    Gruß Kay

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 07.01.2016, 18:04
  2. Modbus RTU Gateway mit Puffer gesucht
    Von Medium im Forum Feldbusse
    Antworten: 6
    Letzter Beitrag: 27.05.2014, 09:19
  3. Antworten: 0
    Letzter Beitrag: 03.04.2014, 14:26
  4. Modbus rtu mit PCS7 V8.0 AS RTX
    Von Heinz im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 26.11.2012, 18:10
  5. Modbus RTU Projekt mit freemodbus
    Von bbking im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 27.06.2011, 19:46

Lesezeichen

Berechtigungen

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