Design

Führen Sie folgende Schritte für das Beispiel in der Projektoberfläche aus:

  1. Öffnen Sie eine View im Arbeitsbereich.
  2. Wechseln Sie hier zur Ansicht Xaml und kopieren Sie den folgenden XAML-Code in den LayoutRoot-Knoten.
    <Grid x:Name="grdSample" Margin="41,142.048,67,138.191"  HorizontalAlignment="Left" VerticalAlignment="Top">
        <Grid.RowDefinitions>
            <RowDefinition  Height="0.216*"/>
            <RowDefinition Height="0.784*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0.221*"/>
            <ColumnDefinition  Width="0.378*"/>
            <ColumnDefinition Width="0.401*"/>
        </Grid.ColumnDefinitions>
        <Border BorderBrush="Black" BorderThickness="1" Margin="0" Grid.RowSpan="2" CornerRadius="10" Background="#FFFB5B2B"/>
        <Border BorderBrush="Black" BorderThickness="1" Grid.Column="1" Margin="0" Grid.RowSpan="2" CornerRadius="10" Background="#FF3437F9"/>
        <Border BorderBrush="Black" BorderThickness="1" Grid.Column="2" Margin="0" Grid.RowSpan="2" CornerRadius="10" Background="#FF7DFF00"/>     
        <vw:NumericVarIn x:Name="viRawValue" Margin="10,66.788,10,0" VariableName="Ch1.RawValue" Grid.Row="1" Height="40.658" VerticalAlignment="Top"/>
        <vw:Label Height="19" VerticalAlignment="Top" Margin="10,39.788,10,0" Text="Sensor raw value" Grid.Row="1" d:LayoutOverrides="VerticalAlignment"/>
        <vw:Label Width="220" Height="21.333" VerticalAlignment="Top" Margin="10,39.788,10,0" Text="Distance (sensor independent)" Grid.Column="1" Grid.Row="1" d:LayoutOverrides="VerticalAlignment"/>
        <vw:NumericVarIn x:Name="vinSensorIndependent" Margin="10,66.788,10,0" VariableName="Ch1.SensorIndependent" RenderTransformOrigin="0.5,0.5" Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" Height="40.658">
            <vw:NumericVarIn.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform  Angle="0"/>
                    <TranslateTransform/>
                </TransformGroup>      
            </vw:NumericVarIn.RenderTransform>
        </vw:NumericVarIn>     
        <vw:Label Height="24"  VerticalAlignment="Top" Margin="10,4.454,10,0" Text="Language dependent  distance" d:LayoutOverrides="VerticalAlignment" Grid.Column="2" Grid.Row="1"/>
        <vw:NumericVarIn x:Name="vinLangDepDist" Margin="10,26.618,70,0" VariableName="Ch1.SensorIndependent_Lng" Grid.Column="2" Grid.Row="1" Height="41.66" VerticalAlignment="Top"/>
        <vw:Label Margin="10,84.449,10,0" Text="Language dependent distance (ext.)"  Grid.Column="2" Height="20" VerticalAlignment="Top" Grid.Row="1"/>
        <vw:NumericVarIn x:Name="vinLangDepDistExt" Margin="10,108.449,70,98.688" VariableName="Ch1.SensorIndependent_Ext" Grid.Column="2" Grid.Row="1"/>
        <vw:Switch x:Name="swtAdaptSensor" Width="91.08" HorizontalAlignment="Right" Margin="10,123.114,245.168,84.688" TextOff="Type A" TextOn="Type B" VariableName="DistanceSensorAdaptionSwitch" Grid.Column="1" Grid.Row="1" RenderTransformOrigin="0.295,0.849"/>
        <vw:Switch x:Name="swtNormal_Milli" Width="71.474" HorizontalAlignment="Left" Margin="120.026,186.093,0,0" VariableName="DistanceSensorExtendedSwitch" BitNumber="1" TextOff="Normal" TextOn="Milli" Grid.Column="2" Grid.Row="1" Height="40.833" VerticalAlignment="Top"/>
        <vw:Button  x:Name="btn1031" Width="48" Height="40.833" HorizontalAlignment="Left"  VerticalAlignment="Top" Margin="10,186.093,0,0" Text="DE"  d:LayoutOverrides="HorizontalAlignment" Grid.Column="2"  Grid.Row="1">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <vw:ChangeLanguageAction LCID="1031"/>
                    <vw:ResetBitAction VariableName="DistanceSensorExtendedSwitch"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </vw:Button>
        <vw:Button x:Name="btn1033" Width="48.5"  Height="40.833" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="62.0000000000001,186.093,0,0" Text="GB" Grid.Column="2" Grid.Row="1">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                <vw:ChangeLanguageAction LCID="1033"/>
                <vw:SetBitAction VariableName="DistanceSensorExtendedSwitch"/>       
            </i:EventTrigger>
            </i:Interaction.Triggers>
        </vw:Button>
        <TextBlock HorizontalAlignment="Right" Margin="0,33.788,10,0" TextWrapping="Wrap" Text="{Binding UnitText, ElementName=vinLangDepDist}" Width="56" Height="27.333" VerticalAlignment="Top" Grid.Column="2" Grid.Row="1"/>
        <TextBlock  HorizontalAlignment="Right" Margin="0,123.104,19.606,98.688" TextWrapping="Wrap"  Text="{Binding UnitText, ElementName=vinLangDepDistExt}" Width="46.394"  Grid.Column="2" Grid.Row="1"/>
        <vw:NumericVarIn  HorizontalAlignment="Left" Margin="196,195.124,0,0" Width="66"  VariableName="DistanceSensorExtendedSwitch" Grid.Column="2" Grid.Row="1"  Height="24.825" VerticalAlignment="Top"/>
        <TextBlock  Margin="0,15.618,0,13.785" TextWrapping="Wrap" d:LayoutOverrides="Width, Height" HorizontalAlignment="Center"><Run FontSize="21.333" Language="de-de" Text="PLC"/></TextBlock>
        <TextBlock Grid.Column="1" Margin="0,21.618,0,7.784" TextWrapping="Wrap" d:LayoutOverrides="Height" HorizontalAlignment="Center"><Run FontSize="21.333" Language="de-de" Text="Kernel"/></TextBlock>
        <TextBlock Grid.Column="2" HorizontalAlignment="Center" Margin="0,18.952,0,10.452" TextWrapping="Wrap" d:LayoutOverrides="Height" FontSize="21.333"><Run Language="de-de"Text="Surface"/></TextBlock>    
    </Grid>
  3. Wechseln Sie zurück zur Ansicht Design.

Die so parametrierten Steuerelemente haben folgende Funktion:

vinRawValue

(VariableName = Ch1.RawValue)

Hat ohne Umrechnungen eine Verknüpfung auf den SPS-Wert. Hier kann der SPS-Wert simuliert eingegeben werden.

swtAdaptSensor
Schaltet die Umschaltvariable der Einheitenklasse DistanceSensorAdaption und damit die Anpassung an den entsprechenden Sensortypen.
vinSensorIndependent

(VariableName = Ch1.SensorIndependent)

Verwendet die Variablendefinition, die die Umrechnung zur Normierung der beiden Sensortypen beinhaltet.

btn1031

Das Clickereignis hat eine Verknüpfung mit zwei Actions:

  • Die Sprache wird über eine ChangeLanguageAction auf Deutsch umgestellt.
  • In der Umschaltvariablen für die Einheitenklasse LengthConversionExtended wird über eine ResetBitAction das Bit 0 auf 0 gesetzt.
btn1033

Auch hier wieder zwei Funktionen:

  • Die Sprache wir d über eine ChangeLanguageAction auf Englisch umgestellt.
  • In der Umschaltvariablen für die Einheitenklasse LengthConversionExtended wird über eine SetBitAction das Bit 0 auf 1 gesetzt.

Das Setzen der Umschaltvariablen wird im Zusammenspiel mit der Funktion des swtNormal_Milli-Steuerelements durchgeführt.

swtNormal_Milli

Manipuliert Bit 1 in der Umschaltvariablen für die Einheitenklasse LengthConversionExtended. Zusammen mit den beiden Steuerelementen btn1031 und btn1033 ergeben sich für die Steuervariable folgende Kombinationen:

Sprache Funktion Wert der Umschaltvariablen (bitkombiniert) Angezeigte Einheit
DE Normal 0 (00) cm
GB Normal 1 (01) in.
DE Milli 2 (10) mm
GB Milli 3 (11) mil.
vinLangDepDist

(VariableName = Ch1.SensorIndependent_Lng)

Stellt den Variablenwert dar, der zuerst über die Einheitenklasse (Prozess) normiert wird und anschließend anhand der sprachabhängigen Einheitenklasse in cm oder inch umgerechnet wird.

Ein TextBlock stellt zusätzlich den Einheitentext dar. Über eine Datenbindung ist dazu die Eigenschaft Text des TextBlock-Elementes mit der Eigenschaft UnitText des NumericVarIn verknüpft.

vinLangDepDistExt

(VariableName = Ch1.SensorIndependent_Ext)

Stellt den Variablenwert dar, der zuerst über die Einheitenklasse (Prozess) normiert wird und anschließend anhand der variablenabhängigen Einheitenklasse LengthConversionExtended in cm, mm, inch oder mil umgerechnet wird.

Auch hier wird der Einheitentext mithilfe eines TextBlock-Elementes angezeigt.