qinchulong
2025-03-08 73e0e7c3886bc88e7ed37db24d28d8f6d159f1c0
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/OHT/OHTJob.cs
@@ -54,10 +54,10 @@
                var ZXJdevice = Storage.Devices.Find(v => v.DeviceName == "阳极整形机");
                //规整机PLC对象
                var GZJevice = Storage.Devices.Find(v => v.DeviceName == "阳极规整机");
                if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected)
                {
                    return Task.CompletedTask;
                }
                //if (!device.Communicator.IsConnected || !ZXJdevice.Communicator.IsConnected || !GZJevice.Communicator.IsConnected)
                //{
                //    return Task.CompletedTask;
                //}
                try
                {
                    #region å¤©è½¦å®Œæˆä»»åŠ¡é€»è¾‘
@@ -71,11 +71,13 @@
                        {
                            throw new Exception(string.Format("天车取货完成任务未查询到任务号{0}", oHTReadData.R_TaskNumber));
                        }
                        //入库
                        if (nawtask.TaskType == (int)TaskInboundTypeEnum.Inbound)
                        {
                            //如果任务的状态是天车入库取货执行中
                            //如果任务的状态是否是天车入库取货执行中
                            if (nawtask.TaskState == (int)TaskInStatusEnum.Line_InGrabExecuting)
                            {
                                //修改状态
                                WebResponseContent result = _taskService.UpdateTaskStatusToLine_Ingrab(nawtask);
                                if (result.Status)
                                {
@@ -83,11 +85,13 @@
                                }
                            }
                        }
                        //出库
                        else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                        {
                            //如果任务状态是天车出库取货执行中
                            //如果任务状态是否是天车出库取货执行中
                            if (nawtask.TaskState == (int)TaskOutStatusEnum.Line_OutGrabExecuting)
                            {
                                //修改状态
                                WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask);
                                if (result.Status)
                                {
@@ -95,8 +99,10 @@
                                }
                            }
                        }
                        //直接出库
                        else if (nawtask.TaskType == (int)TaskOutboundTypeEnum.OutInventory)
                        {
                            //修改状态
                            WebResponseContent result = _taskService.UpdateTaskStatusToLine_Outgrab(nawtask);
                            if (result.Status)
                            {
@@ -132,35 +138,40 @@
                    {
                        if (oHTReadData.R_RunState == (int)RunStateEnum.Standby)
                        {
                            Dt_Task? task = GetTask(InorOut);
                            if (task != null)
                            //查看任务池中是否存在执行中的任务
                            var tasking = _taskService.QueryTasking();
                            if (tasking==null)
                            {
                                OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task);
                                if (oHTTaskCommand != null)
                                Dt_Task? task = GetTask(InorOut);
                                if (task != null)
                                {
                                    //给天车下发任务之前将此值写0
                                    device.SetValue(DeviceDBName.W_ConfirmSignal, 0);
                                    //todo:写入任务命令
                                    device.SetValue(DeviceDBName.W_Task_Type, oHTTaskCommand.W_Task_Type);
                                    device.SetValue(DeviceDBName.W_Pick_Line, oHTTaskCommand.W_Pick_Line);
                                    device.SetValue(DeviceDBName.W_Pick_Column, oHTTaskCommand.W_Pick_Column);
                                    device.SetValue(DeviceDBName.W_Put_Line, oHTTaskCommand.W_Put_Line);
                                    device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column);
                                    device.SetValue(DeviceDBName.W_Catch_1, oHTTaskCommand.W_Catch_1);
                                    device.SetValue(DeviceDBName.W_Catch_2, oHTTaskCommand.W_Catch_2);
                                    device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber);
                                    device.SetValue(DeviceDBName.W_CheckValue, oHTTaskCommand.W_CheckValue);
                                    //确认信号写入1,任务下达完成
                                    device.SetValue(DeviceDBName.W_ConfirmSignal, 1);
                                    Thread.Sleep(500);
                                    //WCS检测到天车的R_TaskState=1,通过W_ConfirmSignalç½®2表示让天车开始执行任务
                                    int R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState);
                                    if (R_TaskState == 1)
                                    OHTTaskCommand? oHTTaskCommand = ConvertToOHTTaskCommand(task);
                                    if (oHTTaskCommand != null)
                                    {
                                        device.SetValue(DeviceDBName.W_ConfirmSignal, 2);
                                        //给天车下发任务之前将此值写0
                                        device.SetValue(DeviceDBName.W_ConfirmSignal, 0);
                                        //todo:写入任务命令
                                        device.SetValue(DeviceDBName.W_Task_Type, oHTTaskCommand.W_Task_Type);
                                        device.SetValue(DeviceDBName.W_Pick_Line, oHTTaskCommand.W_Pick_Line);
                                        device.SetValue(DeviceDBName.W_Pick_Column, oHTTaskCommand.W_Pick_Column);
                                        device.SetValue(DeviceDBName.W_Put_Line, oHTTaskCommand.W_Put_Line);
                                        device.SetValue(DeviceDBName.W_Put_Column, oHTTaskCommand.W_Put_Column);
                                        device.SetValue(DeviceDBName.W_Catch_1, oHTTaskCommand.W_Catch_1);
                                        device.SetValue(DeviceDBName.W_Catch_2, oHTTaskCommand.W_Catch_2);
                                        device.SetValue(DeviceDBName.W_TaskNumber, oHTTaskCommand.W_TaskNumber);
                                        device.SetValue(DeviceDBName.W_CheckValue, oHTTaskCommand.W_CheckValue);
                                        //确认信号写入1,任务下达完成
                                        device.SetValue(DeviceDBName.W_ConfirmSignal, 1);
                                        Thread.Sleep(500);
                                        //WCS检测到天车的R_TaskState=1,通过W_ConfirmSignalç½®2表示让天车开始执行任务
                                        int R_TaskState = device.GetValue<DeviceDBName, short>(DeviceDBName.R_TaskState);
                                        if (R_TaskState == 1)
                                        {
                                            device.SetValue(DeviceDBName.W_ConfirmSignal, 2);
                                        }
                                        //下发成功,修改任务状态
                                        _taskService.UpdateTaskStatus(task.TaskId, oHTTaskCommand.W_Task_Type);
                                    }
                                    //下发成功,修改任务状态
                                    _taskService.UpdateTaskStatus(task.TaskNum, oHTTaskCommand.W_Task_Type);
                                }
                            }
                        }