# Werte von SPS in den SQL Server schreiben?



## mimuel (9 März 2010)

Hi,

ich hab von SPS'en wenig Ahnung, aber meine Frage:
Ist es möglich direkt von einer SPS in eine Datenbank,
z.B. in den SQL-Server Daten zu schreiben?
Über Modbus oder sonst irgendwie oder muss ich erst
eine spezielle Software dafür schreiben?

Danke Michael


----------



## Rainer Hönle (9 März 2010)

Die 343-1 ERP kann das angeblich. Ansonsten wird in der Regel ein Programm auf einem PC die SPS abklappern und die Ergebnisse in eine SQL-Datenbank schreiben.


----------



## Question_mark (9 März 2010)

*Das geht, keine Angst ..*

Hallo,



			
				Rainer Hönle schrieb:
			
		

> Ansonsten wird in der Regel ein Programm auf einem PC die SPS abklappern und die Ergebnisse in eine SQL-Datenbank schreiben.



Oder alternativ wird der PC die Datenbank per SQL abklappern (oder einen Trigger der DB empfangen) und die Ergebnisse in die SPS schreiben.

Eine direkte Verbindung zwischen SPS und einer Datenbank wird in der Regel über ein Programm auf einem externen PC als Gateway zur Übersetzung der verschiedenen Datenformate der SPS (S5, S7, AB etc.) und der Datenbank (Oracle, IBM AS400, MS SQL Server, Firebird etc.) programmiert. Da mag es vielleicht einen CP 343-1 ERP geben, aber ob der alle SQL-Dialekte kann ? Ich möchte das mal stark bezweifeln.

Ich habe bisher ca. 50 SPS-Steuerungen an verschiedene Datenbanken der EDV meiner Kunden angebunden. Dieses PC Gateway ist im Moment (noch) die beste Lösung, da äusserst zuverlässig und flexibel. Zum Beispiel wenn der Kunde von Oracle auf MS SQL Server wechselt, tausche ich im Normalfall nur den Treiber auf meinem PC aus, un feddich ...

Und wenn der Kunde von S5 auf S7 hochrüstet, dann wird im OPC-Server ein anderes Transportprotokoll angewählt, und wieder feddich.

Ich verwende allerdings grundsätzlich auf dem PC Datenbank-Treiber von DevArt. Damit tunnele ich ich den ganzen Overhead von den MS ODBC Treibern über das Windows OS und kann direkt über zB. TCP auf das API der Datenbank zugreifen. Das geht dann sauschnell und eine Installation eines DB-Client auf dem PC ist nicht erforderlich (Lizenzkosten gespart !!!).

Ich muss auch ganz ehrlich gestehen, als ich diese Variante mit den DevArt Treibern vor ca. 7 Jahren erstmals eingesetzt habe, war ich eigentlich überrascht, mit welcher rekordverdächtigen Reaktionszeit selbst sehr komplexe SQL-Abfragen ausgeführt wurden. 

Also in diesem Sinne, selbst wenn es einen Simatic CP 343-1 ERP für direkte Anbindung von S7 an eine Datenbank gibt, man ist immer auf diese Baugruppe festgenagelt und unflexibel beim Wechseln von Datenbank oder SPS.

Ausserdem hat meine Lösung den Vorteil, dass der DB-Admin ausser dem Einrichten der Tables nichts von seiner wertvollen Arbeitskraft verschwenden muss und der ganze Driss dann ohne jegliches Engagemant des DB-Admins abläuft. Und wer DB-Admins kennt, der weiss das solche Lösungen immer erwünscht sind 

Gruß

Question_mark

PS : Das Thema gehört nicht in den Stammtisch, kann das bitte einer der Mods in den richtigen Fred verschieben ?


----------



## IBFS (9 März 2010)

Question_mark schrieb:


> Ich verwende allerdings grundsätzlich auf dem PC Datenbank-Treiber von DevArt.


 
Das Thema ist wirklich sehr interessant. 
Sind diese Datenbanktreiber kostenpflichtig? und wie genau erfolgt die S7 Anbindung?
Es wäre schön wenn du das mal kurz beschreibst. 
Danke!

Frank


----------



## Question_mark (9 März 2010)

*SPS <--> Database*

Hallo,



			
				IBFS schrieb:
			
		

> Sind diese Datenbanktreiber kostenpflichtig? und wie genau erfolgt die S7 Anbindung?



Die Datenbanktreiber sind kostenplichtig. Aber die Lizenzkosten in höhe von ca. 350,- Euronen plus Mwst sind Ihren Preis wert, da absolut professionell. Ausserdem sind die Lizenzkosten nur einmalig fällig, also kann ich mit einer Lizenz auch beliebig viele Projekte erstellen (Ich darf nur die Quelltexte nicht weitergeben). Ich habe alle aktuellen DB-Driver von DevArt gekauft und lizensiert. 

Die Anbindung an die S7 erfolgt entweder über einen Simatic OPC-Server, AGLink von Deltalogic oder einen anderen Treiber des Herstellers der SPS. Und auch für Modbus gibt es Treiber.

Ich verwende je nach Anwendungsfall meist den OPC-Server von Siemens oder den AGLink von Deltalogic.  Beide sind gut und zuverlässig, ich entscheide das jeweils nach den Anforderungen des Projektes.

Gruß

Question_mark


----------



## Rainer Hönle (10 März 2010)

Habe mir das Teil mal angesehen. Soweit ich das für die .net-Geschichte sehe, setzt der Treiber auf den Standard-Schnittstellen auf und bietet "nur" eine einheitliche Schnittstelle für den Entwickler. Ist dies bei Deiner Version ähnlich implementiert? Wenn ja, woher kommt dann die gute Performance? Oder müssen nur .net-Entwickler darauf verzichten?


----------



## mimuel (10 März 2010)

Hallo,

kann man dies Verfahren auch auf Nicht-Siemens-Steuerungen übertragen?
(z.B. Elau Steuerung)

In welches Forum hätte diese Frage gepaßt?

Danke Michael


----------



## Rainer Hönle (10 März 2010)

Die grundsätzliche Vorgehensweise passt für alle Steuerungen. qm hat ja da schon einige implementiert. Und allen ist gemeinsam, dass (in der Regel) die SPS nicht auf eine Datenbank zugreifen kann und dies über einen separaten PC (im weitesten Sinne) laufen muss. 
Wenn Elau das Ziel ist, wäre "Beckhoff - CoDeSys - IEC61131" passender. Alternativ natürlich auch Programmierstrategien. Aber die Entscheidung ist auch nicht immer einfach.


----------



## mimuel (10 März 2010)

Mein'st Du das?
http://visualstudiogallery.msdn.microsoft.com/en-us/ba54d48e-8f47-4380-8c22-7e5cbd109f7d


----------



## LowLevelMahn (10 März 2010)

*warum soll der Tunnel schneller sein?*

mich würde auch interessieren wie ein ODBC/TCP (wie auch immer) Connection Wrapper schneller sein soll als der native Klient - und noch dazu die Abfragegeschwindigkeit (kleine/grosse SQL-Statements, mit Prepare oder sonstigem, Datenmenge?) erhöhen: wie hast du es den vorher gemacht?


----------



## Rainer Hönle (10 März 2010)

mimuel schrieb:


> Mein'st Du das?
> http://visualstudiogallery.msdn.microsoft.com/en-us/ba54d48e-8f47-4380-8c22-7e5cbd109f7d



Genau dies habe ich mir angesehen, nur auf der Seite der Herstellers.


----------



## Question_mark (10 März 2010)

*.net*

Hallo,



			
				Rainer Hönle schrieb:
			
		

> Ist dies bei Deiner Version ähnlich implementiert? Wenn ja, woher kommt dann die gute Performance? Oder müssen nur .net-Entwickler darauf verzichten?



Ich glaube, die Frage war an mich gerichtet, bin mir da aber nicht ganz sicher.

Ich benutze nicht die .net Treiber, sondern die VCL Treiber für Win32. Bei denen gibt es den sogenannten "Direct mode", damit kann man aus meiner Anwendung heraus direkt ohne weiteren Treiber und unter Umgehung von ODBC und MDAC und dem Betriebssystem direkt auf den remoten Datenbankserver über TCP zugreifen.
Auf dem PC muss nur das TCP/IP Protokoll installiert sein, ein Datenbank Client ist nicht erforderlich.

Bei den .net Treibern sehe ich diese Möglichkeit nicht, jedenfalls habe ich nichts dazu gefunden.

Gruß

Question_mark


----------



## Rainer Hönle (11 März 2010)

Jepp, Frage war an Dich gerichtet.
Dann ist ja auch klar, warum dies bei Delphi schneller sein kann. Bei .net habe ich nichts derartiges gefunden. Da setzen die auf dem Standard-Treiber auf. Performanceverbesserungen sind somit eher nicht zu erwarten.


----------



## LowLevelMahn (11 März 2010)

OK nur für Oracle, MySQL und PostgreSQL - schade nicht bei MSSQL :-[
aber der Rest ist eher unwichtig (da ist die reine Anbindbarkeit entscheident)


----------



## pm (11 März 2010)

Hallo,

vielleicht ist das ja interessant...

http://www.sql4automation.com/


----------



## Nitrozin (11 März 2010)

Hi,
die Firma INAT GmbH hat sowas in Hardware, nennt sich Echocollect.

http://www.inat.de/index.php?461&backPID=461&tt_products=629

Gruß Volker


----------



## JochenG (8 April 2010)

Schau dir mal TCP speaks SQL an, ich habe es mal mit einer MySQL DB getestet, sollte aber mit MS SQL Server genau so funktionieren.

http://www.upstatesoft.com/index.php?option=com_content&view=article&id=57&Itemid=19&lang=en


----------



## Jochen Kühner (10 April 2010)

*das....*

vieleicht ist das von mir was für dich ?

http://sps-forum.de/showthread.php?t=29131


----------



## Red-Sh4nks (13 April 2010)

Ja. Hab selbst so ein Programm in C# programmiert.
Es speichert alle Daten in eine Access-Tabelle...

Mit Libnodave und ein wenig Hilfe hier im Forum
ist das Ganze recht simpel! Welche Programmiersprache
und welche SPS verwendest du?

lg Marco*


----------

