Serverspezifische Einstellungen für den OPC Client.
[opc_<symbolic_servername>] addItemsSingle
- Typ
- string
- Default
- no
- Wertebereich
- yes|no
Beim Start des Clients können die Items jeder Gruppe im Server wahlweise einzeln oder
auf einmal angelegt werden. Dieser Eintrag legt fest, wie die Items zu einer Gruppe
hinzugefügt werden:
[opc_server1]
addItemsSingle = "yes"
Fügt die Items einzeln zur einer Gruppe hinzu. Mit dem Wert "No" werden alle Items auf
einmal zur Gruppe hinzugefügt. Werden alle Items auf einmal angelegt, so startet der
Client schneller hoch. Allerdings haben manche Server damit Probleme. Existiert kein
Eintrag im Config-File, so werden alle Items auf einmalangelegt. Hinweis: Mit der
Debuginfo -dbg 2 erfolgt eine Ausgabe des Anmeldemodus im Log Viewer.
[opc_<symbolic_servername>] browseOnStart
- Typ
- string
- Default
- yes
- Wertebereich
- yes|no
Wenn dieser Config-Eintrag nicht bzw. mit browseOnStart = "yes" in der Config-Datei
gesetzt ist, wird ein Browsen des Server-Adressraumes durchgeführt und die Items des
Servers werden im internen Datenpunkt des Servers (_OPC Server -> _ETM.ItemIds)
abgelegt, nachdem der Client gestoppt und neu gestartet wurde. Ist der Eintrag auf
browseOnStart = "no" eingestellt, so wird nach dem Hochlauf des Clients keine Info im
internen Datenpunkt des Servers abgelegt. Es steht lediglich: 'no browse info
available'.
[opc_<symbolic_servername>] enableAddrBrowsing
- Typ
- string
- Default
- yes
- Wertebereich
- yes|no
Über diesen Eintrag kann das Abfragen der im Server parametrierten Items erlaubt bzw.
verboten werden. Normalerweise bleibt dieser Wert auf "yes". Wenn dieser Eintrag nicht
gesetzt wird, dann wird der Defaultwert "yes" verwendet.
[opc_<symbolic_servername>] enableCALLR
- Typ
- string
- Default
- no
- Wertebereich
- yes|no
Für zwei Kopplungen mit Festo und WSK (nicht im WinCC OA Lieferumfang enthalten) kann
dieser Eintrag verwendet werden. Dieser Eintrag erlaubt die Verwendung des CALL-R
Interfaces. Über dieses Interface kann ein CALL-R Client, in dem Fall WinCC OA, neue
Items im OPC Server parametrieren. Die Items, die den Gruppen hinzugefügt werden, werden
dann über ICallrItemConfig::CreateCallrItems vom Client im Server angelegt. Wenn dieser
Eintrag nicht gesetzt wird, dann wird der Defaultwert "no" verwendet.
[opc_<symbolic_servername>] gaBitOnStart
- Typ
- string
- Default
- yes
- Wertebereich
- yes|no
Wird ein Item beim OPC-Server angemeldet, dann kommt vom Server ein Callback (als
Spontanantwort). Dieser Fall wird wie eine Generalabfrage weiterbehandelt. Das gilt nur,
wenn zum Zeitpunkt des Anmeldens die betroffene OPC-Gruppe aktiv ist und Callbacks
aktieviert sind (siehe auch Panel OPC Gruppe). Mit diesem Config-Eintrag wird bestimmt,
ob beim ersten Callback das GA-Bit gesetzt wird.
[opc_<symbolic_servername>] hierarchySeparator
- Typ
- string
- Default
- .
In der Config-Datei kann der Eintrag
[opc_server1]
hierarchySeparator = "/"
gesetzt werden. Default: "."; Dieser Eintrag definiert ein Trennzeichen. Ist dieses
Zeichen in der Bezeichnung eines Item-Namens enthalten, so erfolgt eine Auftrennung des
Items in eine zusätzliche Unterebene beim hierarchischen Browsen, z.B. Tag22/test
ergibt:
Tag22
test
Da bei manchen OPC Servern Punkte in den Item-Namen vorkommen, muss der Config-Eintrag
mit einem Zeichen versehen werden, welches nicht in den Item-Namen vorkommt, um die
Anzeige der Items richtig darzustellen.
[opc_<symbolic_servername>] invertPrefix
- Typ
- string
- Default
- no
- Wertebereich
- yes|no
Invertiert das Verhalten der permanenten und nonpermanenten Gruppen, wenn invertPrefix =
"yes".
Beispiel:
[opc_ABB]
nonpermanentKey = "PERMANENT"
invertPrefix = "yes"
[opc_<symbolic_servername>] ioTimeout
- Typ
- unsigned
- Default
- 2000 [msec]
- Wertebereich
- > 0
Der Treiber ruft readData, writeData und refreshData, also Lesen, Schreiben und
Generalabfrage, in einem eigenen Thread auf, um ein Blockieren im Server zu vermeiden.
Der Eintrag gibt die Zeit in Millisekunden an, innerhalb derer der Aufruf erfolgt sein
muss. Kehrt der Aufruf in der Zeit nicht zurück, wird davon ausgegangen, dass der
OPC-Server blockiert und der Thread wird beendet. Ein blockierender Server ist oft die
Folge eines Softwarefehlers im OPC-Server, es kann aber auch sein, dass die Abfrage
selbst mehr Zeit in Anspruch nimmt. Es ist also zunächst zu prüfen, ob eine Erhöhung von
ioTimeout Abhilfe verschafft. Sie können es z.B. erhöhen, wenn bekannt ist, dass die
Verbindung zum Server sehr langsam ist.
[opc_<symbolic_servername>] nonpermanentKey
- Typ
- string
Nicht-permanente OPC Gruppen sind solche, deren OPC Items nur bei Bedarf am OPC Server
angemeldet werden. Mit diesen Gruppen ist es möglich Beschränkungen des OPC Servers im
Bezug auf Anzahl der angemeldeten Items zu umgehen. Items aus nicht-permanenten Gruppen
werden nur beim Server angemeldet, wenn ein Wert geschrieben werden muss, oder wenn ein
User Interface bzw. ein CTRL Skript im lokalen oder im verteilen System ein dpConnect()
auf das zugehörige DPE aufrecht haben. D.h. zum Beispiel, dass Items nur angemeldet
werden, wenn die zugehörigen DPEs in einem Panel angezeigt werden. Wird das Panel
geschlossen, so werden die Items beim Server wieder abgemeldet. Nicht-permanente Gruppen
sollten nur verwendet werden, wenn eine Einschränkung bezüglich Itemanzahl am Server
existiert, da es durch das An- und Abmelden zu einer erhöhten Last zur Laufzeit kommen
kann. Zudem dürfen Items, die archiviert werden oder alarmbehandelt sind, nicht in
nicht-permanenten Gruppen vorkommen, da diese nur unter obigen Bedingungen gelesen
werden. Der Eintrag "nonpermanentKey" in der serverspezifischen Sektion ist das
Namenspräfix für die nicht-permanenten Gruppen und gibt an welche Gruppen dies sind. Mit
dem Eintrag "invertPrefix" kann das Verhalten invertiert werden (d.h. eine
nicht-permanente Gruppe wird permanent).
[opc_ABB]
nonpermanentKey = "PERMANENT"
invertPrefix = "yes"
[opc_<symbolic_servername>] reconnectOnFailedState
- Typ
- bool
- Default
- 1
- Wertebereich
- 0|1
Definiert ob der Client versucht die Verbindung wiederherzustellen wenn OPC-Server im
Status "Failed" ist. 0: Es wird nur die Statusänderung des Servers angezeigt. Der
Serverstatus im WinCC OA Konfigurationspanel wechselt auf 2. 1: Der Serverstatus in
WinCC OA wechselt auf 0 und der Client versucht die Verbindung wiederherzustellen.
[opc_<symbolic_servername>] sendNoValueForQuality
- Typ
- string
- Wertebereich
- 8 digits
Der Wert für diesen Eintrag muss ein 8-stelliger String in der Form "1100????" sein.
- 1 bedeutet: an dieser Stelle muss 1 stehen.
- 0 bedeutet: an dieser Stelle muss 0 stehen.
Jedes andere Zeichen bedeutet, dass dieses Bit nicht berücksichtigt wird. Werte, die
von einem OPC-Server kommen und diese hier eingetragene Qualitätsinformation haben,
werden nicht an den Event-Manager weitergeschickt. In dem Fall wird nur das Invalid-Bit
vom Treiber gesetzt, d.h. der alte Wert bleibt am Datenpunkt erhalten. Für einen Server
kann es auch mehrere solcher Einträge geben.
[opc_<symbolic_servername>] setInvalidForConnLoss
- Typ
- uint
- Default
- 0
- Wertebereich
- 0..2
Der OPC Client ist in der Lage das DPE Invalid-Bit (_aut_inv Attribut) für alle Eingabe-
oder Eingabe-/Ausgabe-Adressen, wenn die Verbindung zu dem OPC Server verloren geht oder
nicht aufgebaut werden kann. Die Invalid-Bits werden zurückgesetzt sobald der nächste
gültige Wert erhalten wird.
ACHTUNG:
Invalid-Bits werden nicht gesetzt, wenn der OPC Client beendet wurde.
Dieses Feature kann für jeden Server einzeln aktiviert werden, indem der Config-Eintrag
setInvalidForConnLoss = 1
innerhalb der Config-Datei des betroffenen OPC-Servers (z.B. [opc_ServerX]) gesetzt
wird. Der Defaultwert des Config-Eintrages ist 0, was bedeutet, dass das Invalid-Bit
nicht gesetzt wird.
[opc_<symbolic_servername>] vtEmptyArrayRead
- Typ
- bool
- Default
- 0
- Wertebereich
- 1|0
Manche OPC Server akzeptieren vom Client keine typspezifische Auswahl für Array
Datentypen. Wird dieser Eintrag auf 1 gesetzt, wird die Anmeldung für Arrays auf eine
unspezifische mit VT_EMPTY geändert. Das bedeutet dass der Client keinen bestimmten Typ
fordert, welcher normalerweise vom DPE Typ bzw. Transformationstyp abgeleitet wird.
Außerdem kann der OPC Client unabhängig davon ob der Array-Index bei 0 oder 1 beginnt,
Daten empfangen. Achtung: Der Benutzer ist verantwortlich für die korrekte Auswahl des
Transformationstypen, da keine Typumwandlung vom Server durchgeführt wird.
[opc_<symbolic_servername>] watchdogGroup
- Typ
- string int int
- Wertebereich
- <watchdog group> <mult: >= 1> <validToReset6gt;
Watchdog-Gruppen enthalten nur ein Item und erwarten, dass das Item einen Wert alle n
Sekunden sendet (n entspricht einem Intervall, welcher mittels des zweiten Parameters
des Config-Eintrages "mult" festgelegt wird und der (tatsächlichen) Update-Rate der
OPC-Gruppe (in ms): ABB_Watch_mult * ActualUpdateRate Beispiel:
[opc_server1]
watchdogGroup = "ABB_Watch" 3 10
Hinweis: ABB_Watch ist eine Watchdog-Gruppe. Erwartetes Änderungsintervall n: 3 (mult)
* 1000 (ActualUpdateRate) = 3000 ms Die aktuelle Update-Rate wird im entsprechenden OPC
Group DP angezeigt. Wenn z.B. ein Zähler in der Peripherie verwendet wird, muss dieser
auf eine Inkrementzeit, die weniger als 3000 ms beträgt, gesetzt werden. Der Minimalwert
für mult ist 1 ms. Hinweis: Wenn ein Item in einer Watchdog-Gruppe nicht einen Wert
innerhalb von 3 * n Millisekunden sendet, setzt die Gruppe das allItems Invalid-Bit.
Wenn ein Watchdog ausgelöst wurde, weil kein Watchdog-Signal empfangen wurde, wird der
Watchdog vom Treiber nicht beim ersten Signal zurückgesetzt sondern erst, wenn
Watchdog-Signale für mindestens ABB_WD_validToReset-Sekunden ohne Störung empfangen
wurden. Wenn (wie in unserem Beispiel) diese Periode 10 Sekunden ist und der Client
Signale nur für 8 Sekunden erhält, setzt der Treiber einen internen Zähler und startet
von Anfang. Dieses Feature wurde implementiert um zu verhindern, dass Watchdog laufend
gesetzt und zurückgesetzt wird (Flattern). Die folgenden Einschränkungen gelten für die
Watchdog-Gruppen:
- Wenn die Update-Rate, die vom Server garantiert wird, kleiner als das
Watchdog-Intervall ist, signalisiert die Gruppe das über den Status "AllItems
Invalid".
- Watchdog-Gruppen sind immer permanente Gruppen. Die Definition einer
Watchdog-Gruppe ist stärker als einer nonpermanenten Gruppe.
- Watchdog-Gruppen akzeptieren nur ein Item, da sie eine Verbindung überwachen. Es
ist nicht möglich eine Watchdog-Gruppe zur Laufzeit zu erstellen. Der Client
muss neu gestartet werden.
- In einem redundanten System hat der aktuelle Wert des Items keine Bedeutung, da
es auf dem passiven System vom aktiven System überschrieben werden kann.
Hinweis: Der _OPCGroup-Datenpunkt enthält ein Bool-Element, das auf TRUE gesetzt wird,
wenn die Gruppe eine Watchdog-Gruppe ist. Der Watchdog-Mechanismus kann auch für Items,
die Werte nicht spontan senden, verwendet werden. z.B. ein Skript startet ein
Aktualisierungs- und Lese-Vorgang für das Item (in einer Gruppe) alle n-2 Sekunden und
die Gruppe speichert die Werte die empfangen wurden. Wenn nicht genug Werte empfangen
wurden wird "AllItems Invalid" gesetzt und ein Kommunikationsfehler tritt auf. Das Gerät
muss gelesen werden. Ansonsten funktioniert dieser Mechanismus nicht, da es laufend
Werte vom Cache gibt. Achtung: Wenn mehr als eine Watchdog-Gruppe verwendet wird, müssen
die Einträge abwechselnd gesetzt werden.