Bibliothek Recipe Management - RecipeManCommands
Die Methoden des Funktionsbausteins RecipeManCommands der Bibliothek „Recipe Management“ ermöglichen, die Rezepturen programmatisch zu verwalten.
Die Anwendung erstellt automatisch Rezepturdateien mit Namen <Rezeptur>.<Rezepturdefinition>.txtrecipe auf der Steuerung. Sie dienen als Zwischenablage beim Lesen und Schreiben der Rezepturvariablen. Die Option Rezepturänderungen automatisch in Rezepturdateien speichern in der Registerkarte Rezepturverwalter > Allgemein beeinflusst den Dateizugriff auf diese Dateien. |
Wenn die Option Änderungen in Rezepturen automatisch speichern aktiviert ist, werden die Rezepturen der Definition in TwinCAT und die impliziten Rezepturdateien auf der Steuerung automatisch gleich gehalten. Die Änderung von Rezepturen führt dann auch zu Dateizugriffen. |
Methode CreateRecipe
Die Methode erzeugt eine neue Rezeptur in der angegebenen Rezepturdefinition. Anschließend liest sie die aktuellen SPS-Werte in die neue Rezeptur und speichert sie als Rezepturdatei mit Standardname. Der Standardname ist <Rezeptur>.<Rezepturdefinition>.<Rezepturerweiterung>.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
CreateRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_ALREADY_EXIST ERR_RECIPE_NOMEMORY ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode CreateRecipeNoSave
Die Methode erzeugt eine neue Rezeptur in der angegebenen Rezepturdefinition. Anschließend liest sie die Istwerte in die neue Rezeptur.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
CreateRecipeNoSave | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_ALREADY_EXIST ERR_RECIPE_NOMEMORY ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode DeleteRecipe
Die Methode löscht eine Rezeptur aus der Rezepturdefinition.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
DeleteRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode DeleteRecipeFile
Die Methode löscht die angegebene Rezepturdatei einer Rezeptur. Die Rezepturdatei muss im Standardnamen <Rezeptur>.<Rezepturdefinition>.<Rezepturerweiterung> gespeichert sein.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
DeleteRecipeFile | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_RECIPE_FILE_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode LoadAndWriteRecipe
Die Methode lädt eine Rezeptur aus der angegebenen Rezepturdatei. Die Rezepturdatei muss im Standardnamen <Rezeptur>.<Rezepturdefinition>.<Rezepturerweiterung> gespeichert sein. Anschließend schreibt sie die Rezeptur in die SPS-Variablen.
Einträge in der Rezepturdatei, die keine Wertezuweisung enthalten, werden nicht geladen und geschrieben. Sehen Sie hierzu die Beschreibung des Menübefehls Rezeptur laden und schreiben. |
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
LoadAndWriteRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_RECIPE_FILE_NOT_FOUND ERR_RECIPE_MISMATCH ERR_RECIPE_NOT_ALL_VARIABLES_WERE_LOADED ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode LoadFromAndWriteRecipe
Die Methode lädt die angegebene Rezepturdatei in eine Rezeptur. Anschließend schreibt sie die Rezeptur in die SPS-Variablen.
Einträge in der Rezepturdatei, die keine Wertezuweisung enthalten, werden nicht geladen und geschrieben. Sehen Sie hierzu die Beschreibung des Menübefehls Rezeptur laden und schreiben. |
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
FileName | STRING (255) | Name der Datei |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
LoadFromAndWriteRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_RECIPE_FILE_NOT_FOUND ERR_RECIPE_MISMATCH ERR_RECIPE_NOT_ALL_VARIABLES_WERE_LOADED ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Siehe auch:
- Dokumentation TC3 User Interface: Befehl Rezeptur laden und schreiben
Methode LoadRecipe
Die Methode lädt eine Rezeptur aus einer Rezepturdatei. Die Rezepturdatei muss im Standardnamen <Rezeptur>.<Rezepturdefinition>.<Rezepturerweiterung> gespeichert sein.
Einträge in der Rezepturdatei, die keine Wertezuweisung enthalten, werden nicht geladen und geschrieben. Sehen Sie hierzu die Beschreibung des Menübefehls Rezeptur laden und schreiben. |
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
LoadRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_RECIPE_FILE_NOT_FOUND ERR_RECIPE_MISMATCH ERR_RECIPE_NOT_ALL_VARIABLES_WERE_LOADED ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Siehe auch:
- Dokumentation TC3 User Interface: Befehl Rezeptur laden und schreiben
Methode ReadAndSaveAs
Die Methode liest die aktuellen SPS-Werte aus den Variablen der Rezepturdefinition, und speichert diesen Datensatz in einer Rezepturdatei ohne die existierende Standardrezepturdatei <recipe.recipedefinition.extension> zu ändern.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition. Die in der Rezepturdefinition angegebenen Variablen werden ausgelesen. |
FileName | STRING(255) | Name der Datei. In der Datei wird der aktuell ausgelesenen Datensatz als Rezeptur gespeichert. |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
ReadAndSaveAs | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_SAVE_ERR ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode ReadAndSaveRecipe
Die Methode liest die aktuellen SPS-Werte in die Rezeptur. Anschließend speichert sie die Rezeptur in eine Rezepturdatei mit Standardname. Der Standardname ist <Rezeptur>.<Rezepturdefinition>.<Rezepturerweiterung>. Der Inhalt einer eventuell existierenden Datei wird überschrieben.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
ReadAndSaveRecipe | DWORD | Rückgabewert, mögliche Werte: ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_RECIPE_SAVE_ERR ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode ReadAndSaveRecipeAs
Die Methode liest die aktuellen SPS-Werte in die Rezeptur. Anschließend speichert sie die Rezeptur in eine angegebene Rezepturdatei. Der Inhalt einer eventuell existierenden Datei wird überschrieben.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
FileName | STRING | Name der Datei |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
ReadAndSaveRecipeAs | DWORD | Rückgabewert, mögliche Werte: ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_RECIPE_SAVE_ERR ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode SaveRecipe
Die Methode speichert die Rezeptur in eine Rezepturdatei mit Standardname. Der Standardname ist <Rezeptur>.<Rezepturdefinition>.<Rezepturerweiterung>. Der Inhalt einer eventuell existierenden Datei wird überschrieben.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
SaveRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_RECIPE_SAVE_ERR ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode ReadRecipe
Die Methode liest die aktuellen SPS-Werte in die Rezeptur ein.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
ReadRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK Dataserver-Fehler von 16#2000 bis 16#20FF Datasourcedriver-Fehler von 16#2100 bis 16#21FF |
Methode WriteRecipe
Die Methode schreibt die Rezeptur in die SPS-Variablen.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName | STRING | Name der Rezeptur |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
WriteRecipe | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode ReloadRecipes
Die Methode lädt die Liste der Rezepturen von einem Dateisystem. Dabei werden Rezepturen mit dem Standardnamen <Rezeptur>.<Rezepturdefinition>.<Rezepturerweiterung> berücksichtigt, die in dem im Rezepturverwalter definierten Pfad liegen.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
ReloadRecipes | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode GetRecipeCount
Die Methode gibt die Anzahl der Rezepturen einer Rezepturdefinition zurück.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
GetRecipeCount | INT | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode GetRecipeNames
Die Methode gibt die Rezepturnamen einer Rezepturdefinition zurück.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
pStrings | POINTER TO ARRAY [] OF STRING | Zeiger auf das Array, das die Rezepturnamen enthält. |
iSize | INT | Anzahl der Elemente des STRING-Arrays |
iStartIndex | INT | Startindex Beispiel: 1 |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
GetRecipeNames | DWORD | Rückgabewert, mögliche Werte: ERR_RECIPE_DEFINITION_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Beispiel:
Es gibt zum Beispiel 50 Rezepturen. Wenn Sie eine Tabelle erzeugen wollen, die 10 Rezepturnamen gleichzeitig anzeigt, müssen Sie ein STRING-Array definieren:
strArr: ARRAY[0..9] OF STRING;
Korrespondierend zum iStartIndex erhalten Sie dann die Rezepturnamen für den spezifizierten Bereich.
iStartIndex := 0; die Namen 0..9 werden zurückgegeben
iStartIndex := 20; die Namen 20..29 werden zurückgegeben
In diesem Beispiel gilt:
iSize := 10;
Methode GetRecipeValues
Die Methode gibt die Werte einer Rezeptur zurück.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName |
| Name der Rezeptur |
pStrings | POINTER TO ARRAY [] OF STRINGS | Zeiger auf Zeichenketten, in denen die Rezepturwerte gespeichert werden. |
iSize | INT | Größe des Zeichenfolgen-Arrays. |
iStartIndex | INT | Der Startindex. |
iStringLength | INT | Die Länge der Zeichenkette im Array. |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
GetRecipeValues | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Beispiel:
Es gibt zum Beispiel 50 Rezepturen. Wenn Sie eine Tabelle erzeugen wollen, die 10 Rezepturwerte gleichzeitig anzeigt, müssen Sie dazu ein STRING-Array definieren:
strArr: ARRAY[0..9] OF STRING;
Korrespondierend zum iStartIndex erhalten Sie dann die Rezepturwerte für einen spezifizierten Bereich.
iStartIndex := 0; die Werte 0..9 werden zurückgegeben
iStartIndex := 20; die Namen 20..29 werden zurückgegeben
In diesem Beispiel gilt:
iStringLength := 80;
iSize := 10;
Methode GetRecipeVariableNames
Die Methode gibt die Namen der Rezepturvariablen einer Rezeptur wieder.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName |
| Name der Rezeptur |
pStrings | POINTER TO ARRAY [] OF STRINGS | Zeiger auf STRING-Datentypen, in denen die Namen der Rezepturvariablen gespeichert werden. |
iSize | INT | Größe des STRING-Arrays. |
iStartIndex | INT | Der Startindex. |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
GetRecipeVariableNames | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Beispiel:
Es gibt zum Beispiel 50 Rezepturen. Wenn Sie eine Tabelle erzeugen wollen, die 10 Variablennamen einer Rezeptur gleichzeitig anzeigt, müssen Sie ein STRING-Array definieren:
strArr: ARRAY[0..9] OF STRING;
Korrespondierend zum iStartIndex erhalten Sie dann die Variablennamen der Rezeptur für den spezifizierten Bereich.
iStartIndex := 0; die Namen 0..9 werden zurückgegeben
iStartIndex := 20; die Namen 20..29 werden zurückgegeben
In diesem Beispiel gilt:
iSize := 10;
Methode SetRecipeValues
Die Methode setzt die Rezepturwerte einer Rezeptur.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
RecipeDefinitionName | STRING | Name der Rezepturdefinition |
RecipeName |
| Name der Rezeptur |
pStrings | POINTER TO ARRAY [] OF STRINGS | Zeiger auf STRING-Datentypen, in denen die Rezepturwerte gespeichert werden. |
iSize | INT | Größe des STRING-Arrays. |
iStartIndex | INT | Der Startindex. |
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
SetRecipeValues | DWORD | ERR_RECIPE_DEFINITION_NOT_FOUND ERR_RECIPE_NOT_FOUND ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Beispiel:
Es gibt zum Beispiel 50 Rezepturen. Wenn Sie eine Tabelle erzeugen wollen, die 10 Rezepturwerte gleichzeitig setzt, müssen Sie ein STRING-Array definieren:
strArr: ARRAY[0..9] OF STRING;
Korrespondierend zum iStartIndex können Sie dann die Rezepturwerte für einen spezifizierten Bereich festlegen.
iStartIndex := 0; Die Werte 0..9 werden gesetzt
iStartIndex := 20; Die Werte 20..29 werden gesetzt
In diesem Beispiel gilt:
iStringLength := 80;
iSize := 10;
Methode GetLastError
Die Methode gibt den letzten Fehler der vorherigen Operation zurück.
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
GetLastError | DWORD | Rückgabewert, mögliche Werte: ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode ResetLastError
Die Methode setzt den letzten Fehler zurück.
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
ResetLastError | DWORD | ERR_NO_RECIPE_MANAGER_SET ERR_OK |
Methode SetStoragePath
Die Methode dient dem Einstellen des Speicherpfads für die Rezepturdatei. Sie überschreibt die Pfadangabe im Dialog Speicherung des Rezepturverwalters.
Eingänge (VAR_INPUT)
Name | Datentyp | Beschreibung |
---|---|---|
stPath | STRING | Dateipfad, Beispiel:
|
Rückgabewert
Name | Datentyp | Beschreibung |
---|---|---|
stPath | BOOL | TRUE (Pfad wurde gesetzt) FALSE Mögliche Fehler: ERR_OK ERR_NO_RECIPE_MANAGER_SET |
Rückgabewerte
Die Rückgabewerte der oben beschriebenen Funktionen sind in der GVL ReturnValues enthalten.
Es handelt sich um InOut-Konstanten vom Datentyp UDINT.
Name | Initialisierungswert | Kommentar |
---|---|---|
ERR_OK | 16#0 | Die Operation wurde erfolgreich durchgeführt. |
ERR_FAILED | 16#1 | Die Operation schlug fehl. |
ERR_PARAMETER | 16#2 | Falscher Parameter |
ERR_NOTINITIALIZED | 16#3 | Das Dataserver-Objekt ist nicht initialisiert. Der Dataserver wird benötigt, wenn die Rezepturverwaltung in Kombination mit TwinCAT HMI verwendet wird. |
ERR_NOTIMPLEMENTED | 16#C | Der Dataserver implementiert nicht die Schnittstelle IDataServer4, die benötigt wird, wenn die Rezepturverwaltung in Kombination mit TwinCAT HMI verwendet wird. |
ERR_NO_OBJECT | 16#10 | Nicht alle Variablen einer Rezepturdefinition können über den Dataserver geschrieben werden. Nur die gültigen Variablen werden geschrieben. |
ERR_NOMEMORY | 16#11 | Der Dataserver hat nicht genügend Speicher. |
ERR_RECIPE_FILE_NOT_FOUND | 16#4000 | Die Rezepturdatei wurde nicht gefunden. |
ERR_RECIPE_MISMATCH | 16#4001 | Der Inhalt der Rezepturdatei passt nicht zur aktuellen Rezeptur. Dieser Fehler wird nur ausgegeben, wenn der Speicherungstyp textuell ist (siehe Editor Rezepturverwalter, Registerkarte Speicherung, Speicherungstyp) und wenn ein Variablenname in der Datei nicht mit dem Variablenname in der Rezepturdefinition übereinstimmt. Die Rezepturdatei wird nicht geladen, wenn dieser Fehler auftritt. Mögliche Ursachen: Eine Variable wurde aus der Rezepturdefinition im Projekt entfernt. |
ERR_RECIPE_SAVE_ERR | 16#4002 | Der Speichervorgang schlug fehl. Mögliche Ursachen
|
ERR_RECIPE_NOT_FOUND | 16#4003 | Die Rezeptur existiert nicht. |
ERR_RECIPE_DEFINITION_NOT_FOUND | 16#4004 | Die Rezepturdefinition existiert nicht. |
ERR_RECIPE_ALREADY_EXIST | 16#4005 | Die Rezeptur existiert bereits in der Rezepturdefinition. Legen Sie eine neue Rezeptur unter einem anderen Namen an. |
ERR_NO_RECIPE_MANAGER_SET | 16#4006 | Der globale Rezepturverwalter ist nicht angelegt. Mögliche Ursache
|
ERR_RECIPE_NOT_ALL_VARIABLES_WERE_LOADED | 16#4007 | Die Rezepturdefinition enthält mehr Variablen als die Rezepturdatei. In diesem Fall werden die Variablenwerte der Rezepturdatei auf jeden Fall geschrieben. Dies ist nur eine Information, kein tatsächlicher Fehler. |
ERR_RECIPE_NOMEMORY | 16#4008 | Die Rezepturdefinition hat keinen freien Speicher, um eine neue Rezeptur anzulegen. Mögliche Ursachen
|
ERR_RECIPE_MANAGER_LOCKED_DURING_ONLINE_CHANGE | 16#4009 | Der Rezepturverwalter war während des Online-Change blockiert. Mögliche Ursachen: Einige der RecipeMan-Befehle, die während eines Online-Change ausgeführt werden sollten, wurden nicht ausgeführt. |
ERR_SOURCE_EXHAUSTED | 16#40A0 | Verwendet für UTF8 Helper |
ERR_TARGET_EXHAUSTED | 16#40A1 | Verwendet für UTF8 Helper |
ERR_SOURCE_ILLEGAL | 16#40A2 | Verwendet für UTF8 Helper |