Hallo zusammen,
aktuell versuche ich meinen Wärmetauscher in Edomi einzubinden. Dieser bietet eine Modbus TCP Schnittstelle, welche ich lokal auf meiner Windows Maschine auch schon erfolgreich benutze.
Dazu habe ich ein einfaches PHP Skript geschrieben, in welchem lediglich eine Socket-Connection etabliert wird, über welche dann die Modbus Requests und Responses laufen.
Läuft wie gesagt lokal einwandfrei (bis auf ein paar Zicken die aber anderer Natur sind) und produziert z.B. folgenden Output:
modbus_conn.JPG
Dieses Vorgehen habe ich nun also in einen eigenen Deamon LBS in Edomi übertragen. Dort funktioniert das aber leider nicht so reibungslos.
Das Verhalten ist so, dass mit jeder neuen Registerabfrage (momentan alle 10 Sekunden) ein ziemlicher Salat bei den Ergebnissen rauskommt. Es scheint als wäre es glückssache, welche der 5 abgefragten Register einen passenden Response liefern.
Mal stimmt ein Wert und die anderen sind einfach leer, ein anderes mal stimmen 4, aber 2 sind vertauscht usw.
Ein Auszug aus meinem LBS log zeigt dann z.b. sowas:
edomi_modbus_conn.JPG
Ich habe dann mal mit Wireshark den Traffic mitgeschnitten und folgendes festgestellt:
edomi_modbus_conn_wireshark.JPG
Beim TCP Handshake fängts immer mit einem TCP Out of Order seitens Edomi an. Dann geht es die ganze Zeit hin und her mit TCP Dup ACK und TCP Retransmission. Und schließlich beim schließen der Socket Connection gibt es keinen vernünftigen Teardown sondern ein hartes Reset von Edomi:
edomi_modbus_reset.JPG
Das Schema ist mit jeder neuen Verbindung immer wieder das Selbe.
Hat jemand eine Idee was da passiert oder hatte das Problem vill. auch schonmal? Kann es sein, dass Centos 6 da ein Problem mit Sockets hat?
Ich bin im Momentan mit meinem Latein leider erstmal am Ende ...
Danke schonmal und Grüße,
Christian
aktuell versuche ich meinen Wärmetauscher in Edomi einzubinden. Dieser bietet eine Modbus TCP Schnittstelle, welche ich lokal auf meiner Windows Maschine auch schon erfolgreich benutze.
Dazu habe ich ein einfaches PHP Skript geschrieben, in welchem lediglich eine Socket-Connection etabliert wird, über welche dann die Modbus Requests und Responses laufen.
Läuft wie gesagt lokal einwandfrei (bis auf ein paar Zicken die aber anderer Natur sind) und produziert z.B. folgenden Output:
modbus_conn.JPG
Dieses Vorgehen habe ich nun also in einen eigenen Deamon LBS in Edomi übertragen. Dort funktioniert das aber leider nicht so reibungslos.
Das Verhalten ist so, dass mit jeder neuen Registerabfrage (momentan alle 10 Sekunden) ein ziemlicher Salat bei den Ergebnissen rauskommt. Es scheint als wäre es glückssache, welche der 5 abgefragten Register einen passenden Response liefern.
Mal stimmt ein Wert und die anderen sind einfach leer, ein anderes mal stimmen 4, aber 2 sind vertauscht usw.
Ein Auszug aus meinem LBS log zeigt dann z.b. sowas:
edomi_modbus_conn.JPG
Ich habe dann mal mit Wireshark den Traffic mitgeschnitten und folgendes festgestellt:
edomi_modbus_conn_wireshark.JPG
Beim TCP Handshake fängts immer mit einem TCP Out of Order seitens Edomi an. Dann geht es die ganze Zeit hin und her mit TCP Dup ACK und TCP Retransmission. Und schließlich beim schließen der Socket Connection gibt es keinen vernünftigen Teardown sondern ein hartes Reset von Edomi:
edomi_modbus_reset.JPG
Das Schema ist mit jeder neuen Verbindung immer wieder das Selbe.
Hat jemand eine Idee was da passiert oder hatte das Problem vill. auch schonmal? Kann es sein, dass Centos 6 da ein Problem mit Sockets hat?
Ich bin im Momentan mit meinem Latein leider erstmal am Ende ...
Danke schonmal und Grüße,
Christian