diff --git a/DH.Commons/Enums/Enum.cs b/DH.Commons/Enums/Enum.cs
index 7bfbc3f..e13843a 100644
--- a/DH.Commons/Enums/Enum.cs
+++ b/DH.Commons/Enums/Enum.cs
@@ -9,8 +9,9 @@ namespace DH.Commons.Enums
 {
     public enum EnumStatus
     {
-        未运行,
+        待机中,
         运行中,
+        清料中,
         警告,
         异常
     }
diff --git a/DH.Commons/Models/SystemModel.cs b/DH.Commons/Models/SystemModel.cs
index 3be9470..8090d1e 100644
--- a/DH.Commons/Models/SystemModel.cs
+++ b/DH.Commons/Models/SystemModel.cs
@@ -18,7 +18,7 @@ namespace DH.Commons.Models
         /// 
         /// 当前状态
         /// 
-        public static EnumStatus CurrentStatus =EnumStatus.未运行;
+        public static EnumStatus CurrentStatus =EnumStatus.待机中;
     }
 
     /// 
diff --git a/DH.Devices.PLC/XinJEPLCTcpNet.cs b/DH.Devices.PLC/XinJEPLCTcpNet.cs
index d3a7a81..21dcf53 100644
--- a/DH.Devices.PLC/XinJEPLCTcpNet.cs
+++ b/DH.Devices.PLC/XinJEPLCTcpNet.cs
@@ -846,6 +846,9 @@ namespace DH.Devices.PLC
             Thread.Sleep(1000);
             //计数清零
             CountToZero();
+            Thread.Sleep(1000);
+            //绿灯
+            GreenLight(true);
             LogAsync(DateTime.Now, LogLevel.Information, $"状态复位-关闭定位-写入流程加载点位配置-计数清零");
 
             Thread.Sleep(200);
@@ -870,11 +873,8 @@ namespace DH.Devices.PLC
             Thread.Sleep(1000);
             StopProcessAction();
             TurnStart(false);
-            LogAsync(DateTime.Now, LogLevel.Action, $"流程停止");
-            Task.Run(async () => {
-
-               await ExecuteClearDelayAsync();
-            });
+         
+       
           
         }
 
@@ -883,10 +883,8 @@ namespace DH.Devices.PLC
             int? clearTime = ConfigModel.GlobalList?.FirstOrDefault()?.ClearTime;
             if (clearTime != null)
             {
-                LogAsync(DateTime.Now, LogLevel.Action, $"转盘清料开始");
                 TurnClear(true);
                 await Task.Delay(clearTime.Value * 1000);
-                LogAsync(DateTime.Now, LogLevel.Action, $"转盘清料完成");
                 TurnClear(false);
             }
         }
diff --git a/DHSoftware/MainWindow.Designer.cs b/DHSoftware/MainWindow.Designer.cs
index 380e730..9167ff2 100644
--- a/DHSoftware/MainWindow.Designer.cs
+++ b/DHSoftware/MainWindow.Designer.cs
@@ -62,6 +62,7 @@
             lblOEE_Total = new Label();
             label10 = new Label();
             label7 = new Label();
+            tagMachineStatus = new AntdUI.Tag();
             panel2 = new AntdUI.Panel();
             panel1 = new AntdUI.Panel();
             segmented2 = new AntdUI.Segmented();
@@ -295,6 +296,7 @@
             tableLayoutNums.ColumnCount = 1;
             tableLayoutNums.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
             tableLayoutNums.Controls.Add(tableLayoutPanel3, 0, 1);
+            tableLayoutNums.Controls.Add(tagMachineStatus, 0, 0);
             tableLayoutNums.Dock = DockStyle.Fill;
             tableLayoutNums.Location = new Point(0, 0);
             tableLayoutNums.Name = "tableLayoutNums";
@@ -419,6 +421,16 @@
             label7.Text = "总计数";
             label7.TextAlign = ContentAlignment.MiddleCenter;
             // 
+            // tagMachineStatus
+            // 
+            tagMachineStatus.Font = new Font("Microsoft YaHei UI", 14.25F, FontStyle.Regular, GraphicsUnit.Point, 134);
+            tagMachineStatus.Location = new Point(3, 3);
+            tagMachineStatus.Name = "tagMachineStatus";
+            tagMachineStatus.Size = new Size(141, 44);
+            tagMachineStatus.TabIndex = 12;
+            tagMachineStatus.Text = "待机中";
+            tagMachineStatus.Type = AntdUI.TTypeMini.Primary;
+            // 
             // panel2
             // 
             panel2.Location = new Point(511, 86);
@@ -502,7 +514,7 @@
             btnCreateBatchNO.Name = "btnCreateBatchNO";
             btnCreateBatchNO.Size = new Size(72, 35);
             btnCreateBatchNO.TabIndex = 21;
-            btnCreateBatchNO.Tag = "sys-load";
+            btnCreateBatchNO.Tag = "";
             btnCreateBatchNO.Text = "生成批次";
             btnCreateBatchNO.Click += btnCreateBatchNO_Click;
             // 
@@ -753,5 +765,6 @@
         private AntdUI.Button btnCreateBatchNO;
         private AntdUI.Input textBoxBatchNO;
         private AntdUI.Segmented segmented2;
+        public AntdUI.Tag tagMachineStatus;
     }
 }
\ No newline at end of file
diff --git a/DHSoftware/MainWindow.cs b/DHSoftware/MainWindow.cs
index 5876c79..0a651e9 100644
--- a/DHSoftware/MainWindow.cs
+++ b/DHSoftware/MainWindow.cs
@@ -701,49 +701,57 @@ namespace DHSoftware
        
         public void ConnectPLC()
         {
-            if (ConfigModel.PLCBaseList.Count > 0)
+            try
             {
-                for (int i = 0; i < ConfigModel.PLCBaseList.Count; i++)
+                if (ConfigModel.PLCBaseList.Count > 0)
                 {
-                    var plcBase = ConfigModel.PLCBaseList[i];
-                    if (plcBase.PLCType == EnumPLCType.信捷XC网口 || plcBase.PLCType == EnumPLCType.信捷XD网口)
+                    for (int i = 0; i < ConfigModel.PLCBaseList.Count; i++)
                     {
-                        PLC.IP = plcBase.IP;
-                        PLC.PLCType = plcBase.PLCType;
-                        PLC.Enable = plcBase.Enable;
-                        PLC.PLCName = plcBase.PLCName;
-                        PLC.PLCItemList = plcBase.PLCItemList;
-                        PLC.Port = plcBase.Port;
-                        PLC.OnLog -= _visionEngine_OnLog;
-                        PLC.OnLog += _visionEngine_OnLog;
-                        if(PLC.Enable)
+                        var plcBase = ConfigModel.PLCBaseList[i];
+                        if (plcBase.PLCType == EnumPLCType.信捷XC网口 || plcBase.PLCType == EnumPLCType.信捷XD网口)
                         {
-                            PLC.PLCConnect();
-                            Button CamLabel = new Button();
-                            CamLabel.Name = PLC.PLCName;
-                            CamLabel.Text = PLC.PLCName; // 关键1:必须有文本
-                            CamLabel.AutoSize = true;
-                            CamLabel.Size = new System.Drawing.Size(20, 20); // 关键2:自动调整大小
-                            CamLabel.Location = new Point(20 + 50 * (i + ConfigModel.CameraBaseList.Count), 12); // 关键3:明确位置
-                            if (PLC.Connected)
-                                CamLabel.BackColor = Color.Green;  // 关键4:避免透明
-                            else
-                               CamLabel.BackColor = Color.Yellow;  // 关键4:避免透明
-                            CamLabel.ForeColor = Color.Black;  // 关键4:避免透明
-                                                               //CamLabel.ForeColor = Color.Green;  // 关键4:避免透明
-                            CamLabel.Font = new Font("Microsoft YaHei", 9); // 可选:字体
-
-                            // 关键5:确保添加到父控件
-                            if (pageHeader1 != null && !pageHeader1.Controls.Contains(CamLabel))
+                            PLC.IP = plcBase.IP;
+                            PLC.PLCType = plcBase.PLCType;
+                            PLC.Enable = plcBase.Enable;
+                            PLC.PLCName = plcBase.PLCName;
+                            PLC.PLCItemList = plcBase.PLCItemList;
+                            PLC.Port = plcBase.Port;
+                            PLC.OnLog -= _visionEngine_OnLog;
+                            PLC.OnLog += _visionEngine_OnLog;
+                            if (PLC.Enable)
                             {
-                                pageHeader1.Controls.Add(CamLabel);
+                                PLC.PLCConnect();
+                                Button CamLabel = new Button();
+                                CamLabel.Name = PLC.PLCName;
+                                CamLabel.Text = PLC.PLCName; // 关键1:必须有文本
+                                CamLabel.AutoSize = true;
+                                CamLabel.Size = new System.Drawing.Size(20, 20); // 关键2:自动调整大小
+                                CamLabel.Location = new Point(20 + 50 * (i + ConfigModel.CameraBaseList.Count), 12); // 关键3:明确位置
+                                if (PLC.Connected)
+                                    CamLabel.BackColor = Color.Green;  // 关键4:避免透明
+                                else
+                                    CamLabel.BackColor = Color.Yellow;  // 关键4:避免透明
+                                CamLabel.ForeColor = Color.Black;  // 关键4:避免透明
+                                                                   //CamLabel.ForeColor = Color.Green;  // 关键4:避免透明
+                                CamLabel.Font = new Font("Microsoft YaHei", 9); // 可选:字体
+
+                                // 关键5:确保添加到父控件
+                                if (pageHeader1 != null && !pageHeader1.Controls.Contains(CamLabel))
+                                {
+                                    pageHeader1.Controls.Add(CamLabel);
+                                }
+
                             }
 
                         }
-                        
                     }
+
                 }
             }
+            catch (Exception ex) 
+            {
+            
+            }
         }
         FrmLog frmLog;
         public void InitModel()
@@ -1122,7 +1130,7 @@ namespace DHSoftware
                         //EmergencyStop(null, null, null);
                     }
 
-                    Thread.Sleep(50); // 降低 CPU 占用,根据实际调整轮询间隔
+                    Thread.Sleep(50); 
                 }
                 catch (Exception ex)
                 {
@@ -1264,13 +1272,58 @@ namespace DHSoftware
        
         private void HandleStartButton()
         {
-            InitialCameraSumsView();
-            LogAsync(DateTime.Now, LogLevel.Information, "流程启动中,请稍候...");
-            ResetAllCameraCounts();
-            //开始流程
-      
-            StartProcess();
-            LogAsync(DateTime.Now, LogLevel.Action, "流程启动完成!");
+            lock (_stopLock)
+            {
+                if (_isStopProcessing) return;
+                _isStopProcessing = true;
+            }
+            try
+            {
+                if (SystemModel.CurrentStatus == EnumStatus.待机中)
+                {
+                    InitialCameraSumsView();
+                    LogAsync(DateTime.Now, LogLevel.Information, "流程启动中,请稍候...");
+                    ResetAllCameraCounts();
+                    //开始流程
+
+                    StartProcess();
+                    SystemModel.CurrentStatus = EnumStatus.运行中;
+                    this.BeginInvoke(new MethodInvoker(delegate ()
+                    {
+                        tagMachineStatus.Type = TTypeMini.Success;
+                        tagMachineStatus.Text = "运行中";
+                    }));
+                    LogAsync(DateTime.Now, LogLevel.Action, "流程启动完成!");
+
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.运行中)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备正在运行,无需启动!");
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.清料中)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备正在清料,请稍候!");
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.警告)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备报警,请复位后重试!");
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.异常)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备异常,请检查!");
+                }
+
+            }
+            finally
+            {
+                lock (_stopLock)
+                {
+                    _isStopProcessing = false;
+                }
+            }
+
+
+
         }
 
 
@@ -1279,10 +1332,7 @@ namespace DHSoftware
         {
             try
             {
-                if (CurrentMachine)
-                {
-                    return;
-                }
+      
 
                 BatchNO = textBoxBatchNO.Text;
                 textBoxBatchNO.ReadOnly = true;
@@ -1848,26 +1898,89 @@ namespace DHSoftware
 
         }
 
-        private void HandleStopButton()
-        {
-            if (!CurrentMachine)
+        private readonly object _stopLock = new object(); // 锁对象
+        private bool _isStopProcessing = false;          // 状态标志
+        private async void HandleStopButton()
+        {   
+            // 通过锁和状态标志实现双重检查
+            lock (_stopLock)
             {
-                return;
+                if (_isStopProcessing) return;
+                _isStopProcessing = true;
+            }
+            try
+            {
+                if (SystemModel.CurrentStatus == EnumStatus.待机中)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备待机中,无需停止!");
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.运行中)
+                {
+                    textBoxBatchNO.ReadOnly = false;
+                    btnCreateBatchNO.Enabled = true;
+
+                    // Cameras.Clear();
+                    // Dectection.Clear();
+                    // Add the code for the "停止" button click here
+                    PLC.StopProcess();
+                    SystemModel.CurrentStatus = EnumStatus.待机中;
+                    this.BeginInvoke(new MethodInvoker(delegate ()
+                    {
+                        tagMachineStatus.Type = TTypeMini.Primary;
+                        tagMachineStatus.Text = "待机中";
+                    }));
+                    LogAsync(DateTime.Now, LogLevel.Action, $"流程停止!");
+                  await  Task.Run(async () =>
+                    {
+
+                        await ExecuteClearDelayAsync();
+                    });
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.清料中)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备正在清料,请稍候!");
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.警告)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备报警,请复位后重试!");
+                }
+                else if (SystemModel.CurrentStatus == EnumStatus.异常)
+                {
+                    LogAsync(DateTime.Now, LogLevel.Warning, "设备异常,请检查!");
+                }
+            }
+
+            finally
+            {
+                lock (_stopLock)
+                {
+                    _isStopProcessing = false;
+                }
             }
 
-            textBoxBatchNO.ReadOnly = false;
-            btnCreateBatchNO.Enabled = true;
 
-            // Cameras.Clear();
-            // Dectection.Clear();
-            // Add the code for the "停止" button click here
-            PLC.StopProcess();
-            CurrentMachine = false;
-         
             //sLDMotion.Stop();
         }
 
+        private async Task ExecuteClearDelayAsync()
+        {
+            LogAsync(DateTime.Now, LogLevel.Action, $"转盘清料开始");
+            SystemModel.CurrentStatus = EnumStatus.清料中;
+            this.BeginInvoke(new MethodInvoker(delegate ()
+            {
+                tagMachineStatus.Type = TTypeMini.Warn;
+                tagMachineStatus.Text = "清料中";
+            }));
+            await PLC.ExecuteClearDelayAsync();
+            LogAsync(DateTime.Now, LogLevel.Action, $"转盘清料完成");
 
+            SystemModel.CurrentStatus = EnumStatus.待机中;
+            this.BeginInvoke(new MethodInvoker(delegate ()
+            {
+                tagMachineStatus.Type = TTypeMini.Primary;
+                tagMachineStatus.Text = "待机中";
+            }));
+        }
 
         public void CalculateOEE()
         {
diff --git a/DHSoftware/Program.cs b/DHSoftware/Program.cs
index 77eedb6..e489760 100644
--- a/DHSoftware/Program.cs
+++ b/DHSoftware/Program.cs
@@ -67,6 +67,8 @@ namespace DHSoftware
             catch (Exception ex)
             {
                 SystemModel.CurrentStatus = EnumStatus.异常;
+                MainWindow.Instance.tagMachineStatus.Type = TTypeMini.Error;
+                MainWindow.Instance.tagMachineStatus.Text = "异常";
                 Modal.open(WelcomeWindow.Instance, "错误!", ex.ToString(), TType.Error);
             }
 
@@ -99,6 +101,8 @@ namespace DHSoftware
             catch (Exception ex)
             {
                 SystemModel.CurrentStatus = EnumStatus.异常;
+                MainWindow.Instance.tagMachineStatus.Type = TTypeMini.Error;
+                MainWindow.Instance.tagMachineStatus.Text = "异常";
                 Modal.open(WelcomeWindow.Instance, "错误!", ex.ToString(), TType.Error);
             }
             UpdateStep(80, "正在加载算法模型", true);
@@ -109,6 +113,8 @@ namespace DHSoftware
             catch (Exception ex)
             {
                 SystemModel.CurrentStatus = EnumStatus.异常;
+                MainWindow.Instance.tagMachineStatus.Type = TTypeMini.Error;
+                MainWindow.Instance.tagMachineStatus.Text = "异常";
                 Modal.open(WelcomeWindow.Instance, "错误!", ex.ToString(), TType.Error);
             }
             UpdateStep(100, "程序初始化完成", true);