# PLC-Daten weiterverarbeitene in Datenbank



## itsam77 (10 Mai 2011)

Hallo,

ich bin eigentlich ein Datenbankprogrammierer und betreue ein ERP-System auf VB.NET Basis mit einer MS SQL Datenbank.

Nun möchte ich Maschinendaten aus PLC-Adressen in eine SQL-Datenbank übertragen um sie später in der ERP Software anzeigen/auswerten zu können.

Es geht lediglich um folgende Informationen aus den PLC-Adressen:
Maschinenzustand
Stückzähler
iO Teile
Zykluszeit

Die PLC-Adressen habe ich von den Maschinenherstellern bekommen. Auf allen Maschinen läuft die Sinumerik 840d und sind mit dem Netzwerk verbunden.

Gerne würde ich die Daten über das Netzwerk in eine Tabelle schreiben.
Da ich NULL Ahnung habe würde ich mich über Antworten freuen.
Wie gehe ich vor um Daten aus den PLC-Adressen der Maschinen auf eine Datenbank im Netzwerk zu speichern. Sind hierfür bereits Treiber für Maschinen vorhanden, sind diese kostenpflichtig?

Vielen Dank 
SB
ITSAM77


----------



## Jochen Kühner (10 Mai 2011)

Schau dir mal AGLink von DeltaLogic an, das scheint Sinumerik zu unterstützen: http://www.deltalogic.de/content/view/21/38/

Welche Schnittstelle du da brauchst, kann Ich dir aber leider auch nicht sagen, hatte damit noch nie was zu tun...


----------



## Jochen Kühner (10 Mai 2011)

Wie du hier lesen kannst (http://spsforum.com/showthread.php?t=9540) sollte der PLC Zugriff auch noch über libnodave funktionieren. 

Wenn das so ist, kannst du vielleicht auch meinen Wrapper für LibNoDave (siemensplctoolboxlib.codeplex.com) oder S7Net (s7net.codeplex.com) verwenden! Kann dir aber nicht sagen ob das wirklich geht....


----------



## rudl (23 Mai 2011)

Mit SQL4automation kannst du direkt mit SQL-Strings über eine TCP/IP Sockets Verbindung aus der SPS auf die Datenbank zugreifen. Auf Seite der SPS muss nur eine Bibliothek eingebunden und der Connector parametriert werden.


----------



## bike (23 Mai 2011)

rudl schrieb:


> Mit SQL4automation kannst du direkt mit SQL-Strings über eine TCP/IP Sockets Verbindung aus der SPS auf die Datenbank zugreifen. Auf Seite der SPS muss nur eine Bibliothek eingebunden und der Connector parametriert werden.



Auf eine 840D? 
Kannst du beschreiben wie das funktionieren soll?
Du musst dir bei der 840d über dde die Daten verfügbar machen, bevor du diese über die Socket abholen/schicken kannst, nach meinem Wissen.


bike


----------



## rudl (24 Mai 2011)

Hallo bike!

Leider kenne ich die Sinumerik nicht. Befinden sich die Variablen in der Sinumerik selber, oder auf einer zusätzlichen SPS? Aus der Sinumerik hast du ja sicher Zugriff auf die Variablen.
SQL4automation ist eine Software, die auf der einen Seite ein Verbindung an eine Datenbank via ODBC macht. Auf der anderen Seite wird eine Port geöffnet. Auf diesen Port kannst du dich mit deiner SPS, Roboter oder einer anderen Steuerung verbinden. Aus der Steuerung schickst du direkt den SQL String ab. Auf www.sql4automation.com findest du im Downloadbereich ein Beispiel mit einer S7 300 Steuerungen. Da du nicht nur Fix einen Wert mit einem Datensatz verbindest, kannst du den vollen Umfang der SQl Sprache nutzen. Stored Procedures können aus Steuerung auch direkt ausgeführt werden.


----------



## bike (24 Mai 2011)

rudl schrieb:


> Leider kenne ich die Sinumerik nicht. Befinden sich die Variablen in der Sinumerik selber, oder auf einer zusätzlichen SPS? Aus der Sinumerik hast du ja sicher Zugriff auf die Variablen.



Aber ich kenne die Sinumerik.
Du hast den Hinweis gegeben und ich wollte wissen wie du das realisieren willst.
Es kommt nicht gut, wenn Tipps oder Hinweise kommen, die einfach falsch sind.


bike


----------



## rudl (24 Mai 2011)

Ich bin davon ausgegangen, dass man aus der Sinumerik eine Socketverbindung erstellen kann und Zugriff auf die Variablen hat. Aber scheinbar ist dem nicht so...


----------



## itsam77 (7 Juni 2011)

Hallo,
habe nun einiges gelesen und würde gerne die ersten Versuche mit libnodave starten.
Allerdings finde ich hier keine richtige Anleitung wie ich die DLLs installiere. Vielleicht kann mir jemand kurz die einzelnen Installationsschritte erläutern und ein paar Zeilen Code hinterlassen. Wäre toll, vielen Dank im Voraus.
Ich habe folgende Situation:
Maschine: Siemens Sinumerik 840d, IP-Adresse 192.168.0.192, PLC-Adresse zum Auslesen DB94.DBD35 (Stückzähler)
Entwicklungsumgebung: Win7 64bit, Microsoft Visual Studio 2008 und leider programmiere ich nur in VB.NET.
Ich hätte gerne die Werte der PLC-Adresse DB94.DBD35 in eine Variable gespeichert. Ich würde mich über Helfer freuen. 
Viele freundliche Grüße
ITSam77


----------



## bike (7 Juni 2011)

itsam77 schrieb:


> Maschine: Siemens Sinumerik 840d, IP-Adresse 192.168.0.192,



Du musst auf der  840D zunächst dir die Daten aus der PLC holen.
Dafür kann man z.B. den DDE Serverdienst verwenden. 
Es ist nach meinem Wissen nicht möglich direkt über IP in die PLC zu greifen.
Du kannst auch über X102 einen MPI/IP Adapter anschließen, der dann direkt auf die PLC zugreift.
Doch ob das funktioniert? Ich habe noch nicht getestet. 


bike


----------



## itsam77 (7 Juni 2011)

Hallo bike,
danke für Deine schnelle Antwort. Ich würde zunächst mal versuchen die Daten per DDE Serverdienst aus den PLC-Adressen zu holen. Hast Du dafür eine Anleitung? Heißt das, dass diese Aufgabe lokal am Bedienteil der Maschine durchgeführt werden muss? Muss ich die Daten dort in eine Datenbank schreiben?
Lieber wäre mir natürlich wenn es doch irgendwie funktionieren würde die Adressen direkt aus dem Netzwerk anzusprechen J
Ich freue mich auf eine Antwort.
SB ITSam


----------



## wiesson (21 März 2013)

Auch wenn der Thread etwas älter ist, das mit dem Netzwerk würde mich auch interessieren.  

Ich habe neulich eine C++ app Entwickelt, die auf dem HMI Computer läuft und über DDE/HOTLINK mir z.B. 

```
/Channel/State/actTNumber[u1]
/Channel/ProgramPointer/blockNoStr[u1,1]
/Channel/SelectedFunctions/ncFkt[u1]
```

direkt an einen server+port schickt. 

Dort kann ich z.B. mit eigentlich fast einer beliegen Sprache die Daten in eine MySQL(MariaDB) schieben. Klappt sehr gut - jedoch muss ich dafür auf dem HMI Computer der CNC Maschine Programm starten, in den Autostart schieben und Port+IPAdresse definieren.


----------



## Sven Rothenpieler (21 März 2013)

Schau dir parallel auch mal unser *ACCON-AGLink* an. Dort hast du auch einen API-Guide zur Verfügung, welcher sämtliche Funktionen von AGLink zum Sinumerikzugriff als Quellcode und mit Erklärung bereitstellt. Die Demoversion ist übrigens nur zeitlich begrenzt, das heißt, du kannst auf Herz und Nieren testen


----------



## wiesson (21 März 2013)

Hui, meine Augen lesen sogar eine Unix Version? :s6:
Vielen Dank, ich werde es gleich morgen an der Hermle C50 testen


----------



## Sven Rothenpieler (22 März 2013)

wiesson schrieb:


> Hui, meine Augen lesen sogar eine Unix Version? :s6:



Wir gehen sogar soweit und bieten es für Solaris, OS9000 und VxWorks an  Kannst ja mal über deine Tests berichten. Und bei Fragen einfach auf mich zukommen, gerne auch telefonisch oder per PN oder E-Mail. Schönes Wochenende und frohes Testen


----------



## wiesson (24 März 2013)

Besten Dank, ich melde mich gleich per PN


----------

