wanghan 7 месяцев назад
Родитель
Сommit
39d6d3360a
1 измененных файлов с 35 добавлено и 11 удалено
  1. 35 11
      TeamAAS-VM/Core/Management.cs

+ 35 - 11
TeamAAS-VM/Core/Management.cs

@@ -215,6 +215,7 @@ namespace TeamAAS_VP.Core
             _systemDatabaseService = systemDatabaseService;
             _lightManagerService = lightManagerService;
             _mesService = mesService;
+            InitPressure();
         }
 
         #region 初始化硬件模块
@@ -2133,23 +2134,27 @@ namespace TeamAAS_VP.Core
                                 {
                                     return;
                                 }
+                                var code = plc.ReadNode<string>(string.Format(addressConfig.In_Code.Address, i));
+                                
                                 if (state == 1)
                                 {
-                                    SendTaskMessage($"收到开始组装信号[{i}]...", MessageLevel.Debug);
-
-                                    var code = plc.ReadNode<string>(string.Format(addressConfig.In_Code.Address, i));
+                                    //SendTaskMessage($"收到开始组装信号[{i}]...", MessageLevel.Debug);
+                                    SendTaskMessage($"收到开始保压信号[{i}]...", MessageLevel.Debug);
                                     // 开始采集压力值
                                     StartPressureCollection(currentProduct.Name, code, i);
                                 }
                                 else
                                 {
-                                    SendTaskMessage($"开始锁付信号[{i}]已关闭", MessageLevel.Alarm);
-                                    // 关闭时的处理(如需)可放在这里
+                                    //SendTaskMessage($"开始锁付信号[{i}]已关闭", MessageLevel.Alarm);
+                                    //// 关闭时的处理(如需)可放在这里
+                                    SendTaskMessage($"收到关闭保压信号[{i}]...", MessageLevel.Debug);
+                                    // 停止采集压力并保存
+                                    await StopAndSavePressureCollectionAsync(currentProduct.Name, code, i);
                                 }
                             }
                         }
                         //停止组装
-                        else if (string.Format(addressConfig.In_WorkStart.Address, i).Contains(tuple.nodeId))
+                        /*else if (string.Format(addressConfig.In_WorkStart.Address, i).Contains(tuple.nodeId))
                         {
                             if (tuple.value is Int16 state)
                             {
@@ -2216,7 +2221,7 @@ namespace TeamAAS_VP.Core
                                     SendTaskMessage($"停止锁付信号[{i}]已关闭", MessageLevel.Alarm);
                                 }
                             }
-                        }
+                        }*/
                     }
                 }
             }
@@ -2239,6 +2244,25 @@ namespace TeamAAS_VP.Core
         }
 
         #region Pressure collection helpers
+        public void InitPressure()
+        {
+            for (int i = 0; i < _pressureSamples.Length; i++)
+            {
+                _pressureSamples[i] = new List<(DateTime, float)>();
+            }
+            for (int i = 0; i < _pressureCts.Length; i++)
+            {
+                _pressureCts[i] = new CancellationTokenSource();
+            }
+            for (int i = 0; i < _pressureTimeoutCts.Length; i++)
+            {
+                _pressureTimeoutCts[i] = new CancellationTokenSource();
+            }
+            for (int i = 0; i < _pressureLinkedCts.Length; i++)
+            {
+                _pressureLinkedCts[i] = new CancellationTokenSource();
+            }
+        }
         /// <summary>
         /// 开始采集压力值
         /// </summary>
@@ -2250,9 +2274,9 @@ namespace TeamAAS_VP.Core
             try
             {
                 // cancel existing if any
-                _pressureCts[Index]?.Cancel();
-                _pressureTimeoutCts[Index]?.Cancel();
-                _pressureLinkedCts[Index]?.Dispose();
+                //_pressureCts[Index]?.Cancel();
+                //_pressureTimeoutCts[Index]?.Cancel();
+                //_pressureLinkedCts[Index]?.Dispose();
                 _pressureSamples[Index]?.Clear();
 
                 _pressureCts[Index] = new CancellationTokenSource();
@@ -2313,7 +2337,7 @@ namespace TeamAAS_VP.Core
             try
             {
                 // cancel sampling
-                _pressureCts[Index]?.Cancel();
+                //_pressureCts[Index]?.Cancel();
                 // allow worker to observe cancel
                 await Task.Delay(50);