FB_RegQueryValue
Die Systemregistrierung ist ein hierarchisch strukturierter Baum. Ein Knoten im Baum wird als Schlüssel (Key) bezeichnet. Jeder Schlüssel kann wiederum Unterschlüssel (SubKeys) und Datenwerte (Values) enthalten. Mit dem Funktionsbaustein "FB_RegQueryValue" können einzelne Datenwerte (Values) aus der Systemregistrierung aus dem Zweig mit dem vordefinierten Handle HKEY_LOCAL_MACHINE ausgelesen werden. Beim Erfolg werden cbData-Datenbytes in den Puffer mit der Adresse pData hineinkopiert. Mit dem Funktionsbaustein können beliebige Value-Typen (z.B. REG_DWORD, REG_SZ) oder Binärdaten mit einer unbegrenzten Bytelänge (REG_BINARY) ausgelesen werden.
Bemerkung:
Die sSubKey und sValueName-Strings dürfen keine Leerstrings sein!
VAR_INPUT
VAR_INPUT
sNetId :T_AmsNetId;
sSubKey :T_MaxString;
sValName :T_MaxString;
cbData :UDINT;
pData :UDINT;
bExecute :BOOL;
tTimeOut :TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
sNetId: Hier kann ein String mit der Netzwerkadresse des TwinCAT-Rechners angegeben werden, dessen Systemregistrierung gelesen werden soll. Für den lokalen Rechner kann auch ein Leerstring angegeben werden.
sSubKey: String mit dem SubKey-Namen.
sValName: String mit dem Value-Namen.
cbData: Anzahl der zu lesenden Value-Datenbytes.
pData: Adresse eines Datenpuffers/Variablen in den/die Value-Daten hineinkopiert werden sollen. Die Adresse kann dem ADR-Operator ermittelt werden. Der Programmierer ist selbst dafür verantwortlich den Datenpuffer so zu dimensionieren, dass dieser cbData-Datenbytes aufnehmen kann.
bExecute: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.
tTimeOut: Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf.
VAR_OUTPUT
VAR_OUTPUT
bBusy :BOOL;
bError :BOOL;
nErrId :UDINT;
cbRead :UDINT;
END_VAR
bBusy: Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.
bError: Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.
nErrId: Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer oder einen Befehlsspezifischen Fehlercode zurück (Tabelle).
cbRead: Anzahl der erfolgreich gelesenen Value-Datenbytes.
Fehlercodes | Fehlerbeschreibung |
---|---|
0x00 | Kein Fehler |
0x01 | Der Key mit dem Namen sSubKey konnte nicht geöffnet/gefunden werden. |
0x02 | Der Schlüsselwert mit dem Namen sValName konnte nicht geöffnet/gefunden werden. |
Beispiele:
Es sollen aus der Systemregistrierung die Werte AxisID und LogFilePath gelesen werden.
PROGRAM MAIN
VAR
fbRegQueryValue : FB_RegQueryValue;
bRead : BOOL;
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
cbRead : UDINT;
sValData : STRING;
nAxisID : DWORD;
END_VAR
REG_DWORD-Value lesen:
Hier wurde der Wert 0x22 aus der Registrierung in die SPS-Variable nAxisId eingelesen.
REG_SZ-Value lesen:
Hier wurde der String 'c:\MyProject\Log' aus der Registrierung in die SPS-Variable sValData eingelesen.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.7.0 Build > 519 | PC or CX (x86) | TcPlcUtilities.Lib; Standard.Lib; PLCSystem.Lib; TcPLCAds.Lib; PLCHelper.Lib; |
TwinCAT v2.8.0 Build > 723 | PC or CX (x86) | TcUtilities.Lib |
TwinCAT v2.10.0 Build >= 1301 | CX (ARM) |