UA_HistoryUpdate

Dieser Funktionsbaustein schickt historische Daten über OPC UA zu einem Server, der die OPC-UA-HistoryUpdate-Funktionalität unterstützt, z. B. dem TwinCAT OPC UA Server. Mit einem Aufruf können Sie für ein Knotenhandle eine Vielzahl von Werten inklusive Zeitstempel an den Server übertragen. Dieser sorgt dafür, dass die übermittelten Werte in einem Datenspeicher gespeichert und über Historical Access verfügbar gemacht werden.

Wenn Werte von mehreren Knotenhandle (verschiedenen Variablen) übertragen werden sollen, kann der Funktionsbaustein mehrfach instanziiert werden.
Betrieb mit TwinCAT OPC UA Server
Der Funktionsbaustein eignet sich gut, wenn Sie im TwinCAT OPC UA Server Historical Access nutzen und Daten aus einem bestimmten Zeitintervall, in dem z. B. ein spezieller Maschinenzustand vorherrschte, zur Verfügung stellen wollen. Es lassen sich gezielt Werte für den gewünschten Zeitraum übertragen.
Wenn Werte hingegen zyklisch gesendet und über Historical Access im Server verfügbar gemacht werden sollen, so eignet sich die serverseitige Historical-Access-Funktionalität besser, da Sie hier lediglich die aufzuzeichnende Node im Konfigurator konfigurieren und die gewünschte Abtastrate einstellen müssen.
Siehe auch: Programmbeispiel TF6100_OPCUA_HASample
Eingänge
VAR_INPUT
Execute : BOOL;
ConnectionHdl : DWORD;
NodeHdl : DWORD;
PerformInsert : BOOL;
PerformReplace : BOOL;
DataValueCount : UINT;
Timeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Execute | BOOL | Der Befehl wird durch eine steigende Flanke an diesem Eingang ausgelöst. |
ConnectionHdl | DWORD | Verbindungshandle, das vorher vom Funktionsbaustein UA_Connect ausgegeben wurde. |
NodeHdl | DWORD | Knotenhandle, der zuvor vom Funktionsbaustein UA_NodeGetHandle ausgegeben wurde. |
PerformInsert | BOOL | Der Default ist TRUE. |
PerformReplace | BOOL | Der Default ist FALSE. Sofern in der Historie bereits ein Wert für den gegebenen Zeitstempel existiert, soll dieser ersetzt werden, wenn die Option PerformReplace gesetzt ist (= TRUE). Diese Option kann aktuell nur für SQL Adapter ausgewählt werden. Andere Adapter unterstützen die Option nicht. |
DataValueCount | UINT | Legt die Anzahl der übergebenen Werte fest. Eine Maximalanzahl von 1000 Werten wird unterstützt. |
Timeout | TIME | Zeit bis zum Abbruch der Funktion. DEFAULT_ADS_TIMEOUT ist eine globale Konstante, gesetzt auf 5 Sekunden. |
Ein-/Ausgänge
VAR_IN_OUT
DataValues : ARRAY[*] OF UAHADataValue;
ValueErrorIDs : ARRAY[*] OF DWORD;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
DataValues (read-only) | ARRAY | Es werden alle gesammelten Werte in Form eines Feldes vom Typ UAHADataValue übergeben. Die Länge des Feldes ist nicht vorgeschrieben, muss jedoch mindestens der Angabe von DataValueCount entsprechen. Auf die Werte wird intern nur lesend zugegriffen. |
ValueErrorIDs (write-only) | ARRAY | Nach Ausführung des Befehls beinhaltet dieses Feld für jeden Wert einen Fehlercode. Die Länge des Feldes muss mindestens der Angabe von DataValueCount entsprechen. Wenn ein oder mehrere Werte einen Fehler melden, so wird dies auch über die Ausgänge Error und ErrorID des Funktionsbausteins signalisiert. Mithilfe dieses Feldes kann daraufhin ermittelt werden, für welchen Wert welcher Fehler aufgetreten ist. Der Fehlercode 16#80000000 beispielsweise signalisiert eine fehlgeschlagene Operation, sodass der Wert nicht geschrieben werden konnte. |
Ausgänge
VAR_OUTPUT
Done : BOOL;
Busy : BOOL;
Error : BOOL;
ErrorID : DWORD;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Done | BOOL | Schaltet auf TRUE, wenn der Funktionsbaustein erfolgreich ausgeführt wurde. |
Busy | BOOL | TRUE, bis der Baustein einen Befehl ausführt hat, maximal für die Dauer des „Timeout“ am Eingang. Solange Busy = TRUE ist, akzeptieren die Eingänge keinen neuen Befehl. Es wird nicht die Zeit der Verbindung sondern die Empfangszeit überwacht. |
Error | BOOL | Schaltet auf TRUE, wenn bei der Ausführung eines Befehls ein Fehler auftritt. Der befehlsspezifische Fehlercode ist in ErrorID enthalten. |
ErrorID | DWORD | Enthält den befehlsspezifischen ADS Fehlercode des zuletzt ausgeführten Befehls. |
![]() | Anzahl der übergebenen Werte Je größer die Anzahl ist, umso größer ist auch der benötigte Rechenaufwand und damit die SPS-Ausführungsdauer bei Befehlsausführung. |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT 3.1 >= 4024.1 | Win32, Win64, WinCE-x86 | Tc3_PLCopen_OpcUa >= v3.1.9.0 |