# Profinet Daten am PC auslesen



## Julian122 (5 Februar 2020)

Hallo Forum,
ich befinde mich zur Zeit an einem Projekt bei dem ich einen  Industrieroboter habe und von diesem die Achswerte in einem PC Programm  (C#)verwenden möchte.

Laut Angaben des Roboterherstellers ist es möglich die Achswerte auf Profinet zu mappen. Meine Frage ist nun wie ich diese Daten am PC auslesen kann. 
Ich hab also einen Industrieroboter mit Profinetkabel zu einem Switch, einer SPS etc. Wie lese ich diese Daten am besten aus einem Programm, was auf meinem PC läuft aus und verwende sie dort sofort weiter? 

Gruß
Julian

EDIT: habe zwei Posts gemacht gehabt, um in zwei verschiedene Richtungen zu fragen. Hat nicht so gut geklappt. Werde den anderen Post löschen.
Informationen aus anderem Post:
Ich habe hier bereits im Forum gesucht und bin dabei nur auf "alte" Posts gestoßen, die dieses Problem behandeln.
So habe ich LibNoDave gefunden. Die letzten Änderungen davon scheinen   aber von 2014 zu sein und ich wollte mal wissen, ob das überhaupt noch   aktuell ist und funktioniert? und wo ich eine gescheite Dokumentation   dazu finde.

Abgesehen davon habe ich noch gesehen, dass es wohl Bausteine im TIA   Portal gibt, mit denen man so eine TCP Verbindung aufbauen kann. Hab   darüber aber nur SPS zu SPS verbindungen gesehen. Würde das auch mit   einem PC und einem darauf geschriebenem Programm funktionieren?

Und gibt es generell noch andere Möglichkeiten? Ich will wie gesagt nur   Daten in mein Programm am Rechner bekommen. Also am besten irgendeine   TCP/IP Kommunikation aufbauen.


----------



## Howard (5 Februar 2020)

Moin,
wer eine allgemeine Frage stellt, muss leider auch mit einer allgemeinen Antwort leben: Es kommt darauf an 
Wenn deine SPS OPC kann, wäre der Zugriff auf die Daten via OPC auf die SPS möglich (sofern die Daten auch in der SPS sind)
Wenn du eine SPS Programmieren kannst, kannst du eine z.B. TCP/IP Verbindung zum PC implementieren.
Wenn dein Roboter eine Service-Schnittstelle hat, kannst du vielleicht direkt mit deinem Programm auf den Robi zugreifen
... 
Wie du merkst, viele Wege führen nach Rom.


----------



## Guga (5 Februar 2020)

Da muss ich jetzt doch den Kopf schütteln.

Die Frage liest sich wie "ich habe ein Fahrzeug - wie starte ich es?" Meine Antwort: Kontaktiere die Doku und frage beim Hersteller nach. 
Ohne mehr Infos wird dir hier keiner helfen können.
Die Glaskugel sagt schon mal vorab:
Entweder wird es eine API (und DLL) geben mit der du per TcP zum Robbi reden kannst oder aber du brauchst einen ProfiNet Master...

Guga


----------



## Julian122 (5 Februar 2020)

Ja hab ich mir schon gedacht, dass es zu allgemein gefragt war. Sorry
OPC Server sind nicht vorhanden
Bin kein SPS Profi, aber denke kann mich da schon reinfuchsen, wenn ich grob die Richtung weiß. Hab bei Siemens SIMATIC SPS gefunden, dass es bestimmte Bausteine für eine TCP/IP Verbindung gibt. Allerdings hab ich dazu nur SPS zu SPS Beiträge gefunden. Geht das auch zu PC Programmen? Oder was genau meinst du damit?
Die Service Schnittstellen benötigen meistens ein zubuchbares Paket und sind zu teuer bzw. wäre es gut wenn es nicht auf einen Roboterhersteller festgelegt wäre. (Unterschiedliche Hersteller haben ja schließlich unterschiedliche Schnittstellen)

Deswegen war der Gedanke eben über SPS bzw. direkt über Profinet zu gehen.


----------



## ChristophD (5 Februar 2020)

Hi,

erstmal solltest du klären was genau damit gemeint ist:
"Achswerte auf Profinet zu mappen", meiner Ansicht nach ist das nix anderes als die Werte auf ein Nutzdatentelegram zu packen welches über Profinet IO Telegramm dann an die SPS verschickt wird.
Darüber werden in 90% der Fälle dann die Daten zwischen SPS und Robot ausgetauscht über eine vorher definierte Telegrammstruktur.
Diese Daten kannst Du dann innerhalb der SPS verwenden wie du möchtest, auch mittels der Kommunikationsbausteine an einen PC und dem dort laufenden Programm schicken.
Das Programm auf dem PC musst du natürlich auch noch schreiben und entwickeln.

Und sowas wie eine Universallösung wird das nicht werden, dafür kocht einfach jeder Hersteller etwas zu sehr sein eigenes Süppchen, also wirst du da für jeden was mehr oder weniger spezifisches machen müssen.

Aber fang doch einfach mal damit an welcher Roboter, welche Switch und welche SPS sind vorhanden?

Gruß
Christoph


----------



## Howard (5 Februar 2020)

Ich sehe das wie ChristophD. Das mappen der Daten auf Profinet heißt nichts anderes, als dass die Prozessdaten für die SPS wohl relativ frei auf der Robi-Seite zu konfigurieren sind. Mit deinem Programm auf einem PC kommst du da nicht ohne weiteres ran.
Also müsstest du alle Daten auf der SPS-Seite einsammeln. Diese Datenbank könnte man auch allgemein halten und dann wie auch immer Richtung PC schieben. Wenn es sich um unterschiedliche Roboter handeln, wäre das Aufgabe der SPS, die von dir benötigten Daten im "standardisierten" Format für dich zu bündeln. Der SPS-Programmierer (oder du) muss ja eh für jeden Roboter-(Hersteller) einen eigenen Treiber schreiben. Dort bspw. muss man die Daten dann nur in deine "Standard-Roboter-Datenbank" formatieren.
Wie du nun die Daten von der SPS an dein PC-Programm bekommst, kannst du dir quasi aussuchen. Die aktuellen 1500er SPSen von Siemens haben einen OPC UA Server an Bord (man muss nur eine entsprechende Lizenz kaufen). Oder aber du schreibst ein paar Zeilen und schickst die Daten von der SPS via TCP/IP weg. Der SPS ist dabei egal ob der andere Partner eine SPS, ein PC oder sonst was ist.


----------



## Julian122 (5 Februar 2020)

Ja, ich meine damit diese Daten über Profinet zu senden.
An die Daten von  der Robotersteuerung komm ich nicht so ohne Weiteres. Es gibt die  Möglichkeit dort einen TCP/IP Server zu konfigurieren oder teure  zubuchbare Optionen zu kaufen, aber das möchte ich eigentlich ungern  verwenden.
Deswegen suche ich eben nach einer anderen Möglichkeit. In diesem Fall jetzt z.B. mit Profinet.
Wenn  ich mich richtig informiert habe, bräuchte ich an meinem PC einen  Profinet Stack/Master, der das Profinet Protokoll auswerten kann (was ebenfalls wieder einiges kosten würde, nehm ich an?). 
oder  ich schicke die Daten eben an die SPS und diese schickt sie weiter an  meinen PC. Für diesen Fall hab ich zum einen die Kommunikationsbausteine  gefunden und die LibNoDave Bibliothek. Hat damit jemand Erfahrung?

Als Roboter hab ich zur Zeit ein Kuka 6-Achs Roboter Kr360 und eine Siemens SIMATIC SPS.


----------



## DeltaMikeAir (5 Februar 2020)

Also ich habe das schon an einer Anlage gemacht.

*Grob* zusammengefasst:
Kommunikation zwischen KUKA KRC2 / KRC4 Steuerung muss projektiert werden ( Profibus oder Profinet ), und zwar auf beiden Seiten.
An der S7 Seite muss dann die entsprechende GSDML Datei eingefügt und projektiert werden.

Wenn die Verbindung steht, musst du die gewünschten Systemvariablen in der Sub.SPS am Robi entsprechend an die Kommunikations-
variablen übergeben.

Ich sage es aber gleich mal dazu, das ist schon etwas Aufwand und man benötigt doch einige Kenntnisse


Was ich jetzt nicht so ganz verstehe, wenn ich alles hier lese, soll der Roboter mit einem PC mit einer C# Applikation reden oder mit einer SPS.


----------



## DeltaMikeAir (5 Februar 2020)

Hier mal die Systemvariablen
Anhang anzeigen KUKA System Variables 8.1 8.2 8.3.pdf


----------



## Julian122 (6 Februar 2020)

Danke für die Hinweise.

Also der Roboter soll seine Achswerte an einen PC schicken und diese sollen dann in einem C# Programm verwendet werden.
Die SPS war nur als Middleware gedacht. Grund dafür ist, dass es sich im späteren Verlauf nicht nur auf Kuka Roboter beschränken soll. 

Mir ist klar, dass es bei Kuka z.b. das RSI(Robot Sensor Interface) oder [FONT=&quot]KUKA.EthernetKRL gibt, um direkte Verbindung mit dem PC herzustellen, aber die Optionen kosten schon eine Stange Geld und beschränken sich nur auf Kuka.

Die einzig gemeinsame Komponente bei verschiedenen Roboterherstellern, hab ich in der SPS bzw. Profinet gesehen.

Fällt dir da noch mehr ein? oder eine bessere Option?
[/FONT]


----------



## Howard (6 Februar 2020)

Ich verstehe dein Problem gerade nicht - es ist doch jetzt alles beantwortet oder nicht.
1. du willst keine Kommunikation direkt zum Robi - also alle für dich relevanten Daten müssen (egal von welchem Hersteller) zur SPS.
   -> wie das bspw. bei Kuka geht hat Delta beschrieben in #8 und #9
2. Die gesammelten Daten von der SPS an deinen PC bekommen
   -> hier kannst du OPC der SPS (falls Siemens 1200er oder 1500er) oder bspw. TCP/IP nutzen (hier ein aktueller Link zum Thema inklusive C# Code zum Verbindung herstellen: TIA Verbindung zu C# Programm mittels TCON, TSEND, TRECV und TDISCON)

Wo genau hakt es denn jetzt noch?


----------



## JesperMP (6 Februar 2020)

> Wenn ich mich richtig informiert habe, bräuchte ich an meinem PC einen Profinet Stack/Master, der das Profinet Protokoll auswerten kann (was ebenfalls wieder einiges kosten würde, nehm ich an?).


Das wäre einen Weg. Simatic Softnet PN IO kostet ungf. 800€ für eine Lizenz.

Wenn die Verbindung zwischen Roboter und PC direkt sein muss, dann muss der PC Profinet IO Controller sein, oder eventuell Profinet Device (wenn der Roboter Profinet IO Controller ist).
Ich kenne 2 Hersteller von PC Software und Hardware.
Siemens, die Software heist Simatic Softnet PN IO. Das Schnittstelle zwischen Simatic Softnet und dein Anwendersoftware kann entweder OPC DA, OPC UA oder SAPI-S7 sein. SAPI-S7 ist eine Siemens-spezifike Schnittstelle zwischen Simatic Net und PC Anwendersoftware. SAPI-S7 ist für Ansi C freigegeben.
Softing. Ansi C, Ansi C++, .Net.
Google findet noch weitere Anbieter von Profinet stacks für PCs.

Die Idée eine SPS mit Profinet Schnittstelle als Middleware zu verwenden ist nicht schlecht.
Wenn man z.B. eine Siemens S7-1200 verwendet, öffnet viele Möglichkeiten die daten von den S7-1200 zu holen, u.A. über ein S7-Verbindung. 
Für S7-Verbindungen gibt es x Anzahl Anbieter von Software, auch freeware (Libnodave, Snap7). Es gibt mehrere professionelle Anbieter. u.A. Deltalogics Accon-AG-link. Für MS C/C++, Codegear Delphi/C++, Java.
Es gibt mehrere andere Lösungen als S7-Verbindung, z.B. den erwähnte "open communication" Send/Receive.


----------



## Julian122 (6 Februar 2020)

@Howard Danke für den Link. Werd ich versuchen so umzusetzen.

@JesperMP hab mich dahingehend mal informiert und wenn ich das richtig sehe bräuchte ich für den direkten Weg von Roboter zu PC über Profinet die Softnet PN IO Software und im PC eine Layer 2 Ethernet Karte. Und über Softnet PN IO gibts eine C/C++ Schnittstelle (auch eine OPC Schnittstelle, aber damit kenn ich micht nicht so gut aus. Ist das einfach damit die Daten in ein C# Programm zu bekommen?) mit der ich dann die Daten in mein C# Programm kriegen könnte.
Ich könnte auch eine Netzwerkkarte mit Chip benutzen und bräuchte dann kein Softnet PN IO. Dabei wäre die Geschwindigkeit nicht vom PC sondern von dem Chip abhängig, aber ist wahrscheinlich teurer?

Bei Softing scheint es genauso zu sein.

Was das besondere an einer S7 Verbindung ist, hab ich nicht ganz verstanden. Aber mir erscheint die Open Communication als recht sinnvoll. 
Snap7 scheint mit Windows 10 nicht kompatibel zu sein und fällt deswegen raus.
Werde es erst über Open Communication versuchen und falls das zu langsam ist oder an irgendetwas anderem scheitert, werd ich mal Libnodave probieren.


----------

