Modbus Intervall

Hallo zusammen,

Meine Beckhoff SPS wird aktuell über Modbus an IPS angebunden.
Ich habe aktuell ca. 50 Modbus-Address-Instanzen, die jede 1000ms ausgelesen werden.

Aktuell läuft das ganz gut, bis auf den Intervall, der mir teilweise zu langsam ist.
Wünschenswert wäre 300-500ms max.

Nun werde ich weitere Modbus Adressen abfragen müssen.
Es werden dann ca. 80-100 Modbus-Address-Instanzen dazu kommen.

Frage:
Ist IPS in der Lage, ca. 150 Modbus-Address-Instanzen mit ca. 300ms abzufragen?

Das wären pro Abfrage 2ms. Ich glaube das geht nicht auf.

paresy

Grundsätzlich geht das schon. Die Beckhoff kann einen Spezialschalter, indem sie deutlich schneller antwortet. Sogenannte „Echtzeit“ Modbus Adressen.

Zusätzlich ist es möglich und meines erachtens nach sehr sehr sinnvoll die idr. häufig Bits, als Doppelwort mit 64 bit am Stück zu lesen. Ich habe hierzu ein passendes Modul entwickelt, welches per SimpleModbusPHP den Wrapper auf einzelne Instanzen macht. Leider wurde ich nie fertig und habe aktuell keine SPS mit Symcon neuer als Version 3 im Einsatz.

Sobald ich das umstelle (etwa Weihnachten??) werde ich wohl an dem Modul weiter arbeiten. Dann könnte ich es zur Verfügung stellen. Oder noch closed source ab sofort, solltest du dich damit auskennen.

Danke schon mal für die Antworten.

Aktuell verfolge ich mehrere Ansätze um die Datenmenge zwischen IPS und SPS zu handeln.

Modbus ist zwar grundsätzlich möglich, aber mit der IPS-Implementation hab ich so meine Probleme.
Ich kann nur einzelne Addressen über IPS abfragen, nicht einen kompletten Bereich in einem Rutsch.
Das ist dann bei 100 Einzeladressen (die sogar nebeneinander liegen) nicht wirklich performant.

Ich würde mir wünschen, dass die Modbus Module mal grundsätzlich überarbeitet werden.

Das mit dem Spezialschalter in der Beckhoff-Konfiguration sollte ich mal testen.
Wie finde ich diesen? In der Beckhoff-Dokumentation kann ich zum TCP-Server jedenfalls keinen Hinweis finden.

Am liebsten wäre es mir, dass IPS über das Beckhoff-Protokoll ADS kommuniziert.
Das hatte ich ja bereits schon mal im Forum angedeutet.
Ein kleines Beispiel habe ich hier als PHP-Script laufen.
Allerdings ist das nur die Scripting-Variante der BeckhoffAPI.
Die ist auch sehr langsam.

Interessant wird es erst, wenn man die .NET oder OCX-Variante nutzt.
Diese habe ich aber bisher nicht zum laufen bekommen.

Ich frage mich auch, wie andere das lösen, z.B. mit einer WAGO SPS.
Die Probleme sind da ja auch genauso vorhanden.

Habe gerade mal ein Paar Tests gemacht:

Der Beckhoff-Controller CX9020 braucht ca 50ms um über Modbus-TCP um alle 256 Coils auszugeben.

Definitiv könnten wir dort was optimieren. Aktuell denke ich daran, dass man größere Abfrage-Bereiche im Splitter definiert, die im Block gepollt werden. In den Instanz würde dann das Intervall Feld gesperrt werden.

paresy

Das würde mir in einem momenten aktiven Projekt auch ein wenig helfen.

:loveips:
das wäre super!

Das würde mir auch helfen!

Bit-Werte in ein Wort- oder Doppelwort und dann IP-Symcon per UDP abrufbereit stellen ist schon mal ein Ansatz, weil Das eine Abfrage ist.
Gruß Helmut

Wie gehts denn jetzt weiter?
Gibt es ein Plan, wann man die Modbusanbindung überarbeitet?
Aktuell bin ich an der Grenze des machbaren angelangt (Anzahl), was die Abfrage von Modbusadressen betrifft.
Und es kommen immer noch neue Adressen hinzu… :eek:

Wir haben es notiert und es wird kommen - ich kann dir aber keinerlei Zeitplan dafür nennen.

paresy

Wenn ihr Modbus schon anpackt dann bitte die Möglichkeit den Swap LSW/MSW auf Device-Ebene einstellbar machen. Hab hier einen Wechselrichter der Swap benötigt aber auch die Daten vom Speichercontroler bereitstellt. Diese aber wiederum benötigen keinen Swap. Zwei Splitter für ein Gerät gibt leider viele Fehlermeldungen im Log …

Das Thema zieht sich ja schon Jahre hier durch… Gibts da mittlerweise was Neues
oder nen Zeitplan?

LG
Jürgen

Da es sich bei Modbus um eine grundlegende Schnittstelle handelt, hätte ich auch gerne eine höhere Priorität.

Ich habe mehrere Installationen, wo ich aktuell IPS nicht einsetzen kann, da die Steuerung (Beckhoff-SPS) nur über Modbus mit
IPS kommunizieren kann und die Anzahl der variablen zu groß ist.
Die Abfrageintervalle müsste ich auf 10 Sekunden oder höher setzen. Das kann man aktuell so vergessen…
:mad:

Alle Versuche, ein Modul für das Beckhoff ADS-Protokoll zu schreiben, scheiterten,
da das ADS nur unter Windows vernünftig läuft (DLL).

Ehrlich gesagt, habe ich da nicht mehr viel Hoffnung…hier gibt es Mails von 2013 mit der selben Thematik und es hat sich seither
genau nichts verbessert…:cool:

LG
Jürgen

Super wäre wenn man Modbus nicht so stiefmütterlich behandeln würde :wink: Ganz „Blöcke“ in einem Rutsch abzufragen wäre da schon mal ein Anfang.

[b]

Ganz „Blöcke“ in einem Rutsch abzufragen wäre da schon mal ein Anfang

versuch es mal mit Phpmodbus[/b]

Ich hänge mich hier auch nochmals dran…
paresy hat im Discord am Symcon Event erwähnt, dass auch das auslesen von Strings via ModBus kommen sollte.
Allerdings war der Zeitplan nicht so klar.

Wenn ihr den ModBus überarbeitet, wären folgende Features toll:

  • Strings auslesen
  • Ganze Blöcke auslesen (und ev. als einzelne Bits zurückgeben)
  • Endianess für einzelne Adressen festlegen (habe da so eine Steuerung, welche Bugs hat und z.T. für einzelne Register eine andere Endianess zurückgibt)
  • Offset oder Formel hinzufügen (Wert vom ModBus wird mit Offset addiert/subtrahiert oder mit Formel ev. sogar mit anderen Werten „verrechnet“)
  • Mehrere Abfragen in einer Instanz (Liste)

So, nun höre ich auf mit meiner Wunschliste :slight_smile:

Wäre einfach toll zu wissen, was seitens IPS mit der ModBus-Instanz so geplant ist…

ich frag’ mal wieder vorsichtig… gibt’s was Neues, wann gibt es was Neues?

LG
Jürgen