eCockpi Modbus TCP Verständnis

Beiträge
431
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe eine Anlage vor Jahren auf Basis von CS. 2.3 programmiert. Es ist ein 750 8202 ein 750 881 und IP Symcon als universelles Modbus Gateway bzw. Visu im Netzwerk.
Die Kommunikation erfolgt von IP Symcon komplett auf den 8202, der 881 ist via Netzwerkvariablen an den 8202 verbunden.

Jetzt möchte ich den 8202 auf eCockpit hochrüsten, den 881 via Modbus anstatt NetVars anbinden und zusätzlich eine 750 8100 auch via Modbus anbinden.
Wago hat anscheinend die Modbus Geschichte ziemlich verändert.
Mit dem Modbuskonfigurator habe ich schon gespielt, ist auch recht einfach, jedoch scheint mir das recht aufwendig, jedes Register einzeln hinzuzufügen, bei 850 Registern, ein haufen Arbeit.

Jetzt habe ich die WagoAppPlcModbusTcp entdeckt. Mir erschließt sich die Funktion der einzelenen Bausteinen jedoh nicht. So wie ich das verstehe kann ich z.B. FC 5 Register in gewünschter Länge lesen und schreiben.? Liege ich da richtig? Was kann man mit der Lib sonst noch so anstellen?
Gibt es dazu ausführliche Beispiele, ich habe bisher nur Einzelheiten gefunden?

Würdet Ihr die Modbuskommunikation in meinem Fall über den Konfigurator machen?

Ich habe noch einen Screenshot angehängt, damit Ihr sehr was mein Vorhaben ist.

Danke schon mal
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    78,3 KB · Aufrufe: 37
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe mich noch etwas mit dem Thema auseinander gesetzt. Ich denke die Vorteile der Modbusbausteine liegen auf der Hand, nur kopieren muss man das ganze.
Ich habe Screenshots angehängt.
Ich habe versucht eine Verbidnung über MB_TCP zwischen einer 881er und einem 8202 aufzubauen.

Meine Frage:
Wie picke, bzw. mappe ich jetzt die Register aus dem Array in mein Programm? Bzw. ist das überhaupt richtig was ich da gemacht habe?

Danke schon mal.
 

Anhänge

  • Unbenannt4.PNG
    Unbenannt4.PNG
    39,1 KB · Aufrufe: 36
  • Unbenannt5.PNG
    Unbenannt5.PNG
    63,9 KB · Aufrufe: 37
  • Unbenannt6.PNG
    Unbenannt6.PNG
    56,6 KB · Aufrufe: 36
ist das überhaupt richtig was ich da gemacht habe?
sieht doch erstmal ganz gut aus.
Über den Response kann man jetzt noch auswerten ob die Antwort korrekt ist. Für einfache Sachen reicht auch sicherlich die Error Auswertung.
Wie picke, bzw. mappe ich jetzt die Register aus dem Array in mein Programm?
- Du könntest sie umkopieren und als Ausgang an der Schnittstelle zur Verfügung stellen. (ist m.M.n. die sauberste Sache)
- im Baustein auf GVL kopieren
- einen direkten Zugriff an der Verwendungsstelle ( Daten := Modbus_tcp.Antwort.awData[0];)
 
Hi Holgermaik,

ich meinte das anders.
Die Daten Array words in mehere Words holen ist kein Problem.

Modbus addressiert ja Wortweise.
Nur möchte ich die Daten Bitweise auslesen bzw. schreiben. Aus dem awData[0] müsste ich 16 Bits raus holen können.
Gibt es eine Funktion die das macht oder wird das komplizierter??

Anhand der dezimalen Wertigkeit könnte ich mir schon die MX0....... raussuchen die sich ändern aber das wäre ein hoher Aufwand.
Das geht bestimmt eleganter, blß ich weiß nicht wie.
Danke
 
Danke Harald,

sorry, aber da hätte ich selbst drauf kommen könnnen.
Was sich schwieriger gestaltet ist das ich aus 2 Words ein Real basteln muss und umgekehrt, weil Modbus ja nur Words kann.
Ich werde das mit einer Union versuchen.
 

Anhänge

  • Unbenannt2.PNG
    Unbenannt2.PNG
    6,3 KB · Aufrufe: 24
  • Unbenannt3.PNG
    Unbenannt3.PNG
    44,7 KB · Aufrufe: 25
Zurück
Oben