...
Gibt's da keine andere Lösung?
...
Es gibt prinzipiell 3 Lösungen:
1. Die fertigen Bausteine von Siemens teuer kaufen.
2. Sich etwas mit der Materie beschäftigen, und das Protokoll selber umsetzen.
3. Ein externes Gateway verwenden - z.B.
http://www.anybus.de/products/abx_mtcp_overview.shtml
Das Modbus TCP Protokoll ist a) kein Geheimniss und b) nicht sonderlich schwer.
Es setzt auf eine Standard TCP-Verbindung auf, die jeder Simatic Ethernet CP bzw. jede PN-CPU unterstützt.
Dabei wird jeweils die Send-/Receive Schnittstelle verwendet.
Bei der PN-CPU wird die Verbindung erst zur Laufzeit über die T-Bausteine aufgebaut, während die Verbindung beim CP über Netpro projektiert wird.
Bei der PN-CPU werden dann zur Laufzeit die Send-/Receive Bausteine TSend und TReceive eingesetzt, während beim CP die AG_SEND, AG_RECV Bausteine verwendet werden.
Du könntest jetzt z.B. das Beispiel der PN-CPU von Lars Weiß umschreiben auf CP-Einsatz.
Wenn du beispielsweise lediglich mit 1 Auftrag eine bestimmte Anzahl von Registern auslesen möchtest, und dies somit immer wieder der gleiche Auftrag ist, dann ist das eigentlich relativ simpel.
Bei Modbus-TCP gibt´s auch keinen CRC-Check - ist also noch einfacher als serieller Modbus.
Du baust dir den Modbus-Auftrag in einer DB-Struktur zusammen, und schickst dann zyklisch diese Byte-Folge über den Send-Baustein ab.
Der Modbus-Server sollte dann eine Antwort schicken, die du über den Receive-Baustein empfängst, und ebenfalls in einem DB ablegst. Aus diesem Empfangsfach kannst du dann die Registerwerte abholen.