OPC-Server-Browser ActiveX-Steuerelement: IBG_OpcServerBrowser_S1 Entwickelt von: Gerald Giese, Mühlentor 17 B, 14793 Ziesar (Germany) Tel.(033830) 12942, Fax (033830) 12943 e-mail: g.giese@giese-elektro.de geraldgiese@freenet.de (privat) Homepage: www.giese-elektro.de 1. Einführung Die OPC-Technologie ( (Object Linking and Embedding) for Process Control) ist eine einheitliche Software-Schnittstelle für die Automatisierungstechnik. OPC wird eingesetzt, um Fremdsoftware an die Hard- oder Software der Automatisierungsgerätehersteller anbinden zu können. Die Hersteller stellen für ihre Produkte sogenannte OPC-Server (Software) zur Verfügung. Die Fremdsoftware erhält über diesen OPC-Server den Zugriff auf das Herstellerprodukt (Automatisierungssystem, HMI-Software). Bei der Entwicklung von Client-Software (Fremdsoftware die auf OPC-Server zugreift) muß immer ein Konfigurationsmittel geschaffen werden, mit dem festgelegt wird, auf welchen OPC-Server zugegriffen werden soll. Die OPC-Foundation stellt die Software OPCServerList (opcenum.exe) zur Verfügung, die das Browsen nach installierten OPC-Servern ermöglicht. Dem späteren Anwender können dadurch alle installierten OPC-Server angezeigt werden und dieser kann den gewünschten dementsprechend auswählen, die fehlerträchtige Eingabe der ProgID oder ClsID entfällt. Die Programmierung der Browserfunktion ist aber kompliziert und aufwendig und erfordert gute Kenntnisse in der Programmierung (besonders COM/DCOM). Das ActiveX-Steuerelement IBG_OpcServerBrowser_S1 ist eine universell einsetzbare Softwarekomponente, die das OPC- Browsen durchführt und die OPC-Server in einer Listen- oder Baumstruktur-Ansicht dem Anwender zur Auswahl stellt (siehe Bild 1.1). Die verwendete ActiveX-Technologie ermöglicht Bild 1.1: Beispielansicht den Einsatz dieser Komponente in Programmiersprachen wie z.b. C++, Basic, Delphi, Java. Diese Komponente kann somit problemlos in andere Softwareentwicklungen eingebunden werden. 2. Programmbeschreibung: Das Programm sucht nach OPC-Servern, die lokal auf dem PC oder auf PC's im Netzwerk installiert sind. Diese werden in einer konfigurierbaren Baum- oder Listenstruktur dargestellt und können dann vom Anwender selektiert werden. Durch bestimmte ActiveX-Ereignisse wird die Auswahl dem Container mitgeteilt. Dieser kann durch die mitgeteilte ProgID bzw. ClsID den entsprechenden OPC-Server starten und weiter verfahren. - 1 -
3. Vorraussetzung: Für die Suche wird die OPC-Komponente OPCServerList verwendet. Diese wird meist bei der Installation eines OPC-Servers mitinstalliert und befindet sich im Windows- Systemverzeichnis. (opcenum.exe und Proxy/Stub-DLL) Die Netzwerksuche über DCOM erfordert ein TCP/IP-Netzwerk. Soll die Suche Remote auf einem Win9x-PC erfolgen, so müssen auf dem Remote-PC rpcss.exe und opcenum.exe manuell gestartet werden. Bei WinNT-PC's muß die Zugriffsberechtigung richtig festgelegt sein (z.b. mit dcomcnfg.exe). Das Programm ist für Windows 95/98/NT geeignet. 4. Konfiguration: Über die Eigenschaftsseiten kann die Auflistungsansicht konfiguriert werden. Ebenfalls kann festgelegt werden, nach welchen Spezifikationen gesucht werden soll. Möglich sind: Data Access 1.0 und 2.0, Alarms & Events 1.0, Historical Data Access 1.0, Batch 1.0. Soll auf mehreren Remote-PC's gesucht werden, dann müssen die PC-Namen mit einem Semikolon getrennt werden. z.b: "PC103;PC201;PC202" Suchort, bei Remote den PC-Namen angeben Festlegung nach welchen Spezifikationen gesucht werden soll. siehe 7.12, 7.13 siehe 7.10 siehe 7.11 Bild 4.1: Eigenschaftendialog Suche Rand-Stil des ActiveX. Bild 4.2: Eigenschaftendialog Format Suche startet sofort wenn das ActiveX gestartet wird. 5. ActiveX-Ereignisse: 1) SelChanged(long ServerIndex) Ausgewahl wurde geändert. Parameter: ServerIndex Index des selektierten Eintrags. Wertebereich: 0 bis (Anzahl gefundener Server - 1) 2) SearchCompleted(long Error) Suche beendet. Parameter: Error Bei der Suche aufgetretene Fehler. Werte: 0 (derzeit keine weitere Auswertung) - 2 -
6. ActiveX-Methoden: 1) long RefreshServerList() Führt eine (erneute) Suche laut vorgegebenen Suchkriterien durch. Rückgabe: 0 : Suche wird durchgeführt 1 : Fehler 2 : Suche läuft bereits (kein erneuter Start) 2) long GetSelectedServerIndex() Rückgabe des selektierten Eintrags. Rückgabe: 0 bis (Anzahl gefundener Server - 1) : Index des Servers -1 : Fehler oder kein Server selektiert (z.b. nur Topic) 2) BSTR GetProgIDFromIndex(long ServerIndex) Rückgabe der ProgID eines Servers. Rückgabe: ProgID des Servers, wenn unzulässiger ServerIndex dann Leerstring ("") 3) BSTR GetCLSIDFromIndex(long ServerIndex) Rückgabe der CLSID eines Servers. Rückgabe: CLSID des Servers als Text, wenn unzulässiger ServerIndex dann Leerstring ("") 4) BSTR GetUserTypeFromIndex(long ServerIndex) Rückgabe des UserType eines Servers. Rückgabe: UserType des Servers, wenn unzulässiger ServerIndex dann Leerstring ("") 5) long GetTypeFromIndex(long ServerIndex) Rückgabe der Spezifikationen eines Servers (mehrere möglich -> UND-Abfrage). Rückgabe: 1 : Data Access 1.0 2 : Data Access 2.0 4 : Alarms & Events 1.0 8 : Historical Data Access 1.0 16 : Batch 1.0-1 : Fehler (ServerIndex außerhalb des vorhandenen Bereiches) 6) long GetMachineIndexFromIndex(long ServerIndex) Rückgabe des Machine-Indexes eines Servers. Durch GetMachineNameFromIndex kann dann der Name des Remote-PC's, auf dem sich der Server befindet, abgefragt werden. Rückgabe: 0 bis (Anzahl der Remote-PC's - 1) : Machine-Index -1 : Lokal, Name nicht abfragbar -2 : Fehler (ServerIndex außerhalb des vorhandenen Bereiches) - 3 -
7) BSTR GetMachineNameFromIndex(long MachineIndex) Rückgabe des Namen eines Remote-PC's laut Machine-Index (siehe GetMachineIndexFromIndex). Parameter: MachineIndex : Index des Remote-PC's Rückgabe: Name des Remote-PC's, wenn unzulässiger MachineIndex dann Leerstring ("") 8) long GetServerCount() Rückgabe der Anzahl der gefundenen Server. Rückgabe: Anzahl der gefundenen Server (0 = kein Server gefunden) 7. ActiveX-Eigenschaften: 1) bool AutoSearch TRUE: Beginnt mit der Suche, sobald das ActiveX aktiviert wird. FALSE: Start der Suche nur durch Methode RefreshServerList möglich. 2) bool SearchDA1 TRUE: Suche nach Data Access 1.0 - Server. 3) bool SearchDA2 TRUE: Suche nach Data Access 2.0 - Server. 4) bool SearchAE1 TRUE: Suche nach Alarms & Events 1.0 - Server. 5) bool SearchHDA1 TRUE: Suche nach Historical Data Access 1.0 - Server. 6) bool SearchBatch1 TRUE: Suche nach Batch 1.0 - Server. 7) bool SearchLocal TRUE: Suche Lokal. 8) bool SearchRemote TRUE: Suche im Netzwerk (siehe Eigenschaft RemotePC). 9) BSTR RemotePC Angabe der Remote-PC's, auf denen die Suche erfolgen soll. Wenn mehrere PC's angegeben werden, müssen diese durch ein Semikolon getrennt werden (keine Leerzeichen). z.b. "PC103;PC201;PC202" 10) bool ViewLRtopic TRUE: Zeige Local-Remote-Topic. 11) bool ViewServerTopic TRUE: Zeige Server-Spezifikation-Topic. - 4 -
12) bool ViewCLSID TRUE: Zeige CLSID zu jedem Server. 13) bool ViewUserType TRUE: Zeige UserType zu jedem Server. 14) short Style Rahmen-Stil 0 : kein Rahmen 1 : dünner Rahmen 2 : Dialogfeldrahmen 3 : Dialogfeldrahmen und Größe änderbar 4 : statischer Rahmen 5 : Client-Rahmen 8. Weiterentwicklung Sollten Sie Fragen zu diesem Produkt haben oder Unterstützung benötigen, können Sie mich jederzeit über die o.g. Kommunikationswege erreichen. Wünschen Sie eine Ergänzung bzw. Änderung dieser Software, für Ihre speziellen Anforderungen, werde ich diese gerne übernehmen. Ziesar, 30.09.2001-5 -