# [ OPC ] C++ Einsteigertutorial für Client gesucht



## caret (31 März 2006)

Gegeben: S7-200 und S7-200 PC-Access (OPC Server)

Ich bin auf der Suche nach einem C++ Einsteigertutorial in der OPC Programmierung. Gibt es so etwas? Hab bisher im WWW nix gefunden. 
In C++ Programmierung bin ich durchaus bewandert. Allerdings hab ich noch nie mit DCOM bzw. COM gearbeitet.  Für meine Anwendung würde aber der Zugriff über COM vollkommen ausreichen, da die SPS am gleichen Rechner hängen wird auf dem auch die Anwendung laufen soll. Zu COM hab ich auch Literatur. Hab nur keine Ahnung wie ich die Kommunikation zum OPC Server aufbaue. Gibt es da eine Klassenreferenz oder so etwas? So eine Art "hello world"-Beispielprgramm für einen OPC Client in C++ wäre ja auch ganz nett.

EDIT: Ich möchte wirklich einen minimalen Client selbst implementieren. Hinweise auf kommerziele SDKs, welche ich zuhauf gefunden habe, helfen mir also nicht wieter. (c;


----------



## afk (31 März 2006)

caret schrieb:
			
		

> Ich bin auf der Suche nach einem C++ Einsteigertutorial in der OPC Programmierung.
> ...
> Hab nur keine Ahnung wie ich die Kommunikation zum OPC Server aufbaue. Gibt es da eine Klassenreferenz oder so etwas? So eine Art "hello world"-Beispielprgramm für einen OPC Client in C++ wäre ja auch ganz nett.


Im PDF "Einführung OPC-Server für SIMATIC NET" ist ab Kapitel 10 eine recht gute Beschreibung für den Zugriff aus C/C++ auf einen OPC-Server incl. einer Beschreibung der entsprechenden OPC-Interfaces. Die Beispiele sind recht allgemein, es wird nur immer mal wieder auf Besonderheiten vom SimaticNET OPC-Server hingewiesen.

Gruß Axel


----------



## caret (31 März 2006)

afk schrieb:
			
		

> Im PDF "Einführung OPC-Server für SIMATIC NET" ist ab Kapitel 10 eine recht gute Beschreibung für den Zugriff aus C/C++ auf einen OPC-Server incl. einer Beschreibung der entsprechenden OPC-Interfaces. Die Beispiele sind recht allgemein, es wird nur immer mal wieder auf Besonderheiten vom SimaticNET OPC-Server hingewiesen.
> 
> Gruß Axel



Klingt genau nach etwas was ich suche. Wo bekomme ich das PDF her? In einem Anderen Thread 

http://www.sps-forum.de/showthread.php?t=16&highlight=Einf%FChrung+OPC-Server+SIMATIC

wird zwar ein Downloadlink angegeben, aber der funktioniert leider nicht.


----------



## Question_mark (31 März 2006)

Hallo,


			
				caret schrieb:
			
		

> Wo bekomme ich das PDF her?


 Siemens hat in der Vergangenheit sehr oft die URL's geändert, darum sind diese Links heute meist mausetot. Die erwähnte "Einführung in Simatic-Net" kann ich auch nicht mehr zum Download finden. Im Installationspfad von SimaticNet sollten sich auch Beispielprogramme finden, schau dort einfach mal nach. Auf der Siemens Homepage findest Du unter der Beitrags-ID 2044387 weiter tonnenweise Infos und Beispiele.

Gruss
Question_mark


----------



## caret (31 März 2006)

Question_mark schrieb:
			
		

> Im Installationspfad von SimaticNet sollten sich auch Beispielprogramme finden, schau dort einfach mal nach.


Ich hab aber kein SimaticNET (siehe erstes Posting), sondern S7-200 PC-Acsess. Hatte ja auch gedacht die liefern da ein  Handbuch mit. Aber ausser einer ReadMe und zwei Demos (VB und Excel) ist da nichts.



			
				Question_mark schrieb:
			
		

> Auf der Siemens Homepage findest Du unter der Beitrags-ID 2044387 weiter tonnenweise Infos und Beispiele.


 Hm, ein Link wäre nicht schlecht. Die Forenbeiträge auf der Webseite selbst (www.automation.siemens.com) haben keine IDs, d.h. man kann nicht danach suchen, und wenn ich im URL-String die ID 2044387 verwende findet er keine Beiträge.


----------



## seeba (31 März 2006)

caret schrieb:
			
		

> Ich hab aber kein SimaticNET (siehe erstes Posting), sondern S7-200 PC-Acsess. Hatte ja auch gedacht die liefern da ein  Handbuch mit. Aber ausser einer ReadMe und zwei Demos (VB und Excel) ist da nichts.
> 
> Hm, ein Link wäre nicht schlecht. Die Forenbeiträge auf der Webseite selbst (www.automation.siemens.com) haben keine IDs, d.h. man kann nicht danach suchen, und wenn ich im URL-String die ID 2044387 verwende findet er keine Beiträge.


support.automation.siemens.com und die ID einfach bei Suche reinkopieren und suchen!


----------



## Thomas_v2.1 (31 März 2006)

Auf der CD zu den OPC-Servern von Woodhead sind für einige Umgebungen (Visual C++, VB, Borland Builder, Delphi, ...) dlls dabei, um sich möglichst einfach einen OPC-Client zusammenzubauen.
Ich habe nur mal kurz in die Dokumentation reingesehen, die aber leider recht mager war. Ein kurzes Beispielprogramm in C++ sah jedoch ziemlich einfach aus.
Allerdings weiß ich nicht wie es mit der Lizenz aussieht diese dlls in eigenen Anwendungen zu verwenden.


----------



## caret (31 März 2006)

Thomas_v2.1 schrieb:
			
		

> Auf der CD zu den OPC-Servern von Woodhead sind für einige Umgebungen (Visual C++, VB, Borland Builder, Delphi, ...) dlls dabei, um sich möglichst einfach einen OPC-Client zusammenzubauen.
> Ich habe nur mal kurz in die Dokumentation reingesehen, die aber leider recht mager war. Ein kurzes Beispielprogramm in C++ sah jedoch ziemlich einfach aus.
> Allerdings weiß ich nicht wie es mit der Lizenz aussieht diese dlls in eigenen Anwendungen zu verwenden.


Kann mal jemand mein Verständniss von OPC korrigieren: Ich hatte gedacht OPC Server wären dazu da den Zugriff auf SPS und Bus zu vereinheitlichen, d.h. eine herstellerunabhängige Schnittstelle  zu Anwendersoftware zu schaffen. Wieso brauche ich da jetzt doch wieder irgenwelche dlls von Fremdanbietern? Was ich will ist einfach ein Spezifikaltion des Interface, d.h. welche Klassen und welche Methoden gibt es. Meinem Verständnis nach sollte ich über COM irgendeine Form von einem OPC Objekt erhalten auf dem ich eben diese in der Spezifikation definierten Methoden ausführen kann. Über support.automation.siemens.com hab ich jetzt ein PDF in die Hände bekommen in dem was über den SimaticNET OPC Server drinsteht. Das sieht mir aber alles sehr Siemens spezifisch und auch nur auf den SimaticNET Server bezogen aus. Ich hab aber kein SimaticNET sondern S7-200 PC Access. Davon unabhängig muss es muss doch eine Möglichkeit geben an JEDEN von der OPC Foundation zertifizierten Server OHNE irgendwelche zusätzlichen SDKs anzudocken. Ansonsten würde dieser Standard ja gar keinen Sinn machen. Ich möchte einfach nur wissen wie die Schnittstelle aussieht und ein Hello-World Programm haben, dass das einmal demonstriert.

Nich einmal: Ich habe kein SimaticNET, ich habe keine Woodhead OPC CD. Ich habe einfach nur einen von der OPC Foundation zertifizierten OPC Server und Visual C++ 2005 Express. Das MUSS doch ausreichen.


----------



## seeba (31 März 2006)

caret schrieb:
			
		

> Kann mal jemand mein Verständniss von OPC korrigieren: Ich hatte gedacht OPC Server wären dazu da den Zugriff auf SPS und Bus zu vereinheitlichen, d.h. eine herstellerunabhängige Schnittstelle  zu Anwendersoftware zu schaffen. Wieso brauche ich da jetzt doch wieder irgenwelche dlls von Fremdanbietern? Was ich will ist einfach ein Spezifikaltion des Interface, d.h. welche Klassen und welche Methoden gibt es. Meinem Verständnis nach sollte ich über COM irgendeine Form von einem OPC Objekt erhalten auf dem ich eben diese in der Spezifikation definierten Methoden ausführen kann. Über support.automation.siemens.com hab ich jetzt ein PDF in die Hände bekommen in dem was über den SimaticNET OPC Server drinsteht. Das sieht mir aber alles sehr Siemens spezifisch und auch nur auf den SimaticNET Server bezogen aus. Ich hab aber kein SimaticNET sondern S7-200 PC Access. Davon unabhängig muss es muss doch eine Möglichkeit geben an JEDEN von der OPC Foundation zertifizierten Server OHNE irgendwelche zusätzlichen SDKs anzudocken. Ansonsten würde dieser Standard ja gar keinen Sinn machen. Ich möchte einfach nur wissen wie die Schnittstelle aussieht und ein Hello-World Programm haben, dass das einmal demonstriert.
> 
> Nich einmal: Ich habe kein SimaticNET, ich habe keine Woodhead OPC CD. Ich habe einfach nur einen von der OPC Foundation zertifizierten OPC Server und Visual C++ 2005 Express. Das MUSS doch ausreichen.


Keine Angst, dir wird schon keiner helfen. 'nen anderen Ton bitte!
http://sourceforge.net/projects/opcclient


----------



## afk (31 März 2006)

caret schrieb:
			
		

> Kann mal jemand mein Verständniss von OPC korrigieren: Ich hatte gedacht OPC Server wären dazu da den Zugriff auf SPS und Bus zu vereinheitlichen, d.h. eine herstellerunabhängige Schnittstelle  zu Anwendersoftware zu schaffen.


So ist es auch.



			
				caret schrieb:
			
		

> Wieso brauche ich da jetzt doch wieder irgenwelche dlls von Fremdanbietern?


Wenn Du mit COM/DCOM-Interfaces umgehen kannst, dann brauchst Du die ganz sicher nicht.



			
				caret schrieb:
			
		

> Was ich will ist einfach ein Spezifikaltion des Interface, d.h. welche Klassen und welche Methoden gibt es. Meinem Verständnis nach sollte ich über COM irgendeine Form von einem OPC Objekt erhalten auf dem ich eben diese in der Spezifikation definierten Methoden ausführen kann.


Ist ebenfalls korrekt.



			
				caret schrieb:
			
		

> Über support.automation.siemens.com hab ich jetzt ein PDF in die Hände bekommen in dem was über den SimaticNET OPC Server drinsteht. Das sieht mir aber alles sehr Siemens spezifisch und auch nur auf den SimaticNET Server bezogen aus. Ich hab aber kein SimaticNET sondern S7-200 PC Access.


Das macht nichts, Du mußt dann eben das Interface von Deinem OPC-Server instanzieren anstelle vom Interface "OPC.SimaticNET". Ich weiß nicht, wie der bei S7-200 PC Access heißt, das sollte aber zumindest aus der Doku hervorgehen. Alternativ kannst Du dir einen freien OPC-Client (z.B. von FactorySoft) herunterladen und im Connection-Dialog des Clients nachschauen, wie Der OPC-Server auf Deinem System heißt.



			
				caret schrieb:
			
		

> Davon unabhängig muss es muss doch eine Möglichkeit geben an JEDEN von der OPC Foundation zertifizierten Server OHNE irgendwelche zusätzlichen SDKs anzudocken. Ansonsten würde dieser Standard ja gar keinen Sinn machen.


So ist es, und in der Doku des SimaticNET OPC-Servers sind diese Schnittstellen eigentlich ganz gut beschrieben, es sind nur ein paar Hinweise drin, die eben speziell etwas mit SimaticNET zu tun haben.



			
				caret schrieb:
			
		

> Ich möchte einfach nur wissen wie die Schnittstelle aussieht und ein Hello-World Programm haben, dass das einmal demonstriert.


Ein Hello-World ist es nicht, aber in kleinen Häppchen verteilt ist da auch ein kleines Demo-Programm in Kapitel 10 für C/C++ und in Kapitel 11 für VisualBasic.



			
				caret schrieb:
			
		

> Nich einmal: Ich habe kein SimaticNET, ich habe keine Woodhead OPC CD. Ich habe einfach nur einen von der OPC Foundation zertifizierten OPC Server und Visual C++ 2005 Express. Das MUSS doch ausreichen.


Ist Visual C++ 2005 Express nicht nur für .NET ? Dann mußt Du meines Wissens mit COM-Interop arbeiten, aber da kann Dir Seeba bestimmt was zu sagen. 

Ich sehe gerade, Seeba war schon schneller ...  


Gruß Axel


----------



## seeba (31 März 2006)

afk schrieb:
			
		

> Ist Visual C++ 2005 Express nicht nur für .NET ? Dann mußt Du meines Wissens mit COM-Interop arbeiten, aber da kann Dir Seeba bestimmt was zu sagen.


Nein, Visual C++ 2005 ist eigentlich nicht an .NET gebunden. Zumindest war es das in 2003 noch nicht. Es ist praktisch der Nachfolger für Visual C++ 6.0. COM-Interop ist so 'ne Sache für sich. 

Gruß Sebastian, der sich mit seinem hochauflösendem (640x480) Linux rumschlägt.


----------



## caret (31 März 2006)

seeba schrieb:
			
		

> 'nen anderen Ton bitte!


Hm, ja das mit dem Ton war ja auch nicht so gemeint. Es ist mir hier im Forum nur aufgefallen, dass meine Postings häufig etwas halbherzig gelesen werden. und dadurch Missverständnisse entstehen. Aus diesem Grunde geb ich in meinen Beiträgen schon immer als erstes meine Hard -und Softwarekonfiguration an. Hat mich dann geärgert, dass ich trozdem auf SimaticNET oder Woodhead verwiesen werde.

Irgenwie finde ich es auch abgefahren, dass es für einen Industriestandard wie OPC scheinbar keine offizielle Dokumentation gibt, in der das Interface definiert wird. Alle bisher angebotenen Hifen, für die ich übrigends sehr dankbar bin, beziehen sich auf Produkte andere Anbieter.  Selbst das folgende:



			
				seeba schrieb:
			
		

> http://sourceforge.net/projects/opcclient


die übrigends GENAU das ist was ich gesucht habe. Danke (c;

Einen gewissen Umut habe ich dann auch auf Siemens selbst, dass bei S7-200 PC Access keine Klassenreferenz dabei ist.


----------



## afk (1 April 2006)

caret schrieb:
			
		

> Irgenwie finde ich es auch abgefahren, dass es für einen Industriestandard wie OPC scheinbar keine offizielle Dokumentation gibt, in der das Interface definiert wird. Alle bisher angebotenen Hifen, für die ich übrigends sehr dankbar bin, beziehen sich auf Produkte andere Anbieter.


Offizielle Dokumente gibt es sehr wohl, und zwar bei der OPC-Foundation, dafür mußt Du dich dann aber zuerst auf deren Website registrieren, und die Spezifikationen sind ziemlich umfangreich und nur in Englisch zu bekommen. Da Du aber ausdrücklich nach einem Einsteigertutorial gefragt hast, habe ich Dir eben die SimaticNET-Doku empfohlen, da die wesentlich kompakter und in Deutsch geschrieben ist, und Dich meiner Meinung nach schneller zu Deinem Ziel bringt als die Original-Spec. Mir ging es jedenfalls so, als ich vor ein paar Jahren meine ersten Erfahrungen mit OPC gemacht habe.

Wie Du siehst habe ich Deine Mail sehr wohl gelesen ...  


Gruß Axel


----------



## Question_mark (1 April 2006)

Hallo caret,
bevor Du versuchst, irgendeinen OPC-Client in einer x-beliebigen Programmiersprache zu erstellen, kann ich Dir nur dringend empfehlen, Deine Programmierkenntnisse über COM und DCOM etwas aufzufrischen (oder wenigstens Dich darüber zu informieren). Wenn Du nicht in der Lage bist, einen  beliebigen COM-Client in der von Dir bevorzugten Programmiersprache zu erstellen,  brauchst Du auch nicht zu versuchen, einen OPC-Client zu programmieren. Beschäftige Dich mit den unzähligen Beispielen zum Custom-Interface (Du willst ja C++ verwenden) auf der Homepage von Erfinder des COM-Interface (also Microsoft). Wenn Du das dann verstanden hast, bist Du sicherlich etwas qualifizierter, einen COM-Client zu erstellen. Wenn nicht, vergiss es lieber. Aber maule dann bitte nicht wegen Deiner Unkenntnis über das COM-Interface hier über OPC-Standards herum.

Gruss
Question_mark


----------

