TIA MB_Server zur Kommunikation mit Eurotherm 6100XIO per Modbus nutzen

Magni

Level-2
Beiträge
313
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
ich will den Siemensbaustein MB_Server nutzen um Realdaten auf einem Schreiber von Eurotherm vom Typ 6100XIO zu schreiben. Das soll per Modbus funktionieren. Doch wie ich es drehe und wende, es funzt einfach nicht. Wo steckt der Fehler? Ich bin leider totaler Modbus-Laie. Aber wenn der Chef es will....

Zur Info habe ich das Testprojekt angehange.

Viele Grüße Heiko

PS: Es ist ein TIA V14SP1 Projekt.

Anhang anzeigen MODBUS-Verbindung.zip
 
Ich würde mal behaupten, daß der Schreiber der Server ist (der einen Dienst anbietet) und die SPS dem Schreiber sagen muß, was der tun soll (also der Client ist). Versuche es mal mit der Anweisung MB_Client.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde mal behaupten, daß der Schreiber der Server ist (der einen Dienst anbietet) und die SPS dem Schreiber sagen muß, was der tun soll (also der Client ist). Versuche es mal mit der Anweisung MB_Client.

Harald

Laut Beschreibung ist der Schreiber der Slave, also der Client.

Zitat:
"8 MODBUS TCP SLAVE COMMS
8.1 INSTALLATION
The installation of the Modbus link consists of connecting a standard Ethernet cable between the RJ45 connector
at the rear of the recorder either:
1. Directly to a host computer, using a crossover cable
2. To a host computer via a network, using a ‘straight through’ cable."

Gruß Heiko
 
Laut Beschreibung ist der Schreiber der Slave, also der Client.
Nein, Slave = Server
---> SPS muß der Client sein

Tja, Modbus und diese vertrackte Namensgeberei. Es hat sich halt eingebürgert, bei Modbus die Daten-Server-Funktion und die Daten-Lese/Schreibsteuerung verwirrend miteinander zu verwixxen.

- Wer hält die Daten abrufbereit? der Server
- Wer muß sich die Daten holen? der Client
- Wer steuert aktiv das Daten-lesen/schreiben über den Bus? der Master
- Wer antwortet passiv auf die Master-Anfragen? der Slave

So und jetzt für Deinen Fall:
Die Daten liegen auf dem UMG und die Logo will die haben. Das UMG wartet passiv, daß die Logo (oder wer auch immer) die Daten aktiv anfragt und antwortet entsprechend.
--> Logo = Client = Master
--> UMG = Server = Slave

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, Slave = Server
---> SPS muß der Client sein



Harald


Sooo.. ich habe noch einmal recherchiert. In der Beschreibung für den Schreiber auf der Homepage steht:

MERKMALE:
  • Modbus Master
  • Modbus TCP/IP

Heisst das jetzt, dass ich also doch die CPU als Server sehen muss?


Ich habe in der Suche diesen Beitrag gefunden Modbus TCP/IP Kommunikation mit Eurotherm Datenschreiber S71500

Doch leider wird dort nicht der Standartfb verwendet. Hilft mir also nur bedingt weiter.

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äre ich dem FB dass er sie dort plazieren soll?

Gruß Heiko
 
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/
 
Zuletzt bearbeitet:
Ein Schritt weiter.. zwei zurück

Eieiei.. ich verbringe schon wieder viel zu viel Zeit damit.

Ich habe den MB_Client jetzt konfiguriert. Jetzt habe ich am Status 7006 stehen und der Zähler MB_Transaction_ID zählt langsam hoch.

MB-Client.JPG

Doch auf dem Schreiber kommt nichts an. Die Kanäle habe ich m.E. richtig konfiguriert und die IP-Adresse stimmt auch.

ananas.JPG

Ananas kann sich zwar verbinden, aber die Register nicht finden...
Ich weiß nicht mehr weiter.

Verzweifelte Grüße
Heiko
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

bei Ananas sehe ich IP Adressen in unterschiedlichen Netzen. Einmal 169.254.36.44 und 192.168.0.21. Hast Du da einen Router dazischen? Sonst mußt Du den Rechner in das gleiche IP Netz bringen.

Ansonsten muß man manchmal 40001 von der Adresse abziehen.

Gruß
 
Hi, bei Ananas sehe ich IP Adressen in unterschiedlichen Netzen. Einmal 169.254.36.44 und 192.168.0.21.
Ist kein Problem. Da wo die 169er-Adresse steht, zeigt die Software die IP des Modbus-TCP-Servers welchen die Software mitbringt. Ist also ein Adapter den sich der Server ausgewählt hat.
Die Software kann dann die Client-Verbindung dann trotzdem über einen anderen Adapter aufbauen. Im Screenshot sieht man dass die Verbindung zu 192.168.0.21 erfolgreich war.

@Magni: Hab jetzt nur kurz das Eurotherm-Handbuch aufgeschlagen... hast du die Sicherheits-Funktion auch deaktiviert?
Handbuch schrieb:
8.2.4 Sicherheit
Der Schreiber besitzt eine lokale Datei, in der alle Benutzer Login Informationen, die Sie in der Sicherheit/Zugriff Konfiguration (Abschnitt 4.4) eingestellt haben, gespeichert werden. Diese liefert den korrekten Benutzernamen und das Passwort. Schlägt ein Login Versuch eines Hosts nach drei Versuchen fehl, unterbricht der Schreiber die Verbindung. Diese MODBUS Sicherheits Funktion können Sie im Menü Bediener/Konfig/Gerät (Abschnitt 4.3.1) freigeben/sperren.
Der Schreiber will sonst anscheindend eine Login-Sequenz über den Modbus haben, sonst wird kein Datenaustausch eingeleitet.

Dann würde ich nochmal Versuchen ein Register zu lesen, aber eher mit Addresse 1 ("Geräte-Typ-Nummer") und 108/109 ("Seriennummer") versuchen.
Kann auch sein dass es 0 und 107/108 ist. Das Register 1 ist auf Adresse 0 und Register 108 auf Adresse 107. Gibt Dokumentationen wo das vermischt wird.
Wenn du da Werte bekommst, kannst du gleich mal mit der Seriennummer vergleichen ob die stimmt, wird ja am Gerät stehen.

Die Schreibweise mit den 40001 beim MB_Client hat folgenden Grund.
Bei einem Standard-Modbus-Teilnehmern haben die Halteregister die Registernummern 40001-49999 (Adresse 0 bis 9998 ).
Will man aber nun das Register 40001 (erstes Halteregister) lesen schickt man in Realität eine Anfrage mit dem Funktionscode 3 (Read Holding Register) und der Startadresse 0 raus.
Der MB_Client macht das so. Der erkennt am 40001 dass er Funktionscode 3 und Adresse 0 verwenden muss.
Beim Ananas-Client wählst du "Holding Register" schon per Radio-Button vor, du brauchst dann also nur mehr die Registernummer ohne 40000.

Hier noch ein paar Screenshots mit dem PC-Client von nem UMG-Energiemessgerät dass hier hab.
ModbusTCP_Ananas.jpgModbusTCP_Ananas2.jpg

Hier sind auch viele Dinge zu Modbus einfach erklärt.
http://www.simplymodbus.ca/faq.htm#FC

Verzweifelte Grüße
Aller Anfang ist schwer... ;)
 
Zuletzt bearbeitet:
Schreiber kennt IP

Guten Morgen,

meine Ananas meldet folgendes Bild: ananas_1.JPG Viel kann man doch gar nicht an dem Schreiber verkehrt machen. Meine Rechner IP ist übrigens 192.168.0.10. Daran kann es also nicht liegen. Die Sicherheitsfunktion ist deaktiviert. XIO.JPG Und mit der Software "Bridge" bekomme ich auch Zugriff auf das Gerät.

Zwischenzeitlich habe ich das Projekt vom Kollegen geladen, welches er im Zusammenhang mit Eurotherm mal gepostet hat. Aber das Ergebnis ist das gleiche. Es kommen keine Daten an.

Zumindest erkennt der Schreiber die CPU als Client. XIO_1.JPG

Update: Und weiter gehts...

Plötzlich und unerwartet begann der Ananas-Server Werte zu empfangen.ananas_2.JPG

Das heißt doch zumindest, dass meine Config für den MB_Client passt. Oder? Nur leider tut sich auf dem Schreiber weiterhin nichts. :|
Freitagliche Grüße
Heiko
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das heißt doch zumindest, dass meine Config für den MB_Client passt. Oder? Nur leider tut sich auf dem Schreiber weiterhin nichts. :|
Naja, dann bist du ja schon weiter. Eine MB_Client_Config hast du keine mehr gepostet. Wenn du Beitrag #8 meinst, dann stimmt die nicht.

Beitrag #8 zeigt:
MB_MODE=116 (Halteregister mit Adressen 0..65535 schreiben) - Warum schreiben? Du willst lesen!
MB_DATA_ADDR = 40001 - Bei MB-MODE=1 wäre das Register-Nr 1 - Bei MB-MODE=116 wäre das Register-Nr 40001 - Wahrscheinlich nicht was du suchst.

Versuch mal folgende Varianten
Variante A:
MB_MODE = 0
MB_DATA_ADDR = 463683
MB_DATA_LEN = 1 (erstmal ein Register probieren)​
Variante B:
MB_MODE = 103
MB_DATA_ADDR = 63683
MB_DATA_LEN = 1​

Dazu müssen natürlich erstmal die Verbindungseinstellungen am CONNECT-Paramter stimmen. Zeigt der Schreiber in seinem Programm die SPS schon als Client an?
Wie hast du diesen denn konfiguriert? TCON_IP_v4?
Was hängt am MB_DATA_PTR - Array_of_Word?
 
Zuletzt bearbeitet:
XIO_3.JPG

Ich habe den MB_Mode jetzt auf 103 gesetzt. Nun kommt am Status 7006 bzw. 80C8. 80C8 bedeutet m.E. das keine Verbindung aufgebaut wurde.

Die 63683 habe ich aus den Handbuch des Schreibers als Adresse für den Float-Wert von Channel 1.

Der Schreiber zeigt keinen Client an. Hat er aber mal zwischendurch irgendwann getan. :???:

Bald ist Wochenende
Viele Grüße
Heiko
 

Anhänge

  • XIO_3.JPG
    XIO_3.JPG
    89,5 KB · Aufrufe: 23
Der 80C8 weist nicht direkt auf die TCP-Verbindung hin, sondern dass vom Server keine passende Antwort kam.
Handbuch schrieb:
Keine Antwort des Servers im definierten Zeitraum.
Überprüfen Sie die Verbindung zu dem Modbus-Server.
Dieser Fehler wird erst nach Abschluss der konfigurierten erneuten Versuche gemeldet.

Empfängt die Anweisung "MB_CLIENT" keine Antwort mit der ursprünglich übermittelten Transaktions-ID (siehe statische Variable MB_TRANSACTION_ID) innerhalb des definierten Zeitraums, wird dieser Fehlercode ausgegeben.
Den Status der TCP-Verbindung selbst kannst du der Variablen TDIAG_STATUS.State entnehmen. Die Config in TCON_IP_v4 sieht OK aus.
Das Register 63683 passt so, wird auch in dem Modbus-Beispiel hier im Forum als Startadresse verwendet.
Kannst du das Register mit dem Ananas nach wir vor noch lesen (Trennen/Verbinden/Rechner-Neu-Starten/Verbinden mit anderer IP)? Will nur sehen dass der Server jederzeit neue Clients akzeptiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Variante A:
MB_MODE = 0
MB_DATA_ADDR = 463683
MB_DATA_LEN = 2

Hast du es damit schon versucht? Das sollte ja laut Anleitung folgendes sein:

[TABLE="width: 500"]
[TR]
[TD]Parameter name[/TD]
[TD]Description[/TD]
[TD]Type[/TD]
[TD]Access[/TD]
[TD]Start Addr[/TD]
[TD]Register Length[/TD]
[/TR]
[TR]
[TD]Channel 1 value[/TD]
[TD]Current process value (PV)[/TD]
[TD]Float[/TD]
[TD]See note[/TD]
[TD]F8C3 (63683)[/TD]
[TD]2[/TD]
[/TR]
[/TABLE]

*Note: PV access is Read/Write for any point configured with ‘Slave Comms’ as its Type or Function.
Otherwise PV access is Read only.


Mal zu meinem Verständnis:

Wie kommt ihr auf den Mode 103? Laut Siemens-Anleitung ist dieser Mode nicht benutzt bzw. reserviert. EDIT: Grad gesehen in der Anleitung zu V14. Somit erledigt

MB_Mode_1.JPGMB_Mode_2.JPG


Gruß


Chris
 
Zuletzt bearbeitet:
Wie kommt ihr auf den Mode 103? Laut Siemens-Anleitung ist dieser Mode nicht benutzt bzw. reserviert. EDIT: Grad gesehen in der Anleitung zu V14. Somit erledigt
Der Vollständigkeit halber trotzdem... ;)
Code:
MB_MODE	MB_DATA_ADDR		MB_DATA_LEN	Modbus-	Funktion und Datentyp


0	40.001 bis 49.999	1 bis 125	03	1 bis 125 Halteregister auf der remoten Adresse 0 bis 9.998 lesen
	400.001 bis 465.535				1 bis 125 Halteregister auf der remoten Adresse0 bis 65.534 lesen


103	0 bis 65.535		1 bis 125	03	1 bis 125 Halteregister auf der remoten Adresse 0 bis 65.535 lesen
Obwohl die 5-Zeichen Registeradressierung anscheinend auch mit dem Standard-Mode möglich ist, hat man dafür trotzdem noch eigene Modes eingeführt.
Warum bzw. den Unterschied zwischen den Modes kenne ich nicht. Das mit den 2 Registern lesen kann man probieren, da der PC-Client aber in der Lage war Register 63683 einzeln abzufragen, glaub ich nicht dass das was ändert.
 
Zurück
Oben