# SimaticNET - Addressraum des OPC Servers



## Dr. OPC (14 Januar 2010)

Nachdem ich einige Threads zu diesem Thema gelesen habe hier die Klarstellung, wie es wirklich ist:

Der Unterschied zwischen "direkten Addressen", "Alias-Namen" und "Symbol-Namen" aus Sicht des SimaticNET OPC Servers.

Nach der Installation ist der OPC Server "doof", er weiß nicht mit wem er sich verbinden soll und Tags kennt er auch keine (ausser einigen internen "Systemvariablen" zu erkennen am vorangestellem "&")

Wenn der Server mit NCM (Netpro) konfiguriert wurde, weiss er zumindest wohin er sich verbinden soll falls er irgendwann mal von einen Client gestartet wird. Hier wird also die z.B. S7-Verbindung zu einer SPS konfiguriert und der OPC Server weiss dann unter welcher z.B. IP er diese SPS erreichen kann. Dies ist sagen wir mal die "Protokoll- oder Treiberkonfiguration".

Nun weiss der OPC Server aber noch nicht welche Tags es in den SPSen gibt. Der "OPC-Addressraum" ist also leer. Trotzdem funktioniert der OPC Server aber schon und wenn man als ItemID (Tag-Name) eine direkte Addresse (in einer von Siemens für dieses Protokoll definierten Syntax) eingibt, kann man schon auf Daten in der SPS zugreifen.

Weil nun nicht jeder Client auf der Welt die Syntax von einem Item in einem x-beliebigen Server auswendig wissen kann, gibt es den Addressraum im Server. Diesen kann man als Client "erbrowsen" (durchnavigieren) und sich einen Überblick über die Items in dem Server verschaffen. Wenn man ein Item findet das einen Interessiert, fügt man es einer Gruppe hinzu und kann es dann lesen/schreiben/beobachten.

Wie der Addressraum eines Servers konfiguriert wird ist abhängig vom Hersteller. Beim SimaticNet Server kann man mit dem OPCScout AliasNamen für direkte Addressen vergeben (diese werden dann vom Server in einer txt Datei gespeichert und sind beim nächten Start oder auch für andere Clients sichtbar). Das ist ganz nett aber wenn sich in der SPS die Addresse ändert, zeigt der Alias auf den alten Wert und man muss die txt Datei aktualisieren. Deswegen sollte man hier immer von Alias sprechen und nicht von Symbolik. Dies ist sagen wir mal die "alte" Alias-Addressraumkonfiguration.

Eine Symboldatei ist eine (offline) Addressrauminformation die symbolische Namen in einer Hierarchie enthält, die der Server dann in direkte Adressen aufgelösen kann. Derartige Symboldateien (*.sti) kann man mit dem Symboldateikonfigurator selber anlegen oder bestehende Dateien bearbeiten. Auch hier besteht die Gefahr dass die Symboldatei irgendwann nicht mehr aktuell ist.

Um auch diese Problem in den Griff zu bekommen, kann die Symboldatei mit Step7 "generiert" werden. Dann ist sie immer so aktuell wie das Step7-Projekt. natürlich muss der OPC-Server in einer PC-Station zusammen mit den SPSen ein einem Projekt sein und es müssen die "S7-Verbindungen" zwischen OPC und SPS projektiert sein. In HW-Konfig kann man nun auf den OPC-Server doppeklicken und in der Lasche "S7" die Generierung der Symboldatei auswählen. Die Symboldatei enthält dann alle Symbole (aus der Step7-Symboltabelle) und alle symbolischen Namen die z.B. innerhalb von DBs vergeben wurden. Das ist dann auch konsistent zur tatsächlich verbundenen SPS (wenn man beide runterläd). Diese derart mit Step7 erzeugte Symboldatei wird beim "download" der PC Station (auch beim XDB-Datei Import) dem OPC Server übergeben. Dies ist dann sagen wir mal die Symbol-Addressraumkonfiguration.

So, und nun ist der OPC Server nicht mehr "doof" sondern bildet "exakt" die Daten der SPS in seinem Addressraum ab (reinbrowsen unter "SYM:").

Und das schöne daran ist, dass man dafür nichts extra tun muss. Auch ein schönes Feature ist, dass man selber konfigurieren kann welche Datenbausteine überhaupt in der Symboldatei erscheinen sollen (vielleicht will man den Clients nicht sein ganzes "Innenleben" preisgeben). Ausserdem kann man Zugriffsrechte (lesen/schreiben) für die Symbole vergeben.

Und nur um das nochmal klarzustellen: der OPC Server funktioniert auch ohne Addressraum, dann muss allerdings der Client die korrekte Syntax (ItemID) kennen um mit AddItem/Read/Write/DataChange arbeiten zu können (z.B. "S7:[S7Verbindung_1]DB1,B4,1" bezeichnet ein Byte im Datenbaustein 1, ab Offset 4 das in der SPS liegt, die sich hinter der "S7-Verbindung_1" verbirgt und zu der der OPC Server über das S7-Protokoll (Put/Get) kommuniziert).


----------



## Immer_1 (31 März 2010)

Hallo Herr Dr. OPC,

ich habe folgendes Problem.
Ich möchte neben der Symbolik(SYM) aus der S7 noch eine zweite Symboldatei integrieren, die ich mit dem Symboldatei-Konfigurator erstellt habe.
Der Grund dafür ist, das ich z.B. Mit db10.dx2.0 ...db10.dbx4.7 als Bool im DB vergeben habe, und keine neu variable mit db10.dbd2 anlegen kann.
Mit dem Symboldatei-Konfigurator möchte ich nun eine Symbol für db10.dbd2 anlegen
Auf die neue Sybolik, eventuel mit einer anderen Präfix(SYM1) möchte ich ebenfalls mit dem SPC-Scout zugreifen können.
In der Konfigurationskonsole"PC einstellen" möchte ich die beiden Symbolikdatein auswählen (xxx.ati und yyy.sti)
Im SPC-Scout sehe ich leider immer nur die Symboli(SYM) aus der S7


----------



## Dr. OPC (31 März 2010)

Da gibt es drei Möglichkeiten:

1) die bestehende STI-Datei (falls es die gibt) einfach im SymbolKonfigurator aufmachen (Achtung: der OPC Server muss dann "aus" sein, denn sonst ist die Datei schon in Verwendung und kann nicht geöffnet werden). Nun können neben den bestehenden Symbolen auch noch zusätzlich weitere Symbole auf den selben Datenbereich angelegt werden. Dann aber in "PC Station einstellen" den Haken "Datei als Downloadziel verwenden" abschalten, denn sonst werden bei erneuter Erzeugung/Download der Datei aus Step7 heraus die manuell hinzugefügten Symbole überschrieben. 

2) Es können mehrere Symboldateien (STI) gleichzeitig angegeben werden, der Einstiegspunkt (Root-Knoten) ist dann unterschiedlich z.B. unterhalb von "SYM:" erscheint dann SYM1 oder SYM2 usw. dies ergibt sich aus dem Präfix-Namen.

3) in der neuen Version (also ab CD2008 ) gibt es das neue Symbolformat ATI. Bezüglich Geschwindigkeit (Erzeugung/Download/Zugriff) wurde es extrem verbessert. Dieses ATI wird direkt aus Step7 (neue Version) erzeugt. Es gibt kein Tool zum "manuellen Editieren" der ATI-Datei. Der SymbolKonfigurator unterstützt nur die älteren STI und die ganz alten SSD/WSD Dateien. Es kann aber immer nur EINE ATI Datei im Server geben, plus zusätzlich weitere (alte) STI Dateien.

Wenn ich das richtig verstanden habe, trifft bei Dir der 3) Fall zu. Du musst eine automatisch von Step7 erzeugte ATI Datei verwenden und zusätzlich eine manuell erzeugte STI Datei in "PC Station einstellen" reinhängen. Diese erscheint dann "unterhalb" des SYM: Rootknotens mit ihrem Präfix als Einstiegspunkt (SYM1).

Wenn Du der ATI Datei KEINEN Präfix zugeordnet hast (default) liegen die Symbole aus der ATI direkt unterhalb von "SYM:". Wenn Du "zusätzlich" eine STI mit dem Präfix "SYM1" reingehängt hast, erscheint unterhalb von "SYM:" (also mitten zwischen den anderen Symbolen aus der ATI Datei) ein weiterer Ordner "SYM1", der dann deine STI Symbole enthält. Somit können (alte) STI Dateien weiterhin benutzt werden.

Eine Möglichkeit "alte" STI Dateien in neue ATI Dateien zu "konvertieren" besteht prinzipiell. Da der OPC UA Server NUR das S7-Protokoll spricht müssen beim Konvertieren aber alle Symbole, die z.B. auf ein DP-Item oder ein SR-Item zeigen herausgefiltert werden.

Wichtiger Hinweis: Wenn du OPC UA (Unified Architecture) verwendest dann siehst du NUR die Symbole aus der ATI-Datei (egal wie viele "alte" STI Dateien du reingehängt hast). Der (neue) OPC UA Server "versteht" nur noch die neue ATI-Symbolik.


----------



## Immer_1 (6 April 2010)

Hallo Doc,

danke für die Infos.
Auf einem PC(ziemlich jungfreulich) sehe ich die neue Symbolik, aber auf einem anderen PC(Entwickler-PC) sehe ich diese Symbolik nicht. 
Ich hatte gedacht, das vielleicht andere OPC-Server(Codesys, Eurotherm,WinCC...) den Simatic.NET-OPC-Server stören würden. Habe dann die anderen OPC-Server deinstalliert, hat aber nichts gebracht.


----------



## Dr. OPC (6 April 2010)

Nun hast Du mich verwirrt. Ich habe in deiner Konfiguration den Faden verloren, wo kommt der zweite PC her?

1) PC1 mit xxx.ati und yyy.sti parallel in "PC Station einstellen" reingehängt dann mit irgendeinem OPC Client auf den Server (ProgID: "opc.simaticnet") verbinden, reinbrowsen und >>> du solltest Symbole aus beiden Symboldateien sehen können (wenn du OPC UA verwendest, z.B. ScoutV10 auf "opc.tcp:/localhost:4845" dann siehst du nur Symbole aus der ATI)

2) PC2 hier startest du einen Client und verbindest dich auf den OPC.SimaticNET Server von PC1 und beim Browsen siehst kein einziges Symbol >>> dann hast du dich nicht mit dem PC1 verbunden sondern vermutlich lokal auf einen "opc.simaticnet", der auf PC2 installiert ist (aber keine Symboldateien enthält), entsprechend siehst du auch nichts wenn du reinbrowst.

Oder mal anders, was hast du wo installiert und was hast du wo konfiguriert? Wer ist Client und wer ist Server? Machst Du OPC UA oder das (alte) OPC DA?


----------



## Immer_1 (6 April 2010)

Also ich habe kein Netzwerk(Client, Server).
Ich habe kein OPC UA 

Ich habe die gleiche Konfiguration lediglich einmal auf einen PC1(ziemlich jungfreulich) geladen, und da hat es geklappt.
Auf einem anderen PC2 habe ich die gleiche Konfiguration geladen, da hat es nicht geklappt.


----------



## Dr. OPC (7 April 2010)

Aha.

Wenn du runterlädst (oder xdb Import machst) musst du immer schauen ob die "PC Station" auch fehlerfrei hochläuft. Dazu unten rechts das Systray-Icon des "Komponenten Konfigurators" doppelt klicken. Da siehst du die Komponenten, die in deine PC Station "gesteckt" sind und neben dran muss jeweils ein grünes Symbol sein.

Ich vermute dass neben dem "OPCServer" ein "rotes" Symbol ist. Die Fehlermeldung ist dann auf der zweiten Registerkarte. Vermutlich "Index1 (OPCServer) konnte Symboldatei nicht laden". Oder "SSDB konnte nicht konvertiert werden"

Die Ursache ist vermutlich dass schon eine Symboldatei existiert und der Haken "Datei als Ziel für Download verwenden" (anders gesagt: vorhandene Datei überschreiben) nicht gesetzt ist. Der Haken macht in sofern Sinn, dass dir dan kein anderer (versehentlich) deine schicke Symbolik drüberbügelt.

Dann musst du den "PC Station einstellen" aufmachen und dort unter "Symbolik" den Haken anmachen. Danach die PCStation  nochmal runterladen.


----------



## Immer_1 (7 April 2010)

Der OPC Server ist bei mir grün(RUN)
Ich sowohl die xxx.ati  als auch die yyy.sti angewählt. Zudem habe ich bei xxx.ati das Häckchen  bei "Als Ziel für Symbol-Download verwenden (Die Datei wird überschrieben!)" gesetzt.
Übernehmen getätigt mit RUN oder Stopp des OPC-Servers  im Komponenten Konfigurator.
In beiden Fällen erhalte ich beim Verbinden mit dem OPC-Scout ein POP-UP-Fenster mit folgendem Fehler:
_Fehler beim Versuch, mit dem Server zu verbinden 'OPC.SimaticNET'_
_Objekterstellung durch ActiveX-Komponente nicht möglich &H1AD_


_- Überprüfen Sie, ob die OPC-Server Komponente im Komponenten Konfigurator im Zustand RUN ist!_
_- Ursache kann eine Fehlfunktion eines InProc-Servers sein._
_- Überprüfen Sie, ob Ihr Server wirklich startet!_
_- Überprüfen Sie mit DCOMCNFG, dass alle Einträge für 'OPC.SimaticNET' korrekt eingestellt sind, insbesondere PFADNAMEN und BENUTZERRECHTE!_
_- Überprüfen Sie Ihre Serverinstallation!_


----------



## Dr. OPC (7 April 2010)

Das bedeutet "Klasse nicht registriert"

vermutlich ist die Registrierung des Servers (oder einer der Komponenten, die er nutzt) total verhunzt. Ich würde SimaticNET (nur PC Software) nochmal installieren, dann sollte es wieder passen.


----------



## Immer_1 (8 April 2010)

Dr. OPC schrieb:


> Die Ursache ist vermutlich dass schon eine Symboldatei existiert und der Haken "Datei als Ziel für Download verwenden" (anders gesagt: vorhandene Datei überschreiben) nicht gesetzt ist. Der Haken macht in sofern Sinn, dass dir dan kein anderer (versehentlich) deine schicke Symbolik drüberbügelt.
> .


 
Was heißt das eigentlich: "Datei als Ziel für Download verwenden" (anders gesagt: vorhandene Datei überschreiben)
Welcher Download (wohin) ist hier gemeint?
Welche vorhandene Datei xxx.ati wird hier eigentlich überschrieben. Wird hiermit eine neue Datei erzeugt (xxx.ati + yyy.sti ---> xxx.ati) und diese dann dem OPC-Server bekannt gemacht(downgeloaded)?
Die Datei "C:\Documents and Settings\All Users\Application Data\Siemens\SIMATIC.NET\opc2\binS7\symbolic\S7Symbols.ati" wird doch bereits vom Simatic-Manager beim download auf die PC-Station oder beim Stationsimport im Komponenten-Konfigurator erzeugt.


----------



## Dr. OPC (8 April 2010)

Es kann nur eine ATI Datei geben, diese ist in \binS7\symbolic\S7Symbols.ati (defaultname). Die Datei "ensteht" beim Download aus Step7 oder bei xdb-Import. (wie du schon richtig beschrieben hast). Falls es diese Datei schon gibt, muss der Haken "als Downloadziel verwenden" (in PC Station einstellen >> Symbolik) AN sein, sonst darf Step7 beim Download die Datei nicht überschreiben. Beim Download aus Step7 wird einen "neue" S7Symbols.ati zum Server geschickt, die "alte" muss also "überschreibbar" sein damit das klappt. Ansonsten macht der Server ein "rotes" Symbol im Komponenten Konfigurator. Gleiches gilt für den xdb Import (in der XDB Datei ist eine ATI enthalten, die kann aber nur raus kommen wenn der Haken AN ist)

STI Dateien existieren höchstens "parallel" dazu, ein "zusammen mischen" von ATI und STI in eine neue Datei gibt es NICHT.


----------

