-> Hier kostenlos registrieren
Moin,
ich habe in meinem Projekt auf meiner 8220 neben dem K-Bus und dem eigentlichen Berechnungen viele Modbus TCP Verbindungen. Dabei zwei Modbus Master für zwei Unterschiedliche Ethernet Ports. An dem einem Master wird nur ein Slave abgefragt. An dem Anderem Master werden 9 Slaves abgefragt, wobei hinter einem Slave widerum 3 weítere Modbus RTU Slaves hängen.
Das funktionierte bisher einwandfrei. Nun habe ich den Telecontrol Konfigurator hinzugefügt und nur die ersten Datenpunkte bereit gestellt. Da wird noch nicht mal eine Verbindung Verbindung vom Master aufgebaut, aber seit dem ich den Hinzugefügt habe, kommt es bei meinen 3 Modbus RTU Slaves sporadisch zu Timeouts.
Ich habe die Zykluszeit für den 60870-5-104 von 20 auf 50 erhöht. Damit habe ich den das Problem für das erste gelöst.
Jedoch wird das Projekt jetzt um weitere Modbus Slaves erweitert werden. Ich habe auch einige "zeitkritische" Elemente in dem Projekt, so dass die einache weitere Erhöhung der Zyckluszeit für mich nicht die optimale Lösung darstellt.
Da viele Abfragen dagegen nicht so zeitkritisch sind, wollte ich diese gerne Staffeln. Also ich möchte mit einer kurzen Zyckluszeit arbeiten, aber bei den unkritischen Elementen die Abfrage nicht in jedem Zyklus durchführen.
Also z.B. Slave1,Slave2 in jedem Zycklus und Slave3-8 in jemdem 6. Aber versetzt.
Zycklus1->Slave3
Zycklus2->Slave4
Zycklus3->Slave5
Zycklus4->Slave6
Zycklus5->Slave7
Zycklus6->Slave8
Damit erhoffe ich die Last deutlich zu veringern. Jedoch habe ich bisher nur für den Master eine Auswahlmöglichkeit für den Task gefunden. Dort könnte ich nun einen Tast erstellen, welcher nicht zyklisch, sondern aus dem Code aufgerufen wird und dort mit einem Counter für den Task arbeiten. Aber ich möchte das nicht je Master sondern je Slave.
Und da sehe ich gerade nicht, wie ich das am besten löse. Bin für Vorschläge dankbar.
ich habe in meinem Projekt auf meiner 8220 neben dem K-Bus und dem eigentlichen Berechnungen viele Modbus TCP Verbindungen. Dabei zwei Modbus Master für zwei Unterschiedliche Ethernet Ports. An dem einem Master wird nur ein Slave abgefragt. An dem Anderem Master werden 9 Slaves abgefragt, wobei hinter einem Slave widerum 3 weítere Modbus RTU Slaves hängen.
Das funktionierte bisher einwandfrei. Nun habe ich den Telecontrol Konfigurator hinzugefügt und nur die ersten Datenpunkte bereit gestellt. Da wird noch nicht mal eine Verbindung Verbindung vom Master aufgebaut, aber seit dem ich den Hinzugefügt habe, kommt es bei meinen 3 Modbus RTU Slaves sporadisch zu Timeouts.
Ich habe die Zykluszeit für den 60870-5-104 von 20 auf 50 erhöht. Damit habe ich den das Problem für das erste gelöst.
Jedoch wird das Projekt jetzt um weitere Modbus Slaves erweitert werden. Ich habe auch einige "zeitkritische" Elemente in dem Projekt, so dass die einache weitere Erhöhung der Zyckluszeit für mich nicht die optimale Lösung darstellt.
Da viele Abfragen dagegen nicht so zeitkritisch sind, wollte ich diese gerne Staffeln. Also ich möchte mit einer kurzen Zyckluszeit arbeiten, aber bei den unkritischen Elementen die Abfrage nicht in jedem Zyklus durchführen.
Also z.B. Slave1,Slave2 in jedem Zycklus und Slave3-8 in jemdem 6. Aber versetzt.
Zycklus1->Slave3
Zycklus2->Slave4
Zycklus3->Slave5
Zycklus4->Slave6
Zycklus5->Slave7
Zycklus6->Slave8
Damit erhoffe ich die Last deutlich zu veringern. Jedoch habe ich bisher nur für den Master eine Auswahlmöglichkeit für den Task gefunden. Dort könnte ich nun einen Tast erstellen, welcher nicht zyklisch, sondern aus dem Code aufgerufen wird und dort mit einem Counter für den Task arbeiten. Aber ich möchte das nicht je Master sondern je Slave.
Und da sehe ich gerade nicht, wie ich das am besten löse. Bin für Vorschläge dankbar.