# Ethernetverbindung S7 <-> PC



## mnuesser (3 April 2009)

Hallo zusammen,

ich hab da mal ne Frage, ich habe von einem Kunden eine Anfrage bekommen,
bei der ich unter anderem auch eine Verbindung zwischen einem PC -> S7 Steuerung aufbauen muss...

Als S7 Komponennten haben wir ne CPU 315-2DP + ne Ethernet CP (LEan CP) drin.

Ich habe mich jetzt mal in meinen Bausteinen bei Siemens umgeschaut und noch nicht wirklich herausgefunden wie ich eine Verbindung zwischen dem PC und der S7 CPU aufbauen kann. Hat hier jemand sowas schon mal gemacht? 

Im Prinzip soll meine CPU halt nur schauen ob neue Daten angekommen sind (38 Zeichen inkl. Start und Stop-byte) und halt diese Daten auswerten.

Von der CPU Seite ist keine Rückmeldung an den PC von nöten.

Wenn Ihr zufällig irgendwelche Links oder PDFs habt, schickt Sie mir bitte...

vielen Dank


----------



## Rainer Hönle (3 April 2009)

Vollkommen entkoppelt geht dies z.B. mit einer Kommunikationsbibliothek wie libnodave oder AGLink. Mit diesen ist es möglich, Daten in die SPS zu schreiben. Hier einfach noch ein Triggerbit mitschreiben auf das die SPS reagiert. Dann müssen keine Kommunikationsbausteine in der SPS verwendet werden. Alternativ die reine TCP/IP-Kommunikation mit den zugehörigen Bausteinen verwenden und auf dem PC eine entsprechende TCP/IP-Applikation schreiben.
Im ersten Fall baut der PC die Verbindung auf und agiert, die SPS hat mit der Kommunikation nichts weiter zu tun.
Im zweiten Fall kann festgelegt werden, wer die Kommunikation aufbaut.

Wie ist den die SPS parametriert? Welche Verbindungen sind eingerichtet? Was geht nicht?


----------



## mnuesser (3 April 2009)

Also im Prinzip geht es darum, das ein Scanner Paletten scant, dieser mit nem PC verbunden ist und eine Warenverwaltung darstellt. Dieser PC soll mir den gescannten Code schicken, womit ich dann eine Weiche ansteuern würde ( 2 Stretcher) und dann noch entscheiden würde, welches Stretchprogramm bei der gescannten Palette benutzt würde.

Dabei möchte der Programmierer der Warenverwaltung mir einfach nur ne String schicken, wo halt diese Information drin steht.

Noch geht es mir rein um die Machbarkeit, und wie ich das angehen muss.
Welche Kommunikationsbausteine von Siemens würdest du denn nutzen? Ich habe nur die für die PN-Kommunikation gefunden...


----------



## pvbrowser (3 April 2009)

Wenn ich das mit unseren Mitteln machen sollte,
würde ich mir den String über eine Mailbox
http://pvbrowser.de/pvbrowser/sf/manual/rllib/html/classrlMailbox.html
schicken lassen und über TCP
http://pvbrowser.de/pvbrowser/sf/manual/rllib/html/classrlSiemensTCP.html
bzw. serielle Schnittstelle mit libnodave (je nachdem was für ein Adapter vorhanden ist) an die SPS schicken.

Das Ganze würde evtl. noch mit einem User Interface ausstatten.
Sieh Dir dazu mal
http://pvbrowser.org
an.


----------



## mnuesser (3 April 2009)

danke PVBrowser, aber mir geht es erstmal darum die Step7 internen Boardmittel zu benutzen...

btw. ganz oben steht schon das ich ne Ethernet-CP dran habe (wohl ne abgespeckte Lean)


----------



## Ralle (3 April 2009)

Ich hab das mit einer Speed7_Net und deren eingebauten CP gemacht. Der wird wie eine 343 von Siemens projektiert. Den CP in der Hardware konfiguriert und mit Netpro eine spezifizierte Verbindung angelegt (eine unspezifizierte soll auch gehen, hab ich hier gelesen). Dann den FC6 (aus der Siemens-Simatic-Net-Bibliothek, Vipa hat eigene!) in Step7 eingebaut. Sieh dir vor allem auch mal die Hilfe zu diesem Baustein an. Die Kamera hat an die SPS Telegramme fester Länge geschickt. Deren Ankunft wurde angezeigt, die Daten werden in einen Db abgelegt und können dann in der SPS verarbeitet werden.

On die Lean dafür reicht, kann ich aber nicht sagen.
Hier noch ein Beispielcode:


```
//empfangen wird folgender String:
//"xxx:PASS"   Rückgabe Kam.Programmnummer und Prüfung io
//"xxx:FAIL"   Rückgabe Kam.Programmnummer und Prüfung war nio
//Länge des Strings: 8 Zeichen

//es wird ständig von dem CP empfangen
//wenn "DB_RECIVE_KAM".Status = 0 dann liegen neue daten vor
//wenn "DB_RECIVE_KAM".Status = 8180 dann CP empfangsbereit

      U     "DB_SEND_KAM".ACT
      R     "MS16 Daten empfangen"

      CALL  "AG_RECV"
       ID    :=1
       LADDR :=W#16#242                 //578dez
       RECV  :=P#DB201.DBX0.0 BYTE 8
       NDR   :="DB_RECIVE_KAM".NDR
       ERROR :="DB_RECIVE_KAM".Error
       STATUS:="DB_RECIVE_KAM".Status
       LEN   :="DB_RECIVE_KAM".Len


      U(    
      L     "DB_RECIVE_KAM".Status
      L     W#16#0                      //Daten werden empfangen
      ==I   
      )     
      U     "DB_RECIVE_KAM".NDR
      S     "MS16 Daten empfangen"
```

PS. DB_Send_Kam-Act: ich habe immer einen String gesendet und dann einen zurück erwartet, daher lass ich das mal hier im Code drin stehen. Du müßtest das Reseten von "Daten_empfangen" anders angehen!


----------



## jackjones (3 April 2009)

Bei uns hängen die Scanner per Profibus an der SPS, und wir sendem dem überlagertem System dann ein Telegramm mit dem Barcode. LE/TE Nummer


----------



## Rainer Hönle (3 April 2009)

mnuesser schrieb:


> Also im Prinzip geht es darum, das ein Scanner Paletten scant, dieser mit nem PC verbunden ist und eine Warenverwaltung darstellt. Dieser PC soll mir den gescannten Code schicken, womit ich dann eine Weiche ansteuern würde ( 2 Stretcher) und dann noch entscheiden würde, welches Stretchprogramm bei der gescannten Palette benutzt würde.
> 
> Dabei möchte der Programmierer der Warenverwaltung mir einfach nur ne String schicken, wo halt diese Information drin steht.
> 
> ...


Scanner (speziell Barcodescanner) werden sehr oft in die Tastaturschnittstelle eingeschleift. Dann ist für die App nicht erkennbar, ob die Zeichen eingetippt oder gescannt wurden. Wer soll jetzt wann in welchem Programm den Datentransfer vom PC zur SPS starten? Wie die Zeichen dann auf der SPS ausgewertet werden ist dann erst der zweite Schritt.


----------

