| | |
| | | List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | bool shouldRestart = true; |
| | | |
| | | while (shouldRestart) |
| | | { |
| | | Dt_StationManger? RequestIn = stationMangers.FirstOrDefault(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()); |
| | | while (true) |
| | | try |
| | | { |
| | | if (RequestIn != null) |
| | | shouldRestart = false; |
| | | Dt_StationManger? RequestIn = stationMangers.FirstOrDefault(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()); |
| | | WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ååå£","å¼å§æ§è¡"); |
| | | while (true) |
| | | { |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(W_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null && deviceProWrite != null) |
| | | //WriteInfo($"ååå£è¿è¡æ¶é´" , $"å¼å§æ¶é´:" + DateTime.Now.ToString("HH:mm:ss.fff")); |
| | | if (RequestIn != null) |
| | | { |
| | | R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress); |
| | | //ç åç¯çº¿è¯·æ±ä»»å¡ |
| | | if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.R_BoxCode) && conveyorLineInfoRead.R_Request == 1) |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(W_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null && deviceProWrite != null) |
| | | { |
| | | //夿æ¯å¦ä»»å¡å·²ç»åå¨ |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.BarCode == conveyorLineInfoRead.R_BoxCode.Trim() && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()); |
| | | if (packaxisTask != null) |
| | | R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress); |
| | | //ç åç¯çº¿è¯·æ±ä»»å¡ |
| | | if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.R_BoxCode) && conveyorLineInfoRead.R_Request == 1) |
| | | { |
| | | //åå
¥æ§è¡æ°æ® |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, packaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, packaxisTask.NextAddress, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, packaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, packaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, packaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, packaxisTask.BarCode, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Request, 1, RequestIn.StationCode); |
| | | } |
| | | else |
| | | { |
| | | #region |
| | | WebResponseContent webResponse = _packaxisTaskService.ReqPackTask(conveyorLineInfoRead.R_BoxCode.Trim(), RequestIn.StationDeviceCode); |
| | | if (webResponse.Status) |
| | | //WriteInfo($"ååå£è¿è¡æ¶é´", $"{conveyorLineInfoRead.R_BoxCode}请æ±" + DateTime.Now.ToString("HH:mm:ss.fff")); |
| | | //夿æ¯å¦ä»»å¡å·²ç»åå¨ |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.Db.Queryable<Dt_PackaxisTask>().Where(x => x.BarCode == conveyorLineInfoRead.R_BoxCode.Trim() && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()).First(); |
| | | if (packaxisTask != null) |
| | | { |
| | | Dt_PackaxisTask _PackaxisTask = webResponse.Data as Dt_PackaxisTask; |
| | | //åå
¥æ§è¡æ°æ® |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, _PackaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, _PackaxisTask.NextAddress.ObjToInt(), RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, _PackaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, _PackaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, _PackaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, _PackaxisTask.BarCode, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, packaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, packaxisTask.NextAddress, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, packaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, packaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, packaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, conveyorLineInfoRead.R_BoxCode.Trim(), RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Request, 1, RequestIn.StationCode); |
| | | WebResponseContent content = _taskService.MESBoxCodeNotice(conveyorLineInfoRead.R_BoxCode.Trim()); |
| | | if (content.Status) |
| | | { |
| | | WriteInfo(RequestIn.StationName, content.Message); |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, content.Message); |
| | | } |
| | | //WriteInfo($"ååå£è¿è¡æ¶é´", $"{conveyorLineInfoRead.R_BoxCode}请æ±å®æ" + DateTime.Now.ToString("HH:mm:ss.fff")); |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, webResponse.Message); |
| | | #region |
| | | WebResponseContent webResponse = _packaxisTaskService.ReqPackTask(conveyorLineInfoRead.R_BoxCode.Trim(), RequestIn.StationDeviceCode); |
| | | if (webResponse.Status) |
| | | { |
| | | Dt_PackaxisTask _PackaxisTask = webResponse.Data as Dt_PackaxisTask; |
| | | //åå
¥æ§è¡æ°æ® |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, _PackaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, _PackaxisTask.NextAddress.ObjToInt(), RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, _PackaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, _PackaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, _PackaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, conveyorLineInfoRead.R_BoxCode.Trim(), RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Request, 1, RequestIn.StationCode); |
| | | //WriteInfo($"ååå£è¿è¡æ¶é´", $"{conveyorLineInfoRead.R_BoxCode}请æ±å®æ" + DateTime.Now.ToString("HH:mm:ss.fff")); |
| | | WebResponseContent content = _taskService.MESBoxCodeNotice(conveyorLineInfoRead.R_BoxCode.Trim()); |
| | | if (content.Status) |
| | | { |
| | | WriteInfo(RequestIn.StationName, content.Message); |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, content.Message); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, webResponse.Message); |
| | | } |
| | | #endregion |
| | | } |
| | | #endregion |
| | | Thread.Sleep(200); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, $"æªæ¾å°è®¾å¤åç¼å·{RequestIn.StationCode}çå议信æ¯"); |
| | | } |
| | | } |
| | | //WriteInfo($"ååå£è¿è¡æ¶é´", $"ç»ææ¶é´:" + DateTime.Now.ToString("HH:mm:ss.fff")); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ååå£", $"å¼å¸¸:{ex.Message}"); |
| | | Thread.Sleep(3000); |
| | | shouldRestart = true; |
| | | } |
| | | } |
| | | }); |
| | | Task.Run(() => |
| | | { |
| | | bool shouldRestart = true; |
| | | |
| | | while (shouldRestart) |
| | | { |
| | | try |
| | | { |
| | | shouldRestart = false; |
| | | //è·åææç åå£ |
| | | List<Dt_StationManger> stationMangersMD = stationMangers.Where(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()).ToList(); |
| | | WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ç åå£", "å¼å§æ§è¡"); |
| | | while (true) |
| | | { |
| | | if (stationMangersMD.Count > 0) |
| | | { |
| | | foreach (var item in stationMangersMD) |
| | | { |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null) |
| | | { |
| | | R_CLineCPHChannelInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHChannelInfo>(deviceProRead.DeviceProAddress); |
| | | //è·åç åå£ä»»å¡æ´æ°ä»»å¡ç¶æ |
| | | if (conveyorLineInfoRead != null && conveyorLineInfoRead.R_State == 5 && conveyorLineInfoRead.R_TaskNo > 0) |
| | | { |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.PackTaskNum == conveyorLineInfoRead.R_TaskNo && x.NextAddress == item.StationCode && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == item.StationDeviceCode); |
| | | if (packaxisTask != null) |
| | | { |
| | | Dt_PackaxisTask packaxisTaskOld = _packaxisTaskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.MD_Executing.ObjToInt() && x.DeviceCode == item.StackerCraneCode); |
| | | if (packaxisTaskOld != null) |
| | | { |
| | | WriteError(item.StationName, $"ç å{item.StackerCraneCode}æ£æ§è¡ä»»å¡{packaxisTaskOld.PackTaskNum},æ æ³ç»§ç»ä¸å"); |
| | | } |
| | | else |
| | | { |
| | | packaxisTask.CurrentAddress = item.StationCode; |
| | | packaxisTask.NextAddress = packaxisTask.TargetAddress; |
| | | packaxisTask.DeviceCode = item.StackerCraneCode; |
| | | packaxisTask.TaskState = TaskStatusEnum.MD_Executing.ObjToInt(); |
| | | _packaxisTaskRepository.UpdateData(packaxisTask); |
| | | device.SetValue(W_CLineCPHDB.W_Request, 1, item.StationCode); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(item.StationName, $"æªæ¾å°ä»»å¡{conveyorLineInfoRead.R_TaskNo}ä¿¡æ¯"); |
| | | } |
| | | Thread.Sleep(2000); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, $"æªæ¾å°è®¾å¤åç¼å·{RequestIn.StationCode}çå议信æ¯"); |
| | | WriteError(nameof(ConveyorLineJob_CPH), $"é误信æ¯ï¼æªæ¾å°ç åå£ä¿¡æ¯"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | //è·åææç åå£ |
| | | List<Dt_StationManger> stationMangersMD = stationMangers.Where(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()).ToList(); |
| | | while (true) |
| | | catch (Exception ex) |
| | | { |
| | | if (stationMangersMD.Count > 0) |
| | | { |
| | | foreach (var item in stationMangersMD) |
| | | { |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null) |
| | | { |
| | | R_CLineCPHChannelInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHChannelInfo>(deviceProRead.DeviceProAddress); |
| | | //è·åç åå£ä»»å¡æ´æ°ä»»å¡ç¶æ |
| | | if (conveyorLineInfoRead != null && conveyorLineInfoRead.R_State == 5 && conveyorLineInfoRead.R_TaskNo > 0) |
| | | { |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.PackTaskNum == conveyorLineInfoRead.R_TaskNo && x.NextAddress == item.StationCode && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == item.StationDeviceCode); |
| | | if (packaxisTask != null) |
| | | { |
| | | Dt_PackaxisTask packaxisTaskOld = _packaxisTaskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.MD_Executing.ObjToInt() && x.DeviceCode == item.StackerCraneCode); |
| | | if (packaxisTaskOld != null) |
| | | { |
| | | WriteError(item.StationName, $"ç å{item.StackerCraneCode}æ£æ§è¡ä»»å¡{packaxisTaskOld.PackTaskNum},æ æ³ç»§ç»ä¸å"); |
| | | } |
| | | else |
| | | { |
| | | packaxisTask.CurrentAddress = item.StationCode; |
| | | packaxisTask.NextAddress = packaxisTask.TargetAddress; |
| | | packaxisTask.DeviceCode = item.StackerCraneCode; |
| | | packaxisTask.TaskState = TaskStatusEnum.MD_Executing.ObjToInt(); |
| | | _packaxisTaskRepository.UpdateData(packaxisTask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(item.StationName, $"æªæ¾å°ä»»å¡{conveyorLineInfoRead.R_TaskNo}ä¿¡æ¯"); |
| | | } |
| | | Thread.Sleep(2000); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(nameof(ConveyorLineJob_CPH), $"é误信æ¯ï¼æªæ¾å°ç åå£ä¿¡æ¯"); |
| | | } |
| | | WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ç åå£", $"å¼å¸¸:{ex.Message}"); |
| | | Thread.Sleep(3000); |
| | | shouldRestart = true; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | |