Step 7 S7-1200 Modbus Kommunikation Lumel NS5

CBtronics

Level-1
Beiträge
65
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

habe ein Problem mit einem Lumel NS5 Synchronisiergerät. Dieses hat leider nur eine Modbus-RTU Schnittstelle. Darum habe ich einen Waveshare Modbus-TCP to Modbus-RTU Adapter dazwischen geschalten. Das NS5 erhält bereits Daten (Über MB-Client Baustein) aber mein Problem ist, dass die Anfrageparameter an das NS5 nicht korrekt gesednet werden und darum keine Antwort kommt.
Hat jemand eine Idee wie ich die Anfrageparameter zum Auslesen (Mode, Registeradresse, etc) manuell über den Bus senden kann? Beim MB-Client habe ich nur vorgefertigte Variablen aber ich kann kein eigenes Paket zusammen stellen.
 

Anhänge

NACHTRAG: Habe nun auf ein CB1241 umgeschwenkt. Ich bin aber wohl zu blöd! Denn das seltsame ist wenn ich alles korrekt verdrahte, antwortet das NS5 nicht. Wenn ich jedoch A und B vertausche reagiert das NS5 und sendet Daten (TX blinkt dann) aber die S7 CPU erkennt diese dann natürlich nicht da sie invertiert ankommen. Bitte um Hilfe!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich jedoch A und B vertausche reagiert das NS5 und sendet Daten (TX blinkt dann) aber die S7 CPU erkennt diese dann natürlich nicht da sie invertiert ankommen.
Das ist ein Trugschluß. Wenn der NS5 die invertierten Signale erkennt und antwortet, dann legt er ebenfalls invertierte Signale auf den Bus, die durch die A/B-Vertauschung wieder zurück-invertiert werden und die RS485-Schnittstelle des CB1241 oder des ModbusTCP-zu-ModbusRTU-Gateway erkennt die dann wieder richtig rum. :cool:

Das kann schon sein, daß man bei RS485-Verbindung der Geräte verschiedener Hersteller A und B vertauscht anschließen muß, weil die Hersteller nicht alle A und B gleich dranschreiben. Das ist historisch entstanden, daß an den Pins der Treiber-IC A und B dransteht und z.B. Profibus A und B dazu vertauscht verwendet. Entwickler neuer Geräte mit RS485 müssen sich entscheiden, ob sie die Bezeichnungen der Treiber-IC übernehmen oder dem Profibus-Standard folgen oder Ihre bevorzugten Kommunikationspartner fragen oder einfach eine Münze werfen ;)

Du könntest mit einem RS485-Adapter und einem Terminalprogramm den Datenverkehr auf dem RS485-Bus sniffen und siehst dann, ob die Antwort vom NS5 sinnvoll/korrekt ist. Du könntest mit einem Modbus Client Testprogramm auf einem PC die Kommunikation zum NS5 (ggf. über das ModbusTCP-zu-ModbusRTU-Gateway) testen.

Welche Fehlernummer erhältst Du vom MB_Client-Baustein wenn der NS5 antwortet?
Hast Du in der Instanz vom MB_Client die MB_Unit_ID auf die Busadresse des NS5 eingestellt?
Wenn Du über das CB1241 verbindest, welchen Modbus-Baustein verwendest Du da?
Wenn Du über das Gateway gehst: Ist vielleicht im ModbusTCP-zu-ModbusRTU-Gateway was falsch eingestellt?

Harald
 
Hallo, Danke für deine Antwort. Habe inzwischen den Modbus TCP to rs485 gekickt und ein CB1241 verwendet. Hier habe ich die Datenleitungen vertauscht und die Register und Datentypen durchprobiert. Nun läuft es endlich! Danke für die Hilfestellung!
Eine Frage hätte ich aber noch bei dem Gateway - wie übergebe ich hier Slaveadressen der dahinterliegenden Clients? Denn im Modbus-TCP stelle ich ja nur die IP und den Port ein, habe aber keine Möglichkeit unterschiedliche Slaveadressen für das RTU Netz dahinter einzugeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja aber nicht beim S7-Baustein im TIA. Hier kann ich keine Slave-ID angeben. Auch nicht versteckt in einem Registerwert oder so. Oder liege ich hier falsch? Wenn ja bitte um Aufklärung. ;-)
 
Eine Frage hätte ich aber noch bei dem Gateway - wie übergebe ich hier Slaveadressen der dahinterliegenden Clients? Denn im Modbus-TCP stelle ich ja nur die IP und den Port ein, habe aber keine Möglichkeit unterschiedliche Slaveadressen für das RTU Netz dahinter einzugeben.
Genau darauf zielte meine Frage:
Hast Du in der Instanz vom MB_Client die MB_Unit_ID auf die Busadresse des NS5 eingestellt?
Also: in der Instanz (static) von MB_Client gibt es die Variable MB_Unit_ID, da schreibst Du die (RS485-)Busadresse des ModbusRTU-Slave hinein. siehe die TIA Hilfe zu MB_Client. Meine Vermutung: Siemens hat wohl gedacht, daß die meisten MB_Client-Anwender wegen ModbusTCP die MB_Unit_ID nicht brauchen und nur verwirrt werden, und deshalb die Variable nicht auf die Bausteinschnittstelle des MB_Client herausgeführt.

Harald
 
AHH!!🙃 Habe mir den MB_CLIENT DB angesehen aber das Static Strukt habe ich wohl zu wenig genau betrachtet! Vielen Dank für die Unterstützung. Bzgl. Siemens kann ich das auch nachvollziehen da man normal bei ModbusTCP ja über die IP arbeitet und nicht weiter unterscheiden muss. Aber das ist bei Siemens oft so, dass viel möglich ist aber die Infos dazu irgend wo versteckt oder auf mehrere Manuals verteilt sind.
Schaltschrank läuft nun - zumindest am Prüfstand - Inbetriebnahme beim Generator folgt demnächst. Bedanke mich für die Unterstützung!!
 
Zurück
Oben