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.

FB_RegQueryValue 3: Eingänge

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

Name

Typ

Beschreibung

sNetId

T_AmsNetID

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

T_MaxString

String mit dem SubKey-Namen

sValName

T_MaxString

String mit dem Value-Namen

cbData

UDINT

Anzahl der zu lesenden Value-Datenbytes.

pData

BYTE

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

BOOL

Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

tTimeout

TIME 

Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf.

FB_RegQueryValue 4: Ausgänge

VAR_OUTPUT
    bBusy  : BOOL;
    bError : BOOL;
    nErrId : UDINT;
    cbRead : UDINT;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError

BOOL

Sollte ein Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.

nErrId

UDINT

Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer oder einen befehlsspezifischen Fehlercode zurück (Tabelle).

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.

Name

Typ

Beschreibung

cbRead

UDINT

Anzahl der erfolgreich gelesenen Value-Datenbytes.

Beispiele:

Es sollen aus der Systemregistrierung die Werte AxisID und LogFilePath gelesen werden.

FB_RegQueryValue 5:
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 6:

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

REG_SZ-Value lesen:

FB_RegQueryValue 7:

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)