# S7 Ethernet und TCP/IP-Kommunikation, Protokolldefinitionen, OP-Codes



## flotti (13 Februar 2012)

Hi, 
ich suche eine Möglichkeit via Ethernet und TCP/IP Datenbausteine auf einer S7 (möglichst alle Derivate) zu lesen und zu schreiben. 
Ich bin relativ neu in diesem Gebiet (Student...). 
Bisher habe ich mit verschieden Lösungen experimentiert, dazu gehören Hardwareseitig: CP-Module von Siemens, NetLink-Adapter von Deltalogic.
Softwareseitig: 
Libnodave, AG-Link, und S7Connector (Rothenbacher-GmbH). 
Das ganze verlief bisher ganz zufriedenstellend aber ich habe das Gefühl die ganze Sache nicht richtig zu durchblicken bzw. einiges durcheinander zu bringen. 

Meine Fragen? läuft die Kommunikation intern über ISO1006? Hat das war mit Send/Receive zu tun? Sind die Protokolle bzw. die OP-Codes offen gelegt, d.h kann man die irgendwo einsehen? Wenn die Protokolle nicht offengelegt sind, woher hat dann Firma Rothenbacher die Definitionen, insbesondere für den NetLink ?


----------



## Jochen Kühner (13 Februar 2012)

Das s7 protokoll ist nicht offen, aber es gibt ne menge infos dazu. Nützlich ist auch das wireshark plugin von thomas: https://sourceforge.net/projects/s7commwireshark/

Willst du nur werte in den bausteinen schreiben, oder auch die bausteine selber?


----------



## flotti (14 Februar 2012)

nur die werte in den bausteinen


----------



## Eleu (14 Februar 2012)

flotti schrieb:


> Hi,
> ich suche eine Möglichkeit via Ethernet und TCP/IP Datenbausteine auf einer S7 (möglichst alle Derivate) zu lesen und zu schreiben.
> Ich bin relativ neu in diesem Gebiet (Student...).
> Bisher habe ich mit verschieden Lösungen experimentiert, dazu gehören Hardwareseitig: CP-Module von Siemens, NetLink-Adapter von Deltalogic.
> ...



Hallo flotti,

hier sind Infos:

Welche Eigenschaften haben die Kommunikationsdienste bzw. Protokolle, die im Industrial Ethernet Netzwerk genutzt werden können?


----------



## gerulus (14 Februar 2012)

Könntes auch mal eine Blick auf unser S7-LAN oder IP-S7-LINK beides komplett kompatibel zu SIMATIC CP bzw. intergrierte Ethernetschnittstelle.
Habe da einfache Beispiele in C / C++ / C# / Delphi /Excel VB, PHP etc.
Grüsse
www.traeger.de


----------



## flotti (14 Februar 2012)

das ist also sone art Netlink-Compact? 
aber meine Frage ist mehr woher die Informationen über das S7-Protokoll kommen? 
wurde alles mittels wireshark reverse-engineered?


----------



## gerulus (14 Februar 2012)

S7-LAN ist komaptibel zum S7-TCP/IP-Protkoll. 
Somit kann z.B. WinCC, OPC, unser IP-S7-LINK oder auch unser OPC-Manager oder ähnliches sofort auf eine S7, die kein TCP/IP hat zugreifen.
Parallel zur VISU kann natürlich auch programmiert werden (STEP 7 oder auch TIA-Portal).
Beim S7-LAN ist unser OPC-Server mit 100 Varaiablen frei dabei!

Zum S7-Protokoll:
Das Protokoll ist nicht offengelegt. Ich habe das selbst entschlüsselt. Schon zu einer Zeit, wo nur MPI oder ProfiBus möglich war.

Gruß A.Traeger


----------



## flotti (14 Februar 2012)

vielen dank für die info  
ich hab aber noch mehr Fragen:
NetLink und CP-Module sprechen offensichtlich das selbe Protokoll, warum? 
Der Generelle Aufbau ist: Ethernet => TCP/IP => ISOonTCP (RFC 1006) => S7-Protokoll, warum das ISO Protokoll?


----------



## gerulus (14 Februar 2012)

Ich versuch's mal einfach zu erklären.
Das Ganze kommt von der Kommunikation auf reiner Ethernetbasis. Die Norm dazu ist eigentlich die ISO 8073.
Diese Norm regelt den Datenverkehr zwischen zwei Teilnehmern in einem Verbindungsorientiertem Protokoll (SSAP / DSAP, diverese Handshakes).
Das ISO 8073 wurde mit der RFC1006 ins TCP/IP eingebettet. Hier  ein Link zur RFC1006-Norm. 
Wenn dich das näher interessiert, kannst du auf meiner Seite mal die RFC1006-Lib laden. Da ist ein Demoprogramm dabei,
das kann man als Server oder Client betreiben. Damit lassen sich RFC1006-Verbindungen simulieren bzw. testen.
Die Simatic S7 verwendet eben dieses Protokoll.

Gruß A. Traeger
www.traeger.de


----------



## Jochen Kühner (14 Februar 2012)

Die Seite ist auch noch gut: http://www.bj-ig.de/140.html


----------



## shadowdb (15 Februar 2012)

Was ist mit der libnodave http://libnodave.sourceforge.net/

Das Gesamte Thema ist recht komplex, weil Ethernet ist erst sehr spät in die Siemens Welt eingetreten.
:sad:
Bei weiten nicht alle Hardware Steuerungen haben/hatten Ethernet on board. Leider haben die Siemenser da erst sehr spät was mit gemacht.
Gruß
Euer Schatten


----------



## flotti (15 Februar 2012)

@Jochen
danke, das hat mir sehr weitergeholfen 

mit der libnodave habe ich mich schon ausführlich beschäftigt, ich suche aber keine konkrete Implementierung, sondern Informationen für meine Hausarbeit


----------



## flotti (24 Februar 2012)

hi, ich hätte da noch eine letzte Frage: 
was haben die genannten Bibliotheken mit den Protokollen SEND/RECEIVE und PUT/GET zu tun ? 
verwende sie eins dieser Protokolle oder nutzen sie ein völlig anderes?


----------



## Thomas_v2.1 (24 Februar 2012)

flotti schrieb:


> hi, ich hätte da noch eine letzte Frage:
> was haben die genannten Bibliotheken mit den Protokollen SEND/RECEIVE und PUT/GET zu tun ?
> verwende sie eins dieser Protokolle oder nutzen sie ein völlig anderes?



PUT/GET sind Funktionsbausteine die man in der S7-SPS aufrufen kann. Diese verwenden auf OSI-Anwendungsebene (5-7) das Protokoll der S7-Kommunikation. Die darunterliegende Ebene wird durch die Verbindungsparametrierung in Netpro festgelegt (MPI, Profibus, Ethernet).
Weitere SPS-Bausteine die ebenfalls S7-Kommunikation verwendet sind BSEND/BRVC und USEND/URCV.

SEND/RECEIVE gibt es als Bausteine oder Protokoll direkt erstmal gar nicht. Es gibt beispielsweise AG_SEND/AG_RECV als SPS Funktionen, aber bei diesen wird das Protokoll über die Verbindungsparametrierung in Netpro festgelegt.

Weil es so viele Verbindungsmöglichkeiten gibt, hat Siemens ein paar Dokumente die sich nur damit befassen. Als Übersicht z.B. dieses hier:
http://support.automation.siemens.com/WW/view/de/20982954


----------



## flotti (24 Februar 2012)

Also verwenden AG-LINK libnodave und co. die PUT/GET Bausteine?


----------



## Thomas_v2.1 (24 Februar 2012)

flotti schrieb:


> Also verwenden AG-LINK libnodave und co. die PUT/GET Bausteine?


Sie nutzen das gleiche Protokoll (S7-Kommunikation), nicht die gleichen Bausteine. PUT/GET Bausteine gibt es nur in einer Siemens S7 SPS.

Bei der S7-Kommunikation gibt es Server und Client. Der Client stellt Anfragen an den Server, z.B. "Gib mir den Inhalt von MW100" oder "Schreibe 123 in MW200", der Server beantwortet die Anfrage (schickt Daten zurück) oder schreibt den angegebenen Wert in seinen Speicherbereich.

Eine S7 ist für S7-Kommunikation immer Server (ist quasi im Betriebssystem der SPS enthalten). Ein Client kann entweder eine weitere S7-SPS sein in der dann PUT (Daten in andere SPS schreiben) oder GET (Daten aus anderer SPS holen) aufgerufen werden müssen, oder eben eine PC-Anwendung die das Protokoll ebenfalls beherrscht, wie z.B. AG-Link oder libnodave.


----------



## flotti (24 Februar 2012)

Genau das wollte ich wissen, danke!


----------

