TIA Modbus Frage

March_Mellow

Level-2
Beiträge
50
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich wende mich mit einer Frage an euch zwecks dem Thema Modbus. Ich habe wirklich 0% Erfahrung auf diesem Gebiet, daher entschuldigt bitte falls ich wie der "Ochs vor dem Berg" wirke.

Was haben wir verbaut:
Siemens 1214C DC/DC/DC Generation 2 als CPU.
241-1EA50-0XB0 als Kommunikationsmodus für diese Modbus Geschichte.
TIA V21 als Software
Kommunikation ist über RS485

Was soll nun geschehen?
Wir wollen die Platine eines Motors/Pumpe/DMU ansteuern und das soll per MODBUS geschehen. Die Adresse auf die geschrieben werden muss ist die "10000".
- als erstes ohne anliegenden Druck den Nullpunkt setzen indem man eine "1" in die Adresse schreibt.....
- dann Druck in das System geben um Spannweite festzulegen, anschließend "2" in die Adresse schreiben.....
- dann folgen weitere Schritte und die Zahl, welche in die Adresse geschrieben werden muss erhöht sich......

Ich habe nun mal das Programm QModbus geladen, und damit versucht die Platine anzusteueren, was auch geklappt hat. Aber in TIA habe ich irgendwie keine Ahnung wie ich das umsetzten soll. (Siehe Bild unten).

Bild (1).png

Wenn ich das dann in TIA versuche geht es einfach nicht, egal wie ich es drehe und wende... (Siehe Bild unten)

Bild.png

Hat jemand ein Beispiel für mich? Ich habe schon mit den Werten bei "DATA_LEN" und "DATA_PTR" gespielt, aber ich habe wirklich überhaupt keine Ahnung was ich hier mache.... Siemens Support ist auch schon informiert, aber ich habe noch keine Antwort. Die Hilfedatei ist mir bisher keine Hilfe, ich denke ich brauche ein Schubser in die richtige Richtung.


Falls ich was vergessen habe entschuldige ich mich schonmal.


Grüße
und Dankeschön
 
Abhängig davon was du auslesen möchtest (bei dir hier Halteregister), musst du eine andere Adresse angeben.

Hier eine Doku:
https://docs.tia.siemens.cloud/r/de...s-modbus-master-kommunizieren-s7-1200-s7-1500

Dort gibt es eine Tabelle mit den Adressen. Hier ein Auszug:

1778649247389.png


Möchtest du nun Halteregister 10000 auslesen, müsstest du am Baustein 410001angeben


EDIT:
Das gleiche hier natürlich auch fürs Schreiben. Der Übersichtshalber hier nochmal ein anderer Auszug:

1778649535297.png

-cb
 
Zuletzt bearbeitet:
Danke erstmal,

Also was ich bisher möchte ist das ich in das Register 10000 eine 1 rein schreibe, was ich immernoch nicht in TIA umsetzen kann.

Ich verstehe im Moment wirklich überhaupt nicht was ich dafür tun muss. Über dieses QMod programm geht es ja, also schließe ich Verdrahtungsfehler aus.

Dank deiner Erklärung verstehe ich nun wenigstens das ich bei DATA_ADDR eine 410001 rein schreiben muss.

Ich habe den Mode in Modbus_Comm_Load eingetragen, der hatte gefehlt.
 
Immer in 2 Schritten vorgehen:
Zuerst nur Comm_Load starten und und Status ausweten, dazu unbedingt Flanke von Done und Error nutzen und damit den Status wegschreiben. Erst wenn Comm_load sauber funzt, weiter machen mit dem Modbus_Client (früher "Master").
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erst wenn Comm_load sauber funzt, weiter machen mit dem Modbus_Client (früher "Master").
Muss bei der S7-1200 G2 und TIA V21 jetzt auch bei Modbus RTU/RS485 "Modbus_Client" verwendet werden??? :unsure:
Der Fragesteller hat "Modbus_Master" verwendet (so wie ich es mit TIA V16 gewöhnt bin).
 
Client = Master
Server= Slave

Bei manchen Slaves ist je nach Registerwertigkeit auch entscheidend, ob ein oder zwei Worte in einem Rutsch bearbeitet werden. Ich hatte schon Slaves, die rotzfrech mit ner Exception geantwortet haben, weil ich nur ein Single Register lesen wollte, der Slave aber einen 32bit Wert versenden wollte.
 
Ärgerlich ist das vor allem, wenn man Server und Client verwechselt und auf seinem Programmiersystem dafür separat pro Verwendung Lizenzen erwerben muss für teuer Geld und ne falsche Lizenz nicht zurückgeben kann 🤑🤑🤑🤑
 
Immer in 2 Schritten vorgehen:
Zuerst nur Comm_Load starten und und Status ausweten, dazu unbedingt Flanke von Done und Error nutzen und damit den Status wegschreiben. Erst wenn Comm_load sauber funzt, weiter machen mit dem Modbus_Client (früher "Master").
Das werde ich heute mal testen und dann bescheid geben.

Danke schonmal
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab das nur zur Klarstellung geschrieben für die Rollen, die wegen Diskriminierung nicht mehr Msster und Slave bezeichnet werden sollten.

Wenn du als Erstes an Diskriminierung/Sklaverei denkst, wenn du die Wörter Master/Slave siehst, hat die Propaganda sehr gut funktioniert.
Aber das ist mittlerweile leider die Regel. Man muss nur den CoD lesen, dann weiß man sofort, welche Ideologie die Leute vertreten.

Viel schlimmer sind die Änderungen bei SPI.

Klassisch:
MISO: Master-In-Slave-Out
MOSI: Master-Out-Slave-In
SS: Slave Select

Modern:
MISO -> CIPO (Controller In, Peripheral Out)
MOSI -> COPI (Controller Out, Peripheral In)
SS > CS (Chip Select)

Damit es aber nicht langweilig wird, gibt es noch SDI (Serial Data In) und SDO (Serial Data Out).

--

Das klassische Modbus-Modell (1979) ist bewusst einfach:

Master
  • initiiert jede Anfrage
  • kontrolliert den Bus
Slave
  • antwortet nur
  • sendet nie von selbst

Das ist ein Polling-Modell, kein Servermodell.

Modbus (klassisch): Master → Slave (fachlich/Protokoll-Sicht)
TCP/Sockets: Client → Server (Transport-Sicht)

PLC / Gerät mit Modbus-Slave => TCP-Server
SCADA / Steuerung mit Modbus-Master => TCP-Client


Tool zum Testen: https://github.com/ClassicDIY/ModbusTool
 
Modbus (klassisch): Master → Slave (fachlich/Protokoll-Sicht)
TCP/Sockets: Client → Server (Transport-Sicht)
das bezeichne ich so:
Modbus RTU = Master → Slave
Modbus TCP = Client → Server

PLC / Gerät mit Modbus-Slave => TCP-Server
SCADA / Steuerung mit Modbus-Master => TCP-Client
wenn die Schnittstelle des Gerätes eine serielle Schnittstelle wie RS485 oder RS232 ist, dann ist das nicht TCP, sondern Modbus RTU
 
VarianteWas ist es?Transportmedium
Modbus RTUBinäres Framing + Modbus-Protokollmeist RS-485 / RS-232
Modbus ASCIIASCII-basiertes Framingseriell
Modbus TCPModbus in TCP/IP gekapseltEthernet/TCP
Modbus UDPseltene, nicht standardisierte VarianteUDP/IP
 
Zurück
Oben