Browse Source

revise vpw main ui

chenzk 15 hours ago
parent
commit
87240de05b

+ 1 - 0
.gitignore

@@ -14,3 +14,4 @@ TwinCAT Project1/
 /PunkHPX8_Twincate/PunkHPX8/PlcTest/_Libraries/beckhoff automation gmbh/tc2_system/3.6.4.0/tc2_system.compiled-library
 /PunkHPX8_Twincate/PunkHPX8/PlcTest/_Libraries/beckhoff automation gmbh/tc3_module/3.4.5.0/tc3_module.compiled-library
 /PunkHPX8_Twincate/PunkHPX8/PlcTest/_CompileInfo/*.compileinfo
+/PunkHPX8_Twincate/PunkHPX8/*.tclrs

+ 2 - 1
PunkHPX8_MainPages/ViewModels/VPWCellViewModel.cs

@@ -321,7 +321,7 @@ namespace PunkHPX8_MainPages.ViewModels
 
             _rtDataKeys.Add($"{Module}.{PERSISTENT_VALUE}");
             _rtDataKeys.Add($"{Module}.{COMMONDATA}");
-            _rtDataKeys.Add($"{Module}.MachineState");
+            _rtDataKeys.Add($"{Module}.FsmState");
             _rtDataKeys.Add($"VPWMain1.{COMMONDATA}");
 
             if (_timer == null)
@@ -347,6 +347,7 @@ namespace PunkHPX8_MainPages.ViewModels
                     VpwCellCommonData = CommonFunction.GetValue<VpwCellCommonData>(_rtDataValueDic, $"{Module}.{COMMONDATA}");
                     VpwMainCommonData = CommonFunction.GetValue<VpwMainCommonData>(_rtDataValueDic, $"VPWMain1.{COMMONDATA}");
                     VpwCellPersistent = CommonFunction.GetValue<VpwCellPersistentValue>(_rtDataValueDic, $"{Module}.{PERSISTENT_VALUE}");
+                    StateMachine = CommonFunction.GetValue<string>(_rtDataValueDic, $"{Module}.FsmState"); 
                 }
             }
         }

+ 2 - 1
PunkHPX8_MainPages/Views/VPWCellView.xaml

@@ -51,6 +51,7 @@
                         WaterPressure="{Binding VpwMainCommonData.DiwPressure}"
                         ChamberClose="{Binding VpwMainCommonData.ChamberClosed}"
                         ChamberOpen="{Binding VpwMainCommonData.ChamberOpened}"
+                        MachineState="{Binding StateMachine}"
                          />
         </Grid>
         <Grid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Grid.RowSpan="3" HorizontalAlignment="Center" Margin="-120,100,0,0">
@@ -97,7 +98,7 @@
                 <Label Content="{Binding Module}"  FontSize="30" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Bottom" HorizontalAlignment="Center"></Label>
             </Grid>
             <Grid Grid.Row="1">
-                <Button IsEnabled="{Binding IsAutoEnabled}" Style="{StaticResource SysBtnStyle}" Height="30" Width="120" HorizontalAlignment="Center" Content="Initialize" Command="{Binding InitializeCommand}" />
+                <Button IsEnabled="True" Style="{StaticResource SysBtnStyle}" Height="30" Width="120" HorizontalAlignment="Center" Content="Initialize" Command="{Binding InitializeCommand}" />
             </Grid>
         </Grid>
         <Grid Grid.Row="1" Grid.Column="3" Grid.RowSpan="2"  Margin="0,110,0,0">

+ 9 - 8
PunkHPX8_MainPages/Views/VPWMainView.xaml

@@ -11,11 +11,11 @@
              d:DesignHeight="850" d:DesignWidth="1850">
     <Grid>
         <Grid.RowDefinitions>
-            <RowDefinition Height="70"/>
+            <RowDefinition Height="40"/>
             <RowDefinition Height="215"/>
             <RowDefinition Height="160"/>
             <RowDefinition Height="280"/>
-            <RowDefinition Height="150"/>
+            <RowDefinition Height="120"/>
             <RowDefinition/>
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
@@ -58,6 +58,7 @@
                                                DIWInletValveOpen="{Binding VpwMainCommonData.DiwEnable}"
                                                WaterPressure="{Binding VpwMainCommonData.DiwPressure}"
                                                MachineState="{Binding Status}"
+                                               PressureTarget="{Binding VpwMainCommonData.PressureTarget}"
                                                
                                                
                                                
@@ -70,8 +71,8 @@
                 ></UserControls:VPWMainPurgeControl>
         </Grid>
 
-        <Grid Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Grid.RowSpan="4">
-            <UserControls:VPWMainUIControl ModuleName="{Binding Module}"
+        <Grid Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Grid.RowSpan="4" >
+            <UserControls:VPWMainUIControl  ModuleName="{Binding Module}"
                                            DIWProcessValve="{Binding VpwMainCommonData.DiwProcess}"
                                            DIWDegasValve="{Binding VpwMainCommonData.DiwDegas}"
                                            DegasAdjustValve="{Binding VpwMainCommonData.DegasAdjust}"
@@ -95,14 +96,14 @@
         </Grid>
 
 
-        <Grid Grid.Row="1" Grid.Column="3" Margin="25,0,0,0">
-            <UserControls:OperatingModeControl Margin="0,50,0,0" ModuleName="{Binding Module}"
+        <Grid Grid.Row="1" Grid.Column="3" Margin="25,15,0,0">
+            <UserControls:OperatingModeControl Margin="0,70,0,0" ModuleName="{Binding Module}"
                                               OperationModeValue="{Binding VpwMainPersistent.OperatingMode}"
                                               IsManual="{Binding IsManualOperationMode,Mode=TwoWay}"
                                                ></UserControls:OperatingModeControl>
         </Grid>
 
-        <Grid Grid.Row="2" Grid.Column="3" Margin="25,0,0,0">
+        <Grid Grid.Row="2" Grid.Column="3" Margin="25,10,0,0">
             <UserControls:RecipeModeControl Margin="5,40,35,10"
                                             ModuleName="{Binding Module}"
                                             RecipeModeValue="{Binding VpwMainPersistent.RecipeOperatingMode}"
@@ -116,7 +117,7 @@
             <Button Margin="0,0,0,80" IsEnabled="True" Style="{StaticResource SysBtnStyle}" Height="30" Width="120" HorizontalAlignment="Center" Content="Home" Command="{Binding HomeCommand}" />
         </Grid>
 
-        <Label Grid.Row="1" Grid.Column="3" Margin="0,10,0,0" Content="Operating Mode"  FontSize="15" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Center"></Label>
+        <Label Grid.Row="1" Grid.Column="3" Margin="0,35,0,0" Content="Operating Mode"  FontSize="15" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Center"></Label>
         <Label Grid.Row="2" Grid.Column="3" Margin="0,10,0,0" Content="Recipe Mode"  FontSize="15" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Center"></Label>
 
 

+ 3 - 0
PunkHPX8_RT/Devices/VpwMain/VpwMainDevice.cs

@@ -277,6 +277,8 @@ namespace PunkHPX8_RT.Devices.VpwMain
             OP.Subscribe($"{Module}.DegasPumpDisable", (cmd, para) => { return DegasPumpDisable(); });
             OP.Subscribe($"{Module}.DegasAdjustOn", (cmd, para) => { return DegasAdjustOn(); });
             OP.Subscribe($"{Module}.DegasAdjustOff", (cmd, para) => { return DegasAdjustOff(); });
+            OP.Subscribe($"{Module}.DegasPurgeOn", (cmd, para) => { return N2PurgeValveOn(); });
+            OP.Subscribe($"{Module}.DegasPurgeOff", (cmd, para) => { return N2PurgeValveOff(); });
             OP.Subscribe($"{Module}.DiwDegasValveOn", (cmd, para) => { return DiwDegasValveOn(); });
             OP.Subscribe($"{Module}.DiwDegasValveOff", (cmd, para) => { return DiwDegasValveOff(); });
             OP.Subscribe($"{Module}.DiwEnable", (cmd, para) => { return DiwEnable(); });
@@ -431,6 +433,7 @@ namespace PunkHPX8_RT.Devices.VpwMain
         {
             return WriteVariableValue(DEGAS_ADJUST, false);
         }
+
         #endregion
 
         #region Booster Pump

+ 0 - 1
PunkHPX8_RT/Modules/VpwCell/VpwCellEntity.cs

@@ -195,7 +195,6 @@ namespace PunkHPX8_RT.Modules.VpwMain
         /// </summary>
         private void InitializeSVID()
         {
-            DATA.Subscribe($"{Module}.State", () => ((VPWCellState)fsm.State).ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.OperatingMode", () => _persistentValue != null ? _persistentValue.OperatingMode : "None", SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
         }

+ 2 - 2
PunkHPX8_Themes/UserControls/VPWMainPurgeControl.xaml.cs

@@ -85,12 +85,12 @@ namespace PunkHPX8_Themes.UserControls
 
         private void PurgeValveOn_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.PurgeValveOn");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DegasPurgeOn");
         }
 
         private void PurgeValveOff_Click(object sender, RoutedEventArgs e)
         {
-            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.PurgeValveOff");
+            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DegasPurgeOff");
         }
     }
 }

+ 35 - 35
PunkHPX8_Themes/UserControls/VPWMainUIControl.xaml

@@ -38,7 +38,7 @@
         </ContextMenu>
     </UserControl.Resources>
     <Canvas>
-        <Grid Height="50" Width="100" Canvas.Left="206" Canvas.Top="107"  >
+        <Grid Height="50" Width="100" Canvas.Left="206" Canvas.Top="83" HorizontalAlignment="Center" VerticalAlignment="Top"  >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
@@ -54,7 +54,7 @@
             </Grid>
         </Grid>
 
-        <Grid Height="50" Width="100" Canvas.Left="575" Canvas.Top="107" >
+        <Grid Height="50" Width="100" Canvas.Left="575" Canvas.Top="83" HorizontalAlignment="Center" VerticalAlignment="Top" >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
@@ -70,7 +70,7 @@
             </Grid>
         </Grid>
 
-        <Grid Height="50" Width="100" Canvas.Left="206" Canvas.Top="226"  >
+        <Grid Height="50" Width="100" Canvas.Left="206" Canvas.Top="202" HorizontalAlignment="Center" VerticalAlignment="Top"  >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
@@ -86,7 +86,7 @@
             </Grid>
         </Grid>
 
-        <Grid Height="50" Width="100" Canvas.Left="250" Canvas.Top="624" >
+        <Grid Height="50" Width="100" Canvas.Left="250" Canvas.Top="600" HorizontalAlignment="Center" VerticalAlignment="Top" >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
@@ -102,7 +102,7 @@
             </Grid>
         </Grid>
 
-        <Grid Height="50" Width="100" Canvas.Left="510" Canvas.Top="624" HorizontalAlignment="Left" VerticalAlignment="Center" >
+        <Grid Height="50" Width="100" Canvas.Left="510" Canvas.Top="600" HorizontalAlignment="Center" VerticalAlignment="Top" >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
@@ -118,7 +118,7 @@
             </Grid>
         </Grid>
 
-        <Grid Height="50" Width="120" Canvas.Left="282" Canvas.Top="66"  >
+        <Grid Height="50" Width="120" Canvas.Left="282" Canvas.Top="42" HorizontalAlignment="Center" VerticalAlignment="Top"  >
             <Grid.RowDefinitions>
                 <RowDefinition Height="20"></RowDefinition>
                 <RowDefinition Height="30"></RowDefinition>
@@ -138,9 +138,9 @@
             </Border>
         </Grid>
 
-        <userControls:ReservoirPump IsEnabled="True" ModuleName="{Binding ModuleName,ElementName=self}" PumpType="BoosterPump" RotateTransformValue="0" IsOpenPump="{Binding IsBoosterPumpOpen,Mode=TwoWay,ElementName=self}" Height="60" Width="60"  Tag="26" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="99" Canvas.Top="70" />
-        <userControls:ReservoirPump IsEnabled="True" ModuleName="{Binding ModuleName,ElementName=self}" PumpType="DegasPump" RotateTransformValue="0" IsOpenPump="{Binding IsDegasPumpOpen,Mode=TwoWay,ElementName=self}" Height="60" Width="60"   Tag="26" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="99" Canvas.Top="187" />
-        <userControls:ReservoirPump IsEnabled="True" ModuleName="{Binding ModuleName,ElementName=self}" PumpType="VacuumPump" RotateTransformValue="0" IsOpenPump="{Binding IsVacuumPumpOpen,Mode=TwoWay,ElementName=self}" Height="60" Width="60"   Tag="26" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="396" Canvas.Top="694" RenderTransformOrigin="0.25,0.517"  >
+        <userControls:ReservoirPump IsEnabled="True" ModuleName="{Binding ModuleName,ElementName=self}" PumpType="BoosterPump" RotateTransformValue="0" IsOpenPump="{Binding IsBoosterPumpOpen,Mode=TwoWay,ElementName=self}" Height="60" Width="60"  Tag="26" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="99" Canvas.Top="46" />
+        <userControls:ReservoirPump IsEnabled="True" ModuleName="{Binding ModuleName,ElementName=self}" PumpType="DegasPump" RotateTransformValue="0" IsOpenPump="{Binding IsDegasPumpOpen,Mode=TwoWay,ElementName=self}" Height="60" Width="60"   Tag="26" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="99" Canvas.Top="163" />
+        <userControls:ReservoirPump IsEnabled="True" ModuleName="{Binding ModuleName,ElementName=self}" PumpType="VacuumPump" RotateTransformValue="0" IsOpenPump="{Binding IsVacuumPumpOpen,Mode=TwoWay,ElementName=self}" Height="60" Width="60"   Tag="26" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="396" Canvas.Top="670" RenderTransformOrigin="0.25,0.517"  >
             <local:ReservoirPump.RenderTransform>
                 <TransformGroup>
                     <ScaleTransform/>
@@ -150,34 +150,34 @@
                 </TransformGroup>
             </local:ReservoirPump.RenderTransform>
         </userControls:ReservoirPump>
-        <Label  Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Booster Pump" Canvas.Left="86" Canvas.Top="136" />
-        <Label  Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Degas Pump" Canvas.Left="86" Canvas.Top="263" />
-        <Label  Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Vacuum Pump" Canvas.Left="376" Canvas.Top="740" HorizontalAlignment="Left" VerticalAlignment="Center" />
-        <Label  Height="20" Width="51" FontSize="10"  FontWeight="Bold" Content="DIW In" Canvas.Left="17" Canvas.Top="110" HorizontalAlignment="Center" VerticalAlignment="Top" />
-        <Label  Height="26" Width="63" FontSize="10"  FontWeight="Bold" Content="N2 Purge" Canvas.Left="698" Canvas.Top="42" HorizontalAlignment="Center" VerticalAlignment="Top" />
-        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwUp.png" Height="84"  Width="254"  HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="182" Canvas.Top="304"/>
-        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwUp.png" Height="84"  Width="254"  HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="446" Canvas.Top="304"/>
-        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwCell.png" Height="236"  Width="236"  HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="183" Canvas.Top="392"/>
-        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwCell.png" Height="236"  Width="236"  HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="440" Canvas.Top="392"/>
-        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwShelf.png" Height="186"  Width="292"  HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="276" Canvas.Top="422"/>
+        <Label  Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Booster Pump" Canvas.Left="86" Canvas.Top="112" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <Label  Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Degas Pump" Canvas.Left="86" Canvas.Top="239" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <Label  Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Vacuum Pump" Canvas.Left="376" Canvas.Top="716" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <Label  Height="20" Width="51" FontSize="10"  FontWeight="Bold" Content="DIW In" Canvas.Left="17" Canvas.Top="86" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <Label  Height="26" Width="63" FontSize="10"  FontWeight="Bold" Content="N2 Purge" Canvas.Left="698" Canvas.Top="18" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwUp.png" Height="84"  Width="254"  HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="182" Canvas.Top="280"/>
+        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwUp.png" Height="84"  Width="254"  HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="446" Canvas.Top="280"/>
+        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwCell.png" Height="236"  Width="236"  HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="183" Canvas.Top="368"/>
+        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwCell.png" Height="236"  Width="236"  HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="440" Canvas.Top="368"/>
+        <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/VpwShelf.png" Height="186"  Width="292"  HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="276" Canvas.Top="398"/>
 
-        <userControls:FlowPipe  Height="6" Width="180" IsFlowing="{Binding IsBoosterPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="71" Canvas.Top="119" HorizontalAlignment="Left" VerticalAlignment="Center" />
-        <userControls:FlowPipe  Height="6" Width="360" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="261" Canvas.Top="119" HorizontalAlignment="Left" VerticalAlignment="Center" />
-        <userControls:FlowPipe  Height="6" Width="400" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="330" Canvas.Top="265" HorizontalAlignment="Left" VerticalAlignment="Top" />
-        <userControls:FlowPipe  Height="6" Width="100" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="630" Canvas.Top="119" HorizontalAlignment="Left" VerticalAlignment="Center" />
-        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="124"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="418" Canvas.Top="119"/>
-        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="150"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="730" Canvas.Top="119"/>
-        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="80"  RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="530" Canvas.Top="265"/>
-        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="80"  RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="1" Canvas.Left="338" Canvas.Top="265"/>
-        <userControls:FlowPipe IsReverse="True" IsFlowing="{Binding IsVacuumPumpOpen,Mode=TwoWay,ElementName=self}" Height="8"  Width="40"  RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="437" Canvas.Top="641"/>
-        <userControls:FlowPipe IsFlowing="{Binding ElementName=self,Path=VPW1VACValve}" Height="8"  Width="40"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="304" Canvas.Top="593"/>
-        <userControls:FlowPipe IsFlowing="{Binding ElementName=self,Path=VPW2VACValve}" Height="8"  Width="40"  RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="1" Canvas.Left="564" Canvas.Top="593"/>
-        <userControls:FlowPipe  Height="6" Width="160" IsFlowing="{Binding IsDegasPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="100" Canvas.Top="237" HorizontalAlignment="Left" VerticalAlignment="Center" />
-        <userControls:FlowPipe  Height="6" Width="160" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="255" Canvas.Top="237" HorizontalAlignment="Left" VerticalAlignment="Top" />
-        <userControls:FlowPipe  Height="6" Width="135" IsFlowing="{Binding IsVacuumPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="296" Canvas.Top="636" HorizontalAlignment="Left" VerticalAlignment="Top" />
-        <userControls:FlowPipe  Height="6" Width="135" IsFlowing="{Binding IsVacuumPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="430" Canvas.Top="636" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe  Height="6" Width="180" IsFlowing="{Binding IsBoosterPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="71" Canvas.Top="95" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe  Height="6" Width="360" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="261" Canvas.Top="95" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe  Height="6" Width="400" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="330" Canvas.Top="241" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe  Height="6" Width="100" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="630" Canvas.Top="95" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="124"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="418" Canvas.Top="95"/>
+        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="150"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="730" Canvas.Top="95"/>
+        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="80"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="530" Canvas.Top="241"/>
+        <userControls:FlowPipe IsFlowing="{Binding RinseCommonData.DrainValve}" Height="8"  Width="80"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="338" Canvas.Top="241"/>
+        <userControls:FlowPipe IsReverse="True" IsFlowing="{Binding IsVacuumPumpOpen,Mode=TwoWay,ElementName=self}" Height="8"  Width="40"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="437" Canvas.Top="617"/>
+        <userControls:FlowPipe IsFlowing="{Binding ElementName=self,Path=VPW1VACValve}" Height="8"  Width="40"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="304" Canvas.Top="569"/>
+        <userControls:FlowPipe IsFlowing="{Binding ElementName=self,Path=VPW2VACValve}" Height="8"  Width="40"  RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1" Canvas.Left="564" Canvas.Top="569"/>
+        <userControls:FlowPipe  Height="6" Width="160" IsFlowing="{Binding IsDegasPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="100" Canvas.Top="213" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe  Height="6" Width="160" IsFlowing="{Binding RinseCommonData.FillValve}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="255" Canvas.Top="213" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe  Height="6" Width="135" IsFlowing="{Binding IsVacuumPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="296" Canvas.Top="612" HorizontalAlignment="Center" VerticalAlignment="Top" />
+        <userControls:FlowPipe  Height="6" Width="135" IsFlowing="{Binding IsVacuumPumpOpen,ElementName=self}" IsReverse="False" Panel.ZIndex="-1" Canvas.Left="430" Canvas.Top="612" HorizontalAlignment="Center" VerticalAlignment="Top" />
 
-        <Canvas Width="40" Height="20" Canvas.Left="710" Canvas.Top="79" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" >
+        <Canvas Width="40" Height="20" Canvas.Left="710" Canvas.Top="55" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" >
             <Canvas.RenderTransform>
                 <TransformGroup>
                     <ScaleTransform/>