Konfiguration HDB - RDB Parallel
Wie konfiguriere ich ValueArchive und RDBManager Parallel
-
Installieren Sie Oracle und ein neues Datenbank-Schema mit win_install/unix_install - siehe Kapitel Erstmalige Installation.
-
Überprüfen Sie die Log-Datei wincc_oa/data/RDBSetup/ora/RDB_Setup.log für Fehlermeldungen.
-
Erstellen Sie ein WinCC OA -Projekt - siehe Kapitel Projekt anlegen.
-
Fügen Sie den RDB-Manager (-num 99 Kommandozeilenparameter) zu der Konsole hinzu sowie die erforderlichen Config-Einträge (DbUser, DbPass, Db, ..) zu der [ValueArchiveRDB]-Sektion der Config-Datei hinzu.
Der RDB-Manager muss vor den Value-Archiven gestartet werden, d.h.: Er muss in der Managerliste der WinCC OA -Console vor den Value-Archiven stehen.
Config-Einträge
[general]
useRDBArchive = 1
useRDBGroups = 1
[ValueArchiveRDB]
DbUser = "userName"
DbPass = "YourPW"
Db = "YourDB"
- Wird das Default-Archiv nicht explizit gesetzt bei Verwendung "useRDBArchive = 1", dann wird als Default der RDB-Manager herangezogen (defaultArchive = 97).
- Wenn der Config-Eintrag "defaultArchive" verwendet werden soll, dann muss dieser vor dem ersten Projektstart gesetzt werden!
- Intern verwendet der RDB-Manager defaultmäßig das Archiv mit der Nummer 97. In der Konsole wird der RDB-Manager jedoch mit der Nummer -num 99 gestartet. Das ValueArchive_0 darf nicht für das Feature HDB-RDB Parallel verwendet werden. Verwenden Sie das ValueArchive_1 oder höher für die Archivierung.
-
Starten Sie das Projekt.
-
Öffnen Sie den RDB-Manager über System Management->Datenbank und setzen Sie das Passwort für das Oracle-Schemabenutzer. Das ist das Passwort, das Sie bei der Erstellung der Datenbank angegeben haben.
-
Starten Sie das Projekt neu.
-
Überprüfen Sie die wincc_oa_path /log/PVSS_II.log-Datei für Fehlermeldungen.
-
Überprüfen Sie die ARC_LOG-Tabelle für Fehlermeldungen (ERRORSTACK): SQL> SELECT ERRORSTACK FROM ARC_LOG;
Abbildung: SQL> SELECT ERRORSTACK FROM ARC_LOG;
Jetzt ist der RDB-Manager konfiguriert und läuft.
-
Fügen Sie eine Archiv-Konfig zu einem Datenpunktelement für Testzwecke hinzu.
-
Konfigurieren Sie die Archivgruppe 'EVENT'. Öffnen Sie das Dateiselektionspanel über System Management -> Datenbank -> RDB Archive-Gruppen
Abbildung: Archivgruppe "EVENT"
-
Schreiben Sie Werte und lesen Sie die Werte über das EVENT-Screen.
-
Wenn alles OK ist, kann das Value-Archiv für die parallele Archivierung konfiguriert werden.
ACHTUNG
-
Bei der automatischen Erstellung von Archivgruppen werden die Default-Einstellungen für den Archivwechsel konfiguriert. Diese sollten überprüft und gegebenenfalls angepasst werden. Voraussetzung ist eine Verbindung zur Oracle DB.
-
Solange der Archiv-Manager und der RDB-Manager gestartet sind, wird sowohl in HDB als auch RDB geschrieben. Sollte ein Manager gestoppt werden, wird normal im noch laufenden Manager weiter archiviert. Zu beachten ist jedoch, dass es dadurch zu Lücken in der Archivierung kommen kann! Es erfolgt KEIN Abgleich zwischen HDB und RDB!
-
Verwenden Sie niemals das ValueArchiv 0 für die parallele Archivierung.
-
Öffnen Sie das 5-Minuten Archiv-Konfigurationspanel. Öffnen Sie die Erweiterten Einstellungen und selektieren Sie die Checkbox "Werte an RDB übergeben".
Werte an RDB übergeben
Um ein gleichzeitiges Schreiben sowohl in die HDB als auch die RDB zu aktivieren, muss das Werte an RDB übergeben-Flag für das entsprechende Value-Archiv gesetzt werden. Dies sorgt dafür, dass Änderungen, welche in die HDB geschrieben werden, auch an die RDB weitergeleitet werden.
Es ist weiterhin möglich, dass Datenpunkte entweder nur in der HDB oder nur in der Oracle-DB archiviert werden. Um Datenpunkte nur in der HDB zu archivieren, muss ein _archiv-Config mit einem HDB-Archiv (ohne aktivem An RDB übergeben-Flag) konfiguriert werden. Diese Werte können nur über queryRDBdirect= 0 in einem UI abgefragt werden.
Um Datenpunkte nur in der Oracle-DB zu archivieren, muss ein _archiv-Config mit einer RDB-Archivgruppe parametriert werden. Die Werte können entweder über queryRDBdirect=0 oder über queryRDBdirect=1 abgefragt werden.
D.h. der RDB-Manager fungiert nicht nur als ‚Forwarding’-Manager, sondern kann weiterhin als eigenständiger Archiv-Manager verwendet werden.
HINWEISE
-
Bei der Aktivierung des An RDB übergeben-Flags wird innerhalb der Datenbank geprüft, ob eine entsprechende RDB-Archivgruppe vorhanden ist, um die Werte des Value-Archives zu speichern, wenn nicht wird automatisch eine neue Archivgruppe erstellt. Für _ValueArchive_1 wird die RDB-Archivgruppe VA1 erstellt, für _ValueArchive_2 wird die RDB-Archivgruppe VA2 erstellt, usw.
-
Das An RDB übergeben-Flag kann auch zur Laufzeit geändert werden, d.h. es ist kein Neustart des Value-Archives notwendig, um die Änderungen zu übernehmen.
Abbildung: ValueArchiv-Konfigurationspanel - "Werte an RDB übergeben"
-
Die Archivgruppe VA1 wird in Oracle erstellt.
-
Überprüfen Sie ob es Fehlermeldungen gibt.
-
Überprüfen Sie im RDB-Manager Archivgruppen-Panel ob die Archivgruppe VA1 erstellt wurde (System Management->Datenbank -> RDB Archive-Gruppen.)
Abbildung: VA1-Archivgruppe
-
Starten Sie den Archivmanager in der Konsole.
Abbildung: WinCC OA -Konsole - Starten Sie einen Archivmanager
Parallele Archivierung für ein Datenpunktelement aktivieren
-
Überprüfen Sie, dass der RDB-Manager und die 5-Minuten-Archivierung laufen.
-
Konfigurieren Sie eine Archiv-Konfig für ein Datenpunktelement. Selektieren Sie das 5-Minuten Archiv(fwd) und klicken Sie auf "Übernehmen"
Value-Archive, welche "An RDB übergeben" verwenden, werden innerhalb der Archivauswahl mittels des Postfixes "(fwd)" markiert.
Abbildung: Eine _archive-Konfig konfigurieren
-
Schreiben Sie einige Werte auf das Datenpunktelement.
main(mapping event)
{
DebugN(dpSet("System1:ExampleDP_Arg2.:_original.._value", 4000));
}
}
-
Die Werte werden sowohl im 5-Minuten-Archiv als auch in der VA1History-Tabelle in Oracle gespeichert.
-
Um zu überprüfen ob alles in Ordnung ist, setzen Sie den Config-Eintrag queryRDBDirect auf 0. Die Werte werden über den Archiv-Manager abgefragt. Um die Werte direkt von Oracle abzufragen, setzen Sie queryRDBDirect auf 1.
HINWEIS
Um die Performanz von historischen Datenabfragen für WinCC OA zu erhöhen, setzen Sie den Config-Eintrag queryRDBdirect auf 1.
HINWEIS
Es kann auch die Funktion setQueryRDBDirect() verwendet werden, um den Config-Eintrag "queryRDBdirect" online zu setzen. Mit der Funktion useQueryRDBDirect() kann abgefragt werden ob die Daten aus der RDB oder HDB abgefragt werden.
Abbildung: Config-Eintrag queryRDBdirect = 0
-
Jetzt können die Werte über den Archiv-Manager abgefragt werden.
main()
{
dyn_float val; //Contains the values
dyn_time t;//Contains the source times of the values
int i;//The function returns -1 in case of errors
DebugN(dpGetPeriod(makeTime(2020,6,3,14,55),makeTime(2020,6,3,14,56),0,"System1:ExampleDP_Arg2.:_offline.._value", val, t));
DebugN("Values:", val);
for(i=1;i<=dynlen(val);i++)
{
DebugN("Result values:");
DebugN(val[i],t[i]);
}
}
Abbildung: Abgefragte Werte
- Fragen Sie die Oracle-Werte über SQL.
SELECT VALUE_NUMBER FROM VA1History;
Abbildung: Werte über SQL abfragen
oder ändern Sie den Config-Eintrag queryRDBDirect auf 1, um die Werte von der RDB abzufragen.
ACHTUNG
Wechselt man ein archiviertes DP-Element in der HDB zwischen 2 Archive hin und her (A1 -> A2 -> A1 -> A2), muss zumindest einmal beim ersten (zugewiesenen) Archiv (A1) ein Archivsatzwechsel gemacht werden bevor man das DP-Element wieder diesem Archiv (A1) hinzufügt. Dies ist erforderlich, weil die Archive DP-Element-Zuordnungen nur pro Archivsatz kennen.
queryRDBdirect
Um die Performance der Abfrage von historischen Daten innerhalb des Leitsystems zu erhöhen, sollte der Config-Eintrag "queryRDBdirect" auf 1 gesetzt werden. Anderenfalls erfolgen Abfragen zu historischen Werten über die HDB der Feldsysteme, wodurch es, abhängig von der Verbindungsqualität zwischen Feld- und Leitsystem, zu Verzögerungen kommen kann (vgl Abbildung: queryRDBdirect).
ACHTUNG
Bei der Verwendung von "queryRDBdirect = 1" innerhalb des Feldsystems kommt es zu einer Verringerung der Leseperformance, da die Daten von der entfernten RDB abgefragt werden!
Abbildung: queryRDBdirect
HINWEISE
-
Bei dem Start einer Abfrage von Werten des Feldsystems aus dem UI des Leitsystems heraus tritt folgendes Verhalten ein:
-
"queryRDBdirect" = 1 erfolgt die Abfrage direkt über das UI (des Leitsystems) und eine direkte Oracle-Datenbankabfrage wird durchgeführt. Hierbei erfolgt kein Zugriff auf die HDB des Feldsystems und dementsprechend werden nur Werte geliefert, welche sich innerhalb der RDB befinden.
-
Bei einem "queryRDBdirect" = 0 wird die Abfrage über den DIST-Manager an das entsprechende Feldsystem weitergeleitet. Innerhalb des Feldsystemes werden die Daten aus der HDB gelesen und anschließend an das UI zurückgeliefert.
useElemNameForReadRequest
In verteilten Systemen kann es vorkommen, dass die Datenpunkt Identification von einem anderen System nicht vorhanden ist z.B. aufgrund eines Neustartes des Systems und es kann keine Verbindung zu dem entsprechenden System aufgebaut werden (Netzwerkprobleme,...). In diesem Fall war es bisher nicht möglich, Datenpunkte des anderen Systems abzufragen. Mit dem neuen Config-Eintrag "useElemNameForReadRequest" ist es möglich, Abfragen auf Datenpunkte von fremden Systemen auch ohne Datenpunkt-Identification durchzuführen.
Voraussetzung
"useElemNameForReadRequest" ist standardmäßig aktiviert (= 1), um das Feature jedoch verwenden zu können muss "queryRBDdirect" aktiv (= 1) sein sowie eine korrekte Konfiguration der Zuordnung zwischen WinCC OA -Systemnamen und DB-Anbindung vorgenommen werden (siehe unten).
Systemnamen konfigurieren
Damit der RDBManager in der Lage ist, die richtigen Datensätze aus dem richtigen Datenbankschema zu lesen, muss das Datenbankschema entsprechend konfiguriert werden (siehe Parametrierung des RDB Datenbank Schema).
Da die SystemId des fremden Systems nicht aus der Datenpunkt-Identification ermittelt werden kann, ist die zusätzliche Angabe des Systemnames erforderlich.
Abbildung: DBSchema inklusive Systemnamen