Eine Datenkommunikation mit einem OPC Server (DataAccess) sieht prinzipiell immer gleich aus. Es sind (vereinfacht gesagt) nur 4 Schritte erforderlich:
1) Connect
hier Name des Servers (ProgID) und optional Name des Rechners (Node) angeben falls er auf einer anderen Maschine läuft als der Client
2) AddGroup
die Gruppe ist eine "Organisationseinheit", hier stellt man wichtige Dinge ein wie "UpdateRate" und "Deadband", an diesem Objekt meldet man sich für DataChange-Events an (ähnlich wie ein Button, der feuert einen Event wenn drauf geklickt wird)
3) <Browse> optional, nur wenn man die ItemIDs nicht kennt
Wenn man die "Syntax" der ItemsID (Item = Variable = Prozesswert-Repräsentant) nicht genau kennt, kann man den Server durchbrowsen, StefanK hat sich das gespart und die ItemsIDs in einem ini-File hinterlegt.
4) AddItems
Die Items die einen interessieren, müssen zu der Gruppe hinzugefügt werden, beim Hinzufügen sollte die Gruppe "passiv" sein, da sonst sofort Events kommen können
5) Anmelden und Aktivieren der Gruppe
wird die Gruppe "scharf" geschaltet, holt der Server die Daten vom Prozess (meistens pollend aus der SPS) und prüft ob sie sich, im Vergleich zum letzten mal, (um mehr als "Deadband") geändert haben, falls ja feuert das Gruppen-Objekt beim Erreichen der nächsten "UpdateRate" einen DataChanged-Event, der NUR die geänderten Werte enthält (die anderen kennt man ja schon vom letzten mal). Um rauszufinden zu welchen Items die Werte gehören gibt es die ClientHandles (eine Indexnummer, die man dem Server beim AddItems bekanntgegeben hat) diese Nummer schickt er beim Event mit den geänderten Daten zurück.
>> warten auf Daten-Änderungs-Meldungen
Im Eventhandler muss man nun (möglichst schnell) die gemeldeten Daten weg kopieren oder verarbeiten. Kleiner Hinweis: niemals im Eventhandler wieder den OPC Server rufen oder in andere Komponenten (z.B. Datenbank) reinrufen, sonst kann sich das Ganze ineinander verschachteln und klemmt.
6) <SyncWrite> optional, wenn man es will
mit den ServerHandles, die man beim AddItems bekommen hat, kann man auf die Items schreiben. Diese Indexnummern dienen dem Server dazu herauszufinden um welches Item es sich handelt, dass ist viel einfacher (und schneller) als jedesmal wieder die Namen (strings) zu prüfen.
Also im Prinzip ist das ganz einfach. Die ganzen anderen Funktionen von OPC braucht man nur wenn man spezielle Dinge tun will.