# Grundlegende Frage Windows <--> SPS



## Tom83 (10 September 2009)

Hallo 

Ich habe "OPC-Server" und "SPS / S7" das erste Mal vor 4 Tagen gehört - ich bin also sehr unerfahren!
Ich bin Anwendungsentwickler für verschiedene Hochsprachen und muss jetzt eine Schnittstelle entwickeln, welche zwischen meinem C++ Programm über ein OPC-Netzwerk mit einer S7 kommuniziert.

Grundlegende Frage:
Kann ich von einem Windows-System (bsp. XP) ein Paket an den OPC-Server senden, welcher dies an eine bestimmte S7 weiterleitet? Gibt es in einem OPC-Netzwerk soetwas wie IPs?

Auf der S7 und dem Windows-System werden Daten generiert, das Ziel ist diese Daten auszutauschen (was da genau passieren wird ist erstmal egal).
Beide Seiten haben sich auf ein Protokoll "geeinigt" - das muss jetzt "nur" noch ausgetauscht werden - und genau da klemmts, ich weiss auch nicht wo ich ansetzen muss, da ich nochnichtmal ein Testsystem habe und die S7-Software noch nicht existiert.

Wäre für eine minimal-Einführung/ Code-Schnipsel/ Erläuterungen/ Tipps *sehr* dankbar ;-)

Gruß, Tom


----------



## JesperMP (10 September 2009)

> Grundlegende Frage:
> Kann ich von einem Windows-System (bsp. XP) ein Paket an den OPC-Server senden, welcher dies an eine bestimmte S7 weiterleitet? Gibt es in einem OPC-Netzwerk soetwas wie IPs?


Ein OPC Client kann nicht beliebige Stationen auf den externe Netzwerk-Seite zugreifen. Nur Stationen die voraus in OPC Server eingerichtet sind. Man spricht von "Verbindungen" (besonders bei Siemens) oder "OPC Topics" (bei alle Anderen als Siemens). Dazu unterstützt jeder OPC Server nur ein begrenzte Anzahl von Verbindungen, z.B. 8-16-32 Verbindungen. Dies hängt ab von genau welche OPC Server es handelt.

Es gibt also ein gewisse komplexität. Für deine Programmentwicklung empfehle ich ein fix-und-fertige Komponent für .Net zu kaufen.
Gehe zu http://www.opcconnect.com/. Da gibt es sehr viel zu OPC programmentwicklung.

edit: Was Du brauchst ist ein *OPC DA Client Komponent für .Net*.


----------



## Ralle (10 September 2009)

Auch hier gibts bereits fertige Sachen, natürlich nicht ganz kostenfrei: http://www.kassl.de/opc/index.shtml

Sieh auch mal bei Downloads nach, ein paar freie Sachen sind dabei, vielleicht gibts auch Trialversionen?


----------



## Question_mark (10 September 2009)

*OPC-Client*

Hallo,



			
				Ralle schrieb:
			
		

> Auch hier gibts bereits fertige Sachen, natürlich nicht ganz kostenfrei: http://www.kassl.de/opc/index.shtml



Setze ich sehr gerne als OPC-Client ein, höchst zuverlässig und absolut industrietauglich im 24/7 Betrieb. 



			
				Ralle schrieb:
			
		

> Sieh auch mal bei Downloads nach, ein paar freie Sachen sind dabei, vielleicht gibts auch Trialversionen?



Die Sachen im Downloadbereich beim Herrn Kassl sind ausnahmslos Trial-Versionen, den Zugriff zum Downloadbereich (zum Teil auch mit Quelltext, je nach erworbener Lizenz) erhält man nach dem Kauf der Lizenz über it-share.

Gruß

Question_mark


----------



## ronnie.b (12 September 2009)

Hallo Tom,
muss es unbedingt ein OPC-Server sein?
Du könntest über einen entsprechenden Treiber wie z.B.
-Prodave von Siemens
-ComDrvS7 von MHJ
-libnodave (freeware mit SourceCode) von dem Member Zottel hier
-Deltalogic biete m.w. auch sowas an (ACCON-AGLink???)
-.....(es gibt mit Sicherheit noch mehr davon)
deine Daten direkt in die SPS schreiben.
Ist nur ein alternativer Vorschlag.

Gruß
Ronnie


----------



## Tom83 (14 September 2009)

Danke für Eure Beteiligung 

Ich versuche mich gerade in OPC einzuarbeiten - das scheint sehr viel Arbeit zu sein ;-)

@ronnie.b
Das Netz aus OPC-Servern gibts schon, ich muss also über diesen Weg gehen...


----------



## Dumbledore (14 September 2009)

ich häng mich einfach mal an das Thema dran, hoffe dies ist akzeptabel.

Ich verstehe leider nicht wirklich was ein OPC-Server ist (ich dachte, dies sei die Fähigkeit, Daten an OPC-Clients weiterzuleiten). Das sollte ja in STEP7 bereits eingebaut sein.

Mich verwundert nun die Anfrage eines Kunden. Er will von uns für eine Anlage (bestehend aus STEP7 SPS, diversen WinCC flex. Touchpanels, sowie einem WinCC flex RT PC-System) zusätzlich einen "OPC-Server" angeboten haben.

Frage: was könnte er wohl meinen? Hardware und/oder Software? Welche?

Danke für eure Hilfe

Michael aka Dumbledore


----------



## Rainer Hönle (14 September 2009)

Die OPC-Server-Funktionalität ist i.d.R. nicht in der Steuerung implementiert somit muss diese auf dem PC zur Verfügung gestellt werden. Diese ist in verschiedenen Siemens-Produkten (Softnet, WinCC, WinCC flexible) enthalten. Es gibt aber auch verschiedene Alternativanbieter für OPC-Server mit der Möglichkeit auf Siemens-SPSen zuzugreifen.


----------



## JesperMP (15 September 2009)

Dumbledore schrieb:


> Ich verstehe leider nicht wirklich was ein OPC-Server ist (ich dachte, dies sei die Fähigkeit, Daten an OPC-Clients weiterzuleiten).


Richtig.


Dumbledore schrieb:


> Das sollte ja in STEP7 bereits eingebaut sein.


Nein. Aber mit STEP7 (oder Simatic NCM das im Simatic Net Software enthalten ist) kann ein Siemens OPC Server _eingerichtet_ werden. Um ein OPC Server zu verwenden braucht man ein Lizenz dafür.


Dumbledore schrieb:


> Mich verwundert nun die Anfrage eines Kunden. Er will von uns für eine Anlage (bestehend aus STEP7 SPS, diversen WinCC flex. Touchpanels, sowie einem WinCC flex RT PC-System) zusätzlich einen "OPC-Server" angeboten haben.


Der OPC Server konnte Simatic Net sein. Es gibt auch OPC Server für S7 von Fremdanbieter, wie Deltalogic, Kepware und andere.
Ein Siemens Variant ist den OPC Server option für WinCC Flexible RT. Dies erlaubt nur den zugriff auf Variablen die in das WinCC Flex Projekt projektiert sind, nicht jede beliebige Variabel.

Genau für was braucht dein Endkunde den OPC Server ?


----------



## Dumbledore (15 September 2009)

JesperMP schrieb:


> Um ein OPC Server zu verwenden braucht man ein Lizenz dafür. ... Genau für was braucht dein Endkunde den OPC Server ?


ich habe leider (noch) keine Ahnung wofür er dies benötigt. Der Kunde sitzt in Südkorea, Rückfragen sind daher schwierig (und auch konzernintern nicht gewollt)  Angefragt wurde eben die Option "OPC-Server" 

Wenn ich als Grundaustattung eine S7-416 (samt Ethernet-Anschaltung und natürlich lokalem Profibus samt unterlagerten IM151-7-Steuerugen) mit "normaler" STEP7-Programmierung habe, was würde ich dann zusätzlich für die (oben genannte) Lizenz benötigen? Bestellnummer? Was könnte der Kunde damit aus der Steuerung auslesen (denn darum geht es ihm doch wohl?)

Wenn ich zusätzlich eine WinCC-flexible-Station habe (also einen PC mit WinCC flex runtime, sowie WinCC flex advanced zur programmierung), was brauche ich dann zusätzlich um OPC-Server-Funktionalität anbieten zu können?

Danke im voraus für eure Hilfe

Gruß Michael aka Dumbledore

PS. Gibt es irgendwo eine verständliche Erläuterung (z.B. bei Siemens) was OPC praktisch bedeutet?

PPS. Ich kann per Email gerne ein Blockdiagramm der geplanten Anlage senden wenn dies hilft, dieses sollte hier vielleicht nicht einfach so veröffentlicht werden


----------



## Question_mark (15 September 2009)

*Opc*

Hallo,



			
				Dumbledore schrieb:
			
		

> Kann ich von einem Windows-System (bsp. XP) ein Paket an den OPC-Server senden, welcher dies an eine bestimmte S7 weiterleitet?



Ja, Du kannst aus einem Windows-System Daten über OPC an eine S7 senden (oder empfangen). In Deiner C++ Anwendung brauchst Du dazu einen OPC-Client (zB. http://www.kassl.de/opc/cbuilder.shtml.

Und auf irgendeinem PC sollte ein OPC-Server installiert sein. Du kannst dann mit dem OPC-Client aus Deiner Anwendung über den OPC-Server (also local oder remote) auf Daten der S7 schreibend und lesend zugreifen.

WinCC enthält bereits einen OPC-Server und OPC-Client, damit kann man lesend und schreibend auf interne und externe Variablen aus WinCC zugreifen. 

Für den direkten Zugriff auf Daten der S7 brauchst Du einen OPC-Server wie zB. von Siemens (SimaticNet), Deltalogic etc ...

Du musst Dir beim Simatic OPC-Server nur von vorherein beim Bestellen der Lizenz über den Zugriffsweg (Profibus, Ethernet etc.) im klaren sein.

Hier noch ein paar Links für weitere Infos :

http://www.opcfoundation.org/ 

http://www.opcconnect.com/

Gruß

Question_mark


----------



## Question_mark (15 September 2009)

*Das geht schon*

Hallo,



			
				Dumbledore schrieb:
			
		

> Was könnte der Kunde damit aus der Steuerung auslesen



Eigentlich (fast) alles, es muss eben nur richtig projektiert und programmiert werden...

Gruß

Question_mark


----------



## thomass5 (16 September 2009)

Hier http://www.inat.de/index.php?id=5&L=0  und hier http://www.i-plant.eu/i-Plant.htm gibts auch Infos und Downloads.
Thomas


----------



## JesperMP (16 September 2009)

Wenn es um ein 'normalen' Ethernet Verbindung handelt, über ein normalen ethernet NIC (nicht Siemens CP), dann brauchst Du Simatic Softnet IE (6GK1704-1CW71-3AA0), oder Simatic Softnet IE Lean (6GK1704-1LW71-3AA0). Lean ist auf 8 Verbindungen beschränkt.
Mit oder ohne WinCC Flexible wird mit STEP7 (oder NCM) ein sogennante "PC Station" eingerichtet. Der OPC Server ist ein Komponent in diese PC Station. 
Wenn OPC Server und WinCC Flex RT auf denselbe PC befinden muss, muss WinCC Flex RT auch als Komponent in der PC Station integriert werden. 

Der Endkunde kann dann alle SPS Variablen zugreifen. Du kannst auch das zugriff begrenzen über der Symbol-Editor. Aber das brauchst Du vermutlich nicht wenn Du verabredet mit der Endkunde wo er lesen und evtl. schreiben darf.

Man kann auch Routing einrichten. Das brauchst Du wenn der Endkunde auf die Untergelagerte IM151-7 Stationen zugreifen muss.


----------



## RobiHerb (13 Oktober 2009)

*OPC Client*

Man sollte vielleicht noch ein wenig besser erklären, was OPC ist.

OPC ist ein international genormter einheitlicher Zugriff auf Daten (nicht nur aber ich möchte es nicht weiter komplizieren, genaueres hier www.opcfoundation.org).

OPC baut auf der Active X und somit COM Technologie von Microsoft auf.

Durch die genormte Schnittstelle wird das Chaos der verschiedenen System und Hardware Implementationen der Hersteller umgangen.

Einem OPC Client ist es erst einmal egal, ob da eine Siemens SPS, ein Nasa Satelit, eine Bosch Scheibenwaschanlage oder ein Lego Baukasten angesprochen wird.

Das mach dem Entwickler des Client das Leben leichter (wenn er es einmal geschafft hat, das System zum Laufen zu bringen).

OPC Server stellen nach aussen die genormte Schnittstelle zur Verfügung, müssen aber die Anfragen und Antworten auf das spezielle System ummappen! Das kann ganz schön RechenPower und Aufwand erfordern. Deshalb sind auch einige OPC Server 10 mal langsamer, als wenn man direkt auf die Daten (z.B. per EtherCAT oder Profibus) zugreifen könnte.

OPC Server kosten auch Geld oder ein wenig Programmierarbeit, wenn man es sich zutraut.

OPC Server kann man auf Konformität von der OPC Organisation zertifizieren lassen, ich denke, die wenigsten bekommen das Zertifikat.


----------



## Jochen Kühner (14 Oktober 2009)

*OPC-Server...*

Gibt eigendlich irgendwo Infos zim OPC Protokoll, wenn man Server oder Client funktionalität direkt in eigene Projekte einbinden möchte, ohen externe libs?

Bei der opc foundation muss ja mitglied sein!


----------



## Question_mark (14 Oktober 2009)

*Erklärbärmodus an ...*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> Infos zim OPC Protokoll,



Mal einen Merksatz zum besseren Verständnis :

Es gibt per Definition kein OPC Protokoll, jedenfalls nicht im Sinne eines Kommunikationsprotokolles wie S7Online, RFC1006 oder anderen. 

OPC definiert sich als eine Standard Schnittstelle für den Zugriff von einem Client zum Server und umgekehrt. Und unabhängig von der verwendeten Programmiersprache. Und OPC ist nicht unbedingt auf den Zusammenhang mit einer SPS oder Visu beschränkt. Im einfachsten Fall kann zB. ein OPC-Server nur Datum und Uhrzeit eines PC lesen und stellen. Von einem OPC Client kann man nun über die fest definierten Schnittstellen das Lesen und Stellen der Uhr über den OPC-Server steuern.

Also mal zur Klarstellung : Der Begriff OPC ist nicht alleine auf SPS oder Visu anzuwenden, sondern kann durchaus auch in anderen Zusammenhängen vorkommen.

OPC beschreibt also nur den Datenaustausch zwischen Server und Client über die Windows COM Technologie. Du meinst wahrscheinlich irrtümlich, dass das von Dir erwähnte OPC-Protokoll für den Datenaustausch zwischen PC und SPS zuständig ist. Das ist aber Sache des OPC-Servers, wie er die Kommunikation mit der S5, S7, HMI oder der PC-Uhr über welches Protokoll abwickelt.

Oder vereinfacht ausgedrückt : Ich muss immer einen für meine Zwecke geeigneten OPC-Server einsetzen. Also abhängig davon, ob ich mit Modbus, S5, S7 kommunizieren oder nur eine PC-Uhr stellen will. Aber die Schnittstelle, mit der mein Client mit dem Server kommuniziert, die ist eben durch OPC einheitlich.

Ich hoffe, das hat etwas zur Erklärung und Beseitigung von Irrtümern über OPC beigetragen.

Gruß

Question_mark


----------



## Jochen Kühner (14 Oktober 2009)

*Nö...*

Nöö, ich will bsw einen variablenreader welchen ich mit libnodave geschrieben habe als quelle für variablen in wincc machen, dazu muss mein programm ein opc server sein (wenn ichs richtig verstanden habe). 

gut schnitstelle war falsch, da dies wohl nich über tcp ip geht sondern dcom wenn ich das jetzt verstanden habe, wo finde ch infos dazu wie ein opc server auszusehen hat?


----------



## Question_mark (14 Oktober 2009)

*Muss ich das jetzt verstehen ???*

Hallo,



			
				Jochen Kühner schrieb:
			
		

> ich will bsw einen variablenreader welchen ich mit libnodave geschrieben habe als quelle für variablen in wincc machen,



Und was soll der Variablenreader über Libnodave bewirken ? WinCC kann seine deklarierten Variablen sowohl als OPC-Client und auch als OPC-Server bedienen. Aber schön, das Du wenigstens ausreichend beschäftigt warst :-D

Gruß

Question_mark


----------



## Question_mark (14 Oktober 2009)

*Ich weiss nicht mehr weiter, helft mir bitte ...*

Hallo,



			
				RobiHerb schrieb:
			
		

> OPC baut auf der Active X



Also bei allen meinen Rechnern habe ich Active X in der Konfiguration gesperrt, warum funktionieren meine OPC-Server trotzdem ???

Ich bin wirklich ratlos, kannst Du mir weiterhelfen ???

Gruß

Question_mark


----------



## Question_mark (15 Oktober 2009)

*Prustt ..*

Hallo,



			
				RobiHerb schrieb:
			
		

> Deshalb sind auch einige OPC Server 10 mal langsamer, als wenn man direkt auf die Daten (z.B. per EtherCAT oder Profibus) zugreifen könnte.



*ROFL*

Gruß 

Question_mark


----------



## Jochen Kühner (15 Oktober 2009)

*beispiel...*



Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...



darum ging es auch nicht direktr, sondern ich wollte halt wissen wie man das programmieren muss!

und wenn ich bspw. nur eine kleine wincc lizens habe und dann die var über opc will bringt das schon was!


----------



## marlob (15 Oktober 2009)

Jochen Kühner schrieb:


> ...
> und wenn ich bspw. nur eine kleine wincc lizens habe und dann die var über opc will bringt das schon was!


WinCC ist es vollkommen egal, ob du die Variablen per S7-Driver oder per OPC zur Verfügung stellst. Powertag ist Powertag, egal von wo sie kommen.


----------



## RobiHerb (15 Oktober 2009)

*Wie entwickelt man einen OPC Server ???*

Kurz gesagt, nix für Anfänger. Erstmal sollte man eine Programmiersprache beherrschen in diesem Fall wohl am besten C++. Beherrschen heisst, dass man mehr kann, als die Syntaxfehler rausbügeln.

Dann muss man die COM /ActiveX Technologie von Microsoft erlernen, Smart Pointer, Marshaling, Interface Technik, MIDL all das muss sicher sitzen, sonst hat man 24 Stunden am Tag System Crash oder es tut sich einfach gar nix.

Und nicht vergessen, wenn der Server läuft, man braucht auch noch den Client, und wenn man beide nicht hat, dann wird es noch etwas komplizierter. 

Wenn man OPC konform sein will, baucht man auch einen OPC Browser, der die Symboltabellen der Anlage rauslesen kann und dann muss das auch der Server können und und und...

Wer da noch nicht abgeschreckt ist, darf mir eine PN senden und bekommt dann weitere Auskünfte.


----------



## Jochen Kühner (15 Oktober 2009)

*sicher???*



marlob schrieb:


> WinCC ist es vollkommen egal, ob du die Variablen per S7-Driver oder per OPC zur Verfügung stellst. Powertag ist Powertag, egal von wo sie kommen.




sicher??? wir haben mal für einen firma gearbeitet die haben den inat opc eingesetzt, damit sie nur die kleiste wincc server lizenzs brauchen. so habe ich es zumindest gesagt bekommen!


----------



## Jochen Kühner (15 Oktober 2009)

RobiHerb schrieb:


> Kurz gesagt, nix für Anfänger. Erstmal sollte man eine Programmiersprache beherrschen in diesem Fall wohl am besten C++. Beherrschen heisst, dass man mehr kann, als die Syntaxfehler rausbügeln.
> 
> Dann muss man die COM /ActiveX Technologie von Microsoft erlernen, Smart Pointer, Marshaling, Interface Technik, MIDL all das muss sicher sitzen, sonst hat man 24 Stunden am Tag System Crash oder es tut sich einfach gar nix.
> 
> ...



Das es so einfach ist habe ich ja auch nie gedacht! Denke das Ich schon etwas Erfahrung habe (hab mir schon mal in c++/cli einen wrapper für bestimmte tapi3 funktionen geschrieben welche ich mal gebraucht hatte, bin dann aber auf julmars wrapper gestoßen, deshalb liegt das projekt leider auf eis!)
Vieleicht kannst du mir mal nähere infos zukommen lassen...

Mfg.


----------



## afk (19 Oktober 2009)

Question_mark schrieb:


> Also bei allen meinen Rechnern habe ich Active X in der Konfiguration gesperrt, warum funktionieren meine OPC-Server trotzdem ???


Hallo QM, 

wo hast Du Active X denn gesperrt, im IE ? Das ist dem Rest von Windows dann relativ egal.

COM (aka ActiveX) kannst Du gar nicht deaktivieren, da Windows in großen Teilen davon abhängig ist, und DCOM (Distributed COM -> ActiveX im Netzwerk) kannst Du zwar in den Komponentendiensten deaktivieren, aber dann funktioniert OPC auch nur noch, wenn Server und Client auf dem gleichen Rechner laufen.


Gruß Axel


----------



## Dr. OPC (27 Oktober 2009)

Zur Entwicklung eines OPC Servers ist es immer ratsam ein Toolkit zu verwenden, hierbei sollte man darauf achten das dieses "zertifiziert" ist, also den Compliance Test der OPC Foundation bestanden hat.

Es ist nicht möglich (im Sinne von wirtschaftlich sinnvoll) als "nicht-OPC-Mitglied" einen OPC Server zu programmieren. Ein Toolkit für OPC DA liegt heute so um 1500 USD für die "Binär-Version". Ich kann mir nicht vorstellen das jemand in einer knappen Woche (je nach Stundensatz) einen qualitativ ähnlichen hochwertigen Code erzeugen kann wie er in einem Toolkit geboten wird.

Mit einem Toolkit ist OPC auch wieder was für "Anfänger" und wirklich nicht sonderlich kompliziert.


----------

