using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using WIDESEA_Comm; using WIDESEA_Core.Extensions; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS { public class GetDate { /// /// 获取车轮数据信息 /// public static List GetWheelDate(PLCClient client) { List wheelDBItems = new List(); PropertyInfo[] propertyInfos = typeof(WheelDBItem).GetProperties(); var groups = client.itemGroups.Where(x => x.opratortype == "wheel").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList(); foreach (var key in groups) { WheelDBItem StackerDBItem = new WheelDBItem(); foreach (var propertyInfo in propertyInfos) { if (propertyInfo.Name == "StackerNo") { StackerDBItem.StackerNo = key.Key; } else { DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name); if (group != null) { var readData = DBExtension.Read(group, client); switch (propertyInfo.Name) { case "R_wheel_SN": StackerDBItem.R_wheel_SN = readData.ToString(); break; case "R_wheel_type": StackerDBItem.R_wheel_type = Convert.ToInt16(readData); break; case "R_part_status": StackerDBItem.R_part_status = Convert.ToByte(readData); break; case "R_part_process": StackerDBItem.R_part_process = Convert.ToByte(readData); break; } } } } wheelDBItems.Add(StackerDBItem); } return wheelDBItems; } /// /// 获取VK状态信息 /// /// /// public static List GetVKDate(PLCClient client) { List vKDBItems = new List(); PropertyInfo[] propertyInfos = typeof(VKDBItem).GetProperties(); var groups = client.itemGroups.Where(x => x.opratortype == "VK").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList(); foreach (var key in groups) { VKDBItem StackerDBItem = new VKDBItem(); foreach (var propertyInfo in propertyInfos) { if (propertyInfo.Name == "Name") { StackerDBItem.Name = key.Key; } else { DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name); if (group != null) { var readData = DBExtension.Read(group, client); switch (propertyInfo.Name) { case "power_on": StackerDBItem.power_on = Convert.ToBoolean(readData); break; case "ready_for_operate": StackerDBItem.ready_for_operate = Convert.ToBoolean(readData); break; case "ready_for_auto_start": StackerDBItem.ready_for_auto_start = Convert.ToBoolean(readData); break; case "VK_Fault": StackerDBItem.VK_Fault = Convert.ToBoolean(readData); break; case "bag_out_1_Fault": StackerDBItem.bag_out_1_Fault = Convert.ToBoolean(readData); break; case "bag_in_1_Fault": StackerDBItem.bag_in_1_Fault = Convert.ToBoolean(readData); break; case "bag_out_2_Fault": StackerDBItem.bag_out_2_Fault = Convert.ToBoolean(readData); break; case "bag_in_2_Fault": StackerDBItem.bag_in_2_Fault = Convert.ToBoolean(readData); break; case "safety_OK": StackerDBItem.safety_OK = Convert.ToBoolean(readData); break; case "state_JOG_bag1": StackerDBItem.state_JOG_bag1 = Convert.ToBoolean(readData); break; case "state_AUTO_bag1": StackerDBItem.state_AUTO_bag1 = Convert.ToBoolean(readData); break; case "state_JOG_bag2": StackerDBItem.state_JOG_bag2 = Convert.ToBoolean(readData); break; case "state_AUTO_bag2": StackerDBItem.state_AUTO_bag2 = Convert.ToBoolean(readData); break; case "state_JOG_bag3": StackerDBItem.state_JOG_bag3 = Convert.ToBoolean(readData); break; case "state_AUTO_bag3": StackerDBItem.state_AUTO_bag3 = Convert.ToBoolean(readData); break; case "state_JOG_bag4": StackerDBItem.state_JOG_bag4 = Convert.ToBoolean(readData); break; case "state_AUTO_bag4": StackerDBItem.state_AUTO_bag4 = Convert.ToBoolean(readData); break; case "safetydoor_1_closed": StackerDBItem.safetydoor_1_closed = Convert.ToBoolean(readData); break; case "safetydoor_2_closed": StackerDBItem.safetydoor_2_closed = Convert.ToBoolean(readData); break; case "safetydoor_3_closed": StackerDBItem.safetydoor_3_closed = Convert.ToBoolean(readData); break; case "safetydoor_4_closed": StackerDBItem.safetydoor_4_closed = Convert.ToBoolean(readData); break; case "safetydoor_5_closed": StackerDBItem.safetydoor_5_closed = Convert.ToBoolean(readData); break; case "safetydoor_6_closed": StackerDBItem.safetydoor_6_closed = Convert.ToBoolean(readData); break; case "safetydoor_7_closed": StackerDBItem.safetydoor_7_closed = Convert.ToBoolean(readData); break; case "safetydoor_8_closed": StackerDBItem.safetydoor_8_closed = Convert.ToBoolean(readData); break; case "safetydoor_9_closed": StackerDBItem.safetydoor_9_closed = Convert.ToBoolean(readData); break; case "vk_state": StackerDBItem.vk_state = Convert.ToInt16(readData); break; } } } } vKDBItems.Add(StackerDBItem); } return vKDBItems; } /// /// 获取机床状态信息 /// /// /// public static List GetMachineDate(PLCClient client) { List machineDBItems = new List(); PropertyInfo[] propertyInfos = typeof(MachineDBItem).GetProperties(); var groups = client.itemGroups.Where(x => x.opratortype == "machine").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList(); foreach (var key in groups) { MachineDBItem StackerDBItem = new MachineDBItem(); foreach (var propertyInfo in propertyInfos) { if (propertyInfo.Name == "Name") { StackerDBItem.Name = key.Key; } else { DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name); if (group != null) { var readData = DBExtension.Read(group, client); switch (propertyInfo.Name) { case "Power_on": StackerDBItem.Power_on = Convert.ToBoolean(readData); break; case "Ready_for_operate": StackerDBItem.Ready_for_operate = Convert.ToBoolean(readData); break; case "Ready_for_Auto_start": StackerDBItem.Ready_for_Auto_start = Convert.ToBoolean(readData); break; case "state_JOG": StackerDBItem.state_JOG = Convert.ToBoolean(readData); break; case "state_MDA": StackerDBItem.state_MDA = Convert.ToBoolean(readData); break; case "state_AUTO": StackerDBItem.state_AUTO = Convert.ToBoolean(readData); break; case "Safetydoors_closed": StackerDBItem.Safetydoors_closed = Convert.ToBoolean(readData); break; case "Spindel_running": StackerDBItem.Spindel_running = Convert.ToBoolean(readData); break; case "Kommunikation_IO": StackerDBItem.Kommunikation_IO = Convert.ToBoolean(readData); break; case "Hydraulik_fault": StackerDBItem.Hydraulik_fault = Convert.ToBoolean(readData); break; case "feeddrive_fault": StackerDBItem.feeddrive_fault = Convert.ToBoolean(readData); break; case "Maindrive_fault": StackerDBItem.Maindrive_fault = Convert.ToBoolean(readData); break; case "Machine_fault": StackerDBItem.Machine_fault = Convert.ToBoolean(readData); break; case "Coolant_fault": StackerDBItem.Coolant_fault = Convert.ToBoolean(readData); break; case "Chipremoval_fault": StackerDBItem.Chipremoval_fault = Convert.ToBoolean(readData); break; case "Coolant_ready_operate": StackerDBItem.Coolant_ready_operate = Convert.ToBoolean(readData); break; case "Chipremoval_ready_operat": StackerDBItem.Chipremoval_ready_operat = Convert.ToBoolean(readData); break; case "Emergency_Stop_machine": StackerDBItem.Emergency_Stop_machine = Convert.ToBoolean(readData); break; case "Breakdown_repair": StackerDBItem.Breakdown_repair = Convert.ToBoolean(readData); break; case "Breakdown_maintenance": StackerDBItem.Breakdown_maintenance = Convert.ToBoolean(readData); break; case "Breakdown_Toolchange": StackerDBItem.Breakdown_Toolchange = Convert.ToBoolean(readData); break; case "Breakdown_changeover": StackerDBItem.Breakdown_changeover = Convert.ToBoolean(readData); break; case "Programm_running": StackerDBItem.Programm_running = Convert.ToBoolean(readData); break; case "Prog_sel_side_1": StackerDBItem.Prog_sel_side_1 = Convert.ToBoolean(readData); break; case "Prog_sel_side_2": StackerDBItem.Prog_sel_side_2 = Convert.ToBoolean(readData); break; case "programm_side_1_finished": StackerDBItem.programm_side_1_finished = Convert.ToBoolean(readData); break; case "load_side_1_finished": StackerDBItem.load_side_1_finished = Convert.ToBoolean(readData); break; case "programm_side_2_finished": StackerDBItem.programm_side_2_finished = Convert.ToBoolean(readData); break; case "load_side_2_finished": StackerDBItem.load_side_2_finished = Convert.ToBoolean(readData); break; case "Toolchange_magazine_1": StackerDBItem.Toolchange_magazine_1 = Convert.ToBoolean(readData); break; case "Toolchange_magazine_2": StackerDBItem.Toolchange_magazine_2 = Convert.ToBoolean(readData); break; case "Changed_tool_mag_1": StackerDBItem.Changed_tool_mag_1 = Convert.ToInt16(readData); break; case "Dupl_tool_mag_1": StackerDBItem.Dupl_tool_mag_1 = Convert.ToInt16(readData); break; case "Changed_tool_mag_2": StackerDBItem.Changed_tool_mag_2 = Convert.ToInt16(readData); break; case "Dupl_tool_mag_2": StackerDBItem.Dupl_tool_mag_2 = Convert.ToInt16(readData); break; case "Parttype": StackerDBItem.Parttype = Convert.ToInt16(readData); break; case "partcounter": StackerDBItem.partcounter = Convert.ToInt32(readData); break; case "operator_ID": StackerDBItem.operator_ID = Convert.ToInt16(readData); break; case "machine_state": StackerDBItem.machine_state = Convert.ToInt16(readData); break; } } } } machineDBItems.Add(StackerDBItem); } return machineDBItems; } /// /// 获取桁架机械手状态信息 /// /// /// public static List GetGantryDate(PLCClient client) { List gantryDBItems = new List(); PropertyInfo[] propertyInfos = typeof(GantryDBItem).GetProperties(); var groups = client.itemGroups.Where(x => x.opratortype == "Gantry").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList(); foreach (var key in groups) { GantryDBItem StackerDBItem = new GantryDBItem(); foreach (var propertyInfo in propertyInfos) { if (propertyInfo.Name == "Name") { StackerDBItem.Name = key.Key; } else { DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name); if (group != null) { var readData = DBExtension.Read(group, client); switch (propertyInfo.Name) { case "power_on": StackerDBItem.power_on = Convert.ToBoolean(readData); break; case "ready_for_operate": StackerDBItem.ready_for_operate = Convert.ToBoolean(readData); break; case "ready_for_auto_start": StackerDBItem.ready_for_auto_start = Convert.ToBoolean(readData); break; case "state_JOG": StackerDBItem.state_JOG = Convert.ToBoolean(readData); break; case "state_MDA": StackerDBItem.state_MDA = Convert.ToBoolean(readData); break; case "state_AUTO": StackerDBItem.state_AUTO = Convert.ToBoolean(readData); break; case "communication_IO": StackerDBItem.communication_IO = Convert.ToBoolean(readData); break; case "drive_fault": StackerDBItem.drive_fault = Convert.ToBoolean(readData); break; case "portal_fault": StackerDBItem.portal_fault = Convert.ToBoolean(readData); break; case "emergency_stop_portal": StackerDBItem.emergency_stop_portal = Convert.ToBoolean(readData); break; case "programm_running": StackerDBItem.programm_running = Convert.ToBoolean(readData); break; case "gantry_state": StackerDBItem.gantry_state = Convert.ToInt16(readData); break; } } } } gantryDBItems.Add(StackerDBItem); } return gantryDBItems; } } }