Variablenwert über OPC Server abfragen

OPC_Einsteiger

Level-1
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag zusammen,

ich bin absoluter Beginner in Sachen WinCC und habe zum Datenaustausch via OPC einige Fragen. Vielleicht erst mal, was ich bisher geschafft habe:
  • zuerst habe ich den OPC Kanal am WinCC OPC Client projektiert (das mag jetzt fachmännisch klingen, ist aber über die Hilfefunktion geschehen...)
  • dann habe ich über den OPC Item Manager eine Variable auf dem WinCC Server ausgewählt, auf die ein Client zugreifen soll (Präfix, Suffix verteilt, keine Filter ausgewählt)
So und jetzt fangen die Probleme an. Ziel ist es, diese Variable über Matlab aufzurufen. Wenn ich den "OPCServer.WinCC" in Matlab aufrufe, kommt die Meldung success. So weit so gut. Leider kann ich den Wert der Variablen nicht auslesen. Wenn ich über Variablenhaushalt gehe, dann zeigt er mir beim Fahren mit der Maus über die Variable an: kein Prozesswert vefügbar. Woran liegt das??? Was bedeutet in diesem Zusammenhang die Abkürzung AG? In der Hilfe-Funktion steht unter dem Punkt "Ich möchte WinCC als Server benutzen, aber es wird keine Verbindung aufgebaut" etwas von Registrierungseditor. Wo finde ich den denn schon wieder??? Den OPC Scout kann ich aufrufen. Ist das nicht so ne Art Übungsmöglichkeit? Jedenfalls wenn ich da den WinCC Server doppelklicke, dann kommt ne Meldung, ich soll ne ne Gruppe anlegen. Was ist ne Gruppe (Zusammenfassen von Variablen zur besseren Übersichtlichkeit??) und was passiert danach? Trau mich nicht... Kann mir bitte jemand helfen, wie ich weitermachen kann?

Vielen Dank!

P.S. Liege ich mit der Einschätzung richtig, dass WinCC (sorry, dass ich es nicht genauer benennen kann, ich habe weder irgendwas installiert noch kenne ich die Vorgeschichte) als OPC Server eingesetzt wird (stand in der Hilfe,dass der OPC Server bei der Installation von WinCC automatisch dabei ist), das Prozessleitsystem (Step7 ???) Werte auf den Server schreibt (also als Client wirkt) und man auch von dem Server Daten lesen kann? Wenn ja, wie kann ich testen, ob die Messwerte des Prozessleitsystems wirklich am OPC Server ankommen?
 
Zuletzt bearbeitet:
WinCC OPC

Hi,
bin auch kein Spezialist, aber:
-Der OPC Server bei WinCC wird mitinstalliert, man kann den verwenden, um über ein OPC Client Variablen zu lesen/schreiben.
-die in WinCC projektierte Variablen sind ansprechbar über Name
-In dem Client sollte man verbinden, dann eine Gruppe definieren, dann Variablen definieren, und dann kann man diese lesen/schreiben.
-OPC Scout ist ein Test Client, mit dem kann man auf ein OPC Server
verbinden, Variablen deklarieren und lesen/schreiben.

So im Groben.

Gruss: Vladi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Huhu,


hatte heute mit den Jungs von Deltalogic telefoniert. Weiss jetzt leider nich mit wem, war grad eigentlich am Essen :)

Die haben eine Datenlogger der die Variablen als CSV ablegt.
Mir denen könnte man gleich weiter arbeiten.
 
Hallo zusammen,

danke für die Antworten, obwohl ich mit der zweiten jetzt nicht so viel anfangen konnte...
Wie kann man herausbekommen, ob die Daten, die das Prozessleitsystem zur Verfügung stellt, auch wirklich auf dem OPC Server ankommen? Ist das automatisch der Fall oder muss man das dem Server erst "beibringen", welche Daten er empfangen soll?

Vielen Dank
 
Opc

Hi,

"beibringen" bedeutet so gut wie Variablen(Items) eintragen und abfragen/schreiben. Mit OPC Scout testen.

Gruss: V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schon mal vielen Dank, Vladi. Ich kann es im Moment nicht testen, werde dies aber sobald wie es geht ausprobieren. Vielleicht brauche ich dann noch weitere Hilfe, oder (hoffentlich) nicht. Vielen Dank schon mal bis hierher!
 
Hallo zusammen,

folgende Fragen habe ich noch: zum einen habe ich es geschafft, im OPC Scout eine Gruppe anzulegen und dann eine Variable (Messwert) zu wählen, die sich auch schön dann in Realtime ändert. Wenn ich alles richtig verstanden habe, ist der Scout nur ein Testprogramm... Leider funktioniert es im wahren OPC Server nicht. Was muss ich denn da machen, damit ich dann einen Wert angezeigt bekomme??? Bisher habe ich über den OPC item manager diese Variable (dieselbe wie beim Scout) ausgewählt und sie wurde hinzugefügt. Leider bekommt sie aber keine Werte.
Was mache ich falsch??? Vielen Dank für Antworten!!
 
Opc

Hi,
der OPC Scout ist nicht "nur ein Testprogramm", das ist ein OPC Client.
Bei einem anderen OPC Client funktioniert auch so: Gruppe definieren, Item hinzufügen, Item abfragen. Was hast du den als OPC Client? Lass mal den OPC Server in Ruhe, der läuft und funktioniert, siehe OPC Scout.
Ja, die Sache mit dem Client ist ein wenig verzwickt.

Gruss: Vladi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, danke für die schnelle Antwort!

Leider bin ich kein Experte, daher kann ich Dir die Frage nach dem Client nur umschreibend beantworten. Also: Es gibt eine Anlage,deren Prozessdaten auf WinCC landen (so habe ich es kapiert). Das wäre also mein Server. Richtig? So und nun soll Matlab einige dieser Prozessdaten auslesen. Wäre also quasi der Client, oder? Reicht das jetzt schon, wenn ich dem OPC Scout gesagt habe, welche Variable er beobachten soll? Vielen Dank!
 
Achso: ne aber in Matlab kann ich ja gar keine Gruppen anlegen, Variablen auswählen und so weiter... Kann WinCC neben der Funktion als Server auch als Client wirken???
 
OPC/Matlab

Hi,
das Problem ist, ich habe 0 Ahnung vom Matlab. Aber: Egal welche
Anwendung, dort sollte es die Möglichkeit geben, den WinCC OPC
Server zu initialisieren(Objekt), zu verbinden, dann über seine Methoden
und Eigenschaften Gruppe anlegen, Item hinzufügen, Item lesen
oder schreiben. Das wäre selbst gemachter Client.
Oder man bindet ein fremder Client(ActiveX z.B., OCX) ein, der dann den
Server abfragen kann. So funktioniert das.

Gruss: Vladi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also: die Matlabversion hat keine OPC Toolbox, weil die zu teuer ist. Alternativ kann man eine Software aufspielen, so dass man aus Matlab aus OPC Server aufrufen kann. Wenn ich in Matlab die Zeile

hr = mxOPC('open','OPCServer.WinCc','localhost')

eintippe, bekomme ich die Nachricht, "connecting to server OPCServer.WinCc success". Das klingt doch schon mal gut. Jetzt muss ich dem Server doch sagen, auf welche Daten ich zugreifen möchte, denn der Client (Matlab) hat nicht die Möglichkeit, Gruppen und Variablen zu definieren.

Naja, falls dem so sein sollte: ich habe über den OPC item manager die Variablen rausgepickt, die er doch bitte zur Verfügung stellen soll. Diese lassen sich aber dummerweise nicht aktualisieren bzw. zeigen überhaupt einen Wert an. Im Scout werden sie hingegen aktualisiert. Leider habe ich die klare Abgrenzung zwischen Server und Client nicht drauf, aber in meinem Fall ist doch WinCC der OPC Server und Matlab der Client oder? Und wie kann ich die oben beschriebenen Probleme des nicht-Anzeigens von Daten nach Zuweisung übder den Item Manager lösen? Die Fehlerquelle, dass das Prozessleitsystem (da wo die Messdaten erzeugt werden) gar nicht über OPC kommuniziert, kann ich doch ausschließen, weil es mit dem Scout klappt. Liege ich wenigstens in dieser Annahme richtig??? Oh mann! Vielen Dank!
 
Matlab

Hi,
was ist das "mxOPC('open','OPCServer.WinCc','localhost')"?
Das ist eben der Client.
Ich denke dieses Objekt hat auch andere Komponenten ausser "open".
Z.B. "AddGroup", "AddItem", "ReadItem" oder sowas? Gibt es Doku dafür?

Gruss: Vladi

P.S. Und nicht verzweifeln..es gibt noch Schlimmeres. ;-)
 
Hallo Vladi, ich muss noch was hinzufügen:

man kann in Matlab abfragen, welche Daten auf dem Server zur Verfügung stehen. Es gibt da einen ähnlichen Befehl, der das erzeugt, was man bei DOS mit dem Befehl DIR schafft. Da gibt er bei mir nix aus, d.h. es sind keine Variablen auf dem Server. Das würde sich ja mit der Beobachtung decken, dass die über den OPC item Manager angewählten Variablen, die nicht aktualisiert werden, wenn sich die Messgröße ändert bzw. gar keinen Wert aufweisen, falsch sind. Bzw. das da der Wurm drin ist. Naja, hoffe der Zusatz macht das Problem klarer... Danke!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, da hat sich das ja ein wenig überschnitten :). Ja, solche Befehle gibt es, besonders die read und write scheinen mir wichtig. Und dennoch: nach Eintippen so einen sch... Readdouble kommt nix! Bzw. die Fehlermeldung: read conversation failed: server type = 0x0, requested type = 0x5 unable to read item (error = 0x080020005-Typkonflikt). Und das in roter Schrift....
 
Variablen

Hi,
es gibt ja auch keine Variablen, wenn kein Client welche eingetragen hat!
Das musst du dir überlegen und suchen. So etwas muss es geben in dem
Client.Test-z.B.:
-wenn du mit OPC Scout eine Variable definierst, zum lesen, und lässt das Ganze laufen(die aktualisiert sich..)
-müsste diese in deinem Programm auch erscheinen, weil dann wurde sie schon eingetragen, nämmlich vom OPC Scout. Probieren!

Gruss: V.
 
Opc

Hi,
ja, da hat sich was überschnitten. Ja, ja, solche Befehle MUSS es geben, aber nicht nur READ und WRITE, sondern auch irgendwie für Gruppe anlegen und Items hinzufügen. Erst dann kannste was Lesen. Wie gesagt,
falls der OPC Scout etwas eingetragen hat und liest, müsstest du in dem
Moment auch lesen können.

Gruss: V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Vladi,

sorry, ich habe Deine Antwort mehrmals gelesen und nicht ganz kapiert.
Meinst Du, dass die Variable, die beim OPC Scout aktualisiert wird, auch von einem anderen Client (ohne dies nochmal zu 'projektieren' zu müssen?) abgefragt werden kann, weil der WinCC Server sie zur Verfügung stellt? Das hieße also, ich müsste diese Variable mit einem read Befehl ansprechen können und sie würde angezeigt... Oder was meinst Du mit "wenn kein Client welche eingetragen hat"? Ist eintragen=read Befehl ausüben?
Ich weiß die Fragen sind bestimmt total dämlich, aber was will man machen???

Danke!
 
Oh, schon wieder Überschneidung! Jetzt hab ich es glaube ich kapiert... Danke vielmals! Leider bin ich gerade aus dem Programm geworfen worden, so dass ich Seine Tipps erst morgen ausprobieren kann, aber ich werde berichten!! Schönen Abend noch!!
 
Guten Tag zusammen, hallo Vladi,

leider habe ich die bisherigen Tipps nicht mit Erfolg umsetzen können. Ich möchte vielleicht nochmal schreiben, wo ich im Moment stehe:

als ersters habe ich einen OPC Kanal eingefügt. Seitdem ist unter Variablenhaushalt ein OPC Symbol.
Danach habe ich versucht, über den Item Manager Variablen zu bestimmen, auf die nacher ein Client zugreifen soll. Diese werden aber nicht aktualisiert. Danach habe ich mit Hilfe des OPC Scouts auch ne Variable ausgesucht; diese wird aktualisiert! (aktualisiert== den Messwert aus dem Prozessleitsystem übernehmen).

Wie schaffe ich es nun, dass auch der OPC Server mir, nachdem ich eine Variable benannt habe, diese aktualisiert??? Im beigefügten sreenshot (sorry für die Qualität) sieht man im Hintergrund, welche Variablen (bzw. eine Gruppe) ich ausgewählt habe und dass dort ein Kasten ist mit der Meldung "Prozesswert 0; keine Verbindung zum AG" (kam als ich mit der Maus drüberfuht und den Zeiger auf der Variablen hielt). Im Vordergrund sieht man den OPC Scout und bei der Momentaufnahme auch den aktuellen Wert der Variablen. Was kann ich also machen, damit der Wert auch auf dem Server aktualisiert wird (weiß nicht, ob ich mich richtig ausgedrückt habe, aber ich meine halt auf dem Bild im Hintergrund). Vielen, vielen Dank!
 

Anhänge

  • screenshot.pdf
    30,1 KB · Aufrufe: 25
Zurück
Oben