# OPC Client mit Excel



## C_Roth (6 Dezember 2008)

Hallo,
ich möchte einen OPC-Client in Excel (mit VB) schreiben, der auf meinen OPC Server (INAT OPC Server TCPIPH1) zugreifen kann. Beide (Server/Client) befinden sich aktuell noch auf dem gleichen PC. Als S-300 CPU verwende ich die CPU 315-2 PN/DP.

Der Server + Testclient funktioniert fehlerfrei.
Als .dll verwende ich die OPCDAAuto.dll
Außerdem habe ich schon einmal angefangen, anhand des SIEMENS Handbuchs "SIMATIC NET, Schritt für Schritt: Excel OPC Automation Client zum Zugriff auf S7-200 mit CP232-1" das Programm zu schreiben (dort ist der komplette Quellcode für Excel/VB hinterlegt. Dort wird aber eine andere .dll verwendet (SOPCDAAuto.dll) und natürlich ein anderer OPC Server.
Ich bin "Schritt für Schritt" durchgegangen (hab meine .dll eingebunden) aber ich bekomme jedesmal, wenn ich mich mit dem OPC Server verbinden will die Fehlermeldung: "Error Connect: Ungültiger Prozeduraufruf oder ungültiges Arguement".

Wenn mir jemand helfen könnte, wäre ich sehr dankbar. Ist für meine Abschlussarbeit und mein prof kann mir auch nicht weiterhelfen.

Anbei noch das excle-file und die verwendete .dll

Vielen Dank


----------



## pk0 (26 August 2010)

Ich habe genau das gleiche Problem, entweder ist die Siemens dll notwendig oder ich mache irgendetwas falsch. Könnte jemand bitte einen Tip geben, auch wenn das Thema schon alt ist, ist das Problem für mich dennoch aktuell.


----------



## BPlagens (27 August 2010)

Hast du das Excel-File von oben verwendet?

Wenn ja kann das nicht gehen - bei Inat muss der Server "tcpiph1" heißen.

Zeige doch mal was du hast.


----------



## Dr. OPC (27 August 2010)

Zu den DLLs gibt es schon einen Thread, hier nochmal in Kürze:
1) OPCDAAuto.dll (in \system32\) kommt von der OPC Foundation und wird vom normalerweise vom Server mit installiert
2) SOPCDAAuto.dll kommt von Siemens (daher das "S") und ist bereits gebugfixed, da in (den alten Versionen) der OPC Foundation einige Fehler drin waren.

Im Prinzip egal was man nimmt entweder die von Siemens oder eine (neue) von der OPC Foundation.

Das Beispiel ist doch super, kommt mir irgendwie bekannt vor.
In der Zelle 4B muss die ProgID des OPC Server stehen. Diese beinhaltet typischerweise keine Leerzeichen sondern "Punkte". z.B. "OPC.SimaticNET" oder "OPC.Fix.1" oder wie auch immer der Server wirklich heisst.
Das findest du am besten heraus wenn du einen standard OPC Client (Siemens-OPCScout, Kepware-Quickclient, Matrikon-Explorer, ...) nimmst, die meisten zeigen das an.

Folgende Funktion liefert dir alle OPC Server die auf der Maschine "Computer Name" registriert sind:

```
Dim MyOPCServerlist() as String
MyOPCServerlist = MyOPCServer.GetOPCServers(Cells(5, 2))
```
Der Name bei "OPC Server Name" Zelle4B ist offensichtlich falsch, daher liefert der Funktionsaufruf (Connect) auch "Invalid Argument" zurück.


----------



## pk0 (30 August 2010)

Ich verwende nicht den INAT Server sondern Beckhoff bzw. Matrikon. Ich habe Zugriff über ein Clientprogramm, aber den Excel Client kriege ich nicht zum laufen. Alles ist vorerst lokal und wurde nur zum Testen und Konfigurieren installiert.

Ich habe diesen Client sowie weitere 2 Versionen getestet, leider ohne Erfolg. Die Namen der OPC Server passen auf jeden Fall, da sie identisch mit denen aus dem Client sind und dort funktioniert es. Wo ich mir noch unsicher bin ist die Angabe des Rechners auf dem der Server läuft. Jedoch habe ich schon alle erdenklichen Kombinationen ausprobiert. 
\\"ip-adresse"    (127.0.0.1)
\\"Rechnername"
\\localhost
"ip-adresse"
"Rechnername"
localhost

Ich habe zwei Clients als Anhang eingefügt. Wobei der eine (gelber Hintergrund; Profinet) mir eine Fehlermeldung bezogen auf Connect ausspuckt. Jedoch kann ich den genauen Fehler nicht lokalisieren.

Der Andere, der denk ich von diesem Thema ist, funktioniert jetzt irgendwie gar nicht mehr, dass heisst er macht gar nichts wenn ich mich verbinden will.

Die Einstellung die ich gewählt habe sind leider nicht darin gespeichert. Wäre aber nett wenn jmd. zumindest testen könnte ob der erst genannte funktioniertt bzw. was man tun muss damit er es tut.

Vielen Dank

@Dr. OPC das mit dem connect hab ich anscheinend überlesen und werds bei Gelegenheit nochmal testen ob der Fehler daher kommt.


----------



## Dr. OPC (30 August 2010)

Also zum Rechnernamen, dieser Parameter ist "optional" zu erkennen an den "[" "]" eckigen Klammern. Er kann also weggelassen werden, dann ist es lokal.
Ansonsten braucht es keine "\\" Notation sondern einfach die IP Adresse oder den Namen. Selbstverständlich muss auf die Zellenformatierung geachtet werden, die Funktion hätte gerne einen String. Beim Eingeben einer IP glaubt Excel manchmal dass es eine Zahl sein soll mit mehreren Dezimalpunkten.

Das zweite Beispiel (OPCClient.xls) enthält keine anständige Fehlerabfangroutine (es kann also nicht von hier sein ). Da wird die Analyse schwierig, das ist bei dem INAT Beispiel viel schöner gemacht. Wenn viele Fehler kommen kann man natürlich die Fehler ignorieren und nicht auswerten, dann kommt auch keine nervige Box mehr, aber funktionieren tut es halt auch nicht. Mein Tip: Fehler auswerten und entsprechend reagieren! Bei dir vermute ich das die Variablen (OPCItems) so nicht existieren bzw. anders heissen, nur merken tust du das nicht, weil du dir von der AddItems Methode nicht die Errors anschaust.

Ansonsten könnte man ja auch mal reindebuggen und sich die Paramerter in Ruhe anschauen.

Auch sehr hilfreich aber von den "probieren geht über programmieren"-Entwicklern selten genutzt: der "Objektkatalog"! Ähnlich wie eine Schnittstellendoku gibt sie einem doch viele Hinweise, vorallem darüber welchen Typ die Parameter haben und was hinten raus kommt.


----------



## BPlagens (30 August 2010)

Hallo, habe mal dein Matrikon File kurz angesehen.

Das kann so nicht gehen - du musst unbedingt 4 Tags-anlegen sonst geht das nicht.
Ebenso brauchst du eine Gruppe.

In der Routine cmdConnect werden 4 Items angelegt
(MyNumItems = 4)
Da du keine Items in B10-B13 angibst kommt der Fehler!

Ich habe dir mal dein Excel-File so geändert das 4 Items vom Simulator angelegt werden.

Evlt. kommst du ja so weiter! Welchen Server willst du denn später wirklich nehmen?


----------

