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".
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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".
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
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
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
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?
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
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.
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
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.
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
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
Hi,
gibt mir ein wenig Zeit, ich checks mal mit 2x PFC200
der eine Modbus Master der andere Slave.
Grüße
Edwin
Hallo,
gibt es schon neue Erkenntnisse oder Hinweise?
Schöne Grüße,
annD
Hi,
sorry noch nicht dazu gekommen, dauert noch.
Grüße
Edwin
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
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