# mit OPC Daten auf MSSQL Datenbank schreiben



## Arcon (10 Mai 2010)

Hallo miteinander,

ich besitze eine 300er SPS mit Ethernet - Anbindung und zusätzlich einen INAT OPC-Server .. jetzt bin ich bereits soweit .. dass ich im OPC-Server die Verbindung zur SPS aufgebaut habe .. und bspw. bestimmte Merker auslesen kann .. jedoch möchte ich es gerne so hinbekommen .. dass die Datenbank die Werte zyklisch vom OPC-Server abfragt .. muss ich das mit einer Programmiersprache , wie z.b. Delphi oder VBA lösen oder kann ich das direkt in der datenbank aktivieren ?


----------



## Rainer Hönle (10 Mai 2010)

Die Datenbank wird nicht beim Server nachfragen, sie ist ja kein OPC-Client. Da muss schon eine Applikation her, die den OPC-Server frägt und die Werte in die Datenbank schreibt.


----------



## Arcon (10 Mai 2010)

*...*

Also könnte man es für den Anfang so machen, dass ich in einer Zelle in Excel folgendes reinschreibe -> =Servername|Verbindung!Variable
anschließend in vba ein script schreibe, was mir ständig diese eine zelle auf eine veränderung kontrolliert .. und sobald eine veränderung stattgefunden hat .. soll mir der wert in die datenbank geschrieben werden ... wäre das sinnig ?


----------



## Rainer Hönle (10 Mai 2010)

Manche OPC-Server liefern ActiveX-Client-Controls mit. Wenn Inat das auch tut, dann ist das Lesen sicher einfach. Wahrscheinlich kann man mit VBA auch in eine SQL-Datenbank schreiben. Ich kann allerdings nicht sagen wie. Excel verwende ich nur als Tabellenkalkulation. Zum Programmieren nehme ich eine "normale" Programmiersprache.
Sollen die Werte jetzt zyklisch oder bei Änderung geschrieben werden? Welche Datenmenge steckt dahinter? Was ist das eigentliche Ziel? Was soll mit den Daten in der SQL-Datenbank gemacht werden?


----------



## Arcon (10 Mai 2010)

ich habe mir bereits die aktuelle delphi version gekauft .. jedoch muss sie vom admin nur noch installiert werden ... und das geschieht erst am freitag .. bis dahin wollte ich etwas in excenl rumspielen und austesten .. um am freitag gleich durchzustarten 

die werte sollen nur bei datenänderung geschrieben werden .. dabei handelt es sich um ca. 50 werte, die ständig auf änderung kontrolliert werden müssen .. anschließend möchte ich die werte bei änderung in die datenbank kopieren .. und dann möchte ich mit einem front-end auf die daten in der datenbank zugreifen .. also wie so eine art auswertungs-tool ..

kennst du dich den mit delphi soweit aus, dass das machbar wäre ?
was ich mich frage .. das tool .. was die abfrage ständig kontrolliert .. muss ja immer online sein .. also wäre es das beste wenn ich das aufm server installier und dort die werte ständig abfragt .. oder wie kann man sich das vorstellen , wie das funktioniert .. ich will ja nicht ständig selber triggern .. !?!


----------



## Rainer Hönle (10 Mai 2010)

Mit Delphi ist dies auf jeden Fall machbar. Außerdem sind hier im Forum einige, die sich mit Delphi und OPC hervorragend auskennen. Hilfe solltest du also in jedem Fall bekommen wenn du mal Fragen hast (wenn auch nicht von mir).


----------



## Question_mark (10 Mai 2010)

*Alles geht ..*

Hallo,



			
				Rainer Hönle schrieb:
			
		

> Außerdem sind hier im Forum einige, die sich mit Delphi und OPC hervorragend auskennen



Du hast mich jetzt richtig aufgeweckt. Hier war ja nicht nur OPC gefragt, sondern auch die entsprechende Kommunikation von SPS über PC zum MS SQL Server. Mit Delphi kann man diese doch verschiedenen Techniken recht komfortabel verbinden.
Also OPC (oder auch gerne Deltalogics AGLink) zur Anbindung an die SPS, und dann nehme ich bevorzugt zur Anbindung von Delphi an Datenbanksysteme die Komponenten von DevArt. Für den MS SQL Server zB. hier den Link :

http://www.devart.com/sdac/ 

Kostet zwar ein paar Euronen, funktioniert aber zuverlässig und stabil, also absolut industrietauglich auch nach mehreren Jahren 24/7 Betrieb ...

Gruß 

Question_mark


----------



## rudl (11 Mai 2010)

Hast du dir schon mal überlegt von der SPS direkt in die Datenbank zu schreiben? Dann brauchst du kein Programm das ständig pollt, sondern die SPS bestimmt wann sie welche Daten in die Datenbank schreiben will...


----------



## Question_mark (11 Mai 2010)

*Just my 2 cents*

Hallo,



			
				rudl schrieb:
			
		

> Hast du dir schon mal überlegt von der SPS direkt in die Datenbank zu schreiben?



Das ist im Prinzip zwar möglich, und wenn ich mich recht erinnere hat schon mal jemand das hier im Forum vorgestellt. Aber ob das wirklich praktikabel ist ? Nicht jeder SPS-Programmierer kann auch SQL-Abfragen gegen eine Datenbank programmieren. Und wenn doch, spätestens bei einem verschachtelten "Inner Join" wird er im Wikipedia nachschlagen, wie man dicke Seile knüpft und Deckenhaken stabil eindübelt. Und der Funktionsumfang wird mit Sicherheit auch beschränkt sein. Ob das Ding Trigger empfangen kann, Stored Procdures mit Parameterübergabe handeln kann usw.

Außerdem gibt es so viele verschiedene Dialekte von SQL, nahezu jeder Hersteller von Datenbanken kocht da sein eigenes Süppchen. Was auf Oracle funktioniert, muss nicht unbedingt auf einem MS SQL Server oder auf einer AS400 funktionieren. 



			
				rudl schrieb:
			
		

> Dann brauchst du kein Programm das ständig pollt, sondern die SPS bestimmt wann sie welche Daten in die Datenbank schreiben will...



Also das Pollen besorgt der OPC-Server und nur wenn sich Daten ändern feuert der mir einen Event. Ansonsten legt sich meine Applikation im Idle Status zur Ruhe.

Und wer bestimmt, wenn die Datenbank zB. neue Auftragsdaten in eine SPS schreiben will ? 

Also die direkte Verbindung SPS <--> Datenbank ist (jedenfalls zur Zeit) noch recht unflexibel und eingeschränkt. 

Gruß

Question_mark


----------



## Jochen Kühner (11 Mai 2010)

*Auch mal was...*

Kannst ja auch mal meinen LibNoDave Protokoller ansehen.

http://jochensserver.dyndns.org/wordpress/?page_id=9

Der kann zwar keine Daten vom OPC lesen, aber direkt Daten aus einer SPS in eine Datenbank schreiben.


----------



## Question_mark (11 Mai 2010)

*Da bleiben noch einige Fragen offen*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> Der kann zwar keine Daten vom OPC lesen, aber direkt Daten aus einer SPS in eine Datenbank schreiben.



Und vice versa auch ?
Kann der Trigger von der DB empfangen ?
Stored Procedures mit Parameterübergabe an die DB anstoßen ?
SQL Abfragen mit Parametern gegen die DB absetzen ?
Was ist mit komplexen, verschachtelten Abfragen über mehrere Tabellen ?
Kann man damit von der S7 Tabellen und Felder in der DB erstellen ?
Was ist mit dem H1 Protokoll ?
Was ist mit H1 über TCP ?
RK 512 Protokoll ?

Also für meinen Geschmack werden da zu viele Fragezeichen offenbleiben. 
Aber ich habe mir das jetzt nicht alles angesehen, aber eine Verständnisfrage stellt sich mir doch : Wie ich aus dem Namen "LibNoDave Protokoller" ableite, ist wohl die LibNoDave von Zottel die Grundlage für die Kommunikation zur SPS. Und auf welchem Gerät ist der LibNoDave Protokoller und Zottels Library installiert ? Vielleicht solltest Du den Protokoller mal etwas näher hier im Forum beschreiben. Die Webseite, auf Die Du im obigen Beitrag verlinkt hast ist nicht sehr informativ, da hab ich meistens schon keine Lust mehr, noch weiter zu blättern. Nimm dies aber bitte nicht als Kritik, sondern nur als Hinweis auf.

Gruß

Question_mark


----------



## Jochen Kühner (11 Mai 2010)

Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...




Hab mal was geschrieben:

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


----------



## Question_mark (11 Mai 2010)

*Eine Frage noch*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> Und auf welchem Gerät ist der LibNoDave Protokoller und Zottels Library installiert



Diese Frage ist noch offen ...
Ist das etwa ein PC ?

Gruß

Question_mark


----------



## Jochen Kühner (11 Mai 2010)

Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...



Zufrieden? ;-)


----------



## rudl (12 Mai 2010)

Question_mark schrieb:


> Das ist im Prinzip zwar möglich, und wenn ich mich recht erinnere hat schon mal jemand das hier im Forum vorgestellt. Aber ob das wirklich praktikabel ist ? Nicht jeder SPS-Programmierer kann auch SQL-Abfragen gegen eine Datenbank programmieren. Und wenn doch, spätestens bei einem verschachtelten "Inner Join" wird er im Wikipedia nachschlagen, wie man dicke Seile knüpft und Deckenhaken stabil eindübelt. Und der Funktionsumfang wird mit Sicherheit auch beschränkt sein. Ob das Ding Trigger empfangen kann, Stored Procdures mit Parameterübergabe handeln kann usw.
> Question_mark


 
Schon klar, dass nicht jeder der SPS programmiert auch Datenbankspezialist ist. Bevor man aber selber eine Applikation in Delphi oder VB entwickelt, (Dafür muss man ja auch Hochsprachen programmieren können) ist es sicher einfacher ein fertiges und getestes Programm einzusetzen. Ausserdem können wirklich Stored Procedures mit Variablenübergabe ausgeführt werden. Die Stored Procedure kann vom Datenbankadministrator erstellt werden. Der Vorteil ist einfach, dass die SPS direkten Zugriff auf die Datenbank hat und kein zusätzlicher Datenhandler benötigt wird. Dies wirkt sich positiv auf die Flexibilität und je nach Datenmenge auf die Performance aus. Bei einer Programmänderung muss nur die Datenbank und das SPS Programm angepasst werden und nicht noch zusätzlich ein Datenhandler.



Question_mark schrieb:


> Außerdem gibt es so viele verschiedene Dialekte von SQL, nahezu jeder Hersteller von Datenbanken kocht da sein eigenes Süppchen. Was auf Oracle funktioniert, muss nicht unbedingt auf einem MS SQL Server oder auf einer AS400 funktionieren.
> Question_mark


 
Der Standardsyntax ist überall gleich und nach ISO ANSI standardisiert. Weiterführende Befehle können verschieden sein. (Etwa mit der IEC 61131 zu vergleichen) Diese Unterschiede sind jedoch marginal und können einfach angepasst werden. Zum Beispiel Stored Procedures werden in den einen Sprachen mit Call, in den anderen mit Execute aufgerufen.



Question_mark schrieb:


> Und wer bestimmt, wenn die Datenbank zB. neue Auftragsdaten in eine SPS schreiben will ?
> Question_mark


 
Das Konzept wird eigentlich auf den Kopf gestellt. Die SPS holt sich die Daten und nicht die Datenbank schreibt die Daten in die SPS. Schlussendlich meldet zum Beispiel eine Leit-SPS ein Typwechsel an die anderen SPS / Roboter. Dies kann über ein DIO oder Profibus geschehen. Natürlich können auch alle DIO über die Datenbank ausgetauscht werden, was aber nicht unbedingt zu empfehlen ist.



Question_mark schrieb:


> Also die direkte Verbindung SPS <--> Datenbank ist (jedenfalls zur Zeit) noch recht unflexibel und eingeschränkt.
> Question_mark


 
Wenn ich es mit den herkömmlichen Lösungen vergleiche ist es die Flexibelste.


----------



## Dr. OPC (18 Mai 2010)

Obwohl es spanned ist wie diese Diskussion langsam in andere Lösungsvorschläge "abdriftet", nochmal die Kurzform:

Ursprüngliche Aufgabe: S7-300 mit Inat OPC Server schon vorhanden, 50 Datenpunkte bei Änderung in Datenbank schreiben.

Zwischenschritt: Excel (als OPC Client) gibt es schon und funktioniert auch, Werte werden bei Änderung in Tabelle abgefüllt.

Lösung: OPC-Client mit Delfi (wurde dafür extra gekauft) selber schreiben, Werte werden bei Änderung vom OPC Server an diesen Client gemeldet. Der Client nimmt die Werte aus dem DataChangeCallback und ruft die entsprechende ODBC oder ADO Funktion der Datenbank auf. Hinweis: hier muss "entkoppelt" werden da sich die Daten schneller ändern können als sie in die Datenbank geschrieben werden können, also sollte nicht direkt aus dem Callback die Datenbank gerufen werden!

Vorteil: funktioniert mit allen SPSen (für die es einen OPC Server gibt) und mit allen Datenbanken (für die es eine ODBC Schnittstelle gibt). Kann konfigurierbar implementiert werden (z.B. Liste mit OPC Variablen und Liste mit Ziel-Feldnamen oder natürlich mit GUI) und ist somit nicht nur flexibel sondern auch wiederverwendbar und ohne weitere Programmierung anpassbar. Würde auch mit zwei oder mehr OPC Servern als Datenquelle funktionieren (ohne dort SQL-Statements in den SPSen implementieren zu müssen)

Alternativ: Derartige Software gibt es natürlich auch schon als fertige Produkte z.B. DataLogger (Softwaretoolbox) und viele andere, aber es sollte ja eigener Hirnschmalz anstelle von Euros investiert werden.


----------



## Jochen Kühner (18 Mai 2010)

Dr. OPC schrieb:


> Obwohl es spanned ist wie diese Diskussion langsam in andere Lösungsvorschläge "abdriftet", nochmal die Kurzform:
> 
> Ursprüngliche Aufgabe: S7-300 mit Inat OPC Server schon vorhanden, 50 Datenpunkte bei Änderung in Datenbank schreiben.
> 
> ...





Uhhh, danke für den Tip, habe bei meinem Protokoller bei einer Testprotokollierung an eine Anlage Probleme mit dem Durchsatz bekommen, aber nie die Datenbank als möglichen Flaschenhals in betracht gezogen. Wer wohl das schreiben in die Datenbank auch azyklisch implementieren, mal sehen ob's dann geht... (sind um die 40-60 Telegramme pro Sekunde mit je 100 Byte)


----------



## Question_mark (18 Mai 2010)

*Immer noch keine vernünftige Antwort bekommen*

Hallo,



			
				Dr. OPC schrieb:
			
		

> (ohne dort SQL-Statements in den SPSen implementieren zu müssen)



Eigentlich versuche ich immer noch herauszufinden, ob die Lösungen von Jochen Kühner bzw. von rudl wirklich auf SQL-Statements in der SPS beruhen und direkt von der SPS auf die Datenbank connecten oder doch einen PC als Gateway verwenden. 

Ich zitiere mich ausnahmsweise mal selber :



			
				Question_mark schrieb:
			
		

> Diese Frage ist noch offen ...
> Ist das etwa ein PC ?



Und erhalte eine sehr merkwürdige Antwort :



			
				Jochen Kühner schrieb:
			
		

> Zufrieden?



Da bei Jochen Kühner aber in diesem Zusammenhang immer LibNoDave genannt wird, nehme ich mal an, es gibt keine "direkte" Verbindung zwischen SPS und Datenbank, sondern es hängt immer noch ein PC dazwischen !



			
				rudl schrieb:
			
		

> Das Konzept wird eigentlich auf den Kopf gestellt. Die SPS holt sich die Daten und nicht die Datenbank schreibt die Daten in die SPS.



Das nenne ich dann mal wirklich flexibel, hust ...



			
				rudl schrieb:
			
		

> Diese Unterschiede sind jedoch marginal und können einfach angepasst werden.



*ROFL*

Da haben wir also ein Trio (Jochen Kühner, rudl und SQL4automation), in dem jeder von einer "direkten" Verbindung zwischen SPS und Datenbank spricht.

Ich frage doch einfach nur nach, wie *direkt* denn die Verbindung zwischen SPS und Datenbank ist, oder ob da doch vielleicht doch noch so ein kleiner PC dazwischenhängt ...

Gruß

Question_mark


----------



## Question_mark (18 Mai 2010)

*Flaschenhals ist nicht die DB*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> aber nie die Datenbank als möglichen Flaschenhals in betracht gezogen.



Die Datenbank ist nicht der Flaschenhals, die lacht sich schlapp über die paar Bytes. Der Flaschenhals ist ganz einfach der Umweg über die ODBC Treiber von Windows, da werden die Daten durch die Treiber von Windows geschleust. Und manchmal ist Windows auch mit anderen Sachen beschäftigt.

Gruß

Question_mark


----------



## Question_mark (18 Mai 2010)

*Ach, was sind wir heute wieder kontrovers*

Hallo,



			
				rudl schrieb:
			
		

> Schon klar, dass nicht jeder der SPS programmiert auch Datenbankspezialist ist. ....... Bei einer Programmänderung muss nur die Datenbank und das SPS Programm angepasst werden



Also je ein Programmierer für SPS und Datenbank erforderlich. Wir beide haben eben unterschiedliche Auffassungen von Flexiblität. Und ich fürchte mal, die werden auch in der Zukunft nicht wirklich ausgeräumt werden 

Gruß

Question_mark


----------



## vierlagig (18 Mai 2010)

Question_mark schrieb:


> wirklich auf SQL-Statements in der SPS




```
select id, name, average from deliveries_toursinner join tours on tours.id = deliveries_tours.tour_id and tours.tourdatum = '2009-10-19' and tours.name = deliveries_tors.nameinner join deliveries on deliveries.id = deliveries_tours.delivery_id and deliveries.market_id = 1200;
```

wäre dann schon mal aus zwei strings zusammengebaut da >254 zeichen ... hmm, ob der server damit um kann?


----------



## Question_mark (18 Mai 2010)

*Grins ...*

Hallo,



			
				vl schrieb:
			
		

> wäre dann schon mal aus zwei strings zusammengebaut da >254 zeichen ... hmm, ob der server damit um kann?



Nö, kann er nicht 

Und eine andere Datenbank verlangt die Strings mit einfachem Hochkommata, die andere doppelte Hochkommata und so fort. Was glaubst Du wohl, warum mich dieser Fred zunehmend erheitert. 


Gruß

Question_mark


----------



## vierlagig (18 Mai 2010)

Question_mark schrieb:


> Was glaubst Du wohl, warum mich dieser Fred zunehmend erheitert.



ich teile doch deine erheiterung, wollte es dem unbedarften leser nur noch ein wenig deutlicher machen


----------



## Question_mark (19 Mai 2010)

*Naja, ich sehe da ein ungesundes Halbwissen*

Hallo,



			
				vl schrieb:
			
		

> wollte es dem unbedarften leser nur noch ein wenig deutlicher machen



Naja, auf jeden Fall vielen Dank. Aber wie kann man jetzt diesem Triumvirat aus vermeintlichen DB, SPS und Hochsprachen-Experten verständlich machen, dass diese auf dem "Woodway" sind ?  *ROFL*

Jeder der vorgenannten hat sicher edle Motive zur Bereicherung der Verbindung von SPS-Welt und Datenbanken, aber nicht wirklich fundierte Kenntnissse oder innovative Lösungen. Der eine kupfert die Kommunikationslösung ab, der andere Experte glaubt SQL = SQL, ich bekomme dieses Grinsen nicht aus dem Gesicht .. 

Gruß

Question_mark


----------



## vierlagig (19 Mai 2010)

weiter  und wegsehen ... mehr fällt mir nicht ein ... bin dann jetzt wieder proggen, da weiß ich, wo ich hin will und dazu noch WIE!


----------



## Question_mark (19 Mai 2010)

*Grins*

Hallo,



			
				vl schrieb:
			
		

> weiter  und wegsehen ... mehr fällt mir nicht ein ...



Sch..e, wir beide sind aber heute wieder böse 

Gruß

Question_mark


----------



## Jochen Kühner (19 Mai 2010)

Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...



Ich nutze aber kein ODBC! Ich benutze direkt Connectoren in .NET. Wobei ODBC auch möglich ist!

und ich habe nie von direkter Verbindung von SPS zur Datenbank gesprochen! Ich habe nur gesagt das mein Protokoller direkt von der SPS in die Datenbank schreibt.

Ich denke nur das ja sowieso ein PC vorhanden ist, der auf dem die Datenbank läuft!


----------



## Question_mark (19 Mai 2010)

*Watt iss ne Datenbank ?*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> und ich habe nie von direkter Verbindung von SPS zur Datenbank gesprochen! Ich habe nur gesagt das mein Protokoller direkt von der SPS in die Datenbank schreibt.



Na dann haben wir das mal endlich geklärt. Bei meinen Kunden befinden sich die Datenbanken nicht neben dem Backautomaten, sondern steuern die gesamte Produktion in den Werken weltweit aus den Zentralen in Finnland, Südafrika, USA oder wo auch immer. Mein recht bescheidener Beitrag dazu besteht darin, Produktionsdaten an die EDV weiterzugeben oder neue Aufträge für Produktionsanlagen von der EDV entgegenzunehmen und an die Maschinen weiterzugeben.

Ich hoffe dann mal, Du verstehst den Hintergrund, warum ich hier rummaule ..
Obwohl, es soll tatsächlich Leute geben, die Access für eine Datenbank halten 

Gruß

Question_mark


----------



## Question_mark (19 Mai 2010)

*Was ist denn nun schneller ?*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> Ich nutze aber kein ODBC! Ich benutze direkt Connectoren in .NET. Wobei ODBC auch möglich ist!



Kannst Du dann auch schon zuverlässige Aussagen machen, welcher Weg schneller ist ?

Also der Umweg über ODBC oder der Overhead von Connectoren in .NET ?

Würde mich wirklich interessieren.

Gruß

Question_mark


----------



## Jochen Kühner (20 Mai 2010)

Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...



ODBC ist definitiv langsamer! Und warum sind die Connectoren in .Net ein Umweg? Wie connectest du in deinen Anwendungen? Direkt per Soket oder Tcp/IP oder nutzt du auch eine dll des Datenbank Herstellers (Connector)


----------



## Jochen Kühner (20 Mai 2010)

Question_mark schrieb:


> Hallo,
> 
> Ich hoffe dann mal, Du verstehst den Hintergrund, warum ich hier rummaule ..
> Obwohl, es soll tatsächlich Leute geben, die Access für eine Datenbank halten
> ...



Nöö, versteh Ich nicht, du musst bei deinen Kunden meine Software ja nicht einsetzen, und Ich denke dafür ist Sie auch nicht gedacht! Die ist einfach zur Protokollierung von SPS Daten in eine Datenbank, wie ein Telegrammlog, Messwerte, usw... Wo es auch mal nicht schlimm ist wenn die Software mal abstürtzt! (Was sie normalerweise nicht tut, aber Ich kann auch für nichts garantieren!)


----------



## Jochen Kühner (20 Mai 2010)

Question_mark schrieb:


> Hallo,
> Na dann haben wir das mal endlich geklärt. Bei meinen Kunden befinden sich die Datenbanken nicht neben dem Backautomaten, sondern steuern die gesamte Produktion in den Werken weltweit aus den Zentralen in Finnland, Südafrika, USA oder wo auch immer. Mein recht bescheidener Beitrag dazu besteht darin, Produktionsdaten an die EDV weiterzugeben oder neue Aufträge für Produktionsanlagen von der EDV entgegenzunehmen und an die Maschinen weiterzugeben.
> 
> Question_mark



Und wie machst du das?? Geht das ohne PC dazwischen??


----------



## Question_mark (20 Mai 2010)

*Auf der Suche ...*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> Und wie machst du das?? Geht das ohne PC dazwischen??



Nein, ich habe eben bisher noch keine vernünftige Lösung *ohne* PC dafür gefunden. Was glaubst Du eigentlich, warum ich seit ein paar Tagen hartnäckig und auch provozierend versucht habe, Dir ein paar Infos zu Deinem Projekt aus der Nase zu ziehen.   
Aber mittlerweile hat sich das erledigt, ich entnehme Deinen Antworten : Auch bei Dir ist ein PC im Spiel. Und den will ich eigentlich nicht mehr. 

Ich beschäftige mich aber gerade mit dem neuen Siemens CP 343-1 ERPC (brandneu), damit kann man das wohl lösen. Aber ich befürchte, das wird kostenmäßig ein absoluter GAU. Eigentlich will ich den PC aus dieser Kette raushaben, aber ich habe noch keine effiziente Lösung dafür. 

Die Lösung vom User "rudl" scheint ja auch ohne PC auszukommen (Auch der hat mit einer direkten Antwort gekniffen), hat aber eben nur eine unzureichende Unterstützung und Tests der S7. Also zur Zeit auch noch nicht praktikabel (jedenfalls für meine Anwendungen).

Gruß

Question_mark


----------



## Jochen Kühner (21 Mai 2010)

Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...



ich denke ohne PC dazwischen wird schwierig (wobei man Software ja auch immer noch auf dem Datenbank PC installieren kann, wenns der Kunde zulässt). Es bietet zwar fast jede Datenbank eine TCP/IP Schnittstelle an (So Connecten ja dann auch die Treiber Dlls übers Netzwerk), aber diese auf der SPS zu benutzen wird denke Ich ein schwieriges unterdfangen (wobei Ich nicht denke, das dies nicht möglich ist). Wäre dann aber wohl auch wieder für jede Datenbank Software unterschiedlich!


----------



## Dr. OPC (4 Juni 2010)

> Eigentlich will ich den PC aus dieser Kette raushaben


das ist auch aus meiner Sicht die richtige Lösung. Leider müssen sich dazu alle (oder zumindest sehr viele) Hersteller auf EINEN Kommunikationsstandard einigen, der direkt in der SPS implementierbar ist (also nicht auf MS Technologien beruht), das kann etwas dauern. Natürlich sollten auch Datenbankherrsteller und ERP/MES Systeme diese Schnittstelle anbieten. Und genau deshalb wurde OPC UA erfunden. Es gibt schon einige Hersteller (u.a. Beckhoff, KW, Bosch, logicals) die den UA Server "direkt in der Steuerung" auf der diesjährigen Hannover Messe präsentiert haben. Es gibt auch schon UA Clients direkt in den Steuerungen. Auch am "oberen Ende" der Kommunikationskette gibt es schon UA Clients, z.B. von SAP. Man kann also schon sehen wo die Reise hingeht.



> mit dem neuen Siemens CP 343-1 ERPC (brandneu)


das ist auch aus meiner Sicht der heißeste Kandidat für einen UA Server/Client, denn (nur) Datenbankanbindung ist natürlich zu wenig für so einen CP. Ich hätte ihn am liebsten voll projektierbar von Step7 aus, Symbole mit runterladen, ein Paar Lese/Schreibe-Bausteine (SFCxx), fertig. Deine Befürchtung zum Preis teile ich, allerdings denke ich das Anlagen, die aus >10 Steuerungen bestehen dann doch wieder einen PC haben werden mit einem OPC UA Server drauf. Es ist dann kostengünstiger eine SimaticNET-Lizenz anstelle 10 ERPCs zu kaufen. Aber wenn nur 2-3 SPSen direkt kommunizieren sollen und auch noch von verschiedenen Herstellern sind, ist es eine Überlegung wert. Die Datenbankanbindung würde dann auch über eine UA-Verbindung gehen.

Hast du bei Siemens schon mal nachgefragt wann es den "CP-343-1 OPC" gibt und was der kosten soll?


----------



## Gerhard Bäurle (4 Juni 2010)

Question_mark schrieb:


> Ich beschäftige mich aber gerade mit dem neuen Siemens CP 343-1 ERPC (brandneu), damit kann man das wohl lösen. Aber ich befürchte, das wird kostenmäßig ein absoluter GAU. Eigentlich will ich den PC aus dieser Kette raushaben, aber ich habe noch keine effiziente Lösung dafür.



Hallo,

hier die *Siemens-Info* mit dem CP 343-1 ERPC (ERP-Controller?).

Fakt ist, dass irgendwo eind Task laufen muss, welche die Daten 
zwischen Steuerung und Datenbank hin- und her schiebt. 

OK, ein extra PC dazu ist lästig (Stromverbrauch, Ausfallrisiko). 

Allerdings frage ich mich, nach dem Gott und die Welt zwischen-
zeitlich virtualisiert wird, ob es nicht flexibler ist, auf dem Daten-
bankserver eine virtuelle Maschine laufen zu lassen, die den 
Datenaustausch erledigt.


----------



## Gerhard Bäurle (4 Juni 2010)

Nachtrag:



> ERPC steht für Enterprise Resource Planning
> Connect. Der Kommunikationsprozessor
> CP 343-1 ERPC kann zusammen
> mit der Software der Partnerfirma ILS zur
> ...


*Quelle*


----------



## Red-Sh4nks (4 Juni 2010)

*Hey!*



> Hallo miteinander,
> 
> ich besitze eine 300er SPS mit Ethernet - Anbindung und zusätzlich einen INAT OPC-Server .. jetzt bin ich bereits soweit .. dass ich im OPC-Server die Verbindung zur SPS aufgebaut habe .. und bspw. bestimmte Merker auslesen kann .. jedoch möchte ich es gerne so hinbekommen .. dass die Datenbank die Werte zyklisch vom OPC-Server abfragt .. muss ich das mit einer Programmiersprache , wie z.b. Delphi oder VBA lösen oder kann ich das direkt in der datenbank aktivieren ?



Hey! Hab jetzt nicht alle Seiten durchgelesen, aber ich würde dir prinzipiell C# von .net und Libnodave empfehlen. Den Genau das was du hier machen willst, hab ich bereits für meine Diplomarbeit programmiert.

Mit dem Befehl Davereadbytes und den richtigen Parametern ist es ein Klax! Das ganze noch in einen Timer oder ein Thread und fertig. Hast du C# Kenntnisse? Wenn ja, kann ich dir unter die Arme greifen. Ich weiß wie es ist, wenn man sich nicht auskennt und Hilfe braucht. Auch ich habe dem Forum hier einige Meilensteine zu verdanken ;-)

lg Marco*


----------



## elektroluethi (18 Oktober 2010)

Hallo Zusammen,

ich wollte mitteilen, das wir ein kleines Projekt mit dem CP343-ERPC und eine MSSQL-Datenbank umgesetzt haben. Dabei "schaut" die SPS/CP auf die Datenbank und reagiert bei entsprechenden Datensätze darauf.

Gruß
elektroluethi
(sonst bei fragen, einfach mal eine pn schicken..)


----------

