modbus und arduino

2016-03-15
2016-03-19
  • mikegoesunder - 2016-03-15

    Hallo,

    ich habe folgende konstellation:

    ich habe den raspberry über modbus mit einem arduino verbunden.
    Ich lese 100 HoldingRegister in unter 10 ms aus. Das funktioniert sensationell. stabil und zuverlässig.
    jetzt möchte ich jedoch auch werte schreiben. Hierzu habe ich die Funktion WriteMultipleRegisters (Funktionscode 16) gewählt.

    Prinzipiell funktioniert es auch. wie gesagt, prinzipiell.

    meine zykluszeit beim Schreiben von 100 werten geht auf zwischen 60 und 250 millisekunden hoch.
    ich habe die implementierung des Arduinos mit einem C# modbus client getestet, wobei hier die zykluszeit für einen
    lese und einen schreibvorgang mit unter einer millisekunde gleich liegt.
    Weiterhin habe ich den Arduino gegen einen C# Modbusmaster getauscht. Hierbei liegt jedoch die zykluszeit wie oben
    bei ca. 180 ms. Ich habe jetzt die Vermutung das die erhöhte Zykluszeit der Implementierung der Write Methoden des Modbus TCP
    in Codesys geschuldet ist. Vielleicht liege ich auch falsch. Jedoch müsste nach meiner Meinung das Schreiben von Werten
    in etwa genauso schnell gehen wie das lesen.

    Ich bitte dringend um Hilfe.

     
  • eschwellinger

    eschwellinger - 2016-03-19

    Hallo,

    es ist so das Modbus ja den normalen TCP/IP Stack des Linux OS auf dem Pi verwendet,
    da.h immer wenn andere Programme auch noch über diesen TCP/IP was verschicken wirkt sich das natürlich auf
    das Timing des Modbus aus. (CODESYS Kommunikation usw...)
    Wenn du wirklich zuverlässige deterministisches Verhalten brauchst ist vermutlich Modbus die falsche Wahl.
    Bei Ethercat ist das ja Beispielsweise anders, hier werden am TCP/IPStack vorbei, Frames direkt auf die Netzwerkarte gelegt.... = schnell und auch deterministisch!

    Keine Ahnung wie schnell du sein musst/willst, aber wie gesagt einen 100% zuverlässige Lösung kann das mit Modbus nicht werden.

    Grüße
    Edwin

     

Log in to post a comment.