Modbus Zykluszeit Frage

Kayle

Level-1
Beiträge
161
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich nutze eine Wago 750-881 in Verbindung mit einem Raspberry Pi um über Modbus Daten auszutauschen. Der Raspberry Pi sammelt über 1Wire die Temperaturen von 5 Sensoren ein und gibt diese per Modbus an die Wago weiter. Das klappt auch soweit. Nur leider aktuallisiert sich das Merkerwort in der Wago nur alle ~ 15 Sekunden. Die Einstellungen in Codesys sind bis auf die Variablen Standard.

Hier ein paar Screenshots:

devices.JPG
modbus_tcp_slave.JPG
modbus_tcp_slave_config.JPG

Die aktuellen Werte im TCP Slave E/A Abbild aktuallisieren sich im 4 Sekunden Takt ( was ja normal ist, da jeder Sensor ca. 700ms zur Auswertung benötigt ). Nur wo kommen die restlichen Sekunden Verzögerung her ?

Gruß
Kay
 
Hallo,

wie sehen denn die Einstellungen in der 881 aus? So wie Du es z. Zt. definiert hast muß die 881 ja die Daten vom Raspberry pollen, also als Master eingerichtet sein.

Frage die Daten vom Raspberry mal mit einem anderen Programm ab, z.B. dem hier http://www.modbustools.com/modbus_poll.html, und schau Dir an in welchem Intervall sich dort die Werte ändern.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

habe jetzt mal getestet. Solange kein 1Wire definiert ist funktioniert der Modbus ohne Probleme. Ich lasse jetzt einen Counter laufen der eine Zykluszeit von 1 Sekunde hat. Den Wert wird per Modbus im Sekundentakt übertragen. Sobald ich aber mehr als 1Wire Device habe steigt die "Poll Time" auf > 8 Sekunden. Dabei schreibe ich noch nicht mal den gelesenen Wert aus dem 1Wire auf den Modbus. Nur die "Anwesenheit" des 1Wire Device macht das langsamer. Verstehe ich nicht ganz.

Gruß Kay
 
Hallo Kayle,

das Problem ist die Raspi Seite, diese Onewire Sensoren liefern ja nur alle paar Sekunden die Werte und blockieren dadurch die Task.
d.h trenne bitte die Tasks so auf das du eine eigene für die Onewire Sensoren hast und eine 2. für Modbus und den Rest.
Die Tasks musst du dann entsprechend selektieren siehe Screenshot.
Dann prüfen ob im Taskdeploment die IO's getrennt sind. (Im meinem Screenshot sind die Onewire getrennt von den GPIO's)
Grüße
 

Anhänge

  • OneWireTask.jpg
    OneWireTask.jpg
    62,7 KB · Aufrufe: 81
  • Taskdeployment.jpg
    Taskdeployment.jpg
    62,4 KB · Aufrufe: 70
Zuletzt bearbeitet:
Zurück
Oben