From b51ba798274bee2439e0ae815ec1fa2bbf6b7808 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期五, 13 九月 2024 08:50:23 +0800 Subject: [PATCH] 写入值 --- Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs | 99 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 72 insertions(+), 27 deletions(-) diff --git a/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs b/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs index ff0eeb4..988502b 100644 --- a/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs +++ b/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs @@ -88,7 +88,8 @@ { throw new OperationCanceledException(); } - var modPlc = listPlc.Where(s => s.Id == modDevice.Id).FirstOrDefault(); + var modPlc = listPlc.Where(s => s.Id == modDevice.PlcId).FirstOrDefault(); + modDevice.Type = modPlc.Type; //璇诲彇plc鐨勫�� var modConn = PLCTaskAction.listPlcConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId); if (modConn == null) @@ -109,52 +110,96 @@ modDevice.Wcs = Convert.ToString(wcs); //浠诲姟鍙� var modPositionTask = listPosition.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); - (result, var taskNo) = modConn.GetPlcDBValue(modPositionTask.PosType, modDevice.DbNumber, modPositionTask.PlcPos, modPositionTask.StringLength); - modDevice.TaskNo = Convert.ToString(taskNo); + if (modPositionTask != null) + { + (result, var taskNo) = modConn.GetPlcDBValue(modPositionTask.PosType, modDevice.DbNumber, modPositionTask.PlcPos, modPositionTask.StringLength); + modDevice.TaskNo = Convert.ToString(taskNo); + } //浠诲姟绫诲瀷 var modPositionTaskType = listPosition.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷"); - (result, var taskType) = modConn.GetPlcDBValue(modPositionTaskType.PosType, modDevice.DbNumber, modPositionTaskType.PlcPos); - modDevice.TaskType = (TaskTypeEnum)Convert.ToInt32(taskType); + if (modPositionTaskType != null) + { + (result, var taskType) = modConn.GetPlcDBValue(modPositionTaskType.PosType, modDevice.DbNumber, modPositionTaskType.PlcPos); + modDevice.TaskType = (TaskTypeEnum)Convert.ToInt32(taskType); + } //璧峰宸ヤ綅 var modPositionStartLocatNo = listPosition.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅"); - (result, var startLocatNo) = modConn.GetPlcDBValue(modPositionStartLocatNo.PosType, modDevice.DbNumber, modPositionStartLocatNo.PlcPos); - modDevice.StartLocatNo = Convert.ToString(startLocatNo); + if (modPositionStartLocatNo != null) + { + (result, var startLocatNo) = modConn.GetPlcDBValue(modPositionStartLocatNo.PosType, modDevice.DbNumber, modPositionStartLocatNo.PlcPos); + modDevice.StartLocatNo = Convert.ToString(startLocatNo); + } //鐩殑宸ヤ綅 var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅"); - (result, var endLocatNo) = modConn.GetPlcDBValue(modPositionEndLocatNo.PosType, modDevice.DbNumber, modPositionEndLocatNo.PlcPos); - modDevice.EndLocatNo = Convert.ToString(endLocatNo); + if (modPositionEndLocatNo != null) + { + (result, var endLocatNo) = modConn.GetPlcDBValue(modPositionEndLocatNo.PosType, modDevice.DbNumber, modPositionEndLocatNo.PlcPos); + modDevice.EndLocatNo = Convert.ToString(endLocatNo); + } //鎵樼洏鐮� var modPositionPalletNo = listPosition.FirstOrDefault(s => s.Text == "鎵樼洏鐮�"); - (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength); - modDevice.PalletNo = Convert.ToString(palletNo); + if (modPositionPalletNo != null) + { + (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength); + modDevice.PalletNo = Convert.ToString(palletNo); + Console.WriteLine(modDevice.DbNumber + "." + modPositionPalletNo.PlcPos + "----------"); + } if (modPlc.Type == PLCTypeEnum.ConveyorLine) { //鏀捐揣鎺� var modPositionReleaseRow = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣鎺�"); - (result, var releaseRow) = modConn.GetPlcDBValue(modPositionReleaseRow.PosType, modDevice.DbNumber, modPositionReleaseRow.PlcPos); - modDevice.ReleaseRow = Convert.ToInt32(releaseRow); + if (modPositionReleaseRow != null) + { + (result, var releaseRow) = modConn.GetPlcDBValue(modPositionReleaseRow.PosType, modDevice.DbNumber, modPositionReleaseRow.PlcPos); + modDevice.ReleaseRow = Convert.ToInt32(releaseRow); + } //鏀捐揣鍒� var modPositionReleaseCol = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣鍒�"); - (result, var releaseCol) = modConn.GetPlcDBValue(modPositionReleaseCol.PosType, modDevice.DbNumber, modPositionReleaseCol.PlcPos); - modDevice.ReleaseCol = Convert.ToInt32(releaseCol); + if (modPositionReleaseCol != null) + { + (result, var releaseCol) = modConn.GetPlcDBValue(modPositionReleaseCol.PosType, modDevice.DbNumber, modPositionReleaseCol.PlcPos); + modDevice.ReleaseCol = Convert.ToInt32(releaseCol); + } //鏀捐揣灞� var modPositionReleaseStorey = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣灞�"); - (result, var releaseStorey) = modConn.GetPlcDBValue(modPositionReleaseStorey.PosType, modDevice.DbNumber, modPositionReleaseStorey.PlcPos); - modDevice.ReleaseStorey = Convert.ToInt32(releaseStorey); + if (modPositionReleaseStorey != null) + { + (result, var releaseStorey) = modConn.GetPlcDBValue(modPositionReleaseStorey.PosType, modDevice.DbNumber, modPositionReleaseStorey.PlcPos); + modDevice.ReleaseStorey = Convert.ToInt32(releaseStorey); + } //鍙栬揣鎺� var modPositionPickRow = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣鎺�"); - (result, var pickRow) = modConn.GetPlcDBValue(modPositionPickRow.PosType, modDevice.DbNumber, modPositionPickRow.PlcPos); - modDevice.PickRow = Convert.ToInt32(pickRow); + if (modPositionPickRow != null) + { + (result, var pickRow) = modConn.GetPlcDBValue(modPositionPickRow.PosType, modDevice.DbNumber, modPositionPickRow.PlcPos); + modDevice.PickRow = Convert.ToInt32(pickRow); + } //鍙栬揣鍒� var modPositionPickCol = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣鍒�"); - (result, var pickCol) = modConn.GetPlcDBValue(modPositionPickCol.PosType, modDevice.DbNumber, modPositionPickCol.PlcPos); - modDevice.PickCol = Convert.ToInt32(pickCol); + if (modPositionPickCol != null) + { + (result, var pickCol) = modConn.GetPlcDBValue(modPositionPickCol.PosType, modDevice.DbNumber, modPositionPickCol.PlcPos); + modDevice.PickCol = Convert.ToInt32(pickCol); + } //鍙栬揣灞� var modPositionPickStorey = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣灞�"); - (result, var pickStorey) = modConn.GetPlcDBValue(modPositionPickStorey.PosType, modDevice.DbNumber, modPositionPickStorey.PlcPos); - modDevice.PickStorey = Convert.ToInt32(pickStorey); + if (modPositionPickStorey != null) + { + (result, var pickStorey) = modConn.GetPlcDBValue(modPositionPickStorey.PosType, modDevice.DbNumber, modPositionPickStorey.PlcPos); + modDevice.PickStorey = Convert.ToInt32(pickStorey); + } + } } + //else + //{ + // //娴嬭瘯 + // modDevice.TaskNo = "TK00001"; + // modDevice.TaskType = TaskTypeEnum.In; + // modDevice.Wcs = new Random().Next(1000).ToString(); + // modDevice.Plc = new Random().Next(1000).ToString(); + // modDevice.Status = true; + //} // 姣旇緝涔嬪墠鐨勭姸鎬� if (initialStates.TryGetValue(modDevice.Id, out var initialState)) { @@ -178,17 +223,17 @@ _plcDeviceHubContext.Clients.All.PublicPlcDevice(modDevice); } } - initialStates[modDevice.Id] = modDevice.Adapt<WcsDeviceOutput>(); - - } Thread.Sleep(2000); + } + catch (OperationCanceledException) + { + break; } catch (Exception) { - throw; } } }, cts.Token); -- Gitblit v1.8.0