Kaynağa Gözat

20250816001 界面布局修改,PLC通讯功能添加

向羽 孟 8 ay önce
ebeveyn
işleme
c66456c1a5

+ 151 - 30
CCDCountWpf/PlcMessageShowBindingClass.cs

@@ -232,8 +232,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 瓶装设定值
         /// </summary>
-        private UInt16 bottValueSet;
-        public UInt16 BottValueSet
+        private ushort bottValueSet;
+        public ushort BottValueSet
         {
             get { return bottValueSet; }
             set
@@ -280,8 +280,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 罐装减速值
         /// </summary>
-        private UInt16 bottingDecelerationValue;
-        public UInt16 BottingDecelerationValue
+        private ushort bottingDecelerationValue;
+        public ushort BottingDecelerationValue
         {
             get { return bottingDecelerationValue; }
             set
@@ -326,8 +326,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 缓存停机值
         /// </summary>
-        private UInt16 cacheShutdownValue;
-        public UInt16 CacheShutdownValue
+        private ushort cacheShutdownValue;
+        public ushort CacheShutdownValue
         {
             get { return cacheShutdownValue; }
             set
@@ -341,8 +341,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 罐装料筒震台高速值
         /// </summary>
-        private UInt16 bottingMaterialCylinderVibrationTableHighSpeedValue;
-        public UInt16 BottingMaterialCylinderVibrationTableHighSpeedValue
+        private ushort bottingMaterialCylinderVibrationTableHighSpeedValue;
+        public ushort BottingMaterialCylinderVibrationTableHighSpeedValue
         {
             get { return bottingMaterialCylinderVibrationTableHighSpeedValue; }
             set
@@ -356,8 +356,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 罐装过滤震台高速值
         /// </summary>
-        private UInt16 bottingFilterVibrationTableHighSpeedValue;
-        public UInt16 BottingFilterVibrationTableHighSpeedValue
+        private ushort bottingFilterVibrationTableHighSpeedValue;
+        public ushort BottingFilterVibrationTableHighSpeedValue
         {
             get { return bottingFilterVibrationTableHighSpeedValue; }
             set
@@ -371,8 +371,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 罐装计数震台高速值
         /// </summary>
-        private UInt16 bottingCountVibrationTableHighSpeedValue;
-        public UInt16 BottingCountVibrationTableHighSpeedValue
+        private ushort bottingCountVibrationTableHighSpeedValue;
+        public ushort BottingCountVibrationTableHighSpeedValue
         {
             get { return bottingCountVibrationTableHighSpeedValue; }
             set
@@ -386,8 +386,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 罐装料筒震台减速值
         /// </summary>
-        private UInt16 bottingMaterialCylinderVibrationTableDecelerationSpeedValue;
-        public UInt16 BottingMaterialCylinderVibrationTableDecelerationSpeedValue
+        private ushort bottingMaterialCylinderVibrationTableDecelerationSpeedValue;
+        public ushort BottingMaterialCylinderVibrationTableDecelerationSpeedValue
         {
             get { return bottingMaterialCylinderVibrationTableDecelerationSpeedValue; }
             set
@@ -401,8 +401,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 罐装过滤震台减速值
         /// </summary>
-        private UInt16 bottingFilterVibrationTableDecelerationSpeedValue;
-        public UInt16 BottingFilterVibrationTableDecelerationSpeedValue
+        private ushort bottingFilterVibrationTableDecelerationSpeedValue;
+        public ushort BottingFilterVibrationTableDecelerationSpeedValue
         {
             get { return bottingFilterVibrationTableDecelerationSpeedValue; }
             set
@@ -416,8 +416,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 罐装计数震台减速值
         /// </summary>
-        private UInt16 bottingCountVibrationTableDecelerationSpeedValue;
-        public UInt16 BottingCountVibrationTableDecelerationSpeedValue
+        private ushort bottingCountVibrationTableDecelerationSpeedValue;
+        public ushort BottingCountVibrationTableDecelerationSpeedValue
         {
             get { return bottingCountVibrationTableDecelerationSpeedValue; }
             set
@@ -431,8 +431,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 缓存料筒震台高速值
         /// </summary>
-        private UInt16 cacheMaterialCylinderVibrationTableHighSpeedValue;
-        public UInt16 CacheMaterialCylinderVibrationTableHighSpeedValue
+        private ushort cacheMaterialCylinderVibrationTableHighSpeedValue;
+        public ushort CacheMaterialCylinderVibrationTableHighSpeedValue
         {
             get { return cacheMaterialCylinderVibrationTableHighSpeedValue; }
             set
@@ -446,8 +446,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 缓存过滤震台高速值
         /// </summary>
-        private UInt16 cacheFilterVibrationTableHighSpeedValue;
-        public UInt16 CacheFilterVibrationTableHighSpeedValue
+        private ushort cacheFilterVibrationTableHighSpeedValue;
+        public ushort CacheFilterVibrationTableHighSpeedValue
         {
             get { return cacheFilterVibrationTableHighSpeedValue; }
             set
@@ -461,8 +461,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 缓存计数震台高速值
         /// </summary>
-        private UInt16 cacheCountVibrationTableHighSpeedValue;
-        public UInt16 CacheCountVibrationTableHighSpeedValue
+        private ushort cacheCountVibrationTableHighSpeedValue;
+        public ushort CacheCountVibrationTableHighSpeedValue
         {
             get { return cacheCountVibrationTableHighSpeedValue; }
             set
@@ -476,8 +476,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 缓存料筒震台减速值
         /// </summary>
-        private UInt16 cacheMaterialCylinderVibrationTableDecelerationSpeedValue;
-        public UInt16 CacheMaterialCylinderVibrationTableDecelerationSpeedValue
+        private ushort cacheMaterialCylinderVibrationTableDecelerationSpeedValue;
+        public ushort CacheMaterialCylinderVibrationTableDecelerationSpeedValue
         {
             get { return cacheMaterialCylinderVibrationTableDecelerationSpeedValue; }
             set
@@ -491,8 +491,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 缓存过滤震台减速值
         /// </summary>
-        private UInt16 cacheFilterVibrationTableDecelerationSpeedValue;
-        public UInt16 CacheFilterVibrationTableDecelerationSpeedValue
+        private ushort cacheFilterVibrationTableDecelerationSpeedValue;
+        public ushort CacheFilterVibrationTableDecelerationSpeedValue
         {
             get { return cacheFilterVibrationTableDecelerationSpeedValue; }
             set
@@ -506,8 +506,8 @@ namespace CCDCountWpf
         /// <summary>
         /// 缓存计数震台减速值
         /// </summary>
-        private UInt16 cacheCountVibrationTableDecelerationSpeedValue;
-        public UInt16 CacheCountVibrationTableDecelerationSpeedValue
+        private ushort cacheCountVibrationTableDecelerationSpeedValue;
+        public ushort CacheCountVibrationTableDecelerationSpeedValue
         {
             get { return cacheCountVibrationTableDecelerationSpeedValue; }
             set
@@ -667,6 +667,127 @@ namespace CCDCountWpf
                 OnPropertyChanged("BottlingShutdownTime");
             }
         }
+
+        /// <summary>
+        /// 送瓶轮运行速度
+        /// </summary>
+        private float bottleFeedingWheelRunningSpeed;
+        public string BottleFeedingWheelRunningSpeed
+        {
+            get { return bottleFeedingWheelRunningSpeed.ToString("F2"); }
+            set
+            {
+                if (float.TryParse(value, out float result))
+                {
+                    bottleFeedingWheelRunningSpeed = result;
+                    PlcSettingMessageBus.pLCManagement.WriteBottleFeedingWheelRunningSpeed(result);
+                    OnPropertyChanged("BottleFeedingWheelRunningSpeed");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 送瓶轮点动速度
+        /// </summary>
+        private float bottleFeedingWheelJogRunningSpeed;
+        public string BottleFeedingWheelJogRunningSpeed
+        {
+            get { return bottleFeedingWheelJogRunningSpeed.ToString("F2"); }
+            set
+            {
+                if (float.TryParse(value, out float result))
+                {
+                    bottleFeedingWheelJogRunningSpeed = result;
+                    PlcSettingMessageBus.pLCManagement.WriteBottleFeedingWheelJogRunningSpeed(result);
+                    OnPropertyChanged("BottleFeedingWheelJogRunningSpeed");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 送瓶轮回零偏移值
+        /// </summary>
+        private float bottleFeedingWheelReturnToZeroOffsetValue;
+        public string BottleFeedingWheelReturnToZeroOffsetValue
+        {
+            get { return bottleFeedingWheelReturnToZeroOffsetValue.ToString("F2"); }
+            set
+            {
+                if (float.TryParse(value, out float result))
+                {
+                    bottleFeedingWheelReturnToZeroOffsetValue = result;
+                    PlcSettingMessageBus.pLCManagement.WriteBottleFeedingWheelReturnToZeroOffsetValue(result);
+                    OnPropertyChanged("BottleFeedingWheelReturnToZeroOffsetValue");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 送瓶轮回零速度
+        /// </summary>
+        private float bottleFeedingWheelReturnToZeroSpeed;
+        public string BottleFeedingWheelReturnToZeroSpeed
+        {
+            get { return bottleFeedingWheelReturnToZeroSpeed.ToString("F2"); }
+            set
+            {
+                if (float.TryParse(value, out float result))
+                {
+                    bottleFeedingWheelReturnToZeroSpeed = result;
+                    PlcSettingMessageBus.pLCManagement.WriteBottleFeedingWheelReturnToZeroSpeed(result);
+                    OnPropertyChanged("BottleFeedingWheelReturnToZeroSpeed");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 送瓶轮定位长度
+        /// </summary>
+        private float bottleFeedingWheelPositionLength;
+        public string BottleFeedingWheelPositionLength
+        {
+            get { return bottleFeedingWheelPositionLength.ToString("F2"); }
+            set
+            {
+                if (float.TryParse(value, out float result))
+                {
+                    bottleFeedingWheelPositionLength = result;
+                    PlcSettingMessageBus.pLCManagement.WriteBottleFeedingWheelPositionLength(result);
+                    OnPropertyChanged("BottleFeedingWheelPositionLength");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 送瓶轮暂停时间
+        /// </summary>
+        private UInt32 bottleFeedingWheelPauseTime;
+        public UInt32 BottleFeedingWheelPauseTime
+        {
+            get { return bottleFeedingWheelPauseTime; }
+            set
+            {
+                bottleFeedingWheelPauseTime = value;
+                PlcSettingMessageBus.pLCManagement.WriteBottleFeedingWheelPauseTime(value);
+                OnPropertyChanged("BottleFeedingWheelPauseTime");
+            }
+        }
+
+        /// <summary>
+        /// 下料延时
+        /// </summary>
+        private UInt32 delayBlanking;
+        public UInt32 DelayBlanking
+        {
+            get { return delayBlanking; }
+            set
+            {
+                delayBlanking = value;
+                PlcSettingMessageBus.pLCManagement.WriteDelayBlanking(value);
+                OnPropertyChanged("DelayBlanking");
+            }
+        }
+
         //数据绑定核心实现
         public event PropertyChangedEventHandler PropertyChanged;
 

+ 2 - 6
CCDCountWpf/WpfFrom/MainWindow.xaml

@@ -5,12 +5,8 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:CCDCountWpf"
         mc:Ignorable="d"
-        Title="MainWindow" Height="720" Width="820" MinWidth="900" MinHeight="720" Closing="Window_Closing" WindowStartupLocation="CenterScreen" Icon="/FromImage/mmexport1752891278116.jpg" Loaded="Window_Loaded">
+        Title="MainWindow" Height="720" Width="1000" MinWidth="1000" MinHeight="720" Closing="Window_Closing" WindowStartupLocation="CenterScreen" Icon="/FromImage/mmexport1752891278116.jpg" Loaded="Window_Loaded">
     <Grid Background="#B2E0E0E0">
-        <Grid.ColumnDefinitions>
-            <ColumnDefinition Width="17*"/>
-            <ColumnDefinition Width="8*"/>
-        </Grid.ColumnDefinitions>
         <Grid VerticalAlignment="Top" Height="60"  Background="#FF1200D1" Grid.ColumnSpan="2">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="60"/>
@@ -78,7 +74,7 @@
         </Grid>
         <Frame x:Name="ShowFrame" Margin="0,60,0,55" NavigationUIVisibility="Hidden" Grid.ColumnSpan="2"/>
         <Grid VerticalAlignment="Bottom" Height="40" Margin="0,0,0,5" Grid.ColumnSpan="2">
-            <Border Grid.Column="0" 
+            <Border
             Background="#FF1200D1" 
             CornerRadius="8"
             BorderBrush="Gray"

+ 14 - 0
CCDCountWpf/WpfFrom/MainWindow.xaml.cs

@@ -634,6 +634,20 @@ namespace CCDCountWpf
             ParaValue.BottlingShutdownValue;
             PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime = 
             ParaValue.BottlingShutdownTime;
+            PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelRunningSpeed = 
+            ParaValue.BottleFeedingWheelRunningSpeed.ToString();
+            PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelJogRunningSpeed = 
+            ParaValue.BottleFeedingWheelJogRunningSpeed.ToString();
+            PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroOffsetValue = 
+            ParaValue.BottleFeedingWheelReturnToZeroOffsetValue.ToString();
+            PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroSpeed = 
+            ParaValue.BottleFeedingWheelReturnToZeroSpeed.ToString();
+            PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPositionLength = 
+            ParaValue.BottleFeedingWheelPositionLength.ToString();
+            PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPauseTime = 
+            ParaValue.BottleFeedingWheelPauseTime;
+            PlcSettingMessageBus.PlcMessageShowBindage.DelayBlanking = 
+            ParaValue.DelayBlanking;
         }
         #endregion
 

+ 7 - 1
CCDCountWpf/WpfFrom/UserLoginWindow.xaml

@@ -9,9 +9,15 @@
         WindowStyle="None" AllowsTransparency="True"
         WindowStartupLocation="CenterScreen" Icon="/FromImage/mmexport1752891278116.jpg" KeyDown="Window_KeyDown">
     <Grid Background="#B2E0E0E0">
-        <Grid VerticalAlignment="Top" Height="50" Background="#FF1200D1">
+        <Grid VerticalAlignment="Top" Height="60" Background="#FF1200D1">
             <Border BorderBrush="Black" BorderThickness="1"/>
             <Label Content="用户登录" Foreground="White" FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center"/>
+            <Button x:Name="KeyBoardBtn" Height="60" Background="{x:Null}" Click="KeyBoardBtn_Click" Width="60" HorizontalAlignment="Right">
+                <StackPanel Orientation="Vertical" HorizontalAlignment="Center">
+                    <Image  Source="/FromImage/键盘_白.png" Width="40" Height="40" />
+                    <TextBlock Text="键盘" FontSize="10" FontWeight="Bold" Margin="0,0,0,0" HorizontalAlignment="Center" Foreground="White" />
+                </StackPanel>
+            </Button>
         </Grid>
         <Border  Background="#FF0087FF" 
                     CornerRadius="8"

+ 5 - 0
CCDCountWpf/WpfFrom/UserLoginWindow.xaml.cs

@@ -70,5 +70,10 @@ namespace CCDCountWpf
         {
             //OnScreenKeyboard.Show();
         }
+
+        private void KeyBoardBtn_Click(object sender, RoutedEventArgs e)
+        {
+            OnScreenKeyboard.Show();
+        }
     }
 }

+ 192 - 24
CCDCountWpf/WpfPage/MainPage.xaml

@@ -4,6 +4,7 @@
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
       xmlns:local="clr-namespace:CCDCountWpf.WpfPage"
+      xmlns:BindNameSpace="clr-namespace:CCDCountWpf"
       mc:Ignorable="d"
       Title="MainPage" Height="503" Width="876" Loaded="Page_Loaded">
 
@@ -30,6 +31,7 @@
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="*"/>
                 <ColumnDefinition Width="*"/>
+                <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>
 
             <Border Grid.Column="0" 
@@ -39,36 +41,33 @@
                     BorderThickness="1"
                     Margin="15,10,15,0" Height="155" VerticalAlignment="Top" Cursor="">
                 <Grid>
-                    <StackPanel Orientation="Vertical" Margin="0,0,130,0">
+                    <StackPanel Orientation="Vertical" Margin="0,0,80,0">
                         <StackPanel Orientation="Horizontal">
-                            <Label  Content="当前总粒数:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="20" Foreground="White"/>
-                            <Label x:Name="AllActiveNumLab" Content="{Binding AllActiveNum}" HorizontalAlignment="Left" Margin="20,10,0,0"  Width="120" FontWeight="Bold" FontSize="20"  Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White"/>
+                            <Label  Content="总粒数:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="20" Foreground="White"/>
+                            <Label x:Name="AllActiveNumLab" Content="{Binding AllActiveNum}" HorizontalAlignment="Left" Margin="20,10,0,0"  Width="80" FontWeight="Bold" FontSize="20"  Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White"/>
                         </StackPanel>
                         <StackPanel Orientation="Horizontal">
-                            <Label  Content="当前合格数:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="20" Foreground="White"/>
-                            <Label x:Name="AllOkNumLab" Content="{Binding AllOkNum}" HorizontalAlignment="Left" Margin="20,10,0,0" Width="120" FontWeight="Bold" FontSize="20" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White"/>
+                            <Label  Content="合格数:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="20" Foreground="White"/>
+                            <Label x:Name="AllOkNumLab" Content="{Binding AllOkNum}" HorizontalAlignment="Left" Margin="20,10,0,0" Width="80" FontWeight="Bold" FontSize="20" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White"/>
                         </StackPanel>
                         <StackPanel Orientation="Horizontal">
-                            <Label  Content="当前不合格数:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="20" Foreground="White"/>
-                            <Label x:Name="AllNgNumLab" Content="{Binding AllNgNum}" HorizontalAlignment="Left" Margin="0,10,0,0" Width="120" FontWeight="Bold" FontSize="20" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White"/>
+                            <Label  Content="不合格数:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="20" Foreground="White"/>
+                            <Label x:Name="AllNgNumLab" Content="{Binding AllNgNum}" HorizontalAlignment="Left" Margin="0,10,0,0" Width="80" FontWeight="Bold" FontSize="20" Background="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White"/>
                         </StackPanel>
                     </StackPanel>
-
-                    <StackPanel Orientation="Vertical" HorizontalAlignment="Right" Width="130">
-                        <Label x:Name="CamRunStaticLab" Content="{Binding CamRunStatic}" HorizontalAlignment="Right" Margin="10,5,10,0" VerticalAlignment="Top" Background="{x:Null}" FontSize="25" Foreground="{Binding CameraStaticColor}" FontWeight="Bold" />
-                        <Button x:Name="DataClear" Content="清零" BorderThickness="1" HorizontalAlignment="Right" Margin="10,50,10,0" VerticalAlignment="Top" Width="80" Height="40" Background="#FF0123FF" FontWeight="Bold" FontSize="20" Foreground="White" Click="DataClear_Click" Cursor="Hand">
-                            <Button.Template>
-                                <ControlTemplate TargetType="Button">
-                                    <Border CornerRadius="5" 
-                                            Background="{TemplateBinding Background}"
-                                            BorderBrush="{TemplateBinding BorderBrush}"
-                                            BorderThickness="{TemplateBinding BorderThickness}">
-                                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                                    </Border>
-                                </ControlTemplate>
-                            </Button.Template>
-                        </Button>
-                    </StackPanel>
+                    <Label x:Name="CamRunStaticLab" Content="{Binding CamRunStatic}" HorizontalAlignment="Right" Margin="10,5,10,0" VerticalAlignment="Top" Background="{x:Null}" FontSize="25" Foreground="{Binding CameraStaticColor}" FontWeight="Bold" />
+                    <Button x:Name="DataClear" Content="清零" BorderThickness="1" HorizontalAlignment="Right" Margin="10,0,10,12" Width="80" Height="40" Background="#FF0123FF" FontWeight="Bold" FontSize="20" Foreground="White" Click="DataClear_Click" Cursor="Hand" VerticalAlignment="Bottom">
+                        <Button.Template>
+                            <ControlTemplate TargetType="Button">
+                                <Border CornerRadius="5" 
+                                    Background="{TemplateBinding Background}"
+                                    BorderBrush="{TemplateBinding BorderBrush}"
+                                    BorderThickness="{TemplateBinding BorderThickness}">
+                                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                </Border>
+                            </ControlTemplate>
+                        </Button.Template>
+                    </Button>
                 </Grid>
                 <!-- 卡片内容 -->
             </Border>
@@ -101,7 +100,7 @@
                             </ControlTemplate>
                         </Button.Template>
                     </Button>
-                    <Button x:Name="StopIdentifyBtn" Content="暂停" BorderThickness="1" HorizontalAlignment="Right" Margin="0,0,20,0" VerticalAlignment="Top" Width="100" Height="60" Background="#FF0123FF" FontWeight="Bold" FontSize="20" Foreground="White" Cursor="Hand" Click="StopIdentifyBtn_Click">
+                    <Button x:Name="StopIdentifyBtn" Content="暂停" BorderThickness="1" HorizontalAlignment="Right" Margin="0,0,0,0" VerticalAlignment="Top" Width="100" Height="60" Background="#FF0123FF" FontWeight="Bold" FontSize="20" Foreground="White" Cursor="Hand" Click="StopIdentifyBtn_Click">
                         <Button.Template>
                             <ControlTemplate TargetType="Button">
                                 <Border CornerRadius="5"  Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"  BorderThickness="{TemplateBinding BorderThickness}">
@@ -112,6 +111,175 @@
                     </Button>
                 </StackPanel>
             </Border>
+
+            <Border Grid.Column="2" 
+                    Background="#FF0087FF" 
+                    CornerRadius="8"
+                    BorderBrush="Gray"
+                    BorderThickness="1"
+                    Margin="15,10,15,0" Height="155" VerticalAlignment="Top" Cursor="">
+                <Grid>
+                    <StackPanel Orientation="Vertical">
+                        <StackPanel Orientation="Horizontal" Margin="0,10,0,0" HorizontalAlignment="Center">
+                            <TextBlock Text="A速度:" FontSize="20" Margin="0,0,0,0" VerticalAlignment="Center" Foreground="White"/>
+                            <Button x:Name="BottingMaterialCylinderVibrationTableHighSpeedValueUpUPBtn" Content="++" Width="30" Height="30" Click="BottingMaterialCylinderVibrationTableHighSpeedValueUpUpBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                    Background="{TemplateBinding Background}"
+                                    BorderBrush="{TemplateBinding BorderBrush}"
+                                    BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <Button x:Name="BottingMaterialCylinderVibrationTableHighSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="BottingMaterialCylinderVibrationTableHighSpeedValueUpBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                            Background="{TemplateBinding Background}"
+                                            BorderBrush="{TemplateBinding BorderBrush}"
+                                            BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <TextBox Text="{Binding Source={x:Static BindNameSpace:PlcSettingMessageBus.PlcMessageShowBindage},Path = BottingMaterialCylinderVibrationTableHighSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="79" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" Background="{x:Null}"/>
+                            <Button x:Name="BottingMaterialCylinderVibrationTableHighSpeedValueDownBtn" Content="-" Width="30" Click="BottingMaterialCylinderVibrationTableHighSpeedValueDownBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                            Background="{TemplateBinding Background}"
+                                            BorderBrush="{TemplateBinding BorderBrush}"
+                                            BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <Button x:Name="BottingMaterialCylinderVibrationTableHighSpeedValueDownDownBtn" Content="--" Width="30" Click="BottingMaterialCylinderVibrationTableHighSpeedValueDownDownBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                             Background="{TemplateBinding Background}"
+                                             BorderBrush="{TemplateBinding BorderBrush}"
+                                             BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                        </StackPanel>
+                        <StackPanel Orientation="Horizontal" Margin="0,20,0,0" HorizontalAlignment="Center">
+                            <TextBlock Text="B速度:" FontSize="20" Margin="0,0,0,0" VerticalAlignment="Center" Foreground="White"/>
+                            <Button x:Name="BottingFilterVibrationTableHighSpeedValueUpUpBtn" Content="++" Width="30" Height="30" Click="BottingFilterVibrationTableHighSpeedValueUpUpBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                        Background="{TemplateBinding Background}"
+                                        BorderBrush="{TemplateBinding BorderBrush}"
+                                        BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <Button x:Name="BottingFilterVibrationTableHighSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="BottingFilterVibrationTableHighSpeedValueUpBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                    Background="{TemplateBinding Background}"
+                                    BorderBrush="{TemplateBinding BorderBrush}"
+                                    BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <TextBox Text="{Binding Source={x:Static BindNameSpace:PlcSettingMessageBus.PlcMessageShowBindage},Path = BottingFilterVibrationTableHighSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" Background="{x:Null}"/>
+                            <Button x:Name="BottingFilterVibrationTableHighSpeedValueDownBtn" Content="-" Width="30" Click="BottingFilterVibrationTableHighSpeedValueDownBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                             Background="{TemplateBinding Background}"
+                                             BorderBrush="{TemplateBinding BorderBrush}"
+                                             BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <Button x:Name="BottingFilterVibrationTableHighSpeedValueDownDownBtn" Content="--" Width="30" Click="BottingFilterVibrationTableHighSpeedValueDownDownBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                             Background="{TemplateBinding Background}"
+                                             BorderBrush="{TemplateBinding BorderBrush}"
+                                             BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                        </StackPanel>
+                        <StackPanel Orientation="Horizontal" Margin="0,20,0,0" HorizontalAlignment="Center">
+                            <TextBlock Text="C速度:" FontSize="20" Margin="0,0,0,0" VerticalAlignment="Center" Foreground="White"/>
+                            <Button x:Name="BottingCountVibrationTableHighSpeedValueUpUpBtn" Content="++" Width="30" Height="30" Click="BottingCountVibrationTableHighSpeedValueUpUpBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                    Background="{TemplateBinding Background}"
+                                    BorderBrush="{TemplateBinding BorderBrush}"
+                                    BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <Button x:Name="BottingCountVibrationTableHighSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="BottingCountVibrationTableHighSpeedValueUpBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                            Background="{TemplateBinding Background}"
+                                            BorderBrush="{TemplateBinding BorderBrush}"
+                                            BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <TextBox Text="{Binding Source={x:Static BindNameSpace:PlcSettingMessageBus.PlcMessageShowBindage},Path = BottingCountVibrationTableHighSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Background="{x:Null}" Foreground="White"/>
+                            <Button x:Name="BottingCountVibrationTableHighSpeedValueDownBtn" Content="-" Width="30" Click="BottingCountVibrationTableHighSpeedValueDownBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                            Background="{TemplateBinding Background}"
+                                            BorderBrush="{TemplateBinding BorderBrush}"
+                                            BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                            <Button x:Name="BottingCountVibrationTableHighSpeedValueDownDownBtn" Content="--" Width="30" Click="BottingCountVibrationTableHighSpeedValueDownDownBtn_Click" Background="#FF0123FF" Foreground="White">
+                                <Button.Template>
+                                    <ControlTemplate TargetType="Button">
+                                        <Border CornerRadius="5" 
+                                            Background="{TemplateBinding Background}"
+                                            BorderBrush="{TemplateBinding BorderBrush}"
+                                            BorderThickness="{TemplateBinding BorderThickness}">
+                                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                                        </Border>
+                                    </ControlTemplate>
+                                </Button.Template>
+                            </Button>
+                        </StackPanel>
+                    </StackPanel>
+                </Grid>
+                <!-- 卡片内容 -->
+            </Border>
         </Grid>
         
     </Grid>

+ 108 - 0
CCDCountWpf/WpfPage/MainPage.xaml.cs

@@ -147,5 +147,113 @@ namespace CCDCountWpf.WpfPage
             StopIdentifyBtn.IsEnabled = false;
             StopIdentifyBtn.Opacity = 0.5;
         }
+
+        private void BottingMaterialCylinderVibrationTableHighSpeedValueUpUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue + 10) >
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue += 10;
+            }
+        }
+
+        private void BottingMaterialCylinderVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue + 1) >
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue += 1;
+            }
+        }
+
+        private void BottingMaterialCylinderVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue -= 1;
+            }
+        }
+
+        private void BottingMaterialCylinderVibrationTableHighSpeedValueDownDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue - 10) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue -= 10;
+            }
+        }
+
+        private void BottingFilterVibrationTableHighSpeedValueUpUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue + 10) >
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue += 10;
+            }
+        }
+
+        private void BottingFilterVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue + 1) >
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue += 1;
+            }
+        }
+
+        private void BottingFilterVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue -= 1;
+            }
+        }
+
+        private void BottingFilterVibrationTableHighSpeedValueDownDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue - 10) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue -= 10;
+            }
+        }
+
+        private void BottingCountVibrationTableHighSpeedValueUpUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue + 10) >
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue += 10;
+            }
+        }
+
+        private void BottingCountVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue + 1) >
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue += 1;
+            }
+        }
+
+        private void BottingCountVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue -= 1;
+            }
+        }
+
+        private void BottingCountVibrationTableHighSpeedValueDownDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue - 10) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue -= 10;
+            }
+        }
     }
 }

+ 93 - 56
CCDCountWpf/WpfPage/PlcSettingPage.xaml

@@ -12,51 +12,50 @@
             <RowDefinition Height="*"/>
         </Grid.RowDefinitions>
         <Grid x:Name ="BtnList" Height="40" VerticalAlignment="Center">
-            <Button x:Name="PlcRunBtn" Content="PLC运行操作" HorizontalAlignment="Left" Margin="0,0,0,0" Width="165" Click="PlcRunBtn_Click" />
-            <Button x:Name="PlcTestBtn" Content="PLC测试操作" HorizontalAlignment="Left" Margin="165,0,0,0" Width="165" Click="PlcTestBtn_Click" />
-            <Button x:Name="PlcParaBtn" Content="PLC参数设置" HorizontalAlignment="Left" Margin="330,0,0,0" Width="165" Click="PlcParaBtn_Click" />
+            <Button x:Name="PlcRunBtn" Content="PLC手动操作" HorizontalAlignment="Left" Margin="0,0,0,0" Width="165" Click="PlcRunBtn_Click" />
+            <Button x:Name="PlcParaBtn" Content="PLC参数设置" HorizontalAlignment="Left" Margin="165,0,0,0" Width="165" Click="PlcParaBtn_Click" />
         </Grid>
         <Grid x:Name="ShowGrid" Grid.Row="1">
-            <Grid x:Name="PLCRuningSetting" Visibility="Visible">
+            <Grid x:Name="PLCRuningSetting" Visibility="Collapsed">
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition Width="*"/>
                     <ColumnDefinition Width="150"/>
                 </Grid.ColumnDefinitions>
-                <StackPanel Orientation="Vertical" Grid.Column="0">
-                    <StackPanel Orientation="Horizontal" Margin="0,30,0,0">
-                        <Button Content="使能" Margin="40,0,0,0" Width="90" Height="40" Click="Button_Click"/>
-                        <Button x:Name="InitiateBtn" Content="PLC启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="InitiateBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="InitiateBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="StopBtn" Content="PLC停止" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="StopBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="StopBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="ReturnToZeroBtn" Content="回零" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ReturnToZeroBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ReturnToZeroBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="RepositionBtn" Content="复位" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="RepositionBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="RepositionBtn_PreviewMouseLeftButtonUp"/>
-                    </StackPanel>
-                    <StackPanel Orientation="Horizontal" Margin="0,30,0,0">
-                        <Button x:Name="ForwardRotatingJogBtn" Content="正转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ForwardRotatingJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ForwardRotatingJogBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="ReversalReverseJogBtn" Content="反转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ReversalReverseJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ReversalReverseJogBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="ShaftStopsBtn" Content="轴停止" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ShaftStopsBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ShaftStopsBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="SpeedRunBtn" Content="速度运行" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="SpeedRunBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="SpeedRunBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="EquipmentOperationBtn" Content="设备运行" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="EquipmentOperationBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="EquipmentOperationBtn_PreviewMouseLeftButtonUp"/>
-                    </StackPanel>
-                    <StackPanel Orientation="Horizontal" Margin="0,30,60,0">
-                        <Button x:Name="LevelOneVibrationTableBtn" Content="一级震台启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="LevelOneVibrationTableBtn_Click"/>
-                        <Button x:Name="LevelTwoVibrationTableBtn" Content="二级震台启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="LevelTwoVibrationTableBtn_Click"/>
-                        <Button x:Name="LevelThreeVibrationTableBtn" Content="三级震台启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="LevelThreeVibrationTableBtn_Click"/>
-                        <Button x:Name="DeviceUpBtn" Content="设备上升" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="DeviceUpBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="DeviceUpBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="DeviceDownBtn" Content="设备下降" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="DeviceDownBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="DeviceDownBtn_PreviewMouseLeftButtonUp"/>
-                    </StackPanel>
-                    <StackPanel Orientation="Horizontal" Margin="0,30,60,0">
-                        <Button x:Name="TransferStartBtn" Content="传送带启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="TransferStartBtn_Click"/>
-                        <Button x:Name="AirValveCloseBtn" Content="气锁关" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="AirValveCloseBtn_Click"/>
-                        <Button x:Name="BottleFeedingWheelResetBtn" Content="送瓶轮复位" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelResetBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelResetBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="BottleFeedingWheelReturnToZeroBtn" Content="送瓶轮回零" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelReturnToZeroBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelReturnToZeroBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="BottleFeedingWheelShaftStopsBtn" Content="送瓶轮轴停止" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelShaftStopsBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelShaftStopsBtn_PreviewMouseLeftButtonUp"/>
-                    </StackPanel>
-                    <StackPanel Orientation="Horizontal" Margin="0,30,60,0">
-                        <Button x:Name="BottleFeedingWheelPositiveRotationJogBtn" Content="送瓶轮正转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelPositiveRotationJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelPositiveRotationJogBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="BottleFeedingWheelReverseRotationJogBtn" Content="送瓶轮反转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelReverseRotationJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelReverseRotationJogBtn_PreviewMouseLeftButtonUp"/>
-                        <Button x:Name="BottleFeedingWheelEnableBtn" Content="送瓶轮使能" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="BottleFeedingWheelEnableBtn_Click"/>
-                    </StackPanel>
-                </StackPanel>
+                <WrapPanel Orientation="Horizontal" Grid.Column="0"
+                           ItemHeight="70" ItemWidth="130" HorizontalAlignment="Left"
+                           VerticalAlignment="Top">
+                    <Button Content="使能"  Margin="40,0,0,0" Height="40" Width="90" Click="Button_Click"/>
+                    <Button x:Name="InitiateBtn" Content="PLC启动"  Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="InitiateBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="InitiateBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="StopBtn" Content="PLC停止" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="StopBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="StopBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="ReturnToZeroBtn" Content="回零" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ReturnToZeroBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ReturnToZeroBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="RepositionBtn" Content="复位" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="RepositionBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="RepositionBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="ForwardRotatingJogBtn" Content="正转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ForwardRotatingJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ForwardRotatingJogBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="ReversalReverseJogBtn" Content="反转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ReversalReverseJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ReversalReverseJogBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="ShaftStopsBtn" Content="轴停止" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="ShaftStopsBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="ShaftStopsBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="SpeedRunBtn" Content="速度运行" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="SpeedRunBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="SpeedRunBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="EquipmentOperationBtn" Content="设备运行" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="EquipmentOperationBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="EquipmentOperationBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="LevelOneVibrationTableBtn" Content="一级震台启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="LevelOneVibrationTableBtn_Click"/>
+                    <Button x:Name="LevelTwoVibrationTableBtn" Content="二级震台启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="LevelTwoVibrationTableBtn_Click"/>
+                    <Button x:Name="LevelThreeVibrationTableBtn" Content="三级震台启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="LevelThreeVibrationTableBtn_Click"/>
+                    <Button x:Name="DeviceUpBtn" Content="设备上升" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="DeviceUpBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="DeviceUpBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="DeviceDownBtn" Content="设备下降" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="DeviceDownBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="DeviceDownBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="TransferStartBtn" Content="传送带启动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="TransferStartBtn_Click"/>
+                    <Button x:Name="AirValveCloseBtn" Content="气锁关" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="AirValveCloseBtn_Click"/>
+                    <Button x:Name="BottleFeedingWheelResetBtn" Content="送瓶轮复位" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelResetBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelResetBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="BottleFeedingWheelReturnToZeroBtn" Content="送瓶轮回零" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelReturnToZeroBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelReturnToZeroBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="BottleFeedingWheelShaftStopsBtn" Content="送瓶轮轴停止" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelShaftStopsBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelShaftStopsBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="BottleFeedingWheelPositiveRotationJogBtn" Content="送瓶轮正转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelPositiveRotationJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelPositiveRotationJogBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="BottleFeedingWheelReverseRotationJogBtn" Content="送瓶轮反转点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" PreviewMouseLeftButtonDown="BottleFeedingWheelReverseRotationJogBtn_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="BottleFeedingWheelReverseRotationJogBtn_PreviewMouseLeftButtonUp"/>
+                    <Button x:Name="BottleFeedingWheelEnableBtn" Content="送瓶轮使能" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="BottleFeedingWheelEnableBtn_Click"/>
+                    <Button x:Name="Valve1Jog" Content="闸门一点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve1Jog_Click"/>
+                    <Button x:Name="Valve2Jog" Content="闸门二点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve2Jog_Click"/>
+                    <Button x:Name="Valve3Jog" Content="闸门三点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve3Jog_Click"/>
+                    <Button x:Name="Valve4Jog" Content="闸门四点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve4Jog_Click"/>
+                    <Button x:Name="Valve5Jog" Content="闸门五点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve5Jog_Click"/>
+                    <Button x:Name="Valve6Jog" Content="闸门六点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve6Jog_Click"/>
+                    <Button x:Name="Valve7Jog" Content="闸门七点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve7Jog_Click"/>
+                    <Button x:Name="Valve8Jog" Content="闸门八点动" HorizontalAlignment="Left" Margin="40,0,0,0" Height="40" Width="90" Click="Valve8Jog_Click"/>
+                </WrapPanel>
                 <StackPanel Orientation="Vertical" Grid.Column="1">
                     <StackPanel Orientation="Horizontal" Margin="0,20,0,0">
                         <Label Content="使能完成:"></Label>
@@ -255,11 +254,7 @@
                     </StackPanel>
                 </StackPanel>
             </Grid>
-            <Grid x:Name="PLCTestSetting" Visibility="Collapsed">
-                <StackPanel Orientation="Vertical">
-                </StackPanel>
-            </Grid>
-            <Grid x:Name="PlcParaSetting" Visibility="Collapsed">
+            <Grid x:Name="PlcParaSetting" Visibility="Visible">
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition Width="*"/>
                     <ColumnDefinition Width="*"/>
@@ -326,27 +321,27 @@
                         <TextBox Text="{Binding BottingMaterialCylinderVibrationTableHighSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="79"/>
                         <Button x:Name="BottingMaterialCylinderVibrationTableHighSpeedValueDownBtn" Content="-" Width="30" Click="BottingMaterialCylinderVibrationTableHighSpeedValueDownBtn_Click" />
                     </StackPanel>
-                </StackPanel>
-                <StackPanel Grid.Column="1" Orientation="Vertical">
-                    <StackPanel Orientation="Horizontal" Margin="0,3,0,0">
-                        <TextBlock Text="罐装过滤震台高速值:" FontSize="16" VerticalAlignment="Center"/>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="罐装过滤震台高速值:" FontSize="16" Margin="5,0,0,0" VerticalAlignment="Center"/>
                         <Button x:Name="BottingFilterVibrationTableHighSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="BottingFilterVibrationTableHighSpeedValueUpBtn_Click" />
-                        <TextBox x:Name="___无名称_" Text="{Binding BottingFilterVibrationTableHighSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <TextBox Text="{Binding BottingFilterVibrationTableHighSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
                         <Button x:Name="BottingFilterVibrationTableHighSpeedValueDownBtn" Content="-" Width="30" Click="BottingFilterVibrationTableHighSpeedValueDownBtn_Click" />
                     </StackPanel>
                     <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
-                        <TextBlock Text="罐装计数震台高速值:" FontSize="16" VerticalAlignment="Center"/>
+                        <TextBlock Text="罐装计数震台高速值:" FontSize="16" Margin="5,0,0,0" VerticalAlignment="Center"/>
                         <Button x:Name="BottingCountVibrationTableHighSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="BottingCountVibrationTableHighSpeedValueUpBtn_Click" />
                         <TextBox Text="{Binding BottingCountVibrationTableHighSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
                         <Button x:Name="BottingCountVibrationTableHighSpeedValueDownBtn" Content="-" Width="30" Click="BottingCountVibrationTableHighSpeedValueDownBtn_Click" />
                     </StackPanel>
                     <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
-                        <TextBlock Text="罐装料筒震台减速值:" FontSize="16" VerticalAlignment="Center"/>
+                        <TextBlock Text="罐装料筒震台减速值:" FontSize="16" Margin="5,0,0,0" VerticalAlignment="Center"/>
                         <Button x:Name="BottingMaterialCylinderVibrationTableDecelerationSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="BottingMaterialCylinderVibrationTableDecelerationSpeedValueUpBtn_Click" />
                         <TextBox Text="{Binding BottingMaterialCylinderVibrationTableDecelerationSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
                         <Button x:Name="BottingMaterialCylinderVibrationTableDecelerationSpeedValueDownBtn" Content="-" Width="30" Click="BottingMaterialCylinderVibrationTableDecelerationSpeedValueDownBtn_Click" />
                     </StackPanel>
-                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                </StackPanel>
+                <StackPanel Grid.Column="1" Orientation="Vertical">
+                    <StackPanel Orientation="Horizontal" Margin="0,3,0,0">
                         <TextBlock Text="罐装过滤震台减速值:" FontSize="16" VerticalAlignment="Center"/>
                         <Button x:Name="BottingFilterVibrationTableDecelerationSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="BottingFilterVibrationTableDecelerationSpeedValueUpBtn_Click" />
                         <TextBox Text="{Binding BottingFilterVibrationTableDecelerationSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
@@ -388,9 +383,7 @@
                         <TextBox Text="{Binding CacheFilterVibrationTableDecelerationSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
                         <Button x:Name="CacheFilterVibrationTableDecelerationSpeedValueDownBtn" Content="-" Width="30" Click="CacheFilterVibrationTableDecelerationSpeedValueDownBtn_Click" />
                     </StackPanel>
-                </StackPanel>
-                <StackPanel Grid.Column="2" Orientation="Vertical">
-                    <StackPanel Orientation="Horizontal" Margin="0,3,0,0">
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                         <TextBlock Text="缓存计数震台减速值:" FontSize="16" VerticalAlignment="Center"/>
                         <Button x:Name="CacheCountVibrationTableDecelerationSpeedValueUpBtn" Content="+" Width="30" Height="30" Click="CacheCountVibrationTableDecelerationSpeedValueUpBtn_Click" />
                         <TextBox Text="{Binding CacheCountVibrationTableDecelerationSpeedValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
@@ -426,7 +419,9 @@
                         <TextBox Text="{Binding TransferValveOpenPosition,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
                         <Button x:Name="TransferValveOpenPositionDownBtn" Content="-" Width="30" Click="TransferValveOpenPositionDownBtn_Click" />
                     </StackPanel>
-                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                </StackPanel>
+                <StackPanel Grid.Column="2" Orientation="Vertical">
+                    <StackPanel Orientation="Horizontal" Margin="0,3,0,0">
                         <TextBlock Text="中转阀关位置:" FontSize="16" Margin="0,0,48,0" VerticalAlignment="Center"/>
                         <Button x:Name="TransferValveClosePositionUpBtn" Content="+" Width="30" Height="30" Click="TransferValveClosePositionUpBtn_Click" />
                         <TextBox Text="{Binding TransferValveClosePosition,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
@@ -450,6 +445,48 @@
                         <TextBox Text="{Binding BottlingShutdownTime,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
                         <Button x:Name="BottlingShutdownTimeDownBtn" Content="-" Width="30" Click="BottlingShutdownTimeDownBtn_Click" />
                     </StackPanel>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="送瓶轮运行速度:" FontSize="16" Margin="0,0,32,0" VerticalAlignment="Center"/>
+                        <Button x:Name="BottleFeedingWheelRunningSpeedUpBtn" Content="+" Width="30" Height="30" Click="BottleFeedingWheelRunningSpeedUpBtn_Click" />
+                        <TextBox Text="{Binding BottleFeedingWheelRunningSpeed,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <Button x:Name="BottleFeedingWheelRunningSpeedDownBtn" Content="-" Width="30" Click="BottleFeedingWheelRunningSpeedDownBtn_Click"/>
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="送瓶轮点动速度:" FontSize="16" Margin="0,0,32,0" VerticalAlignment="Center"/>
+                        <Button x:Name="BottleFeedingWheelJogRunningSpeedUpBtn" Content="+" Width="30" Height="30" Click="BottleFeedingWheelJogRunningSpeedUpBtn_Click" />
+                        <TextBox Text="{Binding BottleFeedingWheelJogRunningSpeed,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <Button x:Name="BottleFeedingWheelJogRunningSpeedDownBtn" Content="-" Width="30" Click="BottleFeedingWheelJogRunningSpeedDownBtn_Click" />
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="送瓶轮回零偏移值:" FontSize="16" Margin="0,0,16,0" VerticalAlignment="Center"/>
+                        <Button x:Name="BottleFeedingWheelReturnToZeroOffsetValueUpBtn" Content="+" Width="30" Height="30" Click="BottleFeedingWheelReturnToZeroOffsetValueUpBtn_Click"/>
+                        <TextBox Text="{Binding BottleFeedingWheelReturnToZeroOffsetValue,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <Button x:Name="BottleFeedingWheelReturnToZeroOffsetValueDownBtn" Content="-" Width="30" Click="BottleFeedingWheelReturnToZeroOffsetValueDownBtn_Click"/>
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="送瓶轮回零速度:" FontSize="16" Margin="0,0,32,0" VerticalAlignment="Center"/>
+                        <Button x:Name="BottleFeedingWheelReturnToZeroSpeedUpBtn" Content="+" Width="30" Height="30" Click="BottleFeedingWheelReturnToZeroSpeedUpBtn_Click"/>
+                        <TextBox Text="{Binding BottleFeedingWheelReturnToZeroSpeed,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <Button x:Name="BottleFeedingWheelReturnToZeroSpeedDownBtn" Content="-" Width="30" Click="BottleFeedingWheelReturnToZeroSpeedDownBtn_Click" />
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="送瓶轮定位长度:" FontSize="16" Margin="0,0,32,0" VerticalAlignment="Center"/>
+                        <Button x:Name="BottleFeedingWheelPositionLengthUpBtn" Content="+" Width="30" Height="30" Click="BottleFeedingWheelPositionLengthUpBtn_Click" />
+                        <TextBox Text="{Binding BottleFeedingWheelPositionLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <Button x:Name="BottleFeedingWheelPositionLengthDownBtn" Content="-" Width="30" Click="BottleFeedingWheelPositionLengthDownBtn_Click" />
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="送瓶轮暂停时间:" FontSize="16" Margin="0,0,32,0" VerticalAlignment="Center"/>
+                        <Button x:Name="BottleFeedingWheelPauseTimeUpBtn" Content="+" Width="30" Height="30" Click="BottleFeedingWheelPauseTimeUpBtn_Click" />
+                        <TextBox Text="{Binding BottleFeedingWheelPauseTime,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <Button x:Name="BottleFeedingWheelPauseTimeDownBtn" Content="-" Width="30" Click="BottleFeedingWheelPauseTimeDownBtn_Click" />
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                        <TextBlock Text="装瓶停机时间:" FontSize="16" Margin="0,0,48,0" VerticalAlignment="Center"/>
+                        <Button x:Name="DelayBlankingUpBtn" Content="+" Width="30" Height="30" Click="DelayBlankingUpBtn_Click" />
+                        <TextBox Text="{Binding DelayBlanking,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontSize="16" Width="80"/>
+                        <Button x:Name="DelayBlankingDownBtn" Content="-" Width="30" Click="DelayBlankingDownBtn_Click" />
+                    </StackPanel>
                 </StackPanel>
             </Grid>
         </Grid>

+ 317 - 50
CCDCountWpf/WpfPage/PlcSettingPage.xaml.cs

@@ -2,6 +2,7 @@
 using System;
 using System.Drawing;
 using System.Globalization;
+using System.Security.Cryptography.X509Certificates;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Data;
@@ -166,21 +167,12 @@ namespace CCDCountWpf.WpfPage
         private void PlcRunBtn_Click(object sender, RoutedEventArgs e)
         {
             PLCRuningSetting.Visibility = Visibility.Visible;
-            PLCTestSetting.Visibility = Visibility.Collapsed;
-            PlcParaSetting.Visibility = Visibility.Collapsed;
-        }
-
-        private void PlcTestBtn_Click(object sender, RoutedEventArgs e)
-        {
-            PLCRuningSetting.Visibility = Visibility.Collapsed;
-            PLCTestSetting.Visibility = Visibility.Visible;
             PlcParaSetting.Visibility = Visibility.Collapsed;
         }
 
         private void PlcParaBtn_Click(object sender, RoutedEventArgs e)
         {
             PLCRuningSetting.Visibility = Visibility.Collapsed;
-            PLCTestSetting.Visibility = Visibility.Collapsed;
             PlcParaSetting.Visibility = Visibility.Visible;
         }
 
@@ -229,12 +221,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottValueSetUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet += 1;
+            }
         }
 
         private void BottValueSetDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet - 1 > 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet -= 1;
             }
@@ -261,12 +258,17 @@ namespace CCDCountWpf.WpfPage
 
         private void TransferValveOpeningTimeUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime += 1;
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime += 1;
+            }
         }
 
         private void TransferValveOpeningTimeDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime - 1 >= 0)
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime - 1) < 
+                PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.TransferValveOpeningTime -= 1;
             }
@@ -274,12 +276,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottingDecelerationValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue += 1;
+            }
         }
 
         private void BottingDecelerationValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue - 1) < 
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottingDecelerationValue -= 1;
             }
@@ -287,12 +294,17 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheDecelerationValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue += 1;
+            }
         }
 
         private void CacheDecelerationValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue - 1) < 
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerationValue -= 1;
             }
@@ -300,12 +312,17 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheCountDelayTimingUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming += 1;
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming += 1;
+            }
         }
 
         private void CacheCountDelayTimingDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming - 1 >= 0)
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming - 1) < 
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheCountDelayTiming -= 1;
             }
@@ -313,12 +330,17 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheShutdownValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue += 1;
+            }
         }
 
         private void CacheShutdownValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue - 1) < 
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue -= 1;
             }
@@ -326,12 +348,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottingMaterialCylinderVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue += 1;
+            }
         }
 
         private void BottingMaterialCylinderVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue - 1) < 
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableHighSpeedValue -= 1;
             }
@@ -339,12 +366,15 @@ namespace CCDCountWpf.WpfPage
 
         private void BottingFilterVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue + 1) > 
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue)
             PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue += 1;
         }
 
         private void BottingFilterVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableHighSpeedValue -= 1;
             }
@@ -352,12 +382,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottingCountVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue+1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue += 1;
+            }
         }
 
         private void BottingCountVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue - 1)<
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableHighSpeedValue -= 1;
             }
@@ -365,12 +400,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottingMaterialCylinderVibrationTableDecelerationSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue +1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue += 1;
+            }
         }
 
         private void BottingMaterialCylinderVibrationTableDecelerationSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue - 1)<
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottingMaterialCylinderVibrationTableDecelerationSpeedValue -= 1;
             }
@@ -378,12 +418,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottingFilterVibrationTableDecelerationSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue += 1;
+            }
         }
 
         private void BottingFilterVibrationTableDecelerationSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue - 1) < 
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottingFilterVibrationTableDecelerationSpeedValue -= 1;
             }
@@ -391,12 +436,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottingCountVibrationTableDecelerationSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue += 1;
+            }
         }
 
         private void BottingCountVibrationTableDecelerationSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottingCountVibrationTableDecelerationSpeedValue -= 1;
             }
@@ -404,12 +454,17 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheMaterialCylinderVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue += 1;
+            }
         }
 
         private void CacheMaterialCylinderVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableHighSpeedValue -= 1;
             }
@@ -417,12 +472,17 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheFilterVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue += 1;
+            }
         }
 
         private void CacheFilterVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue - 1)<
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableHighSpeedValue -= 1;
             }
@@ -430,12 +490,17 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheCountVibrationTableHighSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue += 1;
+            }
         }
 
         private void CacheCountVibrationTableHighSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue - 1)<
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableHighSpeedValue -= 1;
             }
@@ -443,12 +508,17 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheMaterialCylinderVibrationTableDecelerationSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue += 1;
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue += 1;
+            }
         }
 
         private void CacheMaterialCylinderVibrationTableDecelerationSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheMaterialCylinderVibrationTableDecelerationSpeedValue -= 1;
             }
@@ -456,12 +526,15 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheFilterVibrationTableDecelerationSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableDecelerationSpeedValue + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableDecelerationSpeedValue)
             PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableDecelerationSpeedValue += 1;
         }
 
         private void CacheFilterVibrationTableDecelerationSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableDecelerationSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableDecelerationSpeedValue - 1)<
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableDecelerationSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheFilterVibrationTableDecelerationSpeedValue -= 1;
             }
@@ -469,12 +542,15 @@ namespace CCDCountWpf.WpfPage
 
         private void CacheCountVibrationTableDecelerationSpeedValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue + 1) >
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue)
             PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue += 1;
         }
 
         private void CacheCountVibrationTableDecelerationSpeedValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue - 1)<
+                PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.CacheCountVibrationTableDecelerationSpeedValue -= 1;
             }
@@ -482,12 +558,17 @@ namespace CCDCountWpf.WpfPage
 
         private void GateOpeningDelayUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay += 1;
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay += 1;
+            }
         }
 
         private void GateOpeningDelayDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay - 1 >= 0)
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.GateOpeningDelay -= 1;
             }
@@ -580,12 +661,17 @@ namespace CCDCountWpf.WpfPage
 
         private void AirValveOpeningDelayUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay += 1;
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay += 1;
+            }
         }
 
         private void AirValveOpeningDelayDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay - 1 >= 0)
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay - 1)<
+                PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.AirValveOpeningDelay -= 1;
             }
@@ -593,12 +679,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottlingShutdownValueUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue += 1;
+            if ((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue + 1) >
+                PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue += 1;
+            }
         }
 
         private void BottlingShutdownValueDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue - 1 >= 0)
+            if((ushort)(PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownValue -= 1;
             }
@@ -606,12 +697,17 @@ namespace CCDCountWpf.WpfPage
 
         private void BottlingShutdownTimeUpBtn_Click(object sender, RoutedEventArgs e)
         {
-            PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime += 1;
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime += 1;
+            }
         }
 
         private void BottlingShutdownTimeDownBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime - 1 >= 0)
+            if ((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime)
             {
                 PlcSettingMessageBus.PlcMessageShowBindage.BottlingShutdownTime -= 1;
             }
@@ -716,5 +812,176 @@ namespace CCDCountWpf.WpfPage
         {
             PlcSettingMessageBus.pLCManagement.SwitchBottleFeedingWheelEnable();
         }
+
+        private void BottleFeedingWheelRunningSpeedUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelRunningSpeed, out float result))
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelRunningSpeed = (result + 0.5f).ToString();
+            }
+        }
+
+        private void BottleFeedingWheelRunningSpeedDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelRunningSpeed, out float result))
+            {
+                if(result - 0.5f >= 0)
+                {
+                    PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelRunningSpeed = (result - 0.5f).ToString();
+                }
+            }
+        }
+
+        private void BottleFeedingWheelJogRunningSpeedUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelJogRunningSpeed, out float result))
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelJogRunningSpeed = (result + 0.5f).ToString();
+            }
+        }
+
+        private void BottleFeedingWheelJogRunningSpeedDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelJogRunningSpeed, out float result))
+            {
+                if(result - 0.5f >= 0)
+                {
+                    PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelJogRunningSpeed = (result - 0.5f).ToString();
+                }
+            }
+        }
+
+        private void BottleFeedingWheelReturnToZeroOffsetValueUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroOffsetValue, out float result))
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroOffsetValue = (result + 0.5f).ToString();
+            }
+        }
+
+        private void BottleFeedingWheelReturnToZeroOffsetValueDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroOffsetValue, out float result))
+            {
+                if(result - 0.5f >= 0)
+                {
+                    PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroOffsetValue = (result - 0.5f).ToString();
+                }
+            }
+        }
+
+        private void BottleFeedingWheelReturnToZeroSpeedUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroSpeed, out float result))
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroSpeed = (result + 0.5f).ToString();
+            }
+        }
+
+        private void BottleFeedingWheelReturnToZeroSpeedDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroSpeed, out float result))
+            {
+                if(result - 0.5f >= 0)
+                {
+                    PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelReturnToZeroSpeed = (result - 0.5f).ToString();
+                }
+            }
+        }
+
+        private void BottleFeedingWheelPositionLengthUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPositionLength, out float result))
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPositionLength = (result + 0.5f).ToString();
+            }
+        }
+
+        private void BottleFeedingWheelPositionLengthDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if(float.TryParse(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPositionLength, out float result))
+            {
+                if(result - 0.5f >= 0)
+                {
+                    PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPositionLength = (result - 0.5f).ToString();
+                }
+            }
+        }
+
+        private void BottleFeedingWheelPauseTimeUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPauseTime+1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPauseTime)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPauseTime += 1;
+            }
+        }
+
+        private void BottleFeedingWheelPauseTimeDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPauseTime - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPauseTime)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.BottleFeedingWheelPauseTime -= 1;
+            }
+        }
+
+        private void DelayBlankingUpBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.DelayBlanking + 1)>
+                PlcSettingMessageBus.PlcMessageShowBindage.DelayBlanking)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.DelayBlanking += 1;
+            }
+        }
+
+        private void DelayBlankingDownBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if ((UInt32)(PlcSettingMessageBus.PlcMessageShowBindage.DelayBlanking - 1) <
+                PlcSettingMessageBus.PlcMessageShowBindage.DelayBlanking)
+            {
+                PlcSettingMessageBus.PlcMessageShowBindage.DelayBlanking -= 1;
+            }
+        }
+
+        private void Valve1Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(0);
+        }
+
+        private void Valve2Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(1);
+        }
+
+        private void Valve3Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(2);
+        }
+
+        private void Valve4Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(3);
+        }
+
+        private void Valve5Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(4);
+        }
+
+        private void Valve6Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(5);
+        }
+
+        private void Valve7Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(6);
+        }
+
+        private void Valve8Jog_Click(object sender, RoutedEventArgs e)
+        {
+            PlcSettingMessageBus.pLCManagement.SwitchValveJog(7);
+        }
     }
 }

+ 67 - 1
TestWork.DLL/PLCManagementClass.cs

@@ -820,8 +820,16 @@ namespace CCDCount.DLL
                 TransferValveClosePosition = GetFloatFromRegisters(results.Skip(104).Take(2).ToArray()),
                 AirValveOpeningDelay = GetInt32FromRegisters(results.Skip(108).Take(2).ToArray()),
                 BottlingShutdownValue = results[120],
-                BottlingShutdownTime = modbusTcpClient.ReadHoldingRegistersAsInt32(slaveId: 1, startAddress: 234, count: 1)[0],
             };
+            results = modbusTcpClient.ReadHoldingRegisters(slaveId: 1, startAddress: 234, numRegisters: 36);
+            result.BottlingShutdownTime = GetInt32FromRegisters(results.Take(2).ToArray());
+            result.BottleFeedingWheelRunningSpeed = GetFloatFromRegisters(results.Skip(8).Take(2).ToArray());
+            result.BottleFeedingWheelJogRunningSpeed = GetFloatFromRegisters(results.Skip(12).Take(2).ToArray());
+            result.BottleFeedingWheelReturnToZeroOffsetValue = GetFloatFromRegisters(results.Skip(16).Take(2).ToArray());
+            result.BottleFeedingWheelReturnToZeroSpeed = GetFloatFromRegisters(results.Skip(20).Take(2).ToArray());
+            result.BottleFeedingWheelPositionLength = GetFloatFromRegisters(results.Skip(24).Take(2).ToArray());
+            result.BottleFeedingWheelPauseTime = GetInt32FromRegisters(results.Skip(28).Take(2).ToArray());
+            result.DelayBlanking = GetInt32FromRegisters(results.Skip(32).Take(2).ToArray());
             return result;
         }
 
@@ -922,5 +930,63 @@ namespace CCDCount.DLL
             bool Enable = ReadEnable();
             modbusTcpClient.WriteCoilsRegister(slaveId: 1, CoilsAddress: 24, values: !Enable);
         }
+
+        /// <summary>
+        /// 切换闸门点动
+        /// </summary>
+        /// <param name="value">闸门编号</param>
+        public void SwitchValveJog(int value)
+        {
+            if (value >= 0 && value <= 7)
+            {
+                ushort valveJog = ReadValveJog();
+                ushort mask = (ushort)(1 << value);
+                modbusTcpClient.WriteSingleRegister(slaveId: 1, registerAddress: 238, value: (ushort)(valveJog^mask));
+            }
+        }
+
+        /// <summary>
+        /// 写入送瓶轮运行速度
+        /// </summary>
+        /// <param name="result"></param>
+        public void WriteBottleFeedingWheelRunningSpeed(float result)
+        {
+            modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 242, value: result);
+        }
+
+        public void WriteBottleFeedingWheelJogRunningSpeed(float result)
+        {
+            modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 246, value: result);
+        }
+
+        public void WriteBottleFeedingWheelReturnToZeroOffsetValue(float result)
+        {
+            modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 250, value: result);
+        }
+
+        public void WriteBottleFeedingWheelReturnToZeroSpeed(float result)
+        {
+            modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 254, value: result);
+        }
+
+        public void WriteBottleFeedingWheelPositionLength(float result)
+        {
+            modbusTcpClient.WriteSingleReal(slaveId: 1, startAddress: 258, value: result);
+        }
+
+        public void WriteBottleFeedingWheelPauseTime(UInt32 result)
+        {
+            modbusTcpClient.WriteSingleInt32(slaveId: 1, startAddress: 262, value: result);
+        }
+
+        public void WriteDelayBlanking(UInt32 result)
+        {
+            modbusTcpClient.WriteSingleInt32(slaveId: 1, startAddress: 266, value: result);
+        }
+
+        public ushort ReadValveJog()
+        {
+            return modbusTcpClient.ReadHoldingRegisters(slaveId: 1, startAddress: 238, numRegisters: 1)[0];
+        }
     }
 }

+ 19 - 24
TestWork.MODEL/PlcModel/PlcParaModelClass.cs

@@ -21,7 +21,7 @@ namespace CCDCount.MODEL.PlcModel
         /// <summary>
         /// 罐装设定值
         /// </summary>
-        public UInt16 BottValueSet { get; set;}
+        public ushort BottValueSet { get; set;}
 
         /// <summary>
         /// 中转阀打开速度
@@ -36,12 +36,12 @@ namespace CCDCount.MODEL.PlcModel
         /// <summary>
         /// 罐装减速值
         /// </summary>
-        public UInt16 BottingDecelerationValue { get; set;}
+        public ushort BottingDecelerationValue { get; set;}
 
         /// <summary>
         /// 缓存减速值
         /// </summary>
-        public UInt16 CacheDecelerationValue { get; set;}
+        public ushort CacheDecelerationValue { get; set;}
 
         /// <summary>
         /// 缓存计数延时计时
@@ -51,67 +51,67 @@ namespace CCDCount.MODEL.PlcModel
         /// <summary>
         /// 缓存停机值
         /// </summary>
-        public UInt16 CacheShutdownValue { get; set;}
+        public ushort CacheShutdownValue { get; set;}
 
         /// <summary>
         /// 罐装料筒震台高速值
         /// </summary>
-        public UInt16 BottingMaterialCylinderVibrationTableHighSpeedValue { get; set;}
+        public ushort BottingMaterialCylinderVibrationTableHighSpeedValue { get; set;}
 
         /// <summary>
         /// 罐装过滤震台高速值
         /// </summary>
-        public UInt16 BottingFilterVibrationTableHighSpeedValue { get; set;}
+        public ushort BottingFilterVibrationTableHighSpeedValue { get; set;}
 
         /// <summary>
         /// 罐装计数震台高速值
         /// </summary>
-        public UInt16 BottingCountVibrationTableHighSpeedValue { get; set;}
+        public ushort BottingCountVibrationTableHighSpeedValue { get; set;}
 
         /// <summary>
         /// 罐装料筒震台减速值
         /// </summary>
-        public UInt16 BottingMaterialCylinderVibrationTableDecelerationSpeedValue { get; set; }
+        public ushort BottingMaterialCylinderVibrationTableDecelerationSpeedValue { get; set; }
 
         /// <summary>
         /// 罐装过滤震台减速值
         /// </summary>
-        public UInt16 BottingFilterVibrationTableDecelerationSpeedValue { get; set; }
+        public ushort BottingFilterVibrationTableDecelerationSpeedValue { get; set; }
 
         /// <summary>
         /// 罐装计数震台减速值
         /// </summary>
-        public UInt16 BottingCountVibrationTableDecelerationSpeedValue { get; set; }
+        public ushort BottingCountVibrationTableDecelerationSpeedValue { get; set; }
 
         /// <summary>
         /// 缓存料筒震台高速值
         /// </summary>
-        public UInt16 CacheMaterialCylinderVibrationTableHighSpeedValue { get; set; }
+        public ushort CacheMaterialCylinderVibrationTableHighSpeedValue { get; set; }
 
         /// <summary>
         /// 缓存过滤震台高速值
         /// </summary>
-        public UInt16 CacheFilterVibrationTableHighSpeedValue { get; set; }
+        public ushort CacheFilterVibrationTableHighSpeedValue { get; set; }
 
         /// <summary>
         /// 缓存计数震台高速值
         /// </summary>
-        public UInt16 CacheCountVibrationTableHighSpeedValue { get; set; }
+        public ushort CacheCountVibrationTableHighSpeedValue { get; set; }
 
         /// <summary>
         /// 缓存料筒震台减速值
         /// </summary>
-        public UInt16 CacheMaterialCylinderVibrationTableDecelerationSpeedValue { get; set; }
+        public ushort CacheMaterialCylinderVibrationTableDecelerationSpeedValue { get; set; }
 
         /// <summary>
         /// 缓存过滤震台减速值
         /// </summary>
-        public UInt16 CacheFilterVibrationTableDecelerationSpeedValue { get; set; }
+        public ushort CacheFilterVibrationTableDecelerationSpeedValue { get; set; }
 
         /// <summary>
         /// 缓存计数震台减速值
         /// </summary>
-        public UInt16 CacheCountVibrationTableDecelerationSpeedValue { get; set; }
+        public ushort CacheCountVibrationTableDecelerationSpeedValue { get; set; }
 
         /// <summary>
         /// 闸板打开延时
@@ -151,18 +151,13 @@ namespace CCDCount.MODEL.PlcModel
         /// <summary>
         /// 装瓶停机值
         /// </summary>
-        public UInt16 BottlingShutdownValue { get; set; }
+        public ushort BottlingShutdownValue { get; set; }
 
         /// <summary>
         /// 装瓶停机时间
         /// </summary>
         public UInt32 BottlingShutdownTime { get; set; }
 
-        /// <summary>
-        /// 闸门点动
-        /// </summary>
-        public ushort ValveJog { get; set;}
-
         /// <summary>
         /// 送瓶轮运行速度
         /// </summary>
@@ -191,11 +186,11 @@ namespace CCDCount.MODEL.PlcModel
         /// <summary>
         /// 送瓶轮暂停时间
         /// </summary>
-        public float BottleFeedingWheelPauseTime { get; set; }
+        public UInt32 BottleFeedingWheelPauseTime { get; set; }
 
         /// <summary>
         /// 下料延时
         /// </summary>
-        public float DelayBlanking { get; set; }
+        public UInt32 DelayBlanking { get; set; }
     }
 }