林豪 左 2 yıl önce
ebeveyn
işleme
a02c601db3

+ 1 - 1
ServiceCenter/ServiceCenter.csproj

@@ -17,12 +17,12 @@
   
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.5" />
-    <PackageReference Include="PlcSiemens" Version="1.0.1" />
     <PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.5.0" />
     <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.5.0" />
   </ItemGroup>
   
   <ItemGroup>
+    <ProjectReference Include="..\PLC.Siemens\PlcSiemens.csproj" />
     <ProjectReference Include="..\WCS.Core\WCS.Core.csproj" />
     <ProjectReference Include="..\WCS.Entity.Protocol\WCS.Entity.Protocol.csproj" />
     <ProjectReference Include="..\WCS.Entity\WCS.Entity.csproj" />

+ 6 - 1
WCS.Service/PLCAccessors/SiemensS7PLC.cs

@@ -25,10 +25,15 @@ namespace WCS.Service.PLCAccessors
 
             if (!plc.Connected)
                 plc.Connect();
-           
+
             var res = plc.ReadArea(AreaType.DB, db, address, length, DataType.Byte);
+            if (res != null)
+            {
+                var r = 0;
+            }
             if (res == null)
                 throw new Exception("读取DB块数据失败");
+
             return res.Data;
         }
 

+ 81 - 48
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -1,18 +1,9 @@
-using PlcSiemens.Core.Extension;
-using ServiceCenter.Extensions;
-using ServiceCenter.Logs;
-using ServiceCenter.SqlSugars;
-using System.ComponentModel;
+using System.ComponentModel;
 using WCS.Core;
-using WCS.Entity;
 using WCS.WorkEngineering.Extensions;
 using WCS.WorkEngineering.Protocol.SRM;
 using WCS.WorkEngineering.Protocol.Station;
-using WCS.WorkEngineering.WebApi.Controllers;
 using WCS.WorkEngineering.Worlds;
-using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
-using KnownException = ServiceCenter.Logs.KnownException;
-using TaskStatus = WCS.Entity.TaskStatus;
 
 namespace WCS.WorkEngineering.Systems
 {
@@ -49,63 +40,66 @@ namespace WCS.WorkEngineering.Systems
                 obj.Data.OK_ACK_1 = 1;
                 obj.Data.OK_ACK_2 = 1;
 
-                obj.Data.TaskID_1 = 123456;
-                obj.Data.RowPos1_1 = 3;
-                obj.Data.TravelPos1_1 = 9;
-                obj.Data.LiftPos1_1 = 1;
-                obj.Data.ForkStartPos1_1 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
-                obj.Data.RowPos2_1 = 3;
-                obj.Data.TravelPos2_1 = 1;
-                obj.Data.LiftPos2_1 = 1;
-                obj.Data.ForkDestPos2_1 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
-                obj.Data.TaskType_1 = WCS.Entity.Protocol.SRM.SRMTaskType.取放货任务;
-                obj.Data.TaskSum_2 = 1;
-                var b = true;
-                if (b)
-                {
-                    obj.Data.TaskID_2 = 123456;
-                    obj.Data.RowPos1_2 = 3;
-                    obj.Data.Travelpos1_2 = 10;
-                    obj.Data.Liftpos1_2 = 1;
-                    obj.Data.ForkStartPos1_2 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
-                    obj.Data.RowPos2_2 = 3;
-                    obj.Data.Travelpos2_2 = 2;
-                    obj.Data.Liftpos2_2 = 1;
-                    obj.Data.ForkStartPos2_2 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
-                    obj.Data.TaskType_2 = WCS.Entity.Protocol.SRM.SRMTaskType.取放货任务;
-                }
-
-                obj.Data.VoucherNo_2++;
+
                 return;
             }
 
             if (obj.Data2.SrmRunStatus != WCS.Entity.Protocol.SRM.SRMFRunStatus.空闲) throw new Exception("任务执行中");
 
+            //obj.Data.TaskID_1 = 123456;
+            //obj.Data.RowPos1_1 = 0;
+            //obj.Data.TravelPos1_1 = 3745;
+            //obj.Data.LiftPos1_1 = 0;
+            //obj.Data.ForkStartPos1_1 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
+            //obj.Data.RowPos2_1 = 31;
+            //obj.Data.TravelPos2_1 = 1;
+            //obj.Data.LiftPos2_1 = 1;
+            //obj.Data.ForkDestPos2_1 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
+            //obj.Data.TaskType_1 = WCS.Entity.Protocol.SRM.SRMTaskType.取放货任务;
+            //obj.Data.TaskSum_2 = 1;
+            //var a = false;
+            //if (a)
+            //{
+            //    obj.Data.TaskID_2 = 123457;
+            //    obj.Data.RowPos1_2 = 0;
+            //    obj.Data.Travelpos1_2 = 3746;
+            //    obj.Data.Liftpos1_2 = 0;
+            //    obj.Data.ForkStartPos1_2 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
+            //    obj.Data.RowPos2_2 = 31;
+            //    obj.Data.Travelpos2_2 = 2;
+            //    obj.Data.Liftpos2_2 = 1;
+            //    obj.Data.ForkStartPos2_2 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
+            //    obj.Data.TaskType_2 = WCS.Entity.Protocol.SRM.SRMTaskType.取放货任务;
+            //    obj.Data.TaskSum_2 = 2;
+            //}
 
             obj.Data.TaskID_1 = 123456;
-            obj.Data.RowPos1_1 = 3;
+            obj.Data.RowPos1_1 = 31;
             obj.Data.TravelPos1_1 = 1;
             obj.Data.LiftPos1_1 = 1;
             obj.Data.ForkStartPos1_1 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
-            obj.Data.RowPos2_1 = 3;
-            obj.Data.TravelPos2_1 = 9;
-            obj.Data.LiftPos2_1 = 1;
+            obj.Data.RowPos2_1 = 0;
+            obj.Data.TravelPos2_1 = 3736;
+            obj.Data.LiftPos2_1 = 0;
+            obj.Data.RES_1_2 = 3745;
             obj.Data.ForkDestPos2_1 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
             obj.Data.TaskType_1 = WCS.Entity.Protocol.SRM.SRMTaskType.取放货任务;
             obj.Data.TaskSum_2 = 1;
-            var a = true;
-            if (a)
+            var b = true;
+            if (b)
             {
                 obj.Data.TaskID_2 = 123456;
-                obj.Data.RowPos1_2 = 3;
+                obj.Data.RowPos1_2 = 31;
                 obj.Data.Travelpos1_2 = 2;
                 obj.Data.Liftpos1_2 = 1;
                 obj.Data.ForkStartPos1_2 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
-                obj.Data.RowPos2_2 = 3;
-                obj.Data.Travelpos2_2 = 10;
-                obj.Data.Liftpos2_2 = 1;
+                obj.Data.RowPos2_2 = 0;
+                obj.Data.Travelpos2_2 = 3737;
+                obj.Data.Liftpos2_2 = 0;
                 obj.Data.ForkStartPos2_2 = WCS.Entity.Protocol.SRM.SRMForkPos.深度1;
                 obj.Data.TaskType_2 = WCS.Entity.Protocol.SRM.SRMTaskType.取放货任务;
+                obj.Data.RES_2_1 = 3746;
+                obj.Data.TaskSum_2 = 2;
             }
 
             obj.Data.VoucherNo_2++;
@@ -113,7 +107,46 @@ namespace WCS.WorkEngineering.Systems
 
         public override bool Select(Device dev)
         {
-            return true;
+            return dev.Code != "1";
+        }
+    }
+
+    /// <summary>
+    /// 堆垛机系统1
+    /// </summary>
+    [BelongTo(typeof(MainWorld))]
+    [Description("堆垛机系统1")]
+    public class SrmSystems1 : DeviceSystem<Device<IStation520>>
+    {
+        /// <summary>
+        /// 取货点设备集合
+        /// </summary>
+        private Dictionary<string, List<Station>> PickUpDevices = new();
+
+        /// <summary>
+        /// 放货设备
+        /// </summary>
+        private Dictionary<string, List<Station>> PutDevices = new();
+
+        public SrmSystems1()
+        {
+        }
+
+        protected override bool ParallelDo => true;
+
+        protected override bool SaveLogsToFile => true;
+
+        public override void Do(Device<IStation520> obj)
+        {
+            Console.WriteLine($"{obj.Data.TaskNumber}+{obj.Data.GoodsEnd}+{obj.Data.GoodsStart}");
+            obj.Data.TaskNumber = 2;
+            obj.Data.GoodsEnd = 2;
+            obj.Data.GoodsStart = 2;
+        }
+
+        public override bool Select(Device dev)
+        {
+            return dev.Code == "1";
         }
     }
 }

+ 12 - 0
WCS.WorkEngineering/Systems/堆垛机站台测试.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WCS.WorkEngineering.Systems
+{
+    internal class 堆垛机站台测试
+    {
+    }
+}

+ 7 - 3
WCS.WorkEngineering/WorkStart.cs

@@ -353,8 +353,12 @@ namespace WCS.WorkEngineering
 
             #region 初始化堆垛机相关信息
             var srm = new Device($"SRM1");
-            srm.AddProtocol<ISRM520>(0, 520, $"10.30.44.92");
-            srm.AddProtocol<ISRM521>(0, 521, $"10.30.44.92");
+            srm.AddProtocol<ISRM520>(0, 520, $"10.30.40.92");
+            srm.AddProtocol<ISRM521>(0, 521, $"10.30.40.92");
+
+            //var station = new Device("1");
+            //station.AddProtocol<IStation520>(0, 520, $"10.30.39.131");
+            //station.AddProtocol<IStation521>(0, 521, $"10.30.39.131");
             //srm.AddProtocol<ISRM537>(0, 537, $"10.30.37.{ip}");
 
             //int ip = 41;
@@ -564,7 +568,7 @@ namespace WCS.WorkEngineering
                 //{ DeviceFlags.环形库码垛工位, new List<string>(){ "1666" } },
                 //{ DeviceFlags.AGV取货站台口, new List<string>(){ "2533", "2534", "2734" } },
                 //{ DeviceFlags.Robot, new List<string>(){ "Robot1" } },
-        };
+            };
 
             devices.ForEach(item =>
             {