# OPC Server austauschen



## 67Matze (15 Mai 2008)

hallo an alle,

hier meine erste "anfrage" an dieses forum.
ich habe als opc und vba neuling einen opc client (access) programmiert.
dieser liest daten aus einer s7 aus. der opc server den ich benutzte ist von ibh softec. hierzu musste ich in access (vba) noch eine ibhdaauto.dll einbinden. das ganze funktionierte auch (irgendwann) einwandfrei.
jetzt möchte ich aus verschiedenen gründen den opc server von pi (process informatik) einsetzen.
bei diesem opc server war allerdings keine dll dabei. deshalb habe ich die von ibh und später auch die von siemens getestet. danach habe ich von pi noch die (orginal) daauto.dll bekommen.
doch bei allen 3 varianten bleibt folgendes problem: bei den realzahlen werden die kommastellen abgeschnitten und bei den stringvariablen stehen bei mir in access nur fragezeichen.

also wozu gibt es bei den opc servern verschiedene dll's. was steht da drin. warum reicht es nicht nur den namen des opc servers im client zu ändern. was hat das ganze dann noch mit standard zu tun.

ich würde mich freuen wenn mir jemand diese wahrscheinlich elementaren fragen beantworten kann und vor allem eine lösung für mein problem mit den real- und stringvariablen hat.

vielen dank schonmal


matthias


----------



## JesperMP (15 Mai 2008)

Wie immer mit OPC:
Wenn es Probleme mit ein OPC Client gibt, denn mit ein OPC Test Client probieren ob die Daten richtig vorhanden sind.
Siemens OPC Test Client heisst "OPC Scout".

Wenn es mit den Test Client klappt, den liegt das Problem in Deiner Access applikation.

Ich verstehe nicht wass Du mit die verschiedene .dlls willst.  
Einfach OPC Server installieren, und mit Bedieneranleitung konfigurieren.


----------



## 67Matze (15 Mai 2008)

<Hallo Jesper,

danke für deine antwort.
auf deine bemerkung "was willst du mit den verschiedenen dll's":
ich muss in vba einen verweis auf eine dll machen. warum es bei opc verschieden bzw. offensichtlich von den herstellern der opc server modifizierte dll's gibt, wüsste ich auch gerne. einfach nur opc server installieren reicht (zumindest bei mir) nicht.

mit dem testclient der von pi mitgeliefert wird, kann ich die real zahlen mit nachkommastellen sehen.

ich denke auch das es an vba liegt, obwohl es mit dem opc server von ibh funktioniert. vieleicht ist in der dll noch irgendeine art formatierungs-information enthalten, welche vba dann den wert entsprechend formatiert zu verfügung stellt. 

so sieht meine einbindung in vba in etwa aus:

-----------
'funktion verbindung aufbauen und variable definieren
Dim Item(7) As OPCItem
Dim Items As OPCItems
Dim Group As OPCGroup
Dim Groups As OPCGroups
Dim Server As OPCServer


'Start the server (if not already)
Dim MyServerName As String

MyServerName = "IBHsoftec.IBHOPC.DA"

Set Server = New OPCServer
Server.Connect MyServerName

'Add a group on the started OPC Server
Dim MyGroupName As String

'Now Add the Group, set an update rate and activate it
MyGroupName = "MyFirstGroup"
Set Groups = Server.OPCGroups
Set Group = Groups.Add(MyGroupName)
Group.UpdateRate = 5000
Group.IsActive = True
Set Items = Group.OPCItems
IsGroupAdded = True

'OPC Variablen definieren
Set Item(0) = Items.AddItem("Steuerung1.Generic.Dateiname", 1)
Set Item(1) = Items.AddItem("Steuerung1.Generic.Programmname", 1)
Set Item(2) = Items.AddItem("Steuerung1.Generic.PVersionD", 1)
Set Item(3) = Items.AddItem("Steuerung1.Generic.PVersionT", 1)
Set Item(4) = Items.AddItem("Steuerung1.Generic.Trigger", 1)
Set Item(5) = Items.AddItem("Steuerung1.Generic.Zaehler", 1)
Set Item(6) = Items.AddItem("Steuerung1.Generic.Mischmenge", 1)
---------------------

'Funktion Variable lesen:
Dim Quality(7) As Variant
Dim TimeStamp(7) As Variant
Dim Value(7) As Variant

Item(0).Read 1, Value(0), Quality(0), TimeStamp(0)
Item(1).Read 1, Value(1), Quality(1), TimeStamp(1)
Item(2).Read 1, Value(2), Quality(2), TimeStamp(2)
Item(3).Read 1, Value(3), Quality(3), TimeStamp(3)
Item(4).Read 1, Value(4), Quality(4), TimeStamp(4)
Item(5).Read 1, Value(5), Quality(5), TimeStamp(5)
Item(6).Read 1, Value(6), Quality(6), TimeStamp(6)
-----------------------

kann ich in vba noch etwas ändern um mein problem mit den realzahlen und den string variablen zu lösen? bool variable kommen übrigens richtig an.

Vielen Dank

Matthias


----------



## JesperMP (15 Mai 2008)

In deiner VBA code gibt es kein verweiss auf dll.

Aber Du hast
MyServerName = "IBHsoftec.IBHOPC.DA"

Für Simatic Net glaube ich dass es muss heissen
MyServerName = "OPC.SimaticNet"


----------



## 67Matze (15 Mai 2008)

hallo Jesper,

ich möchte gar nicht den opc server von siemens verwenden. in diesem beispiel habe ich den opc server von ibh verwendet, der ja auch einwandfrei funktioniert. mein problem ist jetzt der opc server von pi. da habe ich den code halt dahingehend geändert, daß ich den namen des pi opc - servers angegeben habe und den verweis auf die opcdaauto.dll gemacht habe.
auf die dll brauche ich im vba code auch nicht zu verweisen. da gibt es bei access bzw. dem dazugehörigen vba editor einen menüpunkt unter extras/verweise wo ich die dll angeben kann.

ich hoffe ich drücke mich einigermaßen verständlich aus.

Matthias


----------



## Larry Laffer (15 Mai 2008)

JesperMP schrieb:


> In deiner VBA code gibt es kein verweiss auf dll.



Ich denke, was Jesper hier meint ist :
Du musst doch irgendwo den Bezug zum Inhalt der DLL herstellen - welche Prozeduren mit welchen Übergabe-Parametern - ggf. interne Variablen - etc.

Gruß
LL


----------



## Ruud (15 Mai 2008)

Hallo,

In acess sind glaube ich die "Real" van Step 7 gleich an typ "single".


----------



## JesperMP (15 Mai 2008)

67Matze schrieb:


> ich möchte gar nicht den opc server von siemens verwenden. in diesem beispiel habe ich den opc server von ibh verwendet, der ja auch einwandfrei funktioniert.


Es war nur ein Beispiel zu zeigen, wie den Umstieg auf einen anderen OPC-Server aussieht. Ich glaube das nur MyServerName muss aktualisiert werden.



67Matze schrieb:


> mein problem ist jetzt der opc server von pi. da habe ich den code halt dahingehend geändert, daß ich den namen des pi opc - servers angegeben habe und den verweis auf die opcdaauto.dll gemacht habe.
> auf die dll brauche ich im vba code auch nicht zu verweisen. da gibt es bei access bzw. dem dazugehörigen vba editor einen menüpunkt unter extras/verweise wo ich die dll angeben kann.


Wie dies ?:
https://a248.e.akamai.net/cache.aut...0_PC_Access_graphische_Anzeige_Excel_02_e.gif
Ich glaube was du meinst ist ein erweiterung womit Excel als OPC Client wird. Diese Komponenten glaube ich sind in Prinzip gleich.
Also die OPC Client Komponenten von Siemens kann mit ein OPC Server von IBH funktionieren, und die Komponenten von PI kann mit ein OPC Server von Siemens funktionieren usw.


----------



## 67Matze (16 Mai 2008)

ich habe mal das menue als bild angehängt in dem ich den verweis auf die dll mache. wenn der verweis fehlt bekomme ich beim kompilieren den fehler: benutzerdefinierter typ nicht definiert.
dies bezieht sich auf die codezeile: Dim Item(7) As *OPCItem*.

ich habe den verdacht das der ibh opc server alle s7 formate intern in zb. text umwandelt. wenn ich in access dann die variablen als variant declariere bekomme ich dann automatisch das richtige format.

der pi opc server macht das anscheinend nicht. gibt es vieleicht in access eine möglichkeit dies auszugleichen?

Matthias


----------



## Gerhard Bäurle (16 Mai 2008)

67Matze schrieb:


> .. den opc server von pi ...



Der OPCmanager? Vielleicht findest Du *hier* weitere Infos.


----------

