# Strategien zur Datenbankanbindung an SPS



## Drain (12 Juni 2020)

Hallo zusammen,
ich steige gerade in das Thema ein, Daten zwischen einer Steuerung und einer MS SQL-Datenbank auszutauschen (lesen und schreiben). Für ein besseres Verständnis hierfür frage ich mich, welche Strategien und Lösungen es hier von den unterschiedlichen Herstellern gibt?

Zu Siemens habe ich zum einen gelesen, dass dies mithilfe von Drittanbietersoftware (z.B. https://www.plcsql-link.com/de/product.php) entweder auf einem zusätzlichen PC (wäre bei uns von Seiten der IT nicht gewünscht) oder direkt auf der SPS möglich ist.
Andererseits geht dies wohl auch mit hauseigenen Mitteln von Siemens (https://support.industry.siemens.co...-s7-1500-an-eine-sql-datenbank?dti=0&lc=de-WW). 
1. Wenn das aber bereits direkt von Siemens bereitgestellt wird, was sind dann die Vorteile von Drittanbieterlösungen?
2. Ist die technische Realisierung in beiden Fällen, dass ein OPC UA-Server gestartet wird und hierüber mit der Datenbank (SQL) kommuniziert wird?

3 Und wie sieht die Umsetzung bei anderen SPS-Herstellern aus?

Ich bin dankbar für jede Antwort, die mir hilft, hier einen Einstieg und einen besseren Überblick über die Thematik zu erhalten.

Grüße Drain


----------



## StructuredTrash (12 Juni 2020)

Zu 3.:
Bei Beckhoff gibt es eine "Database Server" Software, die mit auf der SPS läuft und die Kommunikation mit der DB erledigt. Dazu gibt es eine SPS-Bibliothek, mit deren FBs DB-Kommandos ausgeführt werden können. Einige davon erlauben Kommandozeilen-Strings bis zu 10000 Zeichen. Nutze ich seit ein paar Jahren, die Stolperfallen sind überschaubar.
Meine Siemens-Kollegen sind bei dem Versuch, das mit den Bordmitteln nachzubilden, gescheitert. Ob das nun an den Kollegen oder an Siemens lag, kann ich allerdings nicht sagen. Knackpunkt war wohl die Stringlängenbegrenzung auf 255 Zeichen. Jetzt machen sie es über den Umweg OPC-UA.


----------



## Drain (12 Juni 2020)

Hallo StructuredTrash,

Zu 3.:


StructuredTrash schrieb:


> Bei Beckhoff gibt es eine "Database Server" Software, die mit auf der SPS läuft und die Kommunikation mit der DB erledigt. Dazu gibt es eine SPS-Bibliothek, mit deren FBs DB-Kommandos ausgeführt werden können.


Heist das, der "Database Server" verarbeitet die DB-Kommandos, setzt diese in SQL-Befehle um und kommuniziert mit der Datenbank über die ODBC-Schnittstelle?



StructuredTrash schrieb:


> Einige davon erlauben Kommandozeilen-Strings bis zu 10000 Zeichen


Sind mit "Kommandozeilen-Strings" die SQL-Befehle gemeint?

​


StructuredTrash schrieb:


> Ob das nun an den Kollegen oder an Siemens lag, kann ich allerdings nicht sagen


**ROFL*
*



StructuredTrash schrieb:


> Jetzt machen sie es über den Umweg OPC-UA


Wo läuft dann der OPC-UA-Server? Auf der Steuerung, auf einem PC?

Danke schon mal für dein Feedback.​
​


----------



## JesperMP (12 Juni 2020)

Das Siemens einen Bibliotek für den direkten Datenbankanbindung freigegeben hat war meine Nase vorbeigefahren ! Interssant.



Drain schrieb:


> 1. Wenn das aber bereits direkt von Siemens bereitgestellt wird, was sind dann die Vorteile von Drittanbieterlösungen?


Die Siemens Lösung scheint nur für Micorsoft SQL fregegeben zu sein. PLCSCL-Link ist auch für MySQL freigegeben, vielleicht noch mehrere.
Es wurde mich interessieren wenn man eine kleinere oder open-source Lösung haben kann, wie MySQL oder SQLite oder PostgreSQL



Drain schrieb:


> 2. Ist die technische Realisierung in beiden Fällen, dass ein OPC UA-Server gestartet wird und hierüber mit der Datenbank (SQL) kommuniziert wird?


Nein. PLCSQL-Link sendet SQL Befehle direkt zum SQL Server. Ich denke dass Siemens das auch so macht.
edit: Und ohne ODBC !


----------



## JesperMP (12 Juni 2020)

StructuredTrash schrieb:


> Jetzt machen sie [Siemens] es über den Umweg OPC-UA.


Wo siehst du das ?
Laut den Beschreibung geht es über "Open User Communication-Bausteine" (TCON, TSEND, TRCV und TDISCON).


----------



## Drain (12 Juni 2020)

JesperMP schrieb:


> Und ohne ODBC !


Wieso ohne ODBC? Ist doch dann viel mehr Aufwand


----------



## JesperMP (12 Juni 2020)

Ja, ODBC macht mehr Aufwand meinst du. Dann einig.

PLCSQL-Link und vermutlich auch Siemens Bibliotek sendet SQL Befehle als Strings. In das SPS Programm braucht man nur die Datenbank Informationen an die Biblioteksbausteine zu übergeben, wie Servername, Datenbankname, Benutzername und Kennwort. Dann verbindet es den SPS mit den Datenbank.


----------



## StructuredTrash (12 Juni 2020)

@Drain:
Zu Deinen 4 Zitaten:
1) Im Prinzip ja, ob das über die OBDC-Schnittstelle läuft, kann ich gar nicht mal sagen.
2) Ja.
4) Ich meine, der OPC-UA-Server läuft auf einem anderen PC. Genau weiss ich es aber nicht. Ich bin an dem Projekt nicht beteiligt und höre nur am Rande davon.

@JesperMP:
Mit "sie" war nicht Siemens gemeint, sondern meine Kollegen.


----------



## Ralle (12 Juni 2020)

Wir hatten eine WinCC Advanced Runtime auf einem PC. Dort haben wir per Script Daten einer SQL-DB gelesen/geschrieben. Das war aber auch ODBC im Spiel!


----------



## Mrtain (13 Juni 2020)

Zu 3:

Bei Jetter gibt es das Tool JetWebService. Im JWS erstellst du im Prinzip die Abfrage und die Zuordnung mit den Registern in deiner Steuerung. Jede Abfrage bekommt eine Nummer. Diese Nummer schickst du aus SPS per NetCopyRegToReg an den JWS. Der erledigt dann den Rest.

Wir haben aber auch schon mit Schneider Steuerungen und mit SQL4Autmation gearbeitet.


----------



## Drain (15 Juni 2020)

Danke für eure Rückmeldungen.

Zum Verständnis:
ODBC ist eine Datenbankschnittstelle, mit welcher technologieunabhängig Daten mit einer Datenbank ausgetauscht werden kann. Hierfür sind dann aber die entsprechenden Treiber notwendig. Ist somit insgesamt universeller einsetzbar. Aber es gibt auch die Möglichkeit der direkten Anbindung (ohne ODBC) , welche dann halt maßgeschneidert auf die Hardware und die DB-Software sein muss.

OPC UA ist eine "Kommunikationsschnittstelle", um Daten auf der Steuerung per OPC Server freizugeben, welche dann von OPC Clients abgefragt werden können, wobei es sich hier nicht unbedingt um eine Anbindung an eine Datenbank handeln muss, sondern auch andere Funktionen (z.B. Visualisierung Leitstand) abgedeckt werden.


----------



## Drain (15 Juni 2020)

Mrtain schrieb:


> Zu 3:
> Bei Jetter gibt es das Tool JetWebService. Im JWS erstellst du im Prinzip die Abfrage und die Zuordnung mit den Registern in deiner Steuerung. Jede Abfrage bekommt eine Nummer. Diese Nummer schickst du aus SPS per NetCopyRegToReg an den JWS. Der erledigt dann den Rest.


Die haben wir auch schon im Einsatz


----------



## Mrtain (15 Juni 2020)

Drain schrieb:


> Die haben wir auch schon im Einsatz



Nur schade, dass die den nicht weiterentwickeln, bzw. man immer JetViewSoft installieren muss^^


----------



## Drain (16 Juni 2020)

Mrtain schrieb:


> Nur schade, dass die den nicht weiterentwickeln, bzw. man immer JetViewSoft installieren muss^^


Du kannst bei der Installation meine ich auch nur den JetDBService (oder heißt er dort JetWebSystem) auswählen und Jetviewsoft abwählen. Dann hast du nur das drauf, was du brauchst.


----------



## Mrtain (16 Juni 2020)

Ich hab nur den eindruck, dass Jetter beim JWS nach der hälfte aufgehört zu programmieren ^^


----------



## sps_hubert (17 Januar 2021)

@Drain:
Beitrags-ID:                                  109779336 von Siemens zeigt Dir den Weg zu einer MS SQL Datenbank. Mehr als ein "Hallo Welt" ist es aber nicht.
Nur einzelne Werte in eine MS SQL Datenbank schreiben geht direkt über Befehlsstrings, wie auch @JesperMP schreibt. Es braucht dazu keine weitere Software, selbst getestet. Hast Du eine MS SQL Datenbank bereits laufen, dann kannst Du diese per Login Parameter am Siemens Baustein sofort nutzen. Möchtest Du Werte aus der MS SQL Datenbank lesen, dann musst Du noch einiges in der S7-1500 programmieren. Bedenke bitte, Drittanbieter machen Dich von einem weiteren Lieferant abhängig. Falls Du mehrere verschiedene Steuerungen und Datenbanken verbinden möchtest, sind Drittanbieter durchaus eine gute Wahl, wie auch @Mrtain schreibt.


----------



## mbi (16 Februar 2021)

Hallo
Ich benutzte vor kurzem PDSql Library plcdirectsql.com.
Allerdings nur schreiben. 
Wir nutzen ein Qnap NAS mit Maria DB.
Allerdings schreiben wir nur. Die Lib bietet Standartmässig 2x 255 Zeichen.
Nach Anfrage hat er uns gesagt er könne auch eine breitstellen mit mehr. Wir haben es aber dann durch aufrufen einer Procedur und etwas programmieren gelöst.
Sind damit bisher sehr zufrieden.
Wie lesen funktionier können wir nicht sagen.


----------



## Mrtain (21 Mai 2021)

@Drain
Jetter unterstützt jetzt wohl auch Sql4Automation.


----------



## Frohnius (21 Mai 2021)

Hi,
ich verwende generell modbus an der sps und div. messgeräten ...
mein datenbankserver ist linux mit einer postgresql mit timescaledb - aufsatz ...

ein datenloggerscript (aktuell noch python) was nicht auf dem server laufen muss ...
liest meine prozessdaten aus und schickt sie in die timescaledb ...

monitoring ist mit grafana gelöst.

die config für den datenlogger liegt ebenfalls in der sql und wird web-basierend administriert (django-web-framework) ...

schreibzugriff ist generell möglich aber bisher bei mir nicht notwendig

pgsql weil sie als openSource für den produktionseinsatz empfohlen ist
timescaledb aufsatz bringt geschwindigkeit bei genau solchen daten wie zeitstempel und messwert ...
linux server weil ich windows nicht mag


----------



## rudl (22 Oktober 2021)

Hi,
Schau dir doch mal SQL4automation an. Zwischen SPS und SQL Datenbank befindet sich zwar der SQL4automation Connector, dieser läuft aber als Dienst auf Windows und Linux. Der Dienst muss nur konfiguriert werden, die Programmierung findet alleine in der SPS statt. Mit SQL Strings kann man direkt auf die Datenbank zugreifen. Da SQL4automation als Dienst läuft, akzeptiert der Datenbankadministrator meist, dass die Software direkt auf dem Datenbank Server installiert wird. Die Software kann aber auch irgendwo dazwischen installiert werden. (Zum Beispiel auf der SPS Hardware, falls diese auf Linux oder Windows basiert) Der Vorteil von dieser Lösung ist die Kompatibilität mit vielen verschiedenen Datenbank Servern und SPS Steuerungen und die Diagnosemöglichkeiten durch den Debugger. In der SPS erhält man direkt ein Feedback, ob die Daten in der Datenbank angekommen sind und kann im Fehlerfall darauf reagieren. Als SQL Datenbanken werden MS SQL Server, MariaDB/MySQL, Firebird, PostgreSQL, SQLite, MS Access und weitere Datenbanken, die eine ODBC Schnittstelle zur Verfügung stellen, unterstützt.
Für folgende SPS gibt es fertige Bibliotheken: Siemens S7, Beckhoff TwinCAT, Rockwell Allen Bradley, Mitsubishi, Schneider Electric, CODESYS (Wago, Bosch Rexroth, JanzTec...),  B&R, Jetter und Sigmatek.
Hilfreiche Video Tutorials gibt es hier.
Die kostenlose Demoversion kann hier heruntergeladen werden.


----------



## Drain (4 April 2022)

Hallo rudl,
danke für den Tipp mit SQL4Automation. Genau diesen Weg haben wir vor einem Jahr eingeschlagen. 
Die Umsetzung steht allerdings noch aus, da zwischenzeitlich ein wichtigeres großes Projekt gekommen ist.


----------

