徐孝锋 před 8 měsíci
rodič
revize
bb8e778580

+ 14 - 9
TeamAAS-VM/Core/Management.cs

@@ -1012,14 +1012,14 @@ namespace TeamAAS_VP.Core
                     await item.WriteToPlcAddress(addressConfig.Out_ScrewCamera, plc);
                 }
             }
-            //if (current.ScrewPoints != null && current.ScrewPoints.Count > 0)
-            //{
-            //    foreach (var item in current.ScrewPoints)
-            //    {
-            //        await item.WriteToPlcAddress(addressConfig.Out_Screw, plc);
-            //    }
-            //    await plc.WriteNodeAsync(addressConfig.Out_WorkNum.Address, (Int16)current.ScrewPoints.Count);
-            //}
+            if (current.ScrewPoints != null && current.ScrewPoints.Count > 0)
+            {
+                foreach (var item in current.ScrewPoints)
+                {
+                    await item.WriteToPlcAddressEx(addressConfig.Out_Screw, plc);
+                }
+                await plc.WriteNodeAsync(addressConfig.Out_WorkNum.Address, (Int16)current.ScrewPoints.Count);
+            }
             if (current.CheckCameraPoints != null && current.CheckCameraPoints.Count > 0)
             {
                 foreach (var item in current.CheckCameraPoints)
@@ -1031,6 +1031,7 @@ namespace TeamAAS_VP.Core
 
         PointF[] DowmCameraResults= new PointF[10];
         PointF[] UpCameraPutResults = new PointF[10];
+        
 
         /// <summary>
         /// PLC命令触发时
@@ -1476,6 +1477,10 @@ namespace TeamAAS_VP.Core
                         if (state == 1)
                         {
                             SendTaskMessage($"收到过站检查请求(当站是否生产)...", MessageLevel.Debug);
+
+                            //产品发生改变并且供料器发生了变化时,需要通知PLC进行取料更改
+                            await plc.WriteNodeAsync(addressConfig.Out_ScrewFeederIsChanged.Address, (Int16)1); //不发生改变
+
                             await plc.WriteNodeAsync(addressConfig.Out_MesStatus.Address, (Int16)1);
                         }
                         // 上传本站数据
@@ -1499,7 +1504,7 @@ namespace TeamAAS_VP.Core
                         if (state!=0)
                         {
                             SendTaskMessage($"螺丝供料器...", MessageLevel.Info);
-                            await plc.WriteNodeAsync(addressConfig.In_PickINC.Address, false);
+                            await plc.WriteNodeAsync(addressConfig.In_PickINC.Address, (Int16)0);
                         }
                         
                     }

+ 15 - 0
TeamAAS-VM/Models/PLC/PlcAddressConfig.cs

@@ -288,6 +288,15 @@ namespace TeamAAS_VP.Models.PLC
             set { SetProperty(ref _Out_ScrewTeachOk, value); }
         }
 
+        private PlcAddress _Out_ScrewFeederIsChanged;
+        /// <summary>
+        /// 螺丝供料器发生改变
+        /// </summary>
+        public PlcAddress Out_ScrewFeederIsChanged
+        {
+            get { return _Out_ScrewFeederIsChanged; }
+            set { SetProperty(ref _Out_ScrewFeederIsChanged, value); }
+        }
         #endregion
 
         #region 从PLC读取的地址
@@ -772,6 +781,12 @@ namespace TeamAAS_VP.Models.PLC
             Out_ScrewTeachOk.DataType = "int16";
             Out_ScrewTeachOk.Description = "下相机矫正披头的结果,1:OK,2:NG";
 
+            Out_ScrewFeederIsChanged = Ensure(Out_ScrewFeederIsChanged);
+            Out_ScrewFeederIsChanged.Address = "ns=4;s=DB_Communication|FromPC.PickNumChange";
+            Out_ScrewFeederIsChanged.DataType = "int16";
+            Out_ScrewFeederIsChanged.Description = "供料器发生改变";
+            
+
 
             // 4. In_* 默认(假定从 PLC 读到 PC,使用 ToPC 前缀)
             In_Code = Ensure(In_Code);

+ 27 - 0
TeamAAS-VM/Models/PLC/PlcPoint.cs

@@ -210,5 +210,32 @@ namespace TeamAAS_VP.Models.PLC
             nodeValues.Add(string.Format(plcAddress.ScrewProNum.Address, Number), ScrewProNum);
             return await pLC.WriteNodesAsync(nodeValues);
         }
+
+        /// <summary>
+        /// 将点位数据写入到PLC地址
+        /// </summary>
+        /// <param name="plcAddress"></param>
+        /// <param name="pLC"></param>
+        /// <returns></returns>
+        public async Task<bool> WriteToPlcAddressEx(PlcPointAddress plcAddress, OpcUaClientPLC pLC)
+        {
+            Dictionary<string, object> nodeValues = new Dictionary<string, object>();
+            //nodeValues.Add(string.Format(plcAddress.X_Position.Address, Number), X_Position);
+            //nodeValues.Add(string.Format(plcAddress.X_Velocity.Address, Number), X_Velocity);
+            //nodeValues.Add(string.Format(plcAddress.Y_Position.Address, Number), Y_Position);
+            //nodeValues.Add(string.Format(plcAddress.Y_Velocity.Address, Number), Y_Velocity);
+            //nodeValues.Add(string.Format(plcAddress.Z_Position_Start.Address, Number), Z_Position_Start);
+            //nodeValues.Add(string.Format(plcAddress.Z_Velocity_Start.Address, Number), Z_Velocity_Start);
+            //nodeValues.Add(string.Format(plcAddress.Z_Position_Stop.Address, Number), Z_Position_Stop);
+            //nodeValues.Add(string.Format(plcAddress.Z_Velocity_Stop.Address, Number), Z_Velocity_Stop);
+            //nodeValues.Add(string.Format(plcAddress.U_Position.Address, Number), U_Position);
+            //nodeValues.Add(string.Format(plcAddress.U_Velocity.Address, Number), U_Velocity);
+            //nodeValues.Add(string.Format(plcAddress.R_Position.Address, Number), R_Position);
+            //nodeValues.Add(string.Format(plcAddress.R_Velocity.Address, Number), R_Velocity);
+            //nodeValues.Add(string.Format(plcAddress.Torque.Address, Number), Torque);
+            nodeValues.Add(string.Format(plcAddress.Feeder.Address, Number), Feeder);
+            nodeValues.Add(string.Format(plcAddress.ScrewProNum.Address, Number), ScrewProNum);
+            return await pLC.WriteNodesAsync(nodeValues);
+        }
     }
 }