-> Hier kostenlos registrieren
Hallo,
ich habe Probleme mit MB_Client (V5.2 S7-1500).
Ich will Holding Register von einem Modbus Gateway (Victron GX Device) lesen, das Gateway stellt unter verschiedenen Unit IDs Holdingregister mit gleicher Adresse und Konfiguration zusammen. Ich stelle zum Server ein Verbindung her mit DISCONNECT=false, setze über MB_Unit_ID im Instanz DB die Unit ID von der ich lesen will und Starte mit REQ die Leseanfrage zu den Registern meiner Wahl. Um von der nächsten Unit_ID zu lesen warte ich auf "DONE" vom vorangegangenen Baustein, änder die MB_Unit_ID und starte wieder die Kommunikation mit REQ.
Bei UnitIDs mit Gleicher Holdingregister und Adressdaten kommt es nun dazu das der die Daten mal in den einen Puffer, mal in den anderen gelesen werden. Mein eindruck ist das es nicht ausreicht die Unit_ID vor dem Aufruf zu setzen und das es nur Glücksache ist ob die dann im Bausteinaufruf übernommen wird oder nicht.
Am Server hab ich dann Fehlermeldungen das z.B. In der UnitID XXX keine Register unter der angeforderten Adresse lesbar sind. Wenn die Adress und Registerkonfiguration aber bei mehreren gleichen Geräten auch gleich ist unterscheidet sich der Aufruf von MB_Client nur durch die geänderte MB_Unit_ID und dann entsteht auch kein Fehler im Server da die Register mit der gleichen Konfiguration bei mehreren Geräten verfügbar sind. Die Daten werden dann ohne Fehler in den falschen Puffer geschrieben. Das seh ich dann unter beobachten wenn die gelesenen Temperaturen zwichen zwei werten hin und her flackern.
Ich habe keine Dokumentation zu dem Verhalten von MB_Client gefunden wenn es um das ändern der UnitID geht, dabei ist das bei ModbusTCP Gateways generell ein essenzielles Ding.
Hat da schon jemand Erfahrung gesammelt??
Gruß
Torsten
ich habe Probleme mit MB_Client (V5.2 S7-1500).
Ich will Holding Register von einem Modbus Gateway (Victron GX Device) lesen, das Gateway stellt unter verschiedenen Unit IDs Holdingregister mit gleicher Adresse und Konfiguration zusammen. Ich stelle zum Server ein Verbindung her mit DISCONNECT=false, setze über MB_Unit_ID im Instanz DB die Unit ID von der ich lesen will und Starte mit REQ die Leseanfrage zu den Registern meiner Wahl. Um von der nächsten Unit_ID zu lesen warte ich auf "DONE" vom vorangegangenen Baustein, änder die MB_Unit_ID und starte wieder die Kommunikation mit REQ.
Bei UnitIDs mit Gleicher Holdingregister und Adressdaten kommt es nun dazu das der die Daten mal in den einen Puffer, mal in den anderen gelesen werden. Mein eindruck ist das es nicht ausreicht die Unit_ID vor dem Aufruf zu setzen und das es nur Glücksache ist ob die dann im Bausteinaufruf übernommen wird oder nicht.
Am Server hab ich dann Fehlermeldungen das z.B. In der UnitID XXX keine Register unter der angeforderten Adresse lesbar sind. Wenn die Adress und Registerkonfiguration aber bei mehreren gleichen Geräten auch gleich ist unterscheidet sich der Aufruf von MB_Client nur durch die geänderte MB_Unit_ID und dann entsteht auch kein Fehler im Server da die Register mit der gleichen Konfiguration bei mehreren Geräten verfügbar sind. Die Daten werden dann ohne Fehler in den falschen Puffer geschrieben. Das seh ich dann unter beobachten wenn die gelesenen Temperaturen zwichen zwei werten hin und her flackern.
Ich habe keine Dokumentation zu dem Verhalten von MB_Client gefunden wenn es um das ändern der UnitID geht, dabei ist das bei ModbusTCP Gateways generell ein essenzielles Ding.
Hat da schon jemand Erfahrung gesammelt??
Gruß
Torsten