项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPB.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPC.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目资料/通信协议/成品输送IP地址分配_20250613.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目资料/通信协议/输送线与上位机交互协议_20250707.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 | |
项目资料/通信协议/龙利得设备通讯协议.xls | 补丁 | 查看 | 原始文档 | blame | 历史 |
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -199,7 +199,7 @@ List<Dt_Task> tasks = new List<Dt_Task>(); foreach (var item in taskDTOs) { if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null) if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum) != null) { flag = true; continue; ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs
@@ -85,15 +85,15 @@ /// <summary> /// RGVæ¥æ¶ä»»å¡å·<br/> /// </summary> public short RgvTask { get; set; } public int RgvTask { get; set; } /// <summary> /// RGVç»æä»»å¡å·<br/> /// </summary> public short RgvEndTask { get; set; } public int RgvEndTask { get; set; } /// <summary> /// RGV䏿¬¡ä»»å¡å·<br/> /// </summary> public short RgvLastTask { get; set; } public int RgvLastTask { get; set; } /// <summary> /// ä»»å¡ç¶æåé¦<br/> /// </summary> @@ -103,4 +103,72 @@ /// </summary> public short HeartBeat { get; set; } } public class W_RGVCPInfo : DeviceCommand { /// <summary> /// ä»»å¡å·1<br/> /// </summary> public int WcsTask1 { get; set; } /// <summary> /// ä»»å¡å·2<br/> /// </summary> public int WcsTask2 { get; set; } /// <summary> /// ä»»å¡å·3<br/> /// </summary> public int WcsTask3 { get; set; } /// <summary> /// ä»»å¡ç±»å<br/> /// 1å®ä½<br/> /// 2åè´§<br/> /// 3æ¾è´§<br/> /// 4åæ¾è´§<br/> /// </summary> public short TaskType { get; set; } /// <summary> /// æ§è¡å·¥ä½<br/> /// 1:1å·¥ä½<br/> /// 2:2å·¥ä½<br/> /// 3:3å·¥ä½<br/> /// 4:12å·¥ä½<br/> /// 5:13å·¥ä½<br/> /// 6:23å·¥ä½<br/> /// 7:123å·¥ä½<br/> /// </summary> public short WorkStation { get; set; } /// <summary> /// åè´§å°å1<br/> /// </summary> public short Qu1 { get; set; } /// <summary> /// åè´§å°å2<br/> /// </summary> public short Qu2 { get; set; } /// <summary> /// åè´§å°å3<br/> /// </summary> public short Qu3 { get; set; } /// <summary> /// æ¾è´§å°å1<br/> /// </summary> public short Fang1 { get; set; } /// <summary> /// æ¾è´§å°å2<br/> /// </summary> public short Fang2 { get; set; } /// <summary> /// æ¾è´§å°å3<br/> /// </summary> public short Fang3 { get; set; } /// <summary> /// å¿è·³<br/> /// </summary> public short HearBeat { get; set; } /// <summary> /// ä¸å/宿任塿 è¯<br/> /// 1确认任å¡ä¸å<br/> /// 2确认任å¡å®æ<br/> /// </summary> public short TaskReceivedDone { get; set; } } } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs
@@ -11,22 +11,22 @@ /// <summary> /// å½ä»¤ /// </summary> Command, W_Command, /// <summary> /// ç®æ å°å /// </summary> TargetAddress, W_TargetAddress, /// <summary> /// ä»»å¡å· /// </summary> TaskNo, W_TaskNo, /// <summary> /// é¢ç /// </summary> Reserve, W_Reserve, /// <summary> /// å¿è·³ /// </summary> Heart W_Heart } } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs
@@ -9,9 +9,17 @@ public enum W_RgvCPDB { /// <summary> /// ä»»å¡å·<br/> /// ä»»å¡å·1<br/> /// </summary> WcsTask, WcsTask1, /// <summary> /// ä»»å¡å·2<br/> /// </summary> WcsTask2, /// <summary> /// ä»»å¡å·3<br/> /// </summary> WcsTask3, /// <summary> /// ä»»å¡ç±»å<br/> /// 1å®ä½<br/> ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPB.cs
@@ -72,16 +72,15 @@ { DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); if (deviceProRead != null && deviceProWrite!=null) if (item.StationType==StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null && deviceProWrite!=null) { R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); if (conveyorLineInfoRead.Command == 6 && conveyorLineInfoRead.TaskNo>0 && !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode)) if (conveyorLineInfoRead.Command == 5 && conveyorLineInfoRead.TaskNo>0 && !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode)) { Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== conveyorLineInfoRead.TaskNo && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode==device.DeviceCode); Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode==device.DeviceCode); if (task != null) { //åé å··é åå ¥æçæ°æ® List<Dt_Router> routers = _routerService.QueryNextRoutes(item.StationCode, "SC01_CP", task.TaskType); Dt_Router? router = routers.FirstOrDefault(); if (routers == null || routers.Count == 0 || router == null) @@ -95,9 +94,10 @@ continue; } device.SetValue(W_ConveyorLineCPDB.TargetAddress, router.NextPosi, item.StationCode); device.SetValue(W_ConveyorLineCPDB.TaskNo, task.TaskNum, item.StationCode); device.SetValue(W_ConveyorLineCPDB.Command, 1, item.StationCode); device.SetValue(W_ConveyorLineCPDB.W_TargetAddress, router.NextPosi, item.StationCode); device.SetValue(W_ConveyorLineCPDB.W_TaskNo, task.TaskNum, item.StationCode); device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode); task.CurrentAddress = item.StationCode; task.NextAddress=router.NextPosi; task.PalletType = 1; task.PalletCode = conveyorLineInfoRead.PalletCode; @@ -115,6 +115,40 @@ } } } else if (item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && deviceProRead != null) { R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); if (conveyorLineInfoRead.Command == 4 && conveyorLineInfoRead.TaskNo > 0) { Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null) { List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi); Dt_Router? router = routers.FirstOrDefault(); if (routers == null || routers.Count == 0 || router == null) { WriteError(item.StationName, $"æªæ¾å°å¯¹åºè·¯ç±ä¿¡æ¯,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); continue; } if (routers.Count > 1) { WriteError(item.StationName, $"è·¯ç±ä¿¡æ¯é ç½®é误,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); continue; } device.SetValue(W_ConveyorLineCPDB.W_Command, 2, item.StationCode); task.NextAddress = router.NextPosi; _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing); WriteError(item.StationName, $"ä»»å¡å·{conveyorLineInfoRead.TaskNo}ä¸ä¸æ¥"); //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP"); //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt()) //{ // WriteError(item.StationName, $"请æ±åé è´§ä½è¿åä¿¡æ¯é误,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); // continue; //} } } } else { WriteError(item.StationName, $"æªæ¾å°è®¾å¤åç¼å·{item.StationCode}çå议信æ¯"); ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPC.cs
@@ -75,7 +75,7 @@ if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null) { R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); if (conveyorLineInfoRead.StatusPV == 3 && conveyorLineInfoRead.Command == 11) if (conveyorLineInfoRead.StatusPV == 2 && conveyorLineInfoRead.Command == 11) { Dt_Task task = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() || x.TaskState == TaskStatusEnum.New.ObjToInt())); if (task == null) @@ -96,6 +96,7 @@ _taskService.UpdateTask(taskNew, TaskStatusEnum.RGV_Execute); } } Thread.Sleep(1000); } } } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/RGVJob_CP.cs
@@ -75,28 +75,52 @@ if (deviceProRead != null && deviceProWrite != null) { R_RGVCPInfo rgvInfoRead = device.Communicator.ReadCustomer<R_RGVCPInfo>(deviceProRead.DeviceProAddress); if (rgvInfoRead.Mode==4 && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1) W_RGVCPInfo rgvInfoWrite = device.Communicator.ReadCustomer<W_RGVCPInfo>(deviceProWrite.DeviceProAddress); if (rgvInfoRead.Mode==5 && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1) { List<Dt_Task> tasks = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState != TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode); //è·åä»»å¡ Dt_Task task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode==device.DeviceCode); if (task != null) Dt_Task? task1 = tasks.FirstOrDefault(x => x.HeightType==1); Dt_Task? task2 = tasks.FirstOrDefault(x => x.HeightType == 2); Dt_Task? task3 = tasks.FirstOrDefault(x => x.HeightType == 3); Dt_Task task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null && task1 == null) { device.SetValue(W_RgvCPDB.WcsTask, task.TaskNum); device.SetValue(W_RgvCPDB.WcsTask1, task.TaskNum); device.SetValue(W_RgvCPDB.TaskType, 4); device.SetValue(W_RgvCPDB.WorkStation, 1); device.SetValue(W_RgvCPDB.Qu1, task.CurrentAddress); device.SetValue(W_RgvCPDB.Fang1, task.NextAddress); device.SetValue(W_RgvCPDB.TaskReceivedDone, 1); Thread.Sleep(1000); //å¤ä½ä¿¡å· device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); task.HeightType = 1; _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing); }else if (task != null && task2 == null) { device.SetValue(W_RgvCPDB.WcsTask1, task.TaskNum); device.SetValue(W_RgvCPDB.TaskType, 4); device.SetValue(W_RgvCPDB.WorkStation, 1); device.SetValue(W_RgvCPDB.Qu2, task.CurrentAddress); device.SetValue(W_RgvCPDB.Fang2, task.NextAddress); device.SetValue(W_RgvCPDB.TaskReceivedDone, 1); task.HeightType = 2; _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing); } else if (task != null && task3 == null) { device.SetValue(W_RgvCPDB.WcsTask1, task.TaskNum); device.SetValue(W_RgvCPDB.TaskType, 4); device.SetValue(W_RgvCPDB.WorkStation, 1); device.SetValue(W_RgvCPDB.Qu3, task.CurrentAddress); device.SetValue(W_RgvCPDB.Fang3, task.NextAddress); device.SetValue(W_RgvCPDB.TaskReceivedDone, 1); task.HeightType = 3; _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing); } } else if(rgvInfoRead.Mode == 4 && rgvInfoRead.State == 1 && rgvInfoRead.TaskDone == 3) else if((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.TaskDone == 3) { //è·åä»»å¡ Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvEndTask && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvTask && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null) { //è·åä¸ä¸ä¸ªèç¹çè·¯ç± @@ -105,9 +129,6 @@ task.NextAddress = ""; task.DeviceCode = stationManger.StationDeviceCode; device.SetValue(W_RgvCPDB.TaskReceivedDone, 2); Thread.Sleep(1000); //å¤ä½ä¿¡å· device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute); WriteError(device.DeviceName, $"RGVä»»å¡å®æ,ä»»å¡å·{rgvInfoRead.RgvEndTask}"); } @@ -116,6 +137,14 @@ WriteError(device.DeviceName, $"æªæ¾å°RGV对åºçç»æä»»å¡{rgvInfoRead.RgvEndTask}"); } } else if (rgvInfoRead.TaskDone == 2 && rgvInfoWrite.TaskReceivedDone == 1) { device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); } else if (rgvInfoRead.TaskDone == 0 && rgvInfoWrite.TaskReceivedDone == 2) { device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); } } else { ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/³ÉÆ·ÊäËÍIPµØÖ··ÖÅä_20250613.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÊäËÍÏßÓëÉÏλ»ú½»»¥ÐÒé_20250707.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÁúÀûµÃÉ豸ͨѶÐÒé.xlsBinary files differ