# Simatic s7-300 TCP/IP Kommunikation



## Osccon (20 Juli 2016)

Hallo,
ich bin völlig neu auf dem Gebiet der PLCs und experimentiere gerade mit einem Simatic s7-300.
Dabei geht es mir gerade nicht ums programmieren sondern um den Datenaustausch mit einem PC ueber das Ethernet bzw. genauer TCP/IP.
Bei meiner Suche bin ich auf libnodave gestoßen und konnte damit erfolgreich Daten austauschen.
Jetzt möchte ich aber gerne aus Spaß und um ein tieferes Verständnis zu bekommen das ganze ohne libnodave basierend auf einer einfachen TCP/IP Verbindung implementieren.
Soweit ich das verstehe ist das ueber das ISO on TCP bzw. ISO over TCP oder auch RFC1006 möglich.
Jedoch handelt es sich doch bei ISO on TCP noch um ein allgemeineres Protokoll nicht spezifisch zum Datenaustausch mit einem Simatic s7-300 entwickelt.
Aber ich kann im Internet keine Spezifikation oder sonst was finden was den eigentlich Datenaustausch mit einem Simatic s7-300 über ISO on TCP beschreibt.
Wo finde ich diese Informationen?


----------



## Ing_Lupo (20 Juli 2016)

Hallo

das Thema wurde gerade besprochen:     S7 300  bzw. INSEVIS CPU über libnodave ansprechen:


INSEVIS vom PC (VB6-Proggi & Libnodave) ansprechen.
*Gelöst.
so geht es:
*
 	Code:

 	// Public Const CONNECTION_TYP_MPI = 1
// Public Const CONNECTION_TYP_MPI_IBH = 2
DaveConntyp = 1

DaveSpeed = 1

// Public Const daveProtoS7online = 50    '  S7 using Siemens libraries & drivers for transport
// Public Const daveProtoISOTCP = 122 '  ISO over TCP
// Public Const daveProtoISOTCP243 = 123 '  ISO over TCP with CP243
DaveProtokoll = 122
DaveComPortNr = 0
DaveIp = 192.168.0.55

// D_avePort = 1099
DavePort = 102 






 Zitat von *Senator42* 

 
 				Hallo Gemeinde,

Hat schon mal jemand die INSEVIS mit einem PC-Proggi (C, C#, VB) über  LibNoDave  verbunden, um
z.b.  E,A,M, DBs  zu lesen, schreiben ?

Bisher habe ich eine S7-300 über IBH-Link (MPI) erfolgreich verbunden.

 	Code:
 	 Public Const CONNECTION_TYP_AS511 = 0
 Public Const CONNECTION_TYP_MPI = 1
 Public Const CONNECTION_TYP_MPI_IBH = 2
 Public Const CONNECTION_TYP_PPI_IBH = 3
 Public Const CONNECTION_TYP_PPI = 4

 Public Const daveProtoMPI = 0      '  MPI for S7 300/400
 Public Const daveProtoMPI2 = 1    '  MPI for S7 300/400, "Andrew's version"
 Public Const daveProtoMPI3 = 2    '  MPI for S7 300/400, Step 7 Version, not yet implemented
 Public Const daveProtoPPI = 10    '  PPI for S7 200
 Public Const daveProtoAS511 = 20    '  S5 via programming interface
 Public Const daveProtoS7online = 50    '  S7 using Siemens libraries & drivers for transport
 Public Const daveProtoISOTCP = 122 '  ISO over TCP
 Public Const daveProtoISOTCP243 = 123 '  ISO over TCP with CP243
 Public Const daveProtoMPI_IBH = 223   '  MPI with IBH NetLink MPI to ethernet gateway */
 Public Const daveProtoPPI_IBH = 224   '  PPI with IBH NetLink PPI to ethernet gateway */
 Public Const daveProtoUserTransport = 255 '  Libnodave will pass the PDUs of S7 Communication to user defined call back functions. 
S7-300 geht bei mir so:
DaveConntyp = 2
DaveProtokoll = 230  bzw.
DaveProtokoll = 223  je nach Adapter.

Wer sagt mir, wie ich das mit TCP machen muss.  Müsste eigentlich einfach sein.
Die Insevis hat keinen MPI, sondern TCP, und der Simatic-Manager geht auch wenn man die 192.168... richtig erinstellt.

Ist von Senator24.


----------



## ChristophD (20 Juli 2016)

Hi,

eventuell hilft das weiter?
http://snap7.sourceforge.net/siemens_comm.html#s7_protocol

Gruß Christoph


----------



## Osccon (20 Juli 2016)

ChristophD schrieb:


> Hi,
> 
> eventuell hilft das weiter?
> http://snap7.sourceforge.net/siemens_comm.html#s7_protocol
> ...




Leider nicht,
kenne ich schon und es enthält nicht wirklich Informationen die mir weiterhelfen koennten.


----------



## ChristophD (20 Juli 2016)

Hi,

dann solltest du eventuell nochmal ganz konkret fragen was du wissen willst.
in dem Link steht alles drinne was du zum ISO Protokoll für die S7Communication wissen must.

Gruß
Christoph


----------



## Osccon (21 Juli 2016)

Oh verdammt, habe beim lesen etwas übersehen.
Ich dachte erst, dass das *S7 Protocol* die einzige Möglichkeit, wäre über TCP zu kommunizieren.
Aber dieses ist nicht öffentlich zugänglich sprich dokumentiert weshalb man das, wenn überhaupt, nur mit großer mühe hätte implementieren können.
Jetzt ist mir beim 2. mal lesen aber noch Open TCP aufgefallen zu dem man glücklicherweise einige Spezifikationen finden kann und was genau nach dem richtigen aussieht.

Danke für eure mühen


----------

