# Direkte Datensicherung und Archivierung von SPS-Daten in eine Datenbank (MySQL)



## elektroniktommy (21 März 2018)

Hallo zusammen,

ich möchte Daten aus der SPS (SIMATIC S7-1500)direkt, ohne Umwege, in eine MySQL-Datenbank speichern. Konkret sind das Rezeptur/Artikeldaten, Betriebsdaten der Anlage und die Störungen bzw. Meldungen der Anlage, um später eine Auswertung und Optimierung (mit Excel) der Maschine zu ermöglichen.

Kurz zu meiner Person: Ich heiße Thomas (Tommy), programmiere schon über 30 Jahre SPS und habe mich dabei hauptsächlich mit der Maschinenseite (Steuerung) befasst. 
Jetzt möchte ich ein größeres Projekt in Richtung Datenerfassung und Archivierung zur Analyse realisieren. Anfangs möchte ich nur eine Maschine als Prototyp und Testanlage erweitern. 

Mein bisheriger Aufbau besteht aus einer SIMATIC S7-1500 CPU und ein Raspberry-Pi 3 auf dem eine Datenbank (MySQL) läuft. Der Pi wurde um eine Netzwerkschnittstelle erweitert und fungiert somit auch als Gateway zwischen Maschine und EDV-Netzwerk. Später soll darüber auch eine Fernwartung möglich sein.
Grundsätzlich funktioniert bis jetzt alles so wie es soll. Mir geht es jetzt um die Strukturierung der Datenbank und des Ablaufes in der SPS zur Übertragung der gewünschten Informationen. 

Wie würdet ihr die Datenbank strukturieren? In welchen Intervallen sollte man die Betriebsdaten schreiben? Wie sind da eure Erfahrungen? 
Da Störungen zu beliebigen Zeiten und mehrere Zeitgleich auftreten können müsste man die Meldungen in der PLC speichern und dann seriell aus einem Puffer in die Datenbank schaffen. Wie kann man das elegant lösen.

Gibt es dazu vielleicht ein Beispiel, nach dem man eine Übersicht und Struktur ableiten kann. Jede Idee ist willkommen!

Die Datenbankanbindung (Die SPS spricht MySQL) habe ich fast fertig und möchte nun die Organisation in Angriff nehmen. Da stehe ich aber irgendwie auf dem Schlauch bzw. sehe den Wald vor lauter Bäumen nicht. Noch als Info, in der SPS gibt es schon ein Störmeldearchiv auf dem Panel, kann man das nutzen bzw. auslesen und zur Datenbank schaffen? 

Danke schon mal für Eure Bemühungen.

MfG Tommy
(Thomas Unger)


----------



## FrankVonWelt (28 März 2018)

Hi Tommy,

d.h. du brauchst konkret Beratung beim DB Layout?
Dann wirst du wohl konkretere Angaben machen müssen, was da genau rein soll. 
Den einen richtigen Weg gibt es ohnehin nicht, da verfolgen verschiedene Leute verschiedene Philosophien.

Ich denke es läuft auf etwas hinaus wie :

Tabelle Rezepte (welche daten auch immer dein Prozess benötigt)
Tabelle Aufträge (auftragsbezeichnung, rezeptverweis, anzahl zu produzierender teile, gutstückzahl, schlechtstückzahl,
Tabelle Fehler ( datum, uhrzeit, severity level (warnung fehler info?), verweis auf rezept oder auftrag?, verweis auf 1-x benutzte komponenten in diesem rezept
Tabelle OEE Daten (Datum, Uhrzeit, Änderung des maschinenzustandes nach ......) z.b. Running,Failure,scheduled downtime,unscheduled downtime ...ferner starved,blocked.. beliebig erweiterbar  -> http://oeestandard.com/eng/eng_4_definition.html

Für mich riecht das Ganze nach: "der Chef sagt, wir brauchen Industrie 4.0, los geh Daten sammeln!"

Viel Erfolg 

Gruß

Frank


----------



## Blockmove (28 März 2018)

@Thommy

Wieso willst du das Rad neu erfinden?
Wenn du im Internet nach BDE (Betriebsdatenerfassung), MDE (Maschinendatenerfassung) und / oder MES (Manufacturing Execution System) suchst, wirst du viele Systeme finden.
Die Preisspanne ist natürlich weitgespannt 

Wenn du's trotzdem selber machen willst, dann solltest du bevor das Thema Datenbanken angehst, klären welche Daten überhaupt wichtig sind.
Also erstmal mit den Leuten zusammensitzen, die mit den Daten arbeiten sollen, wollen oder müssen.
Die Anforderungen unterscheiden sich erheblich ob ich z.B. einzelne Maschinen optimieren will, den Fertigungsfluss verbessern will oder Auftragsverfolgung und Quailtätsdaten tracken will.

Gruß
Blockmove


----------



## elektroniktommy (28 März 2018)

Hallo, 
Vielen Dank für die Info. Es geht nicht ums Daten sammeln, dass macht die Maschine schon lange. Bisher wurden die Daten händisch abgeschrieben! Das möchte ich jetzt etwas automatisieren. Dabei möchte ich Maschine und EDV relativ sicher trennen. Käufliche Lösungen sind sicher machbar, aber man  ist dann immer auch davon abhängig! Von den Preisen mal ganz abgesehen. Das ganze macht auch noch Spaß und man lernt ne Menge dazu! 

Gruß Tommy


----------



## Blockmove (29 März 2018)

elektroniktommy schrieb:


> Es geht nicht ums Daten sammeln, dass macht die Maschine schon lange. Bisher wurden die Daten händisch abgeschrieben! Das möchte ich jetzt etwas automatisieren.



Dann würde ich ganz pragmatisch das Ganze in eine einzelne Datenbanktabelle packen. Zeitstempel für jeden Datensatz und gut is.
Wenn dann Änderungswünsche kommen, dann kannst du mit ein paar Zeilen SQL die Daten in passende Tabellen verschieben.
Mit Lernen und Spass hast du Recht 

Falls ihr nen Micrsosoft SQL-Server im Haus habt, dann frag mal, ob du da deine Daten ablegen kannst.
Für den SQLServer gibt es die Reporting-Services. Damit kann man dann absolut einfach die Anlagendaten visualisieren und im Intranet verfügbar machen.
Wenn du mit Excel klarkommst, dann kommst du auch damit klar. Auf Youtube gibt es genügend Tutorials.
Zum Üben kannst du dir den kostenlosen SQL-Server Expreess installieren.
Wenn ich auch sonst kein großer Microsoft Freund bin, das Teil finde ich klasse.

Gruß
Blockmove


----------



## scrfc71 (29 März 2018)

mich würde grundsätzlich interessieren, wie die Datensammlung aktuell vonstatten geht? Welche Protokolle werden hierbei eingesetzt und wie werden die Daten abgelegt?


----------



## Blockmove (29 März 2018)

scrfc71 schrieb:


> mich würde grundsätzlich interessieren, wie die Datensammlung aktuell vonstatten geht? Welche Protokolle werden hierbei eingesetzt und wie werden die Daten abgelegt?



Auf einem Raspberry Pi bietet sich z.B. eine Umsetzung mit Python an.
Kommunikation zur S7 kannst du dann mit Snap 7 realisiseren.
Als Datenbank MySql / MariaDB.
Solange du nur rein zyklisch die Daten abfrägst und einträgst, ist so eine Applikation schnell erstellt.

Die Auswertung kann dann auf dem PC mit Excel erfolgen. Man benötigt dafür den MySQL-Connector für Windows.

Gruß
Blockmove


----------



## scrfc71 (29 März 2018)

Blockmove schrieb:


> Auf einem Raspberry Pi bietet sich z.B. eine Umsetzung mit Python an.
> Kommunikation zur S7 kannst du dann mit Snap 7 realisiseren.
> Als Datenbank MySql / MariaDB.
> Solange du nur rein zyklisch die Daten abfrägst und einträgst, ist so eine Applikation schnell erstellt.
> ...


Danke für die Infos!

Ich meinte eigentlich "einfache Daten", wie z.B. Maschinenzustand . Da ich im Bereich SPS relativ neu bin, interessiert mich die Umsetzung, weil man die Vorgehensweise auf zig Anwendungsszenarien (Signale sammeln und in der DB auswerten) ausweiten kann.


----------



## Blockmove (29 März 2018)

scrfc71 schrieb:


> Ich meinte eigentlich "einfache Daten", wie z.B. Maschinenzustand . Da ich im Bereich SPS relativ neu bin, interessiert mich die Umsetzung, weil man die Vorgehensweise auf zig Anwendungsszenarien (Signale sammeln und in der DB auswerten) ausweiten kann.



Eins hab ich gelernt:
Einfache Daten gibt's nicht 
Und Maschinenzustand schon mal gar nicht 

Üblicherweise geht es immer ganz sompel los:
Einfach mal eine Übersicht mit dem Anlagenzustand.
Dann als Erweiterung eine Störungsauswertung, dann noch IO-NIO-Teile, ...
Und Ruck-Zuck ist man bei einer kompletten MDE-BDE-Anwendung.

Solange man seine Daten auf SPS und Datenbankseite noch selber definieren kann, ist es ok.
Lustig wird es wenn man sich dann mit IT und / oder externen Partnern rumschlagen muß.

Gruß
Blockmove


----------



## elektroniktommy (30 März 2018)

Blockmove schrieb:


> Eins hab ich gelernt:





Blockmove schrieb:


> Solange man seine Daten auf SPS und Datenbankseite noch selber definieren kann, ist es ok.
> Lustig wird es wenn man sich dann mit IT und / oder externen Partnern rumschlagen muß.
> 
> Gruß
> Blockmove



Hallo Blockmove,

Auch deshalb versuche ich eine eigene Lösung! 
SQL-Server haben wir im Haus. Da müssen die Daten aber auch irgendwie hin, was bedeutet ich muss Maschine und EDV irgendwie verbinden. Da mir bisher die Lösungen mit Siemens Router und Securty-Gateway einfach zu teuer vorkommen habe ich nach einer kostengünstigen und einfachen Lösung gesucht und möglichst ohne OPC-Server. Deshalb habe ich jetzt zum Test die Geschichte mit einem Raspberry aufgebaut. Auf dem Pi läuft zur Zeit nur MySQL und später soll hier noch ein VPN-Server laufen über den ich dann auf die SPS zu Wartungszwecken zugreifen kann. Aber das ist Zukunftsmusik! Im Moment schreibe ich die Daten direkt mit der SPS(S7-1500), über einen eigenen MySQL-Treiber, in die Datenbank. Python und Snap7 kommt später ins Spiel wenn auch Alte S5 Anlagen ans Netz sollen.​Eventuell wage ich auch noch  mal einen SPS-Treiber der MS-SQL kann aber soviel Langeweile werde ich die nächste Zeit wohl nicht haben, zumal der MySQL-Treiber auch noch nicht richtig fertig ist. Er kann zur Zeit nur in die Datenbank schreiben. Ich möchte aber später auch Daten zurück lesen können. 

@scrfc71  Zur Zeit werden einfach Zeiten für Automatik, Stillstand, Störung usw. und IO-NIO-Teile für ein Dreischicht-Modell in der Maschine erfasst und in einem Puffer von 100 Datensätzen (100 Tage) zwischen gespeichert und können über das Panel ausgelesen werden. Störmeldungen und Betriebsmeldung werden im Panel via Archiv gespeichert. 

Auf die Zeiten kann ich jetzt einfach zugreifen und werde sie zum MySQL-Server übertragen. Das ganze läuft über einen Puffer (FIFO mit 100 Einträgen) in dem die SQL-Befehle im Klartext abgelegt werden und dann nacheinander zum Server übertragen werden, d.h. es können auch mehrere Ereignisse gleichzeitig auftreten und es wird kein Verlust an Infos geben wenn zum Beispiel mehrere Meldungen oder Infos gleichzeitig auflaufen (So ist der Plan und ich hoffe das er auch funktioniert!)​

Schöne Ostern
Gruß Tommy


----------



## Blockmove (30 März 2018)

@Thommy

Die Idee mit dem Raspberry ist primär nicht schlecht.
Es gibt genügend Firmen, die dir einen Raspberry in einem Gehäuse und 24V-Spannungsversorgung als IOT-Gateway für 1500€ verkaufen 
DB-Treiber in der Steuerung halte ich nicht unbedingt für sinnvoll. Wenn man Änderungen an der DB vornimmt, dann musst du jede Steuerung anpassen.
Ich denke da bist du mit einer Lösung mit Snap 7 deutlich flexibler.
Wenn du das Ganze mit Pyhthon, PHP, Perl oder Ähnlichem realisierst, dann ist es auch fast egal welche Datenbank verwendet wird.
Du tauscht quasi nur den DB-Treiber aus und parametrierst die entsprechende DB.
Bei einfachen SQL-Befehlen sind die Unterschiede zwischen den verschiedenen DBs nicht sonderlich groß.
Und so lässt sich die Lösung auch schön skalieren.
Sobald mehrere Maschinen auf die DB zugreifen und gleichzeitig Auswertungen aus der DB erfolgen, wird der Raspi in die Knie gehen.
Da du ja sowieso eine Schnittstelle zum IT-Netz hast, kann da dann auch die DB auf einem Server laufen.

Gruß
Blockmove


----------



## elektroniktommy (30 März 2018)

Hallo Blockmove,
Ich wollte in jede Maschine einen Pi einbauen, da dieser auch das Maschinenmetzwerk vom IT-Netzwerk trennen soll und das halt kleines Geld! Ich wollte halt erst mal eine Lösung die funktioniert, zum Testen die ohne IT Einbindung läuft. Hat auch Spaß gemacht den Treiber in der SPS zum programmieren. Änderungen an der Datenbank sind ja eigentlich nur notwendig wenn in der SPS auch mehr Daten zur Verfügung stehen, d.h.  In der SPS werden auch Änderungen fällig. Dann kann ich auch die SQL-Befehle mit ändern. Die Arbeit bleibt dabei gleich denke ich.

Python und Snap7 will ich auf alle Fälle auch noch machen! Die Lösung in der SPS finde ich aber besser da ich Immer nur auf die DB zugreife wenn neue Daten in der SPS vorhanden sind. Mit Snap7 muss ich ja immer Pollen oder wie stelle ich fest das neue Daten vorhanden sind?

Gruß Tommy


----------



## Blockmove (31 März 2018)

elektroniktommy schrieb:


> Hallo Blockmove,
> Ich wollte in jede Maschine einen Pi einbauen, da dieser auch das Maschinenmetzwerk vom IT-Netzwerk trennen soll und das halt kleines Geld! Ich wollte halt erst mal eine Lösung die funktioniert, zum Testen die ohne IT Einbindung läuft. Hat auch Spaß gemacht den Treiber in der SPS zum programmieren. Änderungen an der Datenbank sind ja eigentlich nur notwendig wenn in der SPS auch mehr Daten zur Verfügung stehen, d.h.  In der SPS werden auch Änderungen fällig. Dann kann ich auch die SQL-Befehle mit ändern. Die Arbeit bleibt dabei gleich denke ich.
> 
> Python und Snap7 will ich auf alle Fälle auch noch machen! Die Lösung in der SPS finde ich aber besser da ich Immer nur auf die DB zugreife wenn neue Daten in der SPS vorhanden sind. Mit Snap7 muss ich ja immer Pollen oder wie stelle ich fest das neue Daten vorhanden sind?
> ...



In jeder Maschine einen Pi einzubauen ist ok. Würde ich auch machen.
Ob allerdings auf jedem eine DB sinnvoll ist, hängt sehr stark von Aufbau eurer Fertigung ab.
Wenn es nur Einzelmaschinen mit geringen fertigungstechnischen Abhängkeiten sind, dann ok.
Stehen die Anlagen in einer Linie oder es sind durch das Produkt viele Abhängigkeiten, dann würde ich auf eine andere DB-Struktur geben.
Wenn Qualitätsdaten und Fertigungssteuerungskonzepte (Schreiben in die Steuerung) ins Spiel kommen, dann musst du auch auf das Thema Datenintegrität achten.
Hier hat der normale PI den Nachteil, dass er keine USV hat. Das Dateisystem und somit auch die DB können bei Stromausfall relativ leicht zerschossen werden.
Ich hab diverse PIs bei mir zu Hause im Einastz (Mediencenter, 3D-Druck, ...) und kenn die Thematik daher.
Spezielle Pi-Distributionen (z.B. Libreelec) gehen hier den Weg, dass die wichtigen Dateien in einem ReadOnly-Filesystem liegen.
Das funktioniert aber bei deiner DB nicht. Wenn's doch mal knall, dann reicht ausserdem ein einfacher Wechsel der Micro-SDCard.

Ob du nun mit Snap7 pollst oder gezielt das Schreiben von der SPS aus startest, macht in der Praxis keinen großen Unterschied.
Üblicherweise gibt es einen Handshake bei dem die Steuerung meldet, dass neue Daten bereit stehen und dann erst die entsprechenden Datenmengen gelsen werden.

Gruß
Blockmove


----------



## elektroniktommy (2 April 2018)

Hallo Blockmove,

die Maschinen sind nicht miteinander verknüpft und besitzen somit keine Abhängikeiten! Schreiben in die Steuerung wird im Moment auch nicht gemacht, was aber nicht heißt das man aus ausschließen kann. Zum Thema Datensicherheit habe ich mir auch schon Gedanken gemacht und werde dafür ein "s.usv advanced" USV Modul vorsehen. Die USV überbrückt dann auch mal einen kurzen Netzausfall oder Hauptschalter aus, was die Bediener auch gern mal machen. Sollte es länger dauern wird der Pi dann automatisch heruntergefahren. Den Raspi betreibe ich grundsätzlich ohne SD-Card und setze hier auf SLC-USB Sticks. Wenn das Testsystem zufriedenstellend läuft muss ich mir nur noch mal Gedanken machen wie ich die Datenbank regelmäßig sichere.
Um später das System, bei defekt, wieder zum laufen zu bringen habe ich ein Image für den Stick was einfach nur neu geschrieben werden muß und eventuell noch die zwei IP-Adressen anpassen, Datensicherung DB zurückspielen und alles sollte wieder laufen.
Zur Zeit versuche ich den Pi als VPN-Server zu konfigurieren um damit auf die SPS sicheren Zugriff zu haben. Mal sehen wo hier die Fallstricke lauern.

Gruß Tommy


----------



## Blockmove (2 April 2018)

elektroniktommy schrieb:


> Zur Zeit versuche ich den Pi als VPN-Server zu konfigurieren um damit auf die SPS sicheren Zugriff zu haben. Mal sehen wo hier die Fallstricke lauern.



Was nimmst du? OpenVPN?
Solange du von deiner IT statische Adressen oder zumindest die Namensauflösung ordentlich funktioniert, sollte es eigentlich keine Probleme geben.
Du musst halt SPS-Zugriff und restliche PI-Zugriffe (ssh, MySQL) trennen. Also fur Port 102 eine entsprechende Firewall-Regel definieren.
Aber das kann schon eine Fummelei werden. Vorallem sperrt man sich da gerne mal selber aus


----------



## elektroniktommy (2 April 2018)

Hallo Blockmove,

ich wollte OpenVPN nehmen. Kennst du dich da aus? Das ist für mich alles Neuland. Zur Erklärung als Beispiel habe ich am Pi zwei Ethernet-Ports. Dem eth0 habe ich eine feste IP-Adresse im Firmennetzwerk zugewiesen, dem zweiten eth1 eine IP-Adresse in Maschinennetz.

IT 10.161.141.100  <-->  Raspberry-Pi  <-->   192.161.52.100 Maschine (Profinet)

Ich möchte jetzt das die zugewiesene IP-Adresse vom VPN-Sever immer im 192.161.52.1 ist. Geht das überhaupt?
Weiter soll nur der Traffic vom Tunnel zum Maschinennetzwerk durchgeleitet werden. Alles andere was auf der IP-Adressen des IT-Netzwerkes ankommt und an den Adressbereich der Maschine geht soll geblockt werden! Wie mache ich das? Kannst du mir da ein paar Tipps geben? Der VPN-Server läuft und ich kann mich zur Zeit auf den Pi verbinden, bekomme aber halt eine IP zugewiesen die in der server.conf  steht (10.8.0.0 -> 10.8.0.2 für den Client, Server hat die IP 10.8.0.1). Mehr habe ich noch nicht gemacht.

Ich hoffe ich habe mich in etwa verständlich ausgedrückt?

Gruß Tommy


----------



## Blockmove (3 April 2018)

Thomas
ich für solche Themen immer eine fertige Distribution wie OpenWrt oder IPfire.
Da erfolgt die Config per Weboberfläche.
Deine Idee müsste schon funktionieren. Du brauchst halt den passenden Satz Firewallregeln.
Ich würde es Mal an deiner Stelle mit ipfire probieren.

Gruß
Blockmove


----------



## da_kine (5 April 2018)

Wenn du eh schon einen Raspberry Pi hast, dann schau dir mal Node-Red an. Hierfür gibt es einen OPC-UA Client https://www.npmjs.com/package/node-red-contrib-iiot-opcua und auch für alles andere sogenannte Nodes.

Ich habe hier mit relativ wenig Aufwand einen Datenlogger realisiert der in eine MariaDB schreibt, Datenbanksicherungen in die Dropbox macht, E-Mails mit Fehlermeldungen versendet und auch eine kleine Visualisierung bietet.

MfG

Markus


----------



## elektroniktommy (5 April 2018)

Danke für die Info.

Was heißt OPC-UA Client ? Braucht man da einen OPC-Server oder ist der in Node-Red integriert? Wie komme ich an die Daten in der SPS? Hast du da ein Beispiel dazu?

Danke Tommy


----------



## Blockmove (5 April 2018)

da_kine schrieb:


> Wenn du eh schon einen Raspberry Pi hast, dann schau dir mal Node-Red an. Hierfür gibt es einen OPC-UA Client



Für Node-Red gibt's doch - meines Wissens - auch ne direkte S7-Anbindung (ohne den Umweg über OPC)


----------



## da_kine (5 April 2018)

elektroniktommy schrieb:


> Danke für die Info.
> 
> Was heißt OPC-UA Client ? Braucht man da einen OPC-Server oder ist der in Node-Red integriert? Wie komme ich an die Daten in der SPS? Hast du da ein Beispiel dazu?
> 
> Danke Tommy



Soweit ich weiß, ist doch in der S7-1500 ein OPC Server integriert. Hier eine kleine Demo auf Youtube. Ist zwar mit einer WAGO SPS aber is eh überall ähnlich https://youtu.be/LaUmhhMdoyY

Und bei dem OPC-UA Contrib iiot node sind auch Beispiele dabei.



Blockmove schrieb:


> Für Node-Red gibt's doch - meines Wissens - auch ne direkte S7-Anbindung (ohne den Umweg über OPC)



Weiß ich leider nicht, S7 interessiert mich net so...


----------



## elektroniktommy (12 April 2018)

So Datenbank mit direkten Zugriff aus der SPS läuft. Node Red mit direkten Zugriff auf S7 läuft auch! Node Red ist genial einfach. Jetzt gibt es sogar einen kleinen Monitor der auf dem Touchpanel und per Webfrontend auf allen PCs den Status der Datenbank des Raspberry und der Maschine anzeigt. Danke für die Infos.

Gruß tommy


----------



## M74 (26 April 2018)

Hallo,
bist Du bei dem Thema schon weiter gekommen?

Eventuell würde Dir da SQL4automation weiterhelfen (http://www.sql4automation.com). Damit kann man aus der SPS ohne OPC-Schnittstelle und Hochsprachen-Applikation mit einer Datenbank kommunizieren.

Gruss, M74


----------



## elektroniktommy (26 April 2018)

Hallo M74,

ja bin ich. Die Datenerfassung und Auswertung läuft zur Probe seit 14 Tagen ohne Probleme. Ich schreibe direkt mit der SPS in die Datenbank (MySQL-Treiber in SCL selbst programmiert). Die Datenbank und Node-Red läuft auf einem Raspberry-Pi3, welcher als Gateway zwischen Maschine und IT fungiert. Node-Red überwacht den Pi und meldet Speicherauslastung und Pi-Daten an die SPS. 

Gruß Tommy


----------



## koderko (26 April 2018)

Sehr schade, hatte M74 mit seiner Schleichwerbung keinen Erfolg :???:


----------



## elektroniktommy (26 April 2018)

Bei mir eh nicht! Ich programmier lieber selber, da weiß ich was ich habe[emoji6]


----------



## Ralle (26 April 2018)

Ich hab das mal durchgelesen.
In jede Maschine ein Raspi, denks du auch daran, dass das alles gewartet, geupdatet (mind. Sicherheitsupdates) werden muß?
Da kann der Aufwand leicht exponentiell steigen.
Wenn ich nur daran denke, was es mich insgesamt so an Zeit kostet, das komplette Equipement meiner Familie in etwa auf dem Stand zu halten und da habe ich schon maximal vereinheitlicht!
Und nach 3-4 Jahren hat man auch so einiges aus der "alten" Welt nicht mehr auf dem Radar oder der betreuende Kollege zieht nach Timbuktu. 
Ansonsten finde ich das rein technisch gar nicht so schlecht, zumindest, um wieder was dazuzulernen. Willst du das Projekt irgendwann öffentlich zugänglich machen? 
Der SQL-SCL-Teil würde mich schon mal interessieren, hätte gar nicht gedacht, dass das so ohne weiteres möglich ist.


----------



## elektroniktommy (26 April 2018)

Hallo Ralle,

da es ein internes System ist und eigentlich keine Verbindung zur Außenwelt besteht sehe ich das im Moment eher unkritisch irgendwelche Updates einzupflegen. Ich gebe dir Recht das ist dann schon etwas Aufwand wenn man es tun will oder muß. Im Moment ist es ja im Testbetrieb und sollte es dann in jede Maschine eingebaut werden kann man ja eventuell über eine Zentrale Architektur zur Aktualisierung nachdenken. Aber soweit ist es noch nicht. Um das System am laufen zu halten und bei Ausfall schnell zu reparieren habe ich regelmäßige Backups der Datenbank geplant. Dann einfach nur den Pi oder USB-Stick(Image ist schon komplett aufgespielt) tauschen. Eventuell die IP-Adresse beider Ethernet Ports anpassen, Daten der Datenbank einspielen und es sollte wieder laufen. Für die Nachwelt gibt es ein umfangreiches Word-Dokument, anhand dessen auch weniger Erfahrene das System neu aufsetzen könnten. 

So ohne weiteres war es auch nicht möglich! Ich habe viel gelesen und analysiert (Wireshark). Das Grundkonzept habe ich aus dem Siemensforum, dort gibt es einen Englischen Beitrag (Marco Bursic suche nach "tiny SQL Client for logging data"). Das Beispiel hat bei mir nicht funktioniert, da es wohl für eine 1200 SPS war und ich es auf einer 1500 nutzen wollte. Ich habe ewig nach Fehlern im Ablauf gesucht. bis ich es dann neu geschrieben habe. Da ist am Ende nur die Grundidee und die SHA1 Routine zur Verschlüsselung des Passwortes übrig geblieben. Ganz fertig ist das Programm auch noch nicht. Was noch fehlt ist die Möglichkeit Daten aus der Datenbank abzufragen (Abfragen geht, die Daten müssen aber dann noch aus dem Puffer gelesen werden und einzeln aufgesplittet werden). Zu Test reicht es mir das ich alles machen kann was ich will um Daten in der Datenbank abzulegen (Insert, Update, Create usw.). Wenn du Interesse hast dann melde ich per PN bei mir. 

Gruß Tommy


----------



## Blockmove (26 April 2018)

@Ralle
Blätter mal durch die "Fach"-Zeitschriften. In jeder findest du zig von diesen IoT-Boxen, IoT-Gateway und Protokollwandlern.
Fast alle laufen unter Linux und in einem Großteil werkelt ein Raspberry.
So gesehen ist Thommys Lösung absolut zeitkonform 
Das Thema Updates hast du bei den anderen genauso ... wenn nicht sogar schlimmer.

Wir sehen uns auch gerade Node-RED an.
S7 -> Node-RED -> MS SQL-Server
Als Board kommt vielleicht ein Banana PI Router zum Einsatz.

Gruß
Dieter


----------



## elektroniktommy (26 April 2018)

Node-Red ist wirklich easy und Cool. Läuft ganz gut bis jetzt.


----------



## scrfc71 (27 April 2018)

sehr interessant!!

Eventuell paar Screenshots der visualisierten Daten? (gerne auch PN).

Werde mir ebenfalls Node-red mal ansehen.


----------



## elektroniktommy (27 April 2018)

BDE-Daten, Serverstatus auf dem Panel und GAE-Auswertung in Excel. Die Node-Red Daten sind jetzt nur mal schnell zum Testen angelegt.


----------



## Ralle (27 April 2018)

elektroniktommy schrieb:


> Wenn du Interesse hast dann melde ich per PN bei mir.
> 
> Gruß Tommy



Vielen Dank für die Infos, wenn ich wieder in D bin, komme ich gerne daruaf zurück.


----------



## Ralle (27 April 2018)

Blockmove schrieb:


> @Ralle
> Blätter mal durch die "Fach"-Zeitschriften. In jeder findest du zig von diesen IoT-Boxen, IoT-Gateway und Protokollwandlern.
> Fast alle laufen unter Linux und in einem Großteil werkelt ein Raspberry.
> So gesehen ist Thommys Lösung absolut zeitkonform
> ...



Ja, das ist klar, sollte auch niemenden abschrecken.
Ich hab nur so langsam richtig Bauchschmerzen, wenn ich schon sehe, was für Probleme sich mit einer reinen Siemens-Umgebung ergeben, in Bezug auf FW und SW.
Dann noch einige Geräte drumherum, mit spezieller Software und Konfiguration.
Da wird alleine das Einrichten und Warten zum Fulltime-Job.


----------



## Blockmove (28 April 2018)

Ralle schrieb:


> Ja, das ist klar, sollte auch niemenden abschrecken.
> Ich hab nur so langsam richtig Bauchschmerzen, wenn ich schon sehe, was für Probleme sich mit einer reinen Siemens-Umgebung ergeben, in Bezug auf FW und SW.
> Dann noch einige Geräte drumherum, mit spezieller Software und Konfiguration.
> Da wird alleine das Einrichten und Warten zum Fulltime-Job.



Deine Bauchschmerzen sind mehr als nachvollziehbar.
Wenn du erstmal in jeder Anlage irgendwelche IoT-Boxen verbaut hast, dann kommt irgendwann das Gejammere über fehlende Sicherheit.
Also kommt dann eine Hardwarefirewall in jede Anlage. Uns so geht das Spiel weiter. 
Auch wenn die Hardware und die Cloud anfangs billig sind, der Reibach wird danach mit dem Service gemacht.
Also was bleibt?
An IoT kommst du nicht mehr vorbei. Dazu schwirren zu Consultants wie die Schmeissfliegen ums Management.
Somit kannst du nur versuchen seriöse Anbieter (so was soll in dem ganzen Verhau noch vereinzet geben) zu finden oder selber KnowHow und Lösungen aufbauen.
Und da sind Lösungen auf Basis eines Raspberry Pi (oder Ähnlichem) und z.B. Node-RED durchaus interessant.

Gruß
Blockmove


----------



## Assurbanipal (5 Juli 2018)

Ich möchte auch Daten sammeln. Daten in einen DB zu schreiben ist nicht das Problem. Mir fehlt allerdings das know how auf der PC Seite. Welche Software benötige ich und welche Protokolle übertragen die Daten.

Hat jemand was konkretes?


----------



## M74 (6 Juli 2018)

Hallo Assurbaipal,

es wird bestimmt wieder Leute geben die mir vorwerfen werden, ich würde Schleichwerbung machen . Ich kann Dir einfach schreiben was wir in unseren Projekte einsetzen, da ich von der Einfachheit und Flexiblität der Lösung sehr überzeugt bin.

http://www.sql4automation.com

Dieses Framework ist sehr offen, weil SQL-Kommandos direkt aus der SPS-Steuerung zur Datenbank geschickt werden können. Damit beschränkt sich die Anwendung nicht nur auf das Sammeln von Daten... Du kannst Dir auch eine Rezepturverwaltung vorstellen, bei welcher die Fertigungsparameter bei einem Typenwechsel von der Datenbank in die Steuerung geladen werden. 

In Deinem Fall könnte das so aussehen:
- Deine Daten liegen in einem Datenbaustein oder in einer Struktur in der SPS.
- Du definiert einen Trigger zum Senden der Daten zur Datenbank. Dies könnte beispielsweise zyklisch über einen Timer erfolgen oder aufgrund einer Änderung Deiner Daten...
- Mit der positiven Flanke des Triggers würde man nun einen Baustein aufrufen, welcher Deine Daten in der SPS in einen SQL-Befehl verpackt, welcher diese speichert.
  (Zum Erstellen des SQL-Befehls wirst Du von den Datenbank-Tools gut unterstützt. Es tönt vielleicht komplizierter als es ist.)

Dann ist die Sache für Dich erledigt, denn das SQL4automation-Framework sendet diesen Befehl über ein Protokoll zur Datenbank. Die Datenbank schickt ein Telegramm zurück, damit in der SPS geprüft  werden kann, ob das Kommando fehlerfrei durchgeführt werden konnte...

Auf der PC-Seite brauchst Du nichts zu programmieren. Man muss nur einen Dienst installieren und eine Verbindung zur Datenbank konfigurieren. Daher musst Du Dir auch über die Protokolle keine Gedanken machen.

Schau Dir das doch mal an. Wenn Du Fragen hast kannst Du mich auch über PN anschreiben.

Schönen Abend. Gruss, M74


----------



## sps_hubert (19 Februar 2021)

Gleich vorweg, ja es ist Eigenwerbung, dennoch könnte eine Lösung für o.g. Fragen dabei sein. Fragen Sie einfach über u.g. Homepage an. Gern auch hier im Forum diskutieren. Die Datenbank läuft auf einem PC (so ist es evtl. bereits bei Ihnen) und es braucht KEINE weitere Hardware. Ich stehe da ganz bei @Ralle!
Die genannten Lösungen sind für den einen oder anderen gut. Der erfahrene Programmierer möchte aber aus diversen Gründen keine Drittanbietersoftware einsetzen. Daher ist eine Kommunikation direkt aus der SPS zur SQL Datenbank interessanter. Es ist auch der effektivste Weg, um Daten zwischen einer SPS und einer Datenbank  auszutauschen. Durch Wegfall von  Kommunikationsstellen, wie ein Gateway, wird ein sehr schneller  Austausch von Daten möglich. Durch die zahlreichen Anbieter von SPS und  SQL-Datenbanken kann kein allgemeiner Softwarebaustein verwendet werden.  Hier übernehmen die SQL oder mySQL SPS Bausteine die Verbindung und den  Datenaustausch. Bei uns können Sie zwischen einer kleinsten Variante (nur SPS Bausteine),  über komplette Datenanbindung (mit SQL Server), bis hin zu einer  ausgewachsenen Betriebsdatenerfassung wählen. Sie wollen langfristig unabhängig von Drittanbietern bleiben und Sie  haben kompetentes Personal? Dann bringen wir Ihnen unser Wissen bei und  Sie gehen den Weg zur Lösung allein weiter. Sie möchten Support vor Ort  oder auch per Fernwartung?
Christian


----------

