|
<< Click to Display Table of Contents >> Navigation: Komponenten > Steuerung, Logik & Zeit > Multikonverter |
Diese Komponente dient dazu, eigene Abläufe / Programmfunktionen / Schnittstellen zu realisieren. Hierbei kann die Anzahl an Ein- und Ausgängen frei gewählt werden.
Die hierfür zu verwendende Programmiersprache ist: C# oder auch VB.NET.
Hinweis: Diese Methode ist nur für Programmier - Profis geeignet. Kein kostenfreier Support! Bei fehlerhafter Eingabe kann es zu Beeinträchtigungen (oder Absturz) des Systems führen! Bitte unbedingt immer einen try {} catch(){} um die Funktion machen!
Datenpunkte der Komponente
Name |
Typ |
Funktion |
|---|---|---|
Dynamisch |
Ordner |
Im Ordner Dynamisch werden die angelegten Ein- und Ausgänge angezeigt. |
Eigenschaften der Komponente
Name |
Standard |
Funktion |
|---|---|---|
Eingänge |
0 |
Festlegen der Anzahl und der Namen der Eingänge |
Ausgänge |
0 |
Festlegen der Anzahl und der Name der Ausgängen |
Parser Code |
166 Bytes |
Enthält die Methode Parse für das Parsen des empfangenen Wertes. Hier kann ein eigener Code in den Sprachen C# oder VisualStudio eingefügt werden. |
Passwort |
|
Hier kann der Zugriff auf den Code-Editor mit einem Passwort geschützt werden. |
Status speichern |
|
Mit dieser Option werden die Zustände an der Ausgänge gespeichert. |
Mit einem Klick auf die 3 Punkte neben dem Text "166 Bytes" öffnet sich das Programmierfenster:

Beispiel-Code um einen float data type auf einen string data typ zu konvertieren:
Eingänge:
Format --> Eingabe des Text-Ausgabeformats. Zum Beispiel wird über eine Texteingabe das Format mit 0,0 oder 0,00 festgelegt.
Input --> Eingang für den float-Wert.
Ausgänge:
Output --> Ausgabe des strings.
C# Code:
public override void Parse(string sInputName, Hashtable htInputValues, Hashtable htOutputValues, System.Collections.Generic.List<string> OutputNames = null)
{
try
{
if ((sInputName != null) && (sInputName == "Input")) //Prüfung, ob ein Eingabewert vorhanden ist
{
if (htInputValues["Format"] != null) //Prüft, ob eine Format-Vorgabe eingegeben wurde
{
string sFormat = (string)htInputValues["Format"]; //Wandelt das Komma in Punkt um
sFormat = sFormat.Replace(",", ".");
if (htInputValues["Input"] is DataPoint2OctetFloatValue) //Prüft den Wert-Eingang, welcher Datentyp es ist und wandelt es in einen String um
{
float ValueAsFloat = ((DataPoint2OctetFloatValue)htInputValues["Input"]).GetOctet2FloatValue();
htOutputValues["Output"] = ValueAsFloat.ToString(sFormat);
}
else if (htInputValues["Input"] is DataPoint4OctetFloatValue) //Prüft den Wert-Eingang, welcher Datentyp es ist und wandelt es in einen String um
{
double ValueAsDouble = ((DataPoint4OctetFloatValue)htInputValues["Input"]).GetOctet4FloatValue();
htOutputValues["Output"] = ValueAsDouble.ToString(sFormat);
}
else if (htInputValues["Input"] is double) //Prüft den Wert-Eingang, welcher Datentyp es ist und wandelt es in einen String um
{
double ValueAsDouble = (double)htInputValues["Input"];
htOutputValues["Output"] = ValueAsDouble.ToString(sFormat);
}
else if (htInputValues["Input"] is float) //Prüft den Wert-Eingang, welcher Datentyp es ist und wandelt es in einen String um
{
float ValueAsFloat = (float)htInputValues["Input"];
htOutputValues["Output"] = ValueAsFloat.ToString(sFormat);
}
}
}
}
catch (Exception) { } //Sollte ein Fehler aufgetreten sein, wird er hier abgefangen
}
VB Code:
Public Overrides Sub Parse(ByVal sInputName As String, ByVal htInputValues As Hashtable, ByVal htOutputValues As Hashtable, Optional ByVal OutputNames As System.Collections.Generic.List(Of String) = Nothing)
Try
If (Not (sInputName Is Nothing)) AndAlso (sInputName = "Input") Then
If (Not (htInputValues("Format") Is Nothing)) Then
Dim sFormat As String = DirectCast(htInputValues("Format"), String
)
sFormat = sFormat.Replace(",", ".")
If TypeOf htInputValues("Input") Is DataPoint2OctetFloatValue
Then
Dim ValueAsFloat As Single = DirectCast
(htInputValues("Input"), DataPoint2OctetFloatValue).GetOctet2FloatValue()
htOutputValues("Output") = ValueAsFloat.ToString(sFormat)
ElseIf TypeOf htInputValues("Input") Is
DataPoint4OctetFloatValue Then
Dim ValueAsDouble As Double = DirectCast
(htInputValues("Input"), DataPoint4OctetFloatValue).GetOctet4FloatValue()
htOutputValues("Output") = ValueAsDouble.ToString(sFormat)
ElseIf TypeOf htInputValues("Input") Is Double Then
Dim ValueAsDouble As Double = CDbl(htInputValues("Input"))
htOutputValues("Output") = ValueAsDouble.ToString(sFormat)
ElseIf TypeOf htInputValues("Input") Is Single Then
Dim ValueAsFloat As Single = CSng(htInputValues("INput"))
htOutputValues("Output") = ValueAsFloat.ToString(sFormat)
End If
End If
End If
Catch generatedExceptionName As Exception
End Try
End Sub