MERKMALE:
- Modbus Master
- Modbus TCP/IP
Heisst das jetzt, dass ich also doch die CPU als Server sehen muss?
Nein.
Das Modbus-Master/Slave bezieht sich auf Modbus-RTU (serielle Kommunikation über RS232/RS485)
Modbus-Client/Server bezieht sich auf Modbus-TCP.
Grundsätzlich werden die Begriffe gerne verwechselt oder vermischt.
Hier ein paar Grundlagen -
Modbus Grundlagen PDF-Download - Auszug:
Handbuch schrieb:
Der ModbusRTU stellt eine serielle Master-Slave-Kommunikation (ein Master fragt einen
oder mehrere Slaves ab) über die RS232 oder RS485 her.
Der ModbusTCP stellt eine Client-Server-Kommunikation (ein oder mehrere Clients
fragen ein oder mehrere Server ab) her.
Die Angabe "Modbus Master" bezieht sich daher auf Modbus-RTU und darauf dass der Eurotherm sowohl Master (andere Geräte lesen und beschreiben) als auch Slave sein kann.
Du arbeitest aber mit Modbus-TCP, heißt der Server stellt die Modbus-Register bereit und der Client muss diese lesen. Daher ist deine SPS der Client und der MBClient zu verwenden.
Weitere Fragen:
Muss ich für den FB für unterschiedliche Datentypen mehrfach aufrufen? Ich meine zB. für die real-daten, bit-daten (zur Chargensteuerung) und String-daten.
Diese werden ja in unterschiedlichen Adressbereichen abgelegt. Und wie erkläreich dem FB dass er sie dort plazieren soll?
Da Modbus grundsätzlich mit 16-Bit Word-Registern arbeitet werden die Daten einfach entsprechend dort abgelegt.
Ein REAL, ein DINT wird einfach auf 2-Modbus-Adressen aufgeteilt. Mann muss dann beide Register lesen und wieder zum REAL zusammenbauen.
Dementsprechend legt der MB-Client seine Daten in einem Array_of_Word ab. Genaueres findest du in der F1-Hilfe des MB-Client.
Sonst kannst du dir auch mal folgendes FAQ anschauen -
https://support.industry.siemens.com/cs/ww/de/view/102020340
Als Lesebefehl sendet der Client einen Modbus-Code (z.B Halteregister lesen), eine Registernummer als Startadresse und dann eine Anzahl an Registern.
Ob du mehrere Einzelabfragen machen musst oder nicht hängt also davon ab, ob du alle gewünschten Daten in einem Schwupp lesen kannst (120 Register max)
Wenn es sich nicht ausgeht musst du die Eingangsparameter des MB_CLIENT umschalten. Ein zweiter MB_CLIENT geht auch, baut aber eine zweite TCP-Verbindung auf.
Welche Modbus-Funktionscodes und Registeradressen du brauchst findest du im Eurotherm-Handbuch oder im Beispiel im Forum. Auch wenn dort nicht der MB_CLIENT verwendet wird,
sind die Registeradressen doch die selben.
Bevor du losprogrammierst würde ich erstmal mit einem PC-Client-Programm versuchen die Register des Eurotherms zu lesen.
Dann kannst du schon mal prüfen welche Funktionscodes und Register du verwenden musst und kannst schon mal sichergehen dass es überhaupt geht.
Solche Programme gibt es einige - Hier ein Beispiel -
http://www.tuomio.fi/ananas/