| | |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEA_Common.Log; |
| | | using System.Xml.Linq; |
| | | using SixLabors.ImageSharp; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | |
| | | namespace WIDESEAWCS_Tasks.StackerCraneJob |
| | | { |
| | | |
| | | |
| | | |
| | | public class GetDeviceAddress |
| | | { |
| | |
| | | /// </summary> |
| | | /// <param name="ChildPosiDeviceCode">设å¤</param> |
| | | /// <returns></returns> |
| | | public static int GetEquipmentlocation(string ChildPosiDeviceCode) |
| | | public static int GetEquipmentlocation(string ChildPosiDeviceCode) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); |
| | | CommonStackerCrane Commonstacker = (CommonStackerCrane)device; |
| | | DeviceProDTO? deviceProDTO = GetDeviceProDTO(Commonstacker, ChildPosiDeviceCode, "RGVCurrentlocation"); |
| | | int HCJGStatus = GetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | return HCJGStatus; |
| | | SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; |
| | | if (speStackerCrane == null) return 0; |
| | | DeviceProDTO? deviceProDTO = speStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == ChildPosiDeviceCode && x.DeviceProParamName == "RGVCurrentlocation" && x.DeviceProParamType == "RGVCurrentlocation"); |
| | | int MCGStatus = GetDeviceAddress.RGVGetLine(speStackerCrane, deviceProDTO.DeviceProAddress); |
| | | return MCGStatus; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¼ å
¥è®¾å¤ï¼è¿å设å¤ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="ChildPosiDeviceCode">设å¤</param> |
| | | /// <returns></returns> |
| | | public static GetStackerObject GetChildDeviceCode(string ChildPosiDeviceCode) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); |
| | | SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; |
| | | if (speStackerCrane == null) |
| | | { |
| | | Console.WriteLine($"读åå°è®¾å¤ä¸ºç©º,设å¤ç¼å·ï¼{ChildPosiDeviceCode},002"); |
| | | return null; |
| | | } |
| | | GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); |
| | | return getStackerObject; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ¥è¯¢å
·ä½å°å |
| | | /// ä¼ å
¥è®¾å¤ï¼è¿åå½å设å¤ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="ChildPosiDeviceCode">设å¤</param> |
| | | /// <returns></returns> |
| | | public static int GetEquipmentInformation(string ChildPosiDeviceCode) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); |
| | | SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; |
| | | if (speStackerCrane == null) |
| | | { |
| | | Console.WriteLine($"读åå°è®¾å¤ä¸ºç©º,设å¤ç¼å·ï¼{ChildPosiDeviceCode},003"); |
| | | return 0; |
| | | } |
| | | GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); |
| | | if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic && |
| | | getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction) |
| | | { |
| | | return getStackerObject.RGVCurrentlocation; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¼ å
¥è®¾å¤ï¼è¿åå½å设å¤ä¿¡æ¯ï¼å
¥åºæ¯è½¦ï¼éè¦å å
¥æ¯å¦æè´§å¤æ) |
| | | /// </summary> |
| | | /// <param name="ChildPosiDeviceCode">设å¤</param> |
| | | /// <returns></returns> |
| | | public static int GetEquipmentInMuche(string ChildPosiDeviceCode) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); |
| | | SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; |
| | | if (speStackerCrane == null) |
| | | { |
| | | Console.WriteLine($"读åå°è®¾å¤ä¸ºç©º,设å¤ç¼å·ï¼{ChildPosiDeviceCode},004"); |
| | | return 0; |
| | | } |
| | | GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); |
| | | if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic && |
| | | getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction && getStackerObject.RgvCraneStatusValue == RgvEquipmentStatus.NoCargo) |
| | | { |
| | | return getStackerObject.RGVCurrentlocation; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ä¼ å
¥è®¾å¤ç¼å·ï¼å¤æè®¾å¤ç¶ææ¯å¦å¯è¿å
¥ |
| | | /// </summary> |
| | | /// <param name="ChildPosiDeviceCode"></param> |
| | | /// <returns></returns> |
| | | public static bool ReturnCurrentStatus(string ChildPosiDeviceCode) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); |
| | | SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; |
| | | if (speStackerCrane == null) |
| | | { |
| | | Console.WriteLine($"读åå°è®¾å¤ä¸ºç©º,设å¤ç¼å·ï¼{ChildPosiDeviceCode},005"); |
| | | return false; |
| | | } |
| | | GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); |
| | | if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic && |
| | | getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction) |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ¥è¯¢HCJç«å°è®¾å¤ |
| | | /// </summary> |
| | | /// <param name="Commonstacker"></param> |
| | | /// <param name="SCAddress"></param> |
| | | /// <param name="Interactivet"></param> |
| | | /// <returns></returns> |
| | | public static DeviceProDTO? GetDeviceProDTO(CommonStackerCrane Commonstacker, string SCAddress, string Interactivet) |
| | | public static DeviceProDTO? GetDeviceProDTO(CommonConveyorLine Commonstacker, string SCAddress, string Interactivet) |
| | | { |
| | | return Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SCAddress && x.DeviceProParamName == Interactivet && x.DeviceProParamType == "ReadDeviceCommand"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ¥è¯¢RGVè®¾å¤ |
| | | /// </summary> |
| | | /// <param name="Commonstacker"></param> |
| | | /// <param name="SCAddress"></param> |
| | | /// <param name="Interactivet"></param> |
| | | /// <returns></returns> |
| | | public static DeviceProDTO? GetRGVDeviceProDTO(SpeStackerCrane Commonstacker, string SCAddress, string Interactivet) |
| | | { |
| | | return Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SCAddress && x.DeviceProParamName == Interactivet && x.DeviceProParamType == "RGV_Rgvtaskstutas"); |
| | | } |
| | | /// <summary> |
| | | /// 读å设å¤ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="conveyorLine"></param> |
| | | /// <param name="DeviceProDataBlock"></param> |
| | | /// <returns></returns> |
| | | public static int GetLine(CommonStackerCrane Commonstacker, string DeviceProDataBlock) |
| | | public static int GetLine(CommonConveyorLine Commonstacker, string DeviceProDataBlock) |
| | | { |
| | | return Commonstacker.Communicator.Read<short>(DeviceProDataBlock); |
| | | } |
| | | |
| | | public static int RGVGetLine(SpeStackerCrane Commonstacker, string DeviceProDataBlock) |
| | | { |
| | | return Commonstacker.Communicator.Read<short>(DeviceProDataBlock); |
| | | } |
| | |
| | | { |
| | | WriteLog.Write_Log(SCLLinStack, Filename, Logtype, new { ä¿¡æ¯ = Magessadd }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¼ å
¥ç«å°ç¼å·ï¼å¤ææ¯å¦æè´§ |
| | | /// </summary> |
| | | /// <param name="Platformnumber">ç«å°ç¼å·</param> |
| | | public static bool HCJIsstock(string Platformnumber) |
| | | { |
| | | //è·åéè¦åºåæ¯å¦å»å
¥åºä¸å»ä¸åæ ¼è½½è´§å°ä»»å¡ |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "HCJ2000"); |
| | | CommonConveyorLine Commonstacker = (CommonConveyorLine)device; |
| | | DeviceProDTO? deviceProDTO = GetDeviceProDTO(Commonstacker, Platformnumber.ToString(), "HCJ_GoodsStatus"); |
| | | int HCJGStatus = GetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | if (HCJGStatus == 0) //为æ è´§ |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å¤æè®¾å¤æ¯å¦æè´§ |
| | | /// </summary> |
| | | public static bool Mucheywhaddres(string DeviceCode) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | SpeStackerCrane Commonstacker = (SpeStackerCrane)device; |
| | | |
| | | DeviceProDTO? deviceProDTO = Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == DeviceCode && x.DeviceProParamName == "RgvEquipmentStatus" && x.DeviceProParamType == "RgvEquipmentStatus"); |
| | | int MCGStatus = GetDeviceAddress.RGVGetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | if(MCGStatus== (int)RgvEquipmentStatus.NoCargo) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 夿3个ç«å° |
| | | /// </summary> |
| | | public static bool AQMStatus(List<AGVStation> aGVStatList) |
| | | { |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "HCJ2000"); |
| | | CommonConveyorLine Commonstacker = (CommonConveyorLine)device; |
| | | foreach (var item in aGVStatList) |
| | | { |
| | | DeviceProDTO? deviceProDTO = GetDeviceProDTO(Commonstacker, item.Station_code.ToString(), "HCJ_GoodsStatus"); |
| | | int HCJGStatus = GetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | if (HCJGStatus != 0) //为æ è´§ |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return false; |
| | | throw; |
| | | } |
| | | |
| | | } |
| | | |
| | | public static List<string> StationareaList = new List<string>() { "RGV111", "RGV116", "RGV110", "RGV112", "RGV114", "RGV115","RGV118" }; |
| | | public static List<string> InStationareaList = new List<string>() { "RGV101", "RGV103", "RGV105", "RGV108", "RGV109", "RGV104","RGV107" }; |
| | | |
| | | public static bool OutbounMotherChildCartbool(string DeviceChildCode) |
| | | { |
| | | if (StationareaList.Contains(DeviceChildCode)) |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | public static bool OutbounMotherChildCartbool2(string DeviceChildCode) |
| | | { |
| | | if (DeviceChildCode=="RGV104" || DeviceChildCode == "RGV107") |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 读å忝å¦ä¸ºæå¨ |
| | | /// </summary> |
| | | public static bool OutRGVStatice() |
| | | { |
| | | bool rgvbool=true; |
| | | foreach (string AGVStation in StationareaList) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == AGVStation); |
| | | if (device == null) continue; |
| | | SpeStackerCrane Commonstacker = (SpeStackerCrane)device; |
| | | |
| | | DeviceProDTO? deviceProDTO = Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == AGVStation && x.DeviceProParamName == "RgvCraneAutoStatus" && x.DeviceProParamType == "RgvCraneAutoStatus"); |
| | | int RGVState = GetDeviceAddress.RGVGetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | if (RGVState == 1) |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | return rgvbool; |
| | | } |
| | | |
| | | public static bool InRGVStatice() |
| | | { |
| | | bool rgvbool = true; |
| | | foreach (string AGVStation in InStationareaList) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == AGVStation); |
| | | if (device == null) continue; |
| | | SpeStackerCrane Commonstacker = (SpeStackerCrane)device; |
| | | |
| | | DeviceProDTO? deviceProDTO = Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == AGVStation && x.DeviceProParamName == "RgvCraneAutoStatus" && x.DeviceProParamType == "RgvCraneAutoStatus"); |
| | | int RGVState = GetDeviceAddress.RGVGetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | if (RGVState == 1) |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | return rgvbool; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºåºï¼è¯»åRGVæ¯å¦ä¸ºç©ºé² |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static bool OutRGVRGVStepprocess() |
| | | { |
| | | bool rgvbool = true; |
| | | foreach (string AGVStation in StationareaList) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == AGVStation); |
| | | if (device == null) continue; |
| | | SpeStackerCrane Commonstacker = (SpeStackerCrane)device; |
| | | |
| | | DeviceProDTO? deviceProDTO = Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == AGVStation && x.DeviceProParamName == "RGVStepprocess" && x.DeviceProParamType == "RGVStepprocess"); |
| | | int RGVState = GetDeviceAddress.RGVGetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | if (RGVState != 0) |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | return rgvbool; |
| | | } |
| | | |
| | | public static bool InRGVRGVStepprocess() |
| | | { |
| | | bool rgvbool = true; |
| | | foreach (string AGVStation in InStationareaList) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == AGVStation); |
| | | if (device == null) continue; |
| | | SpeStackerCrane Commonstacker = (SpeStackerCrane)device; |
| | | |
| | | DeviceProDTO? deviceProDTO = Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == AGVStation && x.DeviceProParamName == "RGVStepprocess" && x.DeviceProParamType == "RGVStepprocess"); |
| | | int RGVState = GetDeviceAddress.RGVGetLine(Commonstacker, deviceProDTO.DeviceProAddress); |
| | | if (RGVState != 0) |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | return rgvbool; |
| | | } |
| | | |
| | | public static bool WriteSecurityDoorpolice(string DeviceCode,string WriteType,int Writevalue) |
| | | { |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "HCJ2000"); |
| | | if (device == null) return false; |
| | | CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device; |
| | | DeviceProDTO? deviceProDTO = commonConveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == DeviceCode && x.DeviceProParamName == WriteType && x.DeviceProParamType == "DeviceCommand"); |
| | | return commonConveyorLine.Communicator.Write<short>(deviceProDTO.DeviceProAddress, (short)Writevalue); |
| | | } |
| | | catch (Exception) |
| | | { |
| | | return false; |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | |
| | | public static List<string> AQMListdata = new List<string>() { "AQM001", "AQM002"}; |
| | | /// <summary> |
| | | /// 夿å®å
¨é¨ç¶æ |
| | | /// </summary> |
| | | /// <param name="aqmtype">1为åºåºå®å
¨é¨3å·ï¼2为å
¥åºå®å
¨é¨å¤æ</param> |
| | | /// <returns></returns> |
| | | public static bool ReadAqmDecicStice(int aqmtype) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "HCJ2000"); |
| | | CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device; |
| | | if (aqmtype == 1) |
| | | { |
| | | DeviceProDTO? deviceProDTO = commonConveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == "AQM003" && x.DeviceProParamName == "IndicatorStatus" && x.DeviceProParamType == "ReadDeviceCommand"); |
| | | short AQMldeng = commonConveyorLine.Communicator.Read<short>(deviceProDTO.DeviceProDataBlock); |
| | | if (AQMldeng == 2) return false; |
| | | } |
| | | else |
| | | { |
| | | foreach (string aqmname in AQMListdata) |
| | | { |
| | | DeviceProDTO? deviceProDTO = commonConveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == aqmname && x.DeviceProParamName == "IndicatorStatus" && x.DeviceProParamType == "ReadDeviceCommand"); |
| | | short AQMldeng = commonConveyorLine.Communicator.Read<short>(deviceProDTO.DeviceProDataBlock); |
| | | if (AQMldeng == 2) return false; |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |