Просмотр исходного кода

完善生产记录功能,补充PLC结果地址配置

本次提交实现了以下主要更新:

- 新增从PLC读取产品最终结果(In_Result),并将生产数据(含产品码、设备ID、设备名、结果、备注等)记录到数据库。
- MES上传时根据实际结果(OK/NG)上传。
- ProductionRecord模型新增ProductCode、DeviceId、DeviceName、Remark等字段,并完善数据库映射。
- PlcAddressConfig增加In_Result地址配置及相关说明。
- 优化部分属性命名和注释。
孝锋 徐 7 месяцев назад
Родитель
Сommit
cde709711e

+ 17 - 1
TeamAAS-VM/Core/Management.cs

@@ -1940,7 +1940,23 @@ namespace TeamAAS_VP.Core
                                         CTtime = DateTime.UtcNow.Subtract(_LastMesCheckTime[i]).TotalSeconds;
                                     }
 
-                                    (bool isSuccess, string response) = await _mesService.SubmitGetAsync(code, true, _LastMesCheckTime[i], DateTime.UtcNow);
+                                    //读取产品结果
+                                    Int16 resultIndex = plc.ReadNode<Int16>(addressConfig.In_Result.Address);
+
+                                    //目前只记录当前站
+                                    if (i == 0)
+                                        await _systemDatabaseService.RecordProductionAsync(new ProductionRecord()
+                                        {
+                                            ProductName = currentProduct.Name,
+                                            ProductCode = code,
+                                            DeviceId = i,
+                                            DeviceName = "",
+                                            Category = resultIndex == 1 ? "OK" : "NG",
+                                            Quantity = 1,
+                                            Remark = $"TotalSeconds:{DateTime.UtcNow.Subtract(_LastMesCheckTime[i]).TotalSeconds.ToString("F2")}",
+                                        });
+
+                                    (bool isSuccess, string response) = await _mesService.SubmitGetAsync(code, resultIndex == 1 ? true : false, _LastMesCheckTime[i], DateTime.UtcNow);
                                     //假设上传成功,这里缺少上传失败的处理
 
                                     await plc.WriteNodeAsync(string.Format(addressConfig.Out_MesStatus.Address, i), (Int16)3);

+ 2 - 0
TeamAAS-VM/Interfaces/ISystemDatabaseService.cs

@@ -164,6 +164,8 @@ namespace TeamAAS_VP.Interfaces
 
         // Production records
 
+        //生产计数更改事件
+
         /// <summary>
         /// 将一条生产记录写入数据库。
         /// </summary>

+ 18 - 3
TeamAAS-VM/Models/PLC/PlcAddressConfig.cs

@@ -299,13 +299,13 @@ namespace TeamAAS_VP.Models.PLC
             set { SetProperty(ref _Out_ScrewFeederIsChanged, value); }
         }
 
-        private PlcAddress _Check_Screw ;
+        private PlcAddress _Check_Screw;
         /// <summary>
         /// 点检扭力  电批正转
         /// </summary>
         public PlcAddress Check_ScrewTorque
         {
-            get { return _Check_Screw ; }
+            get { return _Check_Screw; }
             set { SetProperty(ref _Check_Screw, value); }
         }
 
@@ -426,6 +426,16 @@ namespace TeamAAS_VP.Models.PLC
             set { SetProperty(ref _In_MesCheck, value); }
         }
 
+        private PlcAddress _In_Result = new PlcAddress();
+        /// <summary>
+        /// 产品的最终结果
+        /// </summary>
+        public PlcAddress In_Result
+        {
+            get { return _In_Result; }
+            set { SetProperty(ref _In_Result, value); }
+        }
+
         private PlcAddress _In_DowmCameraNum = new PlcAddress();
         /// <summary>
         /// 下相机拍照编号
@@ -955,7 +965,7 @@ namespace TeamAAS_VP.Models.PLC
             Out_ScrewFeederIsChanged.Address = "ns=4;s=DB_Communication|FromPC.PickNumChange";
             Out_ScrewFeederIsChanged.DataType = "int16";
             Out_ScrewFeederIsChanged.Description = Lang.供料器发生改变;
-            
+
 
             // 4. In_* 默认(假定从 PLC 读到 PC,使用 ToPC 前缀)
             In_Code = Ensure(In_Code);
@@ -968,6 +978,11 @@ namespace TeamAAS_VP.Models.PLC
             In_MesCheck.DataType = "int16";
             In_MesCheck.Description = Lang.Mes交互1获取过站信息当站是否生产2上传本站数据;
 
+            In_Result = Ensure(In_Result);
+            In_Result.Address = "ns=4;s=DB_Communication|ToPC.Mes[{0}].Result";
+            In_Result.DataType = "int16";
+            In_Result.Description = "产品的最终结果,1:OK; 2:NG";
+
             In_DowmCameraNum = Ensure(In_DowmCameraNum);
             In_DowmCameraNum.Address = "ns=4;s=DB_Communication|ToPC.DowmCameraNum";
             In_DowmCameraNum.DataType = "int16";

+ 23 - 0
TeamAAS-VM/Models/ProductionRecord.cs

@@ -11,6 +11,23 @@ namespace TeamAAS_VP.Models
 
         public string ProductName { get; set; }
 
+        /// <summary>
+        /// 产品编号
+        /// </summary>
+        [SugarColumn(Length = 255, IsNullable = true)]
+        public string ProductCode { get; set; }
+
+        /// <summary>
+        /// 设备ID
+        /// </summary>
+        public int DeviceId { get; set; }
+
+        /// <summary>
+        /// 设备编号
+        /// </summary>
+        [SugarColumn(Length = 255, IsNullable = true)]
+        public string DeviceName { get; set; }
+
         public DateTime Timestamp { get; set; } = DateTime.UtcNow;
         /// <summary>
         /// Category like "OK", "NG", etc.
@@ -26,5 +43,11 @@ namespace TeamAAS_VP.Models
         /// </summary>
         [SugarColumn(Length = 255, IsNullable = true)]
         public string UserName { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        [SugarColumn(Length = 500, IsNullable = true)]
+        public string Remark { get; set; }
     }
 }