FB_RegSetValue

FB_RegSetValue 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_RegSetValue" können einzelne Schlüsselwerte (Values) oder neue Schlüsselnamen und Werte (SubKeys+Values) in dem Zweig mit dem vordefinierten Handle HKEY_LOCAL_MACHINE geschrieben bzw. generiert werden. Es können beliebige Value-Typen (z. B. REG_DWORD, REG_SZ) oder maximal 500 Byte Binärdaten (REG_BINARY) in die Systemregistrierung geschrieben werden. Ist ein Schlüsselwert noch nicht vorhanden, dann wird dieser automatisch neu erzeugt.

Bemerkung:

Die sSubKey und sValueName-Strings dürfen keine Leerstrings sein!

FB_RegSetValue 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;
    eValType : E_RegValueType;
    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 geschrieben 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).

eValType: Das Datentypformat der zu schreibenden Registrierungsdaten z. B: REG_DWORD oder REG_SZ (Typ: E_RegValueType).

cbData: Anzahl der zu schreibenden Value-Datenbytes ( Bei Stringvariablen inklusiv der abschließenden Null ).

pD ata: Adresse von einem Datenpuffer/SPS-Variablen, der/die Value-Daten enthält. Die Adresse kann dem ADR-Operator ermittelt werden. Der Programmierer ist selbst dafür verantwortlich den Datenpuffer so zu dimensionieren, dass cbData-Datenbytes daraus entnommen werden können.

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;
    cbWrite  : 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 den Befehlsspezifischen Fehlercode (Tabelle).

cbWrite: Anzahl der erfolgreich geschriebenen 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.

Beispiel:

In dem Zweig mit dem vordefinierten Handle HKEY_LOCAL_MACHINE soll ein SubKey 'SOFTWARE\MyCompany\MyProject' mit dem Schlüsselnamen 'LogFileName' , dem Typ REG_SZ

und Wert 'c:\MyProject\Log'' neu angelegt und gesetzt werden.

PROGRAM MAIN
VAR
    fbRegSetValue   : FB_RegSetValue;
    bBusy               : BOOL;
    bError          : BOOL;
    nErrId          : UDINT;
    cbWrite         : UDINT;
    bWrite          : BOOL;
    sNewValue       : STRING := 'c:\MyProject\Log';
END_VAR

FB_RegSetValue 3:

FB_RegSetValue 4:

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)