diff --git a/DH.Devices.Motion/SLDMotion.cs b/DH.Devices.Motion/SLDMotion.cs index 3f2b361..bf2b14e 100644 --- a/DH.Devices.Motion/SLDMotion.cs +++ b/DH.Devices.Motion/SLDMotion.cs @@ -85,11 +85,15 @@ namespace DH.Devices.Motion public void NewPieces(int diskIndex, uint pieceNumber) { - _taskFactory.StartNew(() => + Task.Run(() => { - Thread.CurrentThread.Priority = ThreadPriority.Highest; + try { + Thread.CurrentThread.Priority = ThreadPriority.Highest; - OnNewPieces?.Invoke(diskIndex, pieceNumber); + OnNewPieces?.Invoke(diskIndex, pieceNumber); + } + catch (Exception ex) { /* 记录异常 */ } + }); } public void SetResetFlag(bool isReset) diff --git a/DH.Devices.PLC/XinJEPLCTcpNet.cs b/DH.Devices.PLC/XinJEPLCTcpNet.cs index 9b1c25c..5797b0c 100644 --- a/DH.Devices.PLC/XinJEPLCTcpNet.cs +++ b/DH.Devices.PLC/XinJEPLCTcpNet.cs @@ -627,11 +627,22 @@ namespace DH.Devices.PLC public void NewPieces(int axisIndex, uint pieceNumber) { - _taskFactory.StartNew(() => - { - Thread.CurrentThread.Priority = ThreadPriority.Highest; + //_taskFactory.StartNew(() => + //{ + // Thread.CurrentThread.Priority = ThreadPriority.Highest; + + // OnNewPieces?.Invoke(axisIndex, pieceNumber); + //}); + Task.Run(() => + { + try + { + Thread.CurrentThread.Priority = ThreadPriority.Highest; + + OnNewPieces?.Invoke(axisIndex, pieceNumber); + } + catch (Exception ex) { /* 记录异常 */ } - OnNewPieces?.Invoke(axisIndex, pieceNumber); }); } public async Task HeartbeatAsync1() @@ -697,14 +708,14 @@ namespace DH.Devices.PLC //while (CurrentState != DeviceState.DSClose && CurrentState != DeviceState.DSExcept && CurrentState != DeviceState.DSUninit) while (Connected) { - Stopwatch sw = new Stopwatch(); + // Stopwatch sw = new Stopwatch(); uint tmpPieceNumber = 0; - sw.Start(); + // sw.Start(); // var ret = TcpNet.ReadUInt16("D1016"); var ret = TcpNet.ReadUInt32(Count); - sw.Stop(); + //sw.Stop(); if (ret.IsSuccess) { tmpPieceNumber = ret.Content; @@ -712,7 +723,7 @@ namespace DH.Devices.PLC if (ret.IsSuccess && ret.Content > piecesCount) { - sw.Start(); + // sw.Start(); // Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")} 板卡{station}产品入列触发{tmpPieceNumber}"); //LogAsync(DateTime.Now, LogLevel.Information, $"转盘{0}产品入列 {piecesCountDic[0]} size:{sum}"); if (tmpPieceNumber != piecesCount + 1) @@ -724,8 +735,8 @@ namespace DH.Devices.PLC piecesCount = tmpPieceNumber; //NewPieces(ai, piecesCountDic[station]); NewPieces(1, piecesCount); - sw.Stop(); - startTime = DateTime.Now; + // sw.Stop(); + // startTime = DateTime.Now; //if (idalarm) //{ // idalarm = false; diff --git a/DHSoftware/MainWindow.cs b/DHSoftware/MainWindow.cs index fbeefa1..3c88c9b 100644 --- a/DHSoftware/MainWindow.cs +++ b/DHSoftware/MainWindow.cs @@ -653,9 +653,9 @@ namespace DHSoftware detectionConfig.IsEnabled = detection.IsEnabled; detectionConfig.ImageSaveDirectory = "D://Projects//Images"; - detectionConfig.ShowLocation.X = (i + 1) % 5 + (i + 1) / 5; - // detectionConfig.ShowLocation.X = detection.ShowLocation.X; - detectionConfig.ShowLocation.Y = (i + 1) / 5 + 1; + // 优化后代码 + detectionConfig.ShowLocation.X = (i % 5) + 1; // X坐标从1开始,每行1-5 + detectionConfig.ShowLocation.Y = (i / 5) + 1; // Y坐标从1开始,每5个换行 // detectionConfig.ShowLocation.Y = detection.ShowLocation.Y; DetectionConfigs.Add(detectionConfig); } @@ -998,8 +998,7 @@ namespace DHSoftware // 处理按钮状态变化 if (startPressed) { - PLC.TurnSpeed(0); - PLC.TurnStart(false); + HandleStartButton(); } if (resetPressed) @@ -1015,7 +1014,7 @@ namespace DHSoftware //EmergencyStop(null, null, null); } - Thread.Sleep(50); + Thread.Sleep(100); } catch (Exception ex) { @@ -1394,15 +1393,15 @@ namespace DHSoftware //转盘2 的物料是不是重新覆盖之前的pDta if (axisIndex == 1) { - ProductData pData = new ProductData("", pieceNumber, ProductBaseCount); + ProductData pData = new ProductData(BatchNO, pieceNumber, ProductBaseCount); _productLists[index][pieceNumber] = pData; - LogAsync(DateTime.Now, LogLevel.Action, $">> 轴{axisIndex}新产品{pieceNumber}加入队列{index}----板卡计数{PieceCount}"); + LogAsync(DateTime.Now, LogLevel.Action, $">> 转盘{axisIndex}新产品{pieceNumber}加入队列{index}----计数{PieceCount}"); } - DateTime dtNow = DateTime.Now; - UpdateCT(null, (float)(dtNow - _ctTime).TotalSeconds); - _ctTime = dtNow; + //DateTime dtNow = DateTime.Now; + //UpdateCT(null, (float)(dtNow - _ctTime).TotalSeconds); + // _ctTime = dtNow; } public async Task UpdateCT(object objData, float ctTime) diff --git a/DHSoftware/Views/FrmLog.Designer.cs b/DHSoftware/Views/FrmLog.Designer.cs index f0b724b..4eb8b94 100644 --- a/DHSoftware/Views/FrmLog.Designer.cs +++ b/DHSoftware/Views/FrmLog.Designer.cs @@ -55,7 +55,7 @@ this.tsmiClearLog.Name = "tsmiClearLog"; this.tsmiClearLog.Size = new System.Drawing.Size(124, 22); this.tsmiClearLog.Text = "清空日志"; - this.tsmiClearLog.Click += new System.EventHandler(this.tsmiClearLog_Click); + // this.tsmiClearLog.Click += new System.EventHandler(this.tsmiClearLog_Click); // // menuStrip1 // diff --git a/DHSoftware/Views/FrmLog.cs b/DHSoftware/Views/FrmLog.cs index e1902c9..f2c1fc3 100644 --- a/DHSoftware/Views/FrmLog.cs +++ b/DHSoftware/Views/FrmLog.cs @@ -30,8 +30,11 @@ namespace DHSoftware.Views #region 常量配置 private const string SOURCE_PROCESS = "流程"; private const int LOG_NUM_LIMIT = 2000; - private const int BATCH_SIZE = 50; - private const int PROCESS_INTERVAL = 100; + // private const int BATCH_SIZE = 50; + // 调整常量配置 + private const int BATCH_SIZE = 100; // 从50提升到100 + private const int PROCESS_INTERVAL = 200; // 从100ms调整到200ms + // private const int PROCESS_INTERVAL = 100; private const int FIRST_COL_WIDTH = 120; #endregion