# kernelv_ch_set_variable_value()

## Prototyp

KERNELV_RETURN | kernelv_ch_set_variable_value (unsigned long int chanIndex, char* varName, KERNELV_VARIABLE *var);

## Beschreibung

Schreiben einer CNC-Kernel definierten Variablen.

Das Schreiben einer Variablen ist nur möglich, wenn diese auch vom NC-Programm aus beschreibbar ist. Externe Variablen können unabhängig von der konfigurierten Zugriffsart immer geschrieben werden.

Aktuell können die folgenden Variablentypen geschrieben werden:

Typ | Beispiel
Externe Variablen | V.E.VAR_1
Globale Variablen, siehe (1) | V.G.WZ_AKT.R
Achsspezifische Variablen | V.A.WCS.X
Programmglobale, eigendefinierte Variablen | V.P.VAR_1
Programmübergreifende, eigendefinierte Variablen | V.S.VAR_1
Programmlokale, eigendefinierte Variablen | V.L.VAR_1

Variablen des Typs V.G.WZ[]. können aktuell nicht geschrieben werden.

Die Identifikation der zu schreibenden Variablen erfolgt anhand ihres Namens und des Kanalindex.

Als Name ist der vollständige Name (inklusive Präfix V.E. und Arrayindex bei Arrayvariablen) anzugeben.

Beispiel: „V.E.VAR_FLOAT_ARRAY[3]“

Der zu schreibende Variablenwert ist in der Struktur KERNELV_VARIABLE *var zu übergeben.

Falls beim Schreiben der Variablen ein Fehler auftrat, wird ein Fehlercode zurückgegeben.

## Parameter

Name | Typ | Bedeutung
chanIndex | unsigned long | Kanalindex des Kanals von dem die Variable gelesen werden soll.
varName | char* | Zeiger auf den Variablennamen.
var | KERNELV_VARIABLE* | Zeiger auf Struktur, in die der Variablenwert und Typ geschrieben werden soll.

## Rückgabewerte

Symbol | Wert | Bedeutung
RET_FINISHED | 0 | Die Funktion wurde fehlerfrei durchgeführt.
ERR_INVALID_CHAN | -1 | Der übergebene Kanalindex ist größer als die Anzahl der konfigurierten Kanäle - 1
ERR_CNC_NOT_INIT | -3 | Der Simulations-CNC-Kern ist noch nicht initialisiert.
ERR_CNC_RET_MEMORY | -4 | Der oder die Rückgabewerte passen nicht in den bereitgestellten Speicher.
ERR_INTERNAL_ERROR | -11 | Es ist ein DLL-interner Fehler aufgetreten.
ERR_UNKNOWN_VARIABLE | -12 | Der Variablenname ist im CNC-Kern nicht bekannt.
ERR_VARIABLE_SYNTAX | -13 | Der Variablenname ist syntaktisch nicht korrekt, z.B. schließende Klammer bei Arrayvariablen fehlt.
ERR_DATA_TYPE_MISMATCH | -14 | Bei einem Schreibzugriff auf eine Variable passt stimmt der übergebene Datentyp nicht mit dem CNC-intern verwendeten Datentyp überein.
ERR_VAR_NAME_LENGTH | -18 | Der an die Funktion übergebene Variablenname überschreitet die maximal zulässige Länge (KERNELV_VAR_NAME_LENGTH).
ERR_ARRAY_NOT_SUPPORTED | -21 | Bei manchen Echtzeit Varianten der CNC ist es möglich ein Array ‚en block‘ zu lesen bzw. zu schreiben, indem beim Zugriff der Arrayindex weggelassen wird, diese Zugriffsart wird aktuell von der kernelv-DLL nicht unterstützt.
ERR_VAR_NOT_WRITEABLE | -22 | Es wurde versucht eine nicht schreibbare Variable zu beschreiben. Für den Schreibzugriff auf Variable gelten dieselben Zugriffsregeln, wie sie auch innerhalb eines NC-Programms gelten. Einzige Ausnahme hierbei sind V.E-Variable, diese können, unabhängig von den konfigurierten Zugriffsrechten, immer beschrieben werden.