TIA S7-1500 Automatisierungssystem mit Modbus-TCP Schnittstelle zur übergeordneten Leittechnik

schneijo

Level-2
Beiträge
69
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe SPS-Forum User,

wir planen eine Anlagen-Automatisierung auf S7-1500 Platform.
Der Kunde möchte gerne eine Schnittstelle zu einer übergeordneten Leittechnik auf Modbus-TCP-Basis.
Über diese Schnittstelle möchte er sehr tiefgreifend in die Anlagenautomatisierung eingreifen können.
Z. B. sollen Signalzustände, Meldungen, Prozesswerte ausgelesen und Steuer- sowie Parametervorgaben ermöglicht werden.
Dies macht eine bidirektionale Kommunikation über Modbus auf eine große Zahl von den unterschiedlichsten Daten notwendig.
Parallel dazu wird eine WinCC-Visualisierung von uns eingesetzt die gleichzeitig auf die Daten zugreift.

Wir haben keine Erfahrung mit der Implementierung von Modbus-TCP Schnittstellen in Step7 / TIA.
Für das Auslesen der Datenpunkte sehen wir grundsätzlich kein Problem.
Bei den Schreibvorgängen bzw. der Ansteuerung von Aggregaten und Armaturen ergibt sich möglicherweise ein Konflikt zwischen der Übergeordenten Leittechnik und der Ansteuerung über WinCC.

Es sei denn, es wäre möglich über Modbus-TCP auf die gleichen Steuerparameter der einzelnen Instanzbausteine zuzugreifen, auf die auch WinCC zugreift.
Lässt sich eine Modbus-TCP Schnittstelle so implementieren, dass man von außen auf bestimmte Datenpunkte einzelner Instanzbausteine zugreifen kann?

Vielleicht kann mir jemand das grundsätzliche Arbeiten bzw. die sich bietenden Möglichkeiten mit Modbus-TCP auf einer S7-1500 erleutern.
Vielen Dank und

mfg
 
Lies Dir in der TIA Hilfe die Beschreibung von MB_SERVER und MB_HOLD_REG durch. Der Modbus-Partner (ein Modbus Client) kann nicht wahlfrei in Deinen Daten 'rumlesen und -schreiben, sondern nur auf die Daten zugreifen, die in dem DB für MB_HOLD_REG vorhanden sind. Du müsstest dann für jede Variable, auf die der Partner zugreifen will, eine Variable (ein Holding-Register) im DB anlegen und den Wert der original-Variable in die Variable im MB_HOLD_REG-DB kopieren, und bei Schreibzugriffen den Schreibzugriff erkennen und auf die eigentliche Zielvariable verarbeiten. Das ist sehr aufwendig zu programmieren, begrenzt aber sicher den Modbus-Zugriff auf nur die Variablen, die in dem MB_HOLD_REG-DB vorhanden sind.

Kann der Partner vielleicht auch per OPC UA kommunizieren? Das müsste weniger aufwendig zu implementieren sein.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lies Dir in der TIA Hilfe die Beschreibung von MB_SERVER und MB_HOLD_REG durch. Der Modbus-Partner (ein Modbus Client) kann nicht wahlfrei in Deinen Daten 'rumlesen und -schreiben, sondern nur auf die Daten zugreifen, die in dem DB für MB_HOLD_REG vorhanden sind. Du müsstest dann für jede Variable, auf die der Partner zugreifen will, eine Variable (ein Holding-Register) im DB anlegen und den Wert der original-Variable in die Variable im MB_HOLD_REG-DB kopieren, und bei Schreibzugriffen den Schreibzugriff erkennen und auf die eigentliche Zielvariable verarbeiten. Das ist sehr aufwendig zu programmieren, begrenzt aber sicher den Modbus-Zugriff auf nur die Variablen, die in dem MB_HOLD_REG-DB vorhanden sind.

Kann der Partner vielleicht auch per OPC UA kommunizieren? Das müsste weniger aufwendig zu implementieren sein.

Harald
Hallo Harald (PN/DP),
Ich habe es mir fast gedacht, dass da etwas Aufwand dahinter steckt.
Die Beschreibungen muss ich mir noch anschauen.
Ich glaube das Prinzip ist klar geworden.
Der Kunde wird sich sehr wahrscheinlich nicht auf eine andere Schnittstelle einlassen, da er als öffentlicher Auftraggeber einfach beratungsresistent ist und aus Angst vor Vedränderungen auf dem Haus-Standard beharrt.
Vielen Dank schon mal für deine Erläuterungen.

Grüße Johannes
 
Wenn du nicht den Siemens-Modbus Baustein, sondern eine Eigenentwicklung aufsetzt, dann könntest du beispielsweise selber die Registerzugriffe auf entsprechende Datenbausteinadressen umsetzen. Da kann man sich dann ein einfaches Umsetzen überlegen, z.B. DB1 Zugriff über Register 1000-1999, DB2 über 2000-2999 usw. Wenn also jemand Register 1500 anfragt, dann schickst du ihm DB1.DBW1000. Dann entfällt auch die Problematik mit dem gleichzeitigen Zugriff von anderer Stelle, da du keine Änderung erkennen musst, sondern genau weißt wann was geschrieben werden soll.

Ist natürlich mit etwas Aufwand verbunden so etwas zu entwickeln, aber der Aufwand für die Erkennung von Schreibzugriffen bei der anderen Variante ist auch nicht zu unterschätzen, weil da genauso viele Sonderfälle zu beachten sind.
 
Prinzipiell könnte die WinCC und Modbusschnittstelle ja auf die selben DB´s gelegt werden. Also einen zum Empfangen von Befehlen und Solllwerten und einen zum Senden für die Rückmeldungen und Istwerte würde ich da vorsehen mindestens vorsehen.
 
Zurück
Oben