| | |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | // ä»ä¸ä¸æä¸è·å JobParams 并转æ¢ä¸º Roast ç±»å |
| | | CommonElevator elevator = (CommonElevator)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | // åå§å AGV åé |
| | | AGV agv = null; |
| | | |
| | | if (elevator == null) |
| | | try |
| | | { |
| | | throw new Exception("æªæ¾å°æåæºè®¾å¤åæ°ã"); |
| | | // ä»ä¸ä¸æä¸è·å JobParams 并转æ¢ä¸º Roast ç±»å |
| | | //CommonElevator elevator = (CommonElevator)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | CommonRoast elevator = (CommonRoast)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | // åå§å AGV åé |
| | | AGV agv = null; |
| | | |
| | | if (elevator == null) |
| | | { |
| | | throw new Exception("æªæ¾å°æåæºè®¾å¤åæ°ã"); |
| | | } |
| | | |
| | | // è¿æ¥ AGV |
| | | // æ ¹æ®è®¾å¤åç§°å³å®æ¯æ£æè¿æ¯è´æ AGV |
| | | List<string> agvNames = new List<string>() { "æ£æAGV", "è´æAGV" }; //"æ£æAGV", |
| | | foreach (var agvName in agvNames) |
| | | { |
| | | // ä»åå¨ä¸æ¥æ¾æå®åç§°çè®¾å¤ |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceName == agvName); |
| | | if (device != null) |
| | | { |
| | | agv = (AGV)device; |
| | | } |
| | | else |
| | | { |
| | | ConsoleHelper.WriteErrorLine($"æªæ¾å°{agvName}设å¤åæ°ã"); |
| | | continue; |
| | | } |
| | | var elevatorNamesValues = GetDBElevatorNamesValues(agvName); |
| | | var agvNamesValues = GetDBAGVNamesValues(agvName); |
| | | DeviceInteraction(elevator, agv, elevatorNamesValues, agvNamesValues); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | |
| | | // è¿æ¥ AGV |
| | | // æ ¹æ®è®¾å¤åç§°å³å®æ¯æ£æè¿æ¯è´æ AGV |
| | | List<string> agvNames = new List<string>() { "æ£æAGV", "è´æAGV" }; |
| | | foreach (var agvName in agvNames) |
| | | { |
| | | // ä»åå¨ä¸æ¥æ¾æå®åç§°çè®¾å¤ |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceName == agvName); |
| | | if (device != null) |
| | | { |
| | | agv = (AGV)device; |
| | | } |
| | | else |
| | | { |
| | | ConsoleHelper.WriteErrorLine($"æªæ¾å°{agvName}设å¤åæ°ã"); |
| | | continue; |
| | | } |
| | | var elevatorNamesValues = GetDBElevatorNamesValues(agvName); |
| | | var agvNamesValues = GetDBAGVNamesValues(agvName); |
| | | DeviceInteraction(elevator, agv, elevatorNamesValues, agvNamesValues); |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | |
| | | public static void DeviceInteraction(CommonElevator elevator, AGV agv, List<string> elevatorNames, List<string> agvNames) |
| | | public static void DeviceInteraction(CommonRoast elevator, AGV agv, List<string> elevatorNames, List<string> agvNames) |
| | | { |
| | | if (agv.DeviceName == "æ£æAGV") |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | private static void HandlePositiveAGV(CommonElevator elevator, AGV agv, List<string> elevatorNames, List<string> agvNames) |
| | | private static void HandlePositiveAGV(CommonRoast elevator, AGV agv, List<string> elevatorNames, List<string> agvNames) |
| | | { |
| | | // æ£æAGVåªéè¦å¤çåä¸¤ä¸ªä¿¡å· |
| | | var elevatorSignal = elevator.Communicator.Read<byte>(elevatorNames[0], 100); |
| | | var agvSignal = agv.Communicator.Read<byte>(agvNames[1], 100); |
| | | var elevatorSignal = elevator.Communicator.Read(elevatorNames[0], 100); |
| | | var agvSignal = agv.Communicator.Read(agvNames[1], 100); |
| | | |
| | | agv.Communicator.Write(agvNames[0], elevatorSignal); |
| | | elevator.Communicator.Write(agvNames[1], agvSignal); |
| | | elevator.Communicator.Write(elevatorNames[1], agvSignal); |
| | | |
| | | ConsoleHelper.WriteInfoLine($"æ£æAGV交äº: åå
¥çµæ¢¯ä¿¡å·[{elevatorSignal}]å°{agvNames[0]}ï¼" + |
| | | $"åå
¥AGVä¿¡å·[{agvSignal}]å°{agvNames[1]}"); |
| | | } |
| | | |
| | | private static void HandleNegativeAGV(CommonElevator elevator, AGV agv, List<string> elevatorNames, List<string> agvNames) |
| | | private static void HandleNegativeAGV(CommonRoast elevator, AGV agv, List<string> elevatorNames, List<string> agvNames) |
| | | { |
| | | // å®ä¹ä¿¡å·ç»å¤çï¼èµ·å§ç´¢å¼ï¼æä½ç±»åï¼æ¥å¿æè¿°ï¼ |
| | | var operations = new List<(int startIdx, string type, string desc)> |
| | |
| | | } |
| | | } |
| | | |
| | | private static void ProcessSignalGroup(CommonElevator elevator, AGV agv, List<string> elevatorNames, List<string> agvNames, int startIdx, string operationType, string description) |
| | | private static void ProcessSignalGroup(CommonRoast elevator, AGV agv, List<string> elevatorNames, List<string> agvNames, int startIdx, string operationType, string description) |
| | | { |
| | | const int GROUP_SIZE = 2; // æ¯ç»å¤ç2ä¸ªä¿¡å· |
| | | |
| | |
| | | int idx = startIdx + i; |
| | | if (idx >= elevatorNames.Count) break; |
| | | |
| | | var value = elevator.Communicator.Read<byte>(elevatorNames[idx], 100); |
| | | var value = elevator.Communicator.Read(elevatorNames[idx], 100); |
| | | agv.Communicator.Write(agvNames[idx], value); |
| | | values.Add(value); |
| | | targets.Add(agvNames[idx]); |
| | |
| | | int idx = startIdx + i; |
| | | if (idx >= agvNames.Count) break; |
| | | |
| | | var value = agv.Communicator.Read<byte>(agvNames[idx], 100); |
| | | var value = agv.Communicator.Read(agvNames[idx], 100); |
| | | elevator.Communicator.Write(elevatorNames[idx], value); |
| | | values.Add(value); |
| | | targets.Add(elevatorNames[idx]); |
| | |
| | | ConsoleHelper.WriteInfoLine($"è´æAGV交äº({description}): ä¼ è¾ä¿¡å·ç»[{logValues}]å°ç®æ å°å[{logTargets}]"); |
| | | } |
| | | |
| | | private static void HandleSpecialSignals(CommonElevator elevator, AGV agv, |
| | | private static void HandleSpecialSignals(CommonRoast elevator, AGV agv, |
| | | List<string> elevatorNames, List<string> agvNames, |
| | | int startIdx) |
| | | { |
| | | // å¤ç18-21å·çµæ¢¯ä¿¡å·ï¼4个信å·ï¼ |
| | | var elevatorSignals = Enumerable.Range(18, 4) |
| | | .Select(i => elevator.Communicator.Read<byte>(elevatorNames[i], 100)) |
| | | .Select(i => elevator.Communicator.Read(elevatorNames[i], 100)) |
| | | .ToList(); |
| | | |
| | | for (int i = 0; i < 4; i++) |
| | |
| | | |
| | | // å¤ç22-23å·AGVä¿¡å· |
| | | var agvSignals = Enumerable.Range(22, 2) |
| | | .Select(i => agv.Communicator.Read<byte>(agvNames[i], 100)) |
| | | .Select(i => agv.Communicator.Read(agvNames[i], 100)) |
| | | .ToList(); |
| | | |
| | | for (int i = 0; i < 2; i++) |
| | |
| | | "DB1002.18600", |
| | | "DB1002.18500", |
| | | "DB1002.18700", |
| | | "DB1002.18000", |
| | | "DB1002.18800", |
| | | "DB1002.19000", |
| | | "DB1002.18200", |
| | | "DB1002.18000", |
| | | "DB1002.18900", |
| | | "DB1002.19100" |
| | | }; |