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.