From 0e674f770d785bfd24b5034456c2502dcc6671d2 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期二, 17 六月 2025 16:56:50 +0800 Subject: [PATCH] 代码提交 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 186 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 145 insertions(+), 41 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" index 1de6610..9358c77 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" @@ -10,6 +10,7 @@ using WIDESEAWCS_Core.Caches; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.HttpContextUser; +using WIDESEAWCS_DTO.Enum; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_ISystemRepository; using WIDESEAWCS_ITaskInfoRepository; @@ -24,6 +25,7 @@ using WIDESEAWCS_QuartzJob.StackerCrane.Enum; using WIDESEAWCS_SignalR; using WIDESEAWCS_Tasks.StackerCraneJob; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; namespace WIDESEAWCS_Tasks @@ -53,7 +55,6 @@ try { CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); - if (commonStackerCrane != null) { if (!commonStackerCrane.IsEventSubscribed) @@ -67,7 +68,10 @@ if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Idle) { - GetTask(commonStackerCrane); + if (commonStackerCrane.GetValue<StackerCraneDBName, float>(StackerCraneDBName.Electricity) > 20) + { + GetTask(commonStackerCrane); + } } } @@ -87,8 +91,8 @@ commonStackerCrane.DeviceName, commonStackerCrane.CurrentTaskNum, commonStackerCrane.LastTaskNum, - SourceAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.SourceAddress), - TargetAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.TargetAddress), + SourceAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.StartAddress), + TargetAddress = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.EndAddress), Command = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.Command), Electricity = commonStackerCrane.GetValue<StackerCraneDBName, float>(StackerCraneDBName.Electricity), }; @@ -116,8 +120,6 @@ CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane; if (commonStackerCrane != null) { - - Console.Out.WriteLine("TaskCompleted" + e.TaskNum); _taskService.StackCraneTaskCompleted(e.TaskNum); commonStackerCrane.SetValue(StackerCraneDBName.TaskCompleted, 1); @@ -135,39 +137,53 @@ task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); if (task != null) { - StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); - if (stackerCraneTaskCommand != null) + if (task.Roadway == "3") { - bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand); - Thread.Sleep(1000); - if (ReadReceived(commonStackerCrane) == 1) + if (AGVToSandyEdgeRead(commonStackerCrane)) { - WriteConfirm(commonStackerCrane); - _taskService.UpdateTaskStatusToNext(task.TaskNum); + WriteAGVTask(task, commonStackerCrane); + } + else + { + AGVToSandyEdge(commonStackerCrane); + } + + } + else if (task.Roadway == "2") + { + if (AGVToEdgeBandingRead(commonStackerCrane)) + { + WriteAGVTask(task, commonStackerCrane); + } + else + { + AGVToEdgeBanding(commonStackerCrane); } } + else + { + WriteAGVTask(task, commonStackerCrane); + } + } } - - //璇诲彇AGV鐘舵�� - public int ReadAGVstatus(CommonStackerCrane commonStackerCrane) + public void WriteAGVTask(Dt_Task task, CommonStackerCrane commonStackerCrane) { - var deviceProDTO = commonStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AGVCraneStatus"); - return deviceProDTO != null ? commonStackerCrane.Communicator.Read<int>(deviceProDTO.DeviceProAddress) : 99; - } - //璇诲彇AGV宸ヤ綔妯″紡 - public int ReadAGVworkingmode(CommonStackerCrane commonStackerCrane) - { - var deviceProDTO = commonStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AGVWorkingmode"); - return deviceProDTO != null ? commonStackerCrane.Communicator.Read<int>(deviceProDTO.DeviceProAddress) : 99; - } - - //璇诲彇浠诲姟鍙� - public int Readtasknumber(CommonStackerCrane commonStackerCrane) - { - var deviceProDTO = commonStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AGVWorkingmode"); - return deviceProDTO != null ? commonStackerCrane.Communicator.Read<int>(deviceProDTO.DeviceProAddress) : 99; + StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); + if (stackerCraneTaskCommand != null) + { + bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand); + Thread.Sleep(2000); + if (ReadReceived(commonStackerCrane) == 1) + { + if (Clear(commonStackerCrane)) + { + _taskService.UpdateTaskStatusToNext(task.TaskNum); + } + + } + } } /// <summary> @@ -179,10 +195,6 @@ { return commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.Received); } - public void WriteConfirm(CommonStackerCrane commonStackerCrane) - { - commonStackerCrane.SetValue(StackerCraneDBName.WriteConfirm, 1); - } /// <summary> /// 璋冨害AGV鍘诲皝杈瑰尯鍩� @@ -191,7 +203,90 @@ /// <param name="value"></param> public void AGVToEdgeBanding(CommonStackerCrane commonStackerCrane) { - commonStackerCrane.SetValue(StackerCraneDBName.AreaWrite, true); + DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaWrite" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaWrite").OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, true); + commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 3); + commonStackerCrane.SetValue(StackerCraneDBName.WriteConfirm, 1); + Thread.Sleep(1000); + if (ReadReceived(commonStackerCrane) == 1) + { + Clear(commonStackerCrane); + } + } + + /// <summary> + /// 璇诲彇AGV鏄惁鍦ㄧ爞杈� + /// </summary> + /// <param name="commonStackerCrane"></param> + /// <returns></returns> + public bool AGVToSandyEdgeRead(CommonStackerCrane commonStackerCrane) + { + DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaRead" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaRead").OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + + if (devicePro == null) + { + ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta); + return false; + } + + string[] x = devicePro.DeviceProAddress.Split('.'); + + x[x.Length - 1] = (int.Parse(x[x.Length - 1]) + 1).ToString(); + + string DeviceProAddress = string.Join(".", x); + bool read = commonStackerCrane.Communicator.Read<bool>(DeviceProAddress); + + return read; + } + + public bool Clear(CommonStackerCrane commonStackerCrane) + { + DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "WriteConfirm" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "WriteConfirm").OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + + if (devicePro == null) + { + ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta); + return false; + } + commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress,Convert.ToInt16(0)); + + for (int i = 0; i < 6; i++) + { + if (i == 5) + { + return false; + } + else + { + int read = commonStackerCrane.Communicator.Read<int>(devicePro.DeviceProAddress); + if (read == 0) + { + return true; + } + else + { + commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress, Convert.ToInt16(0)); + } + } + } + return false; + } + + /// <summary> + /// 璇诲彇AGV鏄惁鍦ㄥ皝杈� + /// </summary> + /// <param name="commonStackerCrane"></param> + /// <returns></returns> + public bool AGVToEdgeBandingRead(CommonStackerCrane commonStackerCrane) + { + DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaRead" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaRead").OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + + if (devicePro == null) + { + ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta); + return false; + } + return commonStackerCrane.Communicator.Read<bool>(devicePro.DeviceProAddress); } /// <summary> @@ -203,15 +298,24 @@ { DeviceProDTO? devicePro = commonStackerCrane.DeviceProDTOs.Where(x => x.DeviceProParamType == "AreaWrite" && x.DeviceChildCode == commonStackerCrane.DeviceCode && x.DeviceProParamName == "AreaWrite").OrderBy(x => x.DeviceProOffset).FirstOrDefault(); - if(devicePro == null) + if (devicePro == null) { ConsoleHelper.WriteColorLine($"銆愭湭鎵惧埌閰嶇疆璋冨害AGV鍖哄煙鍗忚銆�", ConsoleColor.Magenta); return; } - var writeBool = commonStackerCrane.Communicator.Read<bool>(devicePro.DeviceProAddress+0.1); - if (!writeBool) + + string[] x = devicePro.DeviceProAddress.Split('.'); + + x[x.Length - 1] = (int.Parse(x[x.Length - 1]) + 1).ToString(); + + string DeviceProAddress = string.Join(".", x); + commonStackerCrane.Communicator.Write(DeviceProAddress, true); + commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 4); + commonStackerCrane.SetValue(StackerCraneDBName.WriteConfirm, 1); + Thread.Sleep(1000); + if (ReadReceived(commonStackerCrane) == 1) { - commonStackerCrane.Communicator.Write(devicePro.DeviceProAddress + 0.1, true); + Clear(commonStackerCrane); } } /// <summary> @@ -234,7 +338,7 @@ stackerCraneTaskCommand.TaskNum = task.TaskNum; stackerCraneTaskCommand.WorkType = 1; - stackerCraneTaskCommand.TaskType = 0; + stackerCraneTaskCommand.WriteConfirm = 1; stackerCraneTaskCommand.StartAddress = Convert.ToInt16(SourceAddress.stationCode); stackerCraneTaskCommand.EndAddress = Convert.ToInt16(TargetAddress.stationCode); -- Gitblit v1.9.3