Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

SDM630-Modbus-V2 mit PFC200

annD
2017-09-18
2017-11-26
  • annD

    annD - 2017-09-18

    Hallo,

    ich möchte gerne oben genannten Energiezähler von Eastron mit einem PFC200 und Codesys 3.5 SP11 per Modbus abfragen. Ich habe den Zähler mit ca. 3m grünen KNX-Kabel und jeweils 150 Ohm Abschlußwiderständen am onboard X3 RS-232/RS-485 angeschlossen.

    Im WBM habe ich "Serial Interface" auf "unassigned" umgestellt und in der SPS-Shell "serialmode" auf "RS485" eingestellt. Links habe ich dann "Modbus_COM_Port", "Modbus_Master_COM_Port" und "Modbus_Slave_COM_Port" untereinander eingehängt. COM-Port habe ich auf 1 gestellt - Ist das für die Onboard-Schnittstelle richtig? Dann habe ich einen Kanal angelegt und möchte ein "Input Register" mit FC4 lesen. Ich hänge eine Seite von der Eastron Registerbeschreibung an.

    Nun scheint es auf der Seite vom Zähler soweit zu funktionierten, da dieser ein blinkendes "Hörersymbol" anzeigt - was lt. Händler auf eine funktionierende Anfrage und eine gesendete Antwort hinweist. Der Zähler sendet also Daten. Damit sollte die Verkabelung grundsätzlich auch ok sein.

    Leider kommen diese Antworten aber nicht in Codesys an, weil dort unter "byModbusError" nach Ablauf der eingestellten "Responce Timeout" z.B. 10000 ms ein "Responce Timeout" angezeigt wird. Beim Master habe ich "automatischer Neustart Kommunikation" angehakt und so läuft das kontinuierlich ab.

    Was kann ich hier ändern, damit der Zähler per Modbus abgelesen werden kann?

    Gruß annD

    PS: In der Überwachungsliste sehe ich unter "m_ModbusRequest" bei "byModbusError" einen "RESPONCE_CRC_FAIL".

    IMG: Modbus_Register.JPG

     
  • eschwellinger

    eschwellinger - 2017-09-19

    Hi,
    ich würde mal für einen Versuch Pin 3 und 8 vertauschen,
    das ist meist das einzige was da schief gehen kann.

    Achso, was ist mit den Offsets?
    In dem Datenblatt steht ja was mit Offset 30000... usw.

    Grüße
    Edwin

    IMG: RS485.jpg

     
  • annD

    annD - 2017-09-19

    Hi,

    das Vertauschen der Pins 3 und 8 habe ich schon versucht. Wenn es anders herum verbunden ist, zeigt der Zähler kein Sendesymbol an. Seltsamerweise werden diese aber auch nicht mehr angezeigt, wenn ich Pullup- bzw. Pulldownwiderstände hinzufüge.

    Müssen die Adressen im Modbuskonfigurator inkl. Offset angegeben werden oder nur die Parameternummer im jeweiligen Register. Also für Register 30011 als Funktion code 4 und Parameter 6?

    Gruß annD

     
  • eschwellinger

    eschwellinger - 2017-09-19

    Hi,

    es ist halt leider bei Modbus immer so ein "gestochere" ;-(
    Einfach ausprobieren und hinterher weiß man es besser - aaaaaaaaaaah Modbus Hölle

    Grüße
    Edwin

     
  • annD

    annD - 2017-09-19

    Kann dieser CRC-Fehler nur von den Registern bzw. der Abfrage (PFC200 bzw. Codesys) verursacht werden oder hängt dies mit anderen Fehlern (Verkabelung, Terminierung usw.) zusammen?

     
  • eschwellinger

    eschwellinger - 2017-09-19

    Hi,
    in deinem Screenshot sehe ich nur einen Timeout, wo siehst du den CRC?
    Timeout ist wenn der Slave nicht antwortet (hast du mal die Timeout Zeit 1000 hochgedreht?)

    Grüße
    Edwin

     
  • annD

    annD - 2017-09-19

    Weiter unten habe ich "m_ModbusRequest" ausgeklappt und darunter bei "byModbusError" einen "RESPONCE_CRC_FAIL" gesehen. Die Timeout-Zeit habe ich versuchsweise schon auf 10000 hochgedreht.

     
  • eschwellinger

    eschwellinger - 2017-09-20

    Hi,

    jede Modbus Nachricht hat hintendran 2 Byte CRC (über’s ganze Paket).
    Wenn dieser CRC nicht stimmt kommt dieser Error Code.
    Ursache kann alles Mögliche sein, z.B. zu langes oder schlechtes Kabel etc… zuviel Abschlusswiederstände, zu wenige Abschlussiwederstände usw..

    Grüße
    Edwin

     
  • annD

    annD - 2017-09-23

    Hi,

    leider bin ich immer noch nicht weiter gekommen. Unter dem Modbus_Master_COM_Port erhalte ich einen Responce_CRC_Fail. Der verbundene Zähler zeigt mir in regelmäßigen Abständen (gleiche Zeit wie eingestelltes Timeout) ein Sendesymbol. Wenn kein Zähler verbunden ist (Stecker ausgesteckt) dann "UNDEFINED".

    Gibt es bei der Onboard-Schnittstelle an der Wago 8202 eine Einstellung für "Flow control"? Kann hier etwas falsch parametriert sein?

    Ich habe COM-Port 1, Baudrate 9600, Parität EVEN, Daten-Bits 8, Stop-Bits 1 und Slave-Adresse 1 eingestellt. Es ist nur der SDM630-Modbus-V2 mit der Wago verbunden.

    Gibt es noch Anregungen, was ich noch kontrollieren kann?

    Gruß annD

    PS: Ich habe inzwischen schon verschiedene Kabel und verschiedene Abschlusswiderstände probiert. EIB/KNX-Kabel und CAT7A-Kabel, Widerstände 100 Ohm, 120 Ohm und 150 Ohm. Mit und ohne verbundenen GND.

     
  • eschwellinger

    eschwellinger - 2017-09-29

    Hi,

    momentan habe ich keine Idee, als noch vielleicht einen anderen Slave zu testen,
    aber wohernehmen.
    Das mit den Settings kann man wirklich nur dort im Konfigurator einstellen.
    FlowControl (umstellen) geht so also nicht bzw ist nicht einstellbar.

    Grüße
    Edwin

     
  • annD

    annD - 2017-10-18

    Hallo,

    ich habe jetzt einen anderen Modbus-Slave getestet. Dazu habe ich auf einen Arduino Nano und einem MAX485-Modul das Modbus-Beispielprogramm von https://github.com/andresarmento/modbus-arduino

    Gibt es jemanden, der auf einem PFC200 schon eine Modbus-Verbindung mit dem Codesys 3.5 SP11 am Laufen hat?

    Gruß annD

     
  • eschwellinger

    eschwellinger - 2017-10-18

    Hi,
    gibt mir ein wenig Zeit, ich checks mal mit 2x PFC200
    der eine Modbus Master der andere Slave.

    Grüße
    Edwin

     
  • annD

    annD - 2017-11-07

    Hallo,

    gibt es schon neue Erkenntnisse oder Hinweise?

    Schöne Grüße,
    annD

     
  • eschwellinger

    eschwellinger - 2017-11-07

    Hi,
    sorry noch nicht dazu gekommen, dauert noch.
    Grüße
    Edwin

     
  • GordiTron - 2017-11-26

    Vielleicht ist ja dein Problem schon gelöst?!

    Ich würde ein USB-RS485 Adapter in den Bus mit einbinden und das Programm ModbusPoll installieren.
    http://www.modbustools.com/modbus_poll.html

    Mit diesem Programm kannst du testen ob der Modbus erst einmal funktioniert und ob dein Teilnehmer antwortet!
    (Das Programm im PFC must du stoppen und die richtigen Parameter einstellen!)

    Zweiten Schritt (kann auch der erste sein):
    Du kannst dann auch auf den Bus sehen! Starte ein einfaches Terminalprogramm, stelle die Parameter ein und drücke auf start.
    An dieser Stelle siehst du, welchen Daten vom PFC gesendet werden und was/ob der Zähler Antwortet.

    Hast du das Startregister in HEX eingestellt?

    Gruß GordiTron

     
  • GordiTron - 2017-11-26

    Achso, noch eins.

    Beim der RS485 gibt es angaben A+ und B- sowie A- und B+ !
    Du solltest dich nur nach + und - richten!
    Am Anfang und am Ende einen 120Ohm Widerstand!
    Schirm beidseitig auflegen und verdrilltes Kabel nutzen!
    Erdung am PFC überprüfen

    Gruß GordiTron

     

Log in to post a comment.