FB_RegQueryValue

FB_RegQueryValue 1:

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!

FB_RegQueryValue 2:

HKEY_LOCAL_MACHINE\SOFTWARE\ bei 64 Bit Betriebssystemen

In einem 64 Bit Windows Betriebssystem werden alle Registry Einträge von und für 32 Bit Anwendungen nicht unter HKEY_LOCAL_MACHINE\SOFTWARE\ sondern unter HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ abgelegt.
Die Funktionsbausteine FB_RegQueryValue und FB_RegSetValue arbeiten wie jede 32 Bit Anwendung automatisch unterhalb des WOW6432Node-Ordners, wenn ein Registry Eintrag unterhalb vom SOFTWARE-Ordner ausgewählt wird. Die Umleitung wird automatisch vom Betriebssystem ausgeführt.

VAR_INPUT

VAR_INPUT
    sNetId    : T_AmsNetId; 
    sSubKey   : T_MaxString;
    sValName  : T_MaxString;
    cbData    : UDINT;
    pData     : POINTER TO BYTE;
    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 (Typ: T_AmsNetID). Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

sSubKey: String mit dem SubKey-Namen (Typ: T_MaxString).

sValName: String mit dem Value-Namen (Typ: T_MaxString).

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 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.

FB_RegQueryValue 3:

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:

FB_RegQueryValue 4:

Hier wurde der Wert 0x22 aus der Registrierung in die SPS-Variable nAxisId eingelesen.

REG_SZ-Value lesen:

FB_RegQueryValue 5:

Hier wurde der String 'c:\MyProject\Log' aus der Registrierung in die SPS-Variable sValData eingelesen.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (WES7/Win7/Win10: TC RT x86/x64, WEC6/7: TC RT x86, WEC7: TC CE7 ARMV7, TC/BSD: TC RT x64, TC OS ARMT2)

Tc2_Utilities (System)