Fehlerhafte Werte in Prozessabbild ModBus TCP Master
Posted: 08 Jun 2021, 14:53
Hallo zusammen,
ich habe ein ähnliches Problem, wie in viewtopic.php?f=10&t=1182 geschildert.
Problem:
Es stehen immer wieder falsche Werte in den Modbus TCP Master Devices im Systemabbild.
Software Setup:
Zum auslesen der Werte aus dem Systemabbild verwende ich Rust mit folgender Schnittstelle, die auf der piTest Software basiert: https://crates.io/crates/picontrol
Dies ist kein lese Fehler meiner Software beim Auslesen des Systemabbildes, sondern lässt sich auch der piTest mitverfolgen.
Setup:
a) RevPi-Connect mit 6 Modbus TCP Master Devices (Config RSC siehe Anhang),
b) RevPi-Compact mit 5 Modbus TCP Master Devices (Ein Modbus Geräte wurde mit den DIO des Compact ersetzt.)
die einzelnen Geräte haben unterschiedliche Action-Intervalle, da die Daten zu unterschiedlich kritisch sind. (Zwischen 500ms und 3000ms) Die Modbus Action Status werden von meiner Software ausgelesen und Daten eines Gerätes nur dann weitergereicht, wenn kein Fehler in allen Status Registern steht.
Um die Problematik mit doppelten Adressen zu umgehen werden aktuell bei 5 der Geräten die schreibbaren Register nicht wieder zurück gelesen. (Zusätzlich reduziert das auch noch die Anzahl der Modbus Aktionen).
Einzig für das Modbus Device, des RevPi-Connect, dass in der Compact Variante nicht mehr vorhanden ist werden einzelne Coils noch gelesen und beschrieben.
Meine Software greift alle 300ms lesend auf das Systemabbild zu und je nach Programmverlauf gibt es schreibende Zugriffe.
Zu beobachten ist, dass die Fehler vermehrt dann auftreten, wenn die Kontrollsoftware schreibend auf das Systemabbild zugreift und alle Geräte tatsächlich online sind.
Je nach Programmverlauf kann es passieren, dass einige Geräte ausgeschaltet werden und daher sowieso keine Werte mehr ausgelesen werden / keine Modus Aktionen stattfinden können.
Ist dies der Fall, scheinen die Werte im Systemabbild stabiler zu sein. (Leider ist der Betrieb dann nur eingeschränkt möglich).
Der RevPi-Compact scheint insgesamt mit dem Setup etwas stabiler zu laufen, was wahrscheinlich an weniger Modbus Aktionen liegt (konnte ich aber nicht final spezifizieren).
Die einzelnen Fehlerhaften Werte konnte ich auch nicht final erklären, es scheint allerdings in einigen Fälle zu passieren, dass einzelne Bits / bytes auf 0 (default) zurück fallen.
Dies scheint aber, wie auch im referenzierten Post beschrieben nur sehr kurzzeitig der Fall zu sein, sodass die fehlerhaften Werte nur ein, maximal zwei Abfrage-Zyklen an das Systemabbild anliegen.
Dies reicht bei den kritischen Werte allerdings schon aus, um den Betrieb signifikant zu stören. (Gerade auch bei Schreib-Aktionen an die Modbus-Geräte.)
Dies führt dann im weiteren Verlauf dazu, dass z.B. int_32 Werte fehlerhaft als positiv statt negativ interpretiert werden. Außerdem fallen die Coil-Werte kurzzeitig auf 0 ab, auch wenn ein stabiles 1 Signal an der Modbus Komponente anliegen sollte.
Da es sich insgesamt um 4 verschiedene Hardware Geräte bei den 6 Modbus Slaves handelt, der Fehler aber über alle hinweg auftritt, scheint auch eine Fehlerhafte Kommunikation mit einer Hardware-Komponente sehr unwahrscheinlich.
Fragen:
Falls weitere Log-Files benötigt werden, kann ich versuche diese Zeitnah zur Verfügung zu stellen / zu generieren.
Mit freundlichen Grüßen
Simon
ich habe ein ähnliches Problem, wie in viewtopic.php?f=10&t=1182 geschildert.
Problem:
Es stehen immer wieder falsche Werte in den Modbus TCP Master Devices im Systemabbild.
Software Setup:
Zum auslesen der Werte aus dem Systemabbild verwende ich Rust mit folgender Schnittstelle, die auf der piTest Software basiert: https://crates.io/crates/picontrol
Dies ist kein lese Fehler meiner Software beim Auslesen des Systemabbildes, sondern lässt sich auch der piTest mitverfolgen.
Setup:
a) RevPi-Connect mit 6 Modbus TCP Master Devices (Config RSC siehe Anhang),
b) RevPi-Compact mit 5 Modbus TCP Master Devices (Ein Modbus Geräte wurde mit den DIO des Compact ersetzt.)
die einzelnen Geräte haben unterschiedliche Action-Intervalle, da die Daten zu unterschiedlich kritisch sind. (Zwischen 500ms und 3000ms) Die Modbus Action Status werden von meiner Software ausgelesen und Daten eines Gerätes nur dann weitergereicht, wenn kein Fehler in allen Status Registern steht.
Um die Problematik mit doppelten Adressen zu umgehen werden aktuell bei 5 der Geräten die schreibbaren Register nicht wieder zurück gelesen. (Zusätzlich reduziert das auch noch die Anzahl der Modbus Aktionen).
Einzig für das Modbus Device, des RevPi-Connect, dass in der Compact Variante nicht mehr vorhanden ist werden einzelne Coils noch gelesen und beschrieben.
Meine Software greift alle 300ms lesend auf das Systemabbild zu und je nach Programmverlauf gibt es schreibende Zugriffe.
Zu beobachten ist, dass die Fehler vermehrt dann auftreten, wenn die Kontrollsoftware schreibend auf das Systemabbild zugreift und alle Geräte tatsächlich online sind.
Je nach Programmverlauf kann es passieren, dass einige Geräte ausgeschaltet werden und daher sowieso keine Werte mehr ausgelesen werden / keine Modus Aktionen stattfinden können.
Ist dies der Fall, scheinen die Werte im Systemabbild stabiler zu sein. (Leider ist der Betrieb dann nur eingeschränkt möglich).
Der RevPi-Compact scheint insgesamt mit dem Setup etwas stabiler zu laufen, was wahrscheinlich an weniger Modbus Aktionen liegt (konnte ich aber nicht final spezifizieren).
Die einzelnen Fehlerhaften Werte konnte ich auch nicht final erklären, es scheint allerdings in einigen Fälle zu passieren, dass einzelne Bits / bytes auf 0 (default) zurück fallen.
Dies scheint aber, wie auch im referenzierten Post beschrieben nur sehr kurzzeitig der Fall zu sein, sodass die fehlerhaften Werte nur ein, maximal zwei Abfrage-Zyklen an das Systemabbild anliegen.
Dies reicht bei den kritischen Werte allerdings schon aus, um den Betrieb signifikant zu stören. (Gerade auch bei Schreib-Aktionen an die Modbus-Geräte.)
Dies führt dann im weiteren Verlauf dazu, dass z.B. int_32 Werte fehlerhaft als positiv statt negativ interpretiert werden. Außerdem fallen die Coil-Werte kurzzeitig auf 0 ab, auch wenn ein stabiles 1 Signal an der Modbus Komponente anliegen sollte.
Da es sich insgesamt um 4 verschiedene Hardware Geräte bei den 6 Modbus Slaves handelt, der Fehler aber über alle hinweg auftritt, scheint auch eine Fehlerhafte Kommunikation mit einer Hardware-Komponente sehr unwahrscheinlich.
Fragen:
- Gibt es eine Obergranze an Modbus Actionen, die von dem RevPi (korrekt) verarbeitet werden kann, mit zeitlichen Limits?
- Gibt es eine gewisse Puffergröße, die zu Byte-/Bit-Fehlern für die Lese-/Schreibzugriffe führen kann?
- Kann es noch weitere Punkte geben, die das Lesen & Schreiben des Systemabbildes beeinflussen?
Falls weitere Log-Files benötigt werden, kann ich versuche diese Zeitnah zur Verfügung zu stellen / zu generieren.
Mit freundlichen Grüßen
Simon