Mit Twincat 3 als Modbus TCP Server Daten bereitstellen wie bei Siemens

Micou

Level-2
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

kurze Frage, welche Functionbloc müsste ich in Twincat benutzen, um wie bei Siemens Daten zum Auslesen von einem Client bereitzustellen?
An die gewohnten Adressen, wie zum Beispiel im 30000er Bereich für die Holding Register und so weiter?

Es funktioniert in TwinCat ja anscheinend ein wenig anders...

Liebe Grüße und Danke schon einmal!

Mic
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du benötigst keinen Baustein. Über eine Konfigurations-XML (es gibt hier einen kleinen Konfigurator in der TF6250) kann man definieren wo welche Modbus-Adresssen im Speicher sind. Auf den ersten Blick ist diese nicht ganz einfach zu lesen da das mapping dort zwischen den ADS-Bereichen=Memory-Bereiche in der SPS und Modbus -Adressen erfolgt. Und das z.B. 0xF040 (ADS-Adresse) den Merker-Bereich entspricht muss man im Infosys erst mal herauslesen.

In der Default-Konfiguration müsste folgendes gelten:

1) Die Modbus Funktion 4 (Read Input Register) mit dem Offset 250 und der Länge 1 (Modbus arbeitet mit 16 Bit Werten) liest den Wertebereich %IB499 und %IB500 aus der PLC

2) Die Modbus Funktion 3 (Read Holding Register) mit dem Offset 0x3000 und der Länge 1 (Modbus arbeitet mit 16 Bit Werten) liest den Wertebereich %MW0 aus der PLC


Guga
 
Du benötigst keinen Baustein. Über eine Konfigurations-XML (es gibt hier einen kleinen Konfigurator in der TF6250) kann man definieren wo welche Modbus-Adresssen im Speicher sind. Auf den ersten Blick ist diese nicht ganz einfach zu lesen da das mapping dort zwischen den ADS-Bereichen=Memory-Bereiche in der SPS und Modbus -Adressen erfolgt. Und das z.B. 0xF040 (ADS-Adresse) den Merker-Bereich entspricht muss man im Infosys erst mal herauslesen.

In der Default-Konfiguration müsste folgendes gelten:

1) Die Modbus Funktion 4 (Read Input Register) mit dem Offset 250 und der Länge 1 (Modbus arbeitet mit 16 Bit Werten) liest den Wertebereich %IB499 und %IB500 aus der PLC

2) Die Modbus Funktion 3 (Read Holding Register) mit dem Offset 0x3000 und der Länge 1 (Modbus arbeitet mit 16 Bit Werten) liest den Wertebereich %MW0 aus der PLC


Guga

Das stimmt, es ist wirklich nicht einfach zu Lesen!

Hatte sowas aber schon irgendwo fast vermutet.

Spielen da diese vier Array Bereiche von je 255 Stück eine Rolle?

Das heisst ich kann die Adressen ändern, wenn meine Merker schon benutzt sind!?

Danke dir!(y)
 
die 4 Arrays sind Variablen in TC3 die in den verschiedenen Modbus-Bereichen ansprechbar sind.
Soviel ich mich erinnere müssen diese Variablen in einer Globalen Variablenliste mit dem Namen GVL angelegt sein (ohne Gewähr).
Also
VAR_GLOBAL
mb_Input_Coils : ARRAY [0..255] OF BOOL;
mb_Output_Coils : ARRAY [0..255] OF BOOL;
mb_Input_Registers : ARRAY [0..255] OF WORD;
mb_Output_Registers : ARRAY [0..255] OF WORD;
END_VAR


Sie sind immer mit dem mit der Modbus-Adresse 0x8000 ff ansprechbar (default config. in der XML konfigurierbar).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genauso hatte ich das auch verstanden mit der Deklaration in der GVL.
Heißt das im Umkehrschluss, dass man nur 255 Wörter in den Modbus Datenbereich schieben kann?!o_O
Das wäre für meinen UseCase eine mittlere Katastrophe...
 
Mai-o-mai.
Die DefaultConfig mit den Variablen sagt 255 Worte.
Du kannst natürlich auch die Config abändern für die Variablen oder halt direkt auf die %M, %Q, %I-Adressen referenzieren...
 
Zurück
Oben