Multikonverter

<< 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:

ParserCode

 

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