# C++/Winsock/ISO on TCP/SPS Telegrammen



## jorgio (23 Oktober 2005)

Hallo zusammen,

wir haben einen Project bekommen, einen dienst zu erstellen ,der Telegramme von s7-300 cp343 it20gx empfängt und auch sendet.

Ich kriege im Kopf nicht hin, wie es funken sollte. winsocket kenne ich auswendig hier k.p.

Ich habe RFC1006 untersucht, also es werden ISO packete über TCP/IP protokol übertragen.

ISO strucktur ist mir unklar.

Die bibliotheken libnodave,rllib habe ich durchgelesen und kriege nicht hin.Dort werden die daten geholt und in SPS geschrieben. ;-(

Unsere stand:
Ich muss port 5000 binden und warten auf SPS. Wenn die Daten angekommen, verarbeiten und antwort telegramm senden.
SPS hat auch einen eigenen port 5001.

Die s7 funktionen fetch/write sind sie für mich relevant?
Wie muss ich vorgehen bitte?

thx


----------



## bimota (24 Oktober 2005)

jorgio schrieb:
			
		

> Hallo zusammen,
> 
> wir haben einen Project bekommen, einen dienst zu erstellen ,der Telegramme von s7-300 cp343 it20gx empfängt und auch sendet.
> 
> ...



Hallo,
TCP Sockets arbeiten zeichenorientiert. Zur Übertragung von Datenstrukturen von SIMATIC SPS per TCP verwendet Siemens
deshalb das paketorientierte RFC1006-Protokoll über TCP. Der zu verwendende TCP-Port für eine RFC1006-Verbindung ist der
Port 102.

Die Spezifikation des Protokolls ist  im Internet veröffentlicht, z.B. unter RFC1006.

Wahrscheinlich werden die Daten über die SEND/RECEIVE-Schnittstelle der SPS gesendet (du solltest mal fragen warum die SPS Port 5001 verwendet und nicht 102). 

Dazu werden auf der SPS die folgenden von SIEMENS bereitgestellten Funktionsbausteine benötigt und müssen im SPS-Programm aufgerufen werden: Der Funktionsbaustein AG_SEND/AG_LSEND zum Senden von Daten und der Funktionsbaustein AG_RECV/AG_LRECV zum Empfangen von Daten auf der S7.

Alternativ zur SEND/RECEIVE-Schnittstelle kannst Du z.B. mit dem FETCH/WRITE-Protokoll mit deiner Anwendung aktiv die Daten von der SPS pollen (per Fetch-Aufruf). Der Protokollaufbau von Fetch/Write steht in der Doku zum Ethernet-CP mit drin und ist sehr einfach. In diesem Fall musst Du genau wissen in welchem DB deine Daten drinstehen, während bei SEND/RECEIVE die SPS das Datenpaket aktiv sendet.

Falls Du diese Protokolle nicht selbst implementieren möchtest, dann findest Du auch Bibliotheken, die diese Prot. enthalten. Die sind zumeist jedoch nicht kostenlos.


----------



## Rainer Hönle (17 November 2005)

Hallo,

ist das Problem mittlerweile gelöst oder gibt es neue Erkenntnisse?


----------

