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;
}
}
}