TIA Kommunikation zwischen S7-1511-1 PN und Modbus MGate 3170

Mr. Schnitzel

Level-2
Beiträge
51
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte eine Verbindung zwischen meiner 1511-1 PN und meinem Moxa MGate 3170 mit dem TIA-Portal V19 herstellen. Die Verbindung soll über Modbus TCP laufen. In einem Handbuch zur Verbindung mit einem Moxa habe ich gelesen, dass man den Moxa in der "Geräte und Netze" Ansicht hinzufügen muss und dann verbinden mit der CPU. Leider kann ich den Moxa im Hardwarekatalog auch nachdem ich ihn aktualisiert habe nicht finden. Meine Frage nun, wie kann ich den Moxa in TIA hinzufügen oder gibt es auch andere Möglichkeiten die Verbindung zwischen den beiden herzustellen. ich habe auch schon probiert die GSD-Datei hinzuzufügen, kann diese aber leider auf der Homepage von Moxa nicht finden (Eventuell schreibe ich dem Support noch).
Ich bedanke mich im Voraus.
 
Modbus Teilnehmer muss man nicht in das TIA Projekt einfügen.
Einfach die Struktur der Verbindungsbeschreibung für den Parameter CONNECT von MB_Client ausfüllen und die Static-Variable MB_Unit_ID auf den nötigen Wert setzen reicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erstmal danke für Ihre Hilfe.
Könnten Sie das eventuell etwas genauer erklären? Ich wollte den Baustein für Modbus MB_Client nutzen .
Was meinen Sie mit Struktur der Verbindungsbeschreibung?
Und was ist der nötige Wert für die Static Variable?
Finde ich dazu alles in der TIA-Hilfe?
 
Ja, findest du alles in der TIA Hilfe zum MB_Client, in den Themen: Beschreibung MB_CLIENT (da auch MB_Unit_ID), Parameter CONNECT
Dein Moxa Gerät ist ein Gateway zu Modbus RTU Gerät(en) an einem RS485? Dann muss MB_Unit_ID die Busadresse des Modbus-Slaves sein.
 
Ja genau. Die Strecke wäre ein RMA Gasmessgerät welches den Stickstoffgehalt in der Leitung misst. Dieses geht via Modbus RTU an den Moxa Mgate 3170 (RS485) welcher dann TCP ausgibt. Die SPS holt sich dann die Daten vom Moxa Via Modbus TCP und gibt diese weiter an unseren OPC Server.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, genau so. Dafür sind Modbus Gateways da. Die SPS fragt als Client per Modbus TCP das Gateway, dieses fragt am RS485 das Gerät mit der übergebenen Busadresse MB_Unit_ID und gibt die Antwort des Gerätes an den Client zurück.
 
Hallo,
ich habe mir jetzt verschiedene Videos angeschaut und habe auch im Siemens Support vieles durchforstet. Allerdings funktioniert die Verbindung über Modbus TCP noch nicht. Kann einer anhand der Bilder erkennen wo mein Fehler liegt?
Vielen Dank im Voraus.FC_Modbus.PNGMB_ConfigSenden.PNGModbusDB1.PNGModbusDB2.PNGRegister.PNG
 
Also ich habe den Connect nun richtig gesetzt. das hat sich geändert. Busy ist auf true gesprungen. Allerdings empfange ich in meinem Datenbaustein "Messwerte speichern" in dem ich ein "array of reals" erstellt habe immer noch kein Messwerte. ich verstehe leidern nicht so richtig wo mein Fehler liegt. Könnte eventuell auch an der DATa_addr oder LEn etwas falsch sein? 1724055300168.png
 
Ich habe jetzt auch den Status 16#7006 und dafür steht in der TIA-Hilfe. Daten werden empfangen. also ist die Verbindung doch korrekt ne? wieso zeigt er mir jetzt nicht die empfangenen Daten an?
 
Für MB_DATA_PTR habe ich einen extra Datenbaustein angelegt, da ich in diesen die Messwerte die ich vom Moxa bekomme speichern möchte. Datentyp ist array of word. die 10 Register habe ich aus einem Youtubevideo.
was muss ich den schreiben wenn ich erstmal nur ein Register auslesen will.
in der angehängten Datei sind die Registerbeschreibungen wo die Messwerte stehen, allerdings kann ich ja keinen der Datentypen auswählen im TIA-Portal.
Da die SPS aber eh Modbus TCP empfängt sollte das ja egal sein oder?
 

Anhänge

Für MB_DATA_PTR habe ich einen extra Datenbaustein angelegt, da ich in diesen die Messwerte die ich vom Moxa bekomme speichern möchte. Datentyp ist array of word.
"N2 Stickstoff" klingt aber nicht wie ein Array. Müsstest du da nicht "Register_empfangen" verschalten?

die 10 Register habe ich aus einem Youtubevideo.
was muss ich den schreiben wenn ich erstmal nur ein Register auslesen will.
Außer Youtubevideos darfst du auch die TIA Bausteinhilfe zu MB_CLIENT aus erster Hand benutzen. Den Baustein markieren und F1 drücken. Geht sogar ohne Internet ;)
Für nur ein Register müsstest du bei MB_DATA_LEN 1 ranschreiben. Falls die gewünschte Variable eigentlich REAL oder DINT ist, dann 2

allerdings kann ich ja keinen der Datentypen auswählen im TIA-Portal.
Doch, kannst du. Einfach den Empfangsbereich für den Leseauftrag so strukturiert mit Variablennamen und Datentypen deklarieren, wie die Variablen im Modbus Server beschrieben sind. Und dann die ganze Struktur an MB_DATA_PTR anschalten. Dafür ist es sinnvoll, wenn die einzelnen Variablen innerhalb einer Struktur mit Name deklariert sind. An MB_DATA_LEN kommt dann die Anzahl Register, die für das Füllen der Struktur hintereinander gelesen werden müssen. Das wäre die halbe Größe der Struktur in Bytes, z.B. Struktur mit x Variablen ist 20 Bytes groß, dann MB_DATA_LEN = 10
 
"N2 Stickstoff" klingt aber nicht wie ein Array. Müsstest du da nicht "Register_empfangen" verschalten?


Außer Youtubevideos darfst du auch die TIA Bausteinhilfe zu MB_CLIENT aus erster Hand benutzen. Den Baustein markieren und F1 drücken. Geht sogar ohne Internet ;)
Für nur ein Register müsstest du bei MB_DATA_LEN 1 ranschreiben. Falls die gewünschte Variable eigentlich REAL oder DINT ist, dann 2


Doch, kannst du. Einfach den Empfangsbereich für den Leseauftrag so strukturiert mit Variablennamen und Datentypen deklarieren, wie die Variablen im Modbus Server beschrieben sind. Und dann die ganze Struktur an MB_DATA_PTR anschalten. Dafür ist es sinnvoll, wenn die einzelnen Variablen innerhalb einer Struktur mit Name deklariert sind. An MB_DATA_LEN kommt dann die Anzahl Register, die für das Füllen der Struktur hintereinander gelesen werden müssen. Das wäre die halbe Größe der Struktur in Bytes, z.B. Struktur mit x Variablen ist 20 Bytes groß, dann MB_DATA_LEN = 10
die Hilfe hilft mir leider nicht mehr wirklich weiter:D

also du meinst, dass ich den Datenbaustein indem ich die gewünschten Messwerte haben möchte so wie die Variablen im Messgerät beschreiben soll? Allerdings haben die halt Datentypen wie float, double I64, I32. Diese Datentypen gibt es doch nicht im TIA-Portal. oder verstehe ich dich falsch?
 
also soll ich meinen Datenbaustein so strukturieren wie in der PDF?
Ja. float = REAL
Bis zu 125 Register können in einem Rutsch gelesen werden. Es ist schneller, ein paar nicht benötigte Register mit zu lesen, anstatt mit mehreren Leseaufträgen zu hantieren.
 
Zurück
Oben