# libnodave vs. opc



## Wolfgang (5 September 2007)

Hallo Zusammen,
ich bin ein Neuling in dem Thema SPS. Meine Aufgabe ist es verschiedene Zustände (Eingänge) einer S7 400 abzufragen und sie zu verarbeiten. Dabei brauche ich ständig die Daten von der SPS. Derzeit frage ich über einen Timer (.Net) alle 100ms die SPS ab. Das funktioniert auch soweit. Nun meine Frage: Wird durch das ständige poolen nicht die SPS außergewöhnlich belastet. Die Verbindung zur SPS geht über Ethernet.

Wenn ja: Wie macht das ein OPC-Server. Poolt der auch ständig. Oder wie muß ich mir das vorstellen.

Laufe ich Gefahr die SPS durch meine vorgehensweise unnötig belaste. Zieht das ein Schaden für den Steuerugslauf nach sich?

Gruß
Wolfgang


----------



## Question_mark (5 September 2007)

*Watt is nu besser ???*

Hallo,



			
				Michael schrieb:
			
		

> Poolt der auch ständig.



Nein, der poolt nicht ständig, der pollt nur ständig, aber das ordentlich...
Der OPC-Server holt sich die Daten aus der SPS in dem vom Anwender konfigurierten Aktualisierungszyklus in seinen internen Cache-Speicher. Also bleibt eine gewisse Last auf dem Netzwerk, ist aber im Grunde zu vernachlässigen.
Der Vorteil des OPC-Servers liegt in dem Auslösen von Events durch den OPC-Server bei Änderungen der Daten. Mein OPC-Client (und damit auch meine Applikation) braucht also nur bei Wertänderungen in der SPS zu reagieren. 



			
				Michael schrieb:
			
		

> Laufe ich Gefahr die SPS durch meine vorgehensweise unnötig belaste.



Die Auslastung der S7 CPU für Kommunikationsaufgaben ist sowieso per Standard (aber durch den Anwender einstellbar) auf 20% begrenzt. Also eher nein ...
Aber grundsätzlich ist die Eventgesteuerte Verarbeitung beim OPC-Server wohl der etwas elegantere Weg aus der eigenen Applikation im Datengrab herumzupopeln  

Gruß von 

Question_mark


----------



## afk (6 September 2007)

QM hat dazu eigentlich schon fast alles Wichtige gesagt, aber Eines möchte ich doch noch hinzufügen:

OPC und libnodave sind kein Widerspruch oder konkurrierenden Technologien, sondern lassen sich im Gegenteil sogar hervorragend miteinander verbinden.

OPC ist im Grunde eine Standartdefinition der Schnittstellen zum Zugriff aus einem Anwenderprogramm auf einen Kommunikationstreiber zum Datenaustausch mit einer SPS oder einem anderen Gerät, libnodave ist hingegen eine Funktionsbibliothek für das S7-Protokoll, mit deren Hilfe man die S7-Kommunikation in einem eigenen Treiber implementieren kann. 

Kombiniert man beides miteinander (unter reichlicher Hinzufügung von eigenem Programmcode ), dann kommt dabei ein OPC-Server für das S7-Protokoll raus.


Gruß Axel


----------



## Wolfgang (6 September 2007)

*libnodave*

Danke euch Beiden.

Ja das heißt ja dann ich könnte mir einen eigenen OPC-Server bauen. Aber nochmals zum Kern meiner Frage. Ich dachte eigentlich, dass der OPC-Server von der SPS über angemeldete Zustände benachrichtigt wird (so ein SPS Eventsystem gibt es wohl aber nicht). 
Dies scheint wohl nicht so zu sein. Um Zustansänderungen in der SPS mitzubekommen muss auch der OPC- Server ständig die SPS in einem bestimmten Zyklus abfragen. Wie dann der OPC Server das zum Client bringt ist wieder ein anderes Thema.

Ich glaub dann bin ich schon auf dem richtigen Weg wenn ich die libnodave einsetze. Hat die Libary was mit der Prodave cin Siemens was zu tun?

Gruß
Wolfgang


----------



## Ralle (6 September 2007)

Wolfgang schrieb:


> Danke euch Beiden.
> 
> Ja das heißt ja dann ich könnte mir einen eigenen OPC-Server bauen. Aber nochmals zum Kern meiner Frage. Ich dachte eigentlich, dass der OPC-Server von der SPS über angemeldete Zustände benachrichtigt wird (so ein SPS Eventsystem gibt es wohl aber nicht).
> Dies scheint wohl nicht so zu sein. Um Zustansänderungen in der SPS mitzubekommen muss auch der OPC- Server ständig die SPS in einem bestimmten Zyklus abfragen. Wie dann der OPC Server das zum Client bringt ist wieder ein anderes Thema.
> ...



So ist das, leider gibts keine Benachrichtigung von der SPS.
Libnodave hat nichts mit Prodave zu tun, erfüllt aber genau die selbe Funktion, will sagen, libnodave ist frei von irgendwelchen Siemens-Rechten und kostenlos.


----------



## Question_mark (6 September 2007)

*Doch Ralle, das gibt es doch alles*

Hallo,



			
				Ralle schrieb:
			
		

> So ist das, leider gibts keine Benachrichtigung von der SPS.


So ist das leider nicht ganz richtig. Natürlich gibt es auch Benachrichtigungen von der S7 SPS (zumindest bei der S7-4xx kenne ich das). 
Wir haben hier im Forum immer über OPC-Server gesprochen und dabei stillschweigend und übereinstimmend den OPC DA Server (DA = Data access) gemeint. Es gibt aber auch den OPC AE Server (AE = Alarm & event), der Meldungen der S7 CPU empfängt und diese dann dem geeigneten OPC-Client um die Ohren haut.
Folgende Events sind hierbei möglich :

S7_PROCESS_SCAN    (Projektierung in der Symbolikliste)
S7_PROCESS_ALARM  (Projektierung in STEP7_Programm)

Den Events können dabei bis zu 10 zusätzliche Prozesswerte mitgegeben werden. 

Diese Funktionen sind sowohl über einen OPC AE Server als auch über die S7-SAPI Schnittstelle möglich. Es gibt auch noch einen OPC HDA Server (HDA = Historical data access), aber der ist nur relevant für WinCC (z.B. Meldesystem, Datenbank etc.). Bei der S7 CPU gibt es kein HDA, deshalb vergessen wir das mal wieder....

Also Leutz, es geht doch    

Gruß

Question_mark


----------



## Question_mark (7 September 2007)

*Alternative : AGLink von Deltalogic*

Hallo,



			
				Wolfgang schrieb:
			
		

> Um Zustansänderungen in der SPS mitzubekommen muss auch der OPC- Server ständig die SPS in einem bestimmten Zyklus abfragen



Ja, das macht der OPC DA Server ständig. Aber diese Geschichte spielt sich unabhängig von Deiner Applikation ab und kostet den heutigen Prozessoren auf dem PC nur ein müdes Arschrunzeln für einige tausend Variablen. Die S7 CPU wird nur unwesentlich durch die Kommunikation belastet. Aber Deine Applikation kann sich schlafen legen, solange sich keine Variablen in der SPS ändern ...
Und zum Thema OPC AE Server zurück, da wird natürlich die S7 CPU belastet, die alle projektierten "SCAN" und "ALARM" Variablen überwacht und dementsprechend reagieren muss. Entlastet im Gegensatz zum OPC DA Server das Netzwerk. Also DA belastet das Netzwerk mit Traffic, AE belastet die CPU mit weiteren Aufgaben. Macht aber auch nix, oder was glaubst Du, warum PCS7 trotzdem funktioniert  
Such Dir halt die zu Deiner Aufgabe passende Vorgehensweise aus..

Alternativ kann ich auch noch AGLink von Deltalogic b.z.w. deren OPC-Server bestens empfehlen, AGLink läuft in meinen Projekten im 24/7 Betrieb seit langem ohne Probleme, ich bin zufrieden und meine Kunden auch  

Gruß

Question_mark


----------

