UA_HistoryUpdate

UA_HistoryUpdate 1:

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.

UA_HistoryUpdate 2:

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

UA_HistoryUpdate 3: 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.

UA_HistoryUpdate 4: 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.

UA_HistoryUpdate 5: 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.

UA_HistoryUpdate 6:

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