Modbus TCP Abfragen aus dem Code steuern?!

Gärtner

Level-2
Beiträge
54
Reaktionspunkte
0
Zuviel Werbung?
-> 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.
 
Wie wärs mit 'nem CASE und Timern die das Abfragen steuern? Jede Abfrage springt dann zur nächsten "Zeitgesteuert" mit einem definiertem Zeitabstand. Die Zeitkritischen laufen in einem eigenen zyklus, alles andere in einem "langsamen" oder im Main.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wenn man anstelle des Codesys Modbuskonfigurators die FBs der WagoAppPlcModbus nimmt, dann kann man die Abfragen beliebig steuern. Da eine Abfrage über mehrere Zyklen gehen kann, kann man eine Abfrage nicht einemspeziellen Zyklus zuweisen.

Gruß
 
Hallo,

wenn man anstelle des Codesys Modbuskonfigurators die FBs der WagoAppPlcModbus nimmt, dann kann man die Abfragen beliebig steuern. Da eine Abfrage über mehrere Zyklen gehen kann, kann man eine Abfrage nicht einemspeziellen Zyklus zuweisen.

Gruß
Also geht das nur, wenn ich auf dem Codesys Modbuskonfigurator verzichte?

Das die Abfrage länger dauert ist da ja nicht entscheidend. Jedoch kann ich dann die Abfragen staffeln.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also geht das nur, wenn ich auf dem Codesys Modbuskonfigurator verzichte?
Sieht so aus. Im Wago Forum hatte gerade jemand eine ähnliche Frage, auch dort wurde auf die Bausteine der Bibliothek verwiesen.

Am besten dann die Bausteine aus dem Ordner 20 Simple Modbus Master nehmen. Du mußt die dann nur Deine eigene Joblist und/oder State machine bauen, um die ganzen Abfragen nacheinander auszuführen und nicht verwendete Teilnehmer zu überspringen.
 
Zurück
Oben