[opc_<symbolic_servername>]

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.