Benutzerdefiniertes Farbformat
Als weiteres Beispiel der Color Control Konfiguration wird ein RGB-Farbformat mit einem Wertebereich zwischen 0 und 1 betrachtet. Um dies in dem Color Control darzustellen, müssen die Kanäle im ColorChannel
Attribut als float
und mit einem maxValue
von 1
eingestellt werden.
![Benutzerdefiniertes Farbformat 1:](Images/png/9007210947615371__Web.png)
Die Werte des ColorChannels
Attributs können per Skript wie folgt geschrieben werden:
[
{
"color": {
"color": "rgba(255, 0, 0, 1)"
},
"float": true,
"maxValue": 1.0
},
{
"color": {
"color": "rgba(0, 255, 0, 1)"
},
"float": true,
"maxValue": 1.0
},
{
"color": {
"color": "rgba(0, 0, 255, 1)"
},
"float": true,
"maxValue": 1.0
}
]
ColorBoxFormatting Funktion
Damit die Farb-Box trotz des veränderten Wertebereich die richtige Farbe anzeigt, muss das BoxColorConversion
Attribut angepasst werden. Anders als bei den Standard-Konvertierungen existiert hierfür keine vorgefertigte Funktion. Stattdessen ist die Erstellung einer eigenen Funktion notwendig. Das folgende Beispiel zeigt, wie eine solche Funktion für den oben genannten Anwendungsfall angelegt wird und welche Schnittstellen diese haben muss.
![]() | Die allgemeine Verwendung von Funktionen wird in der HMI-Dokumentation erklärt. |
Nach dem Erstellen der TypeScript Funktion müssen zwei Parameter angelegt werden. Der erste bekommt den zu konvertierenden Farbwert übergeben und muss daher vom Typ Array
angelegt werden. Der zweite Parameter gibt die Konvertierungsrichtung an und muss als Boolean
angelegt werden. Mit True
werden die Werte nach RGB konvertiert mit False
von RGB zurück in das benutzerdefinierte Format. Es ist zu beachten, dass sich diese übergebenen Parameter zum Zeitpunkt der Funktionsausführung aus Timing-Gründen von den Werten der entsprechenden Control-Eigenschaften unterscheiden können.
Die Funktion muss einen Wert vom Typ Number
zurückgeben, der dann in der Farb-Box angezeigt wird.
![Benutzerdefiniertes Farbformat 3:](Images/png/9007211933673355__Web.png)
Im folgenden Codebeispiel werden die Skalierung der Farbwerte abhängig vom übergebenen reverse Wert angepasst:
module TcHmi {
export module Functions {
export module TcHmiProject {
export function ConvertRGB(color: number[], reverse: boolean) {
if (!reverse) {
return color.map((value: number) => value * 255)
}
else {
return color.map((value: number) => value / 255)
}
}
}
registerFunctionEx('ConvertRGB', 'TcHmi.Functions.TcHmiProject, TcHmiProject.ConvertRGB);
}
}
Damit ist gewährleistet, dass die Farb-Box die richtige Farbe anzeigt und dass ein manuelles Ändern der Farbe in der Farb-Box zu korrekten Farbwerten führt.