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!

 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.

FB_RegQueryValue 2:

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

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

REG_SZ-Value lesen:

FB_RegQueryValue 4:

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)