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_Comm.PLCDBItem;
|
using WIDESEA_Core.Extensions;
|
using WIDESEA_WCS.WCSClient;
|
|
namespace WIDESEA_WCS
|
{
|
public class GetDate
|
{
|
/// <summary>
|
/// 获取车轮数据信息
|
/// </summary>
|
public static List<WheelDBItem> GetWheelDate(PLCClient client)
|
{
|
List<WheelDBItem> wheelDBItems = new List<WheelDBItem>();
|
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;
|
}
|
/// <summary>
|
/// 获取VK状态信息
|
/// </summary>
|
/// <param name="client"></param>
|
/// <returns></returns>
|
public static List<VKDBItem> GetVKDate(PLCClient client)
|
{
|
List<VKDBItem> vKDBItems = new List<VKDBItem>();
|
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;
|
}
|
/// <summary>
|
/// 获取机床状态信息
|
/// </summary>
|
/// <param name="client"></param>
|
/// <returns></returns>
|
public static List<MachineDBItem> GetMachineDate(PLCClient client)
|
{
|
List<MachineDBItem> machineDBItems = new List<MachineDBItem>();
|
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;
|
}
|
/// <summary>
|
/// 获取桁架机械手状态信息
|
/// </summary>
|
/// <param name="client"></param>
|
/// <returns></returns>
|
public static List<GantryDBItem> GetGantryDate(PLCClient client)
|
{
|
List<GantryDBItem> gantryDBItems = new List<GantryDBItem>();
|
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;
|
}
|
|
|
/// <summary>
|
/// 获取涂油机信息
|
/// </summary>
|
/// <param name="client"></param>
|
/// <returns></returns>
|
public static List<Oiling_machine> GetOiling_machine(PLCClient client)
|
{
|
List<Oiling_machine> gantryDBItems = new List<Oiling_machine>();
|
PropertyInfo[] propertyInfos = typeof(Oiling_machine).GetProperties();
|
var groups = client.itemGroups.Where(x => x.opratortype == "oiler").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
|
foreach (var key in groups)
|
{
|
try
|
{
|
Oiling_machine StackerDBItem = new Oiling_machine();
|
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 "R_Automatic_mode":
|
StackerDBItem.R_Automatic_mode = Convert.ToBoolean(readData);
|
break;
|
case "R_Manual_mode":
|
StackerDBItem.R_Manual_mode = Convert.ToBoolean(readData);
|
break;
|
case "R_AutoRunning":
|
StackerDBItem.R_AutoRunning = Convert.ToBoolean(readData);
|
break;
|
case "R_NO_FAULT":
|
StackerDBItem.R_NO_FAULT = Convert.ToBoolean(readData);
|
break;
|
case "R_state_power_on":
|
StackerDBItem.R_state_power_on = Convert.ToBoolean(readData);
|
break;
|
case "R_state_automatic_se_lected":
|
StackerDBItem.R_state_automatic_se_lected = Convert.ToBoolean(readData);
|
break;
|
case "R_EstopOK":
|
StackerDBItem.R_EstopOK = Convert.ToBoolean(readData);
|
break;
|
case "R_WheelOnPosition":
|
StackerDBItem.R_WheelOnPosition = Convert.ToBoolean(readData);
|
break;
|
case "R_Wheel_SN":
|
StackerDBItem.R_Wheel_SN = Convert.ToString(readData);
|
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;
|
}
|
}
|
}
|
}
|
gantryDBItems.Add(StackerDBItem);
|
}
|
catch (Exception ex)
|
{
|
|
}
|
|
}
|
return gantryDBItems;
|
}
|
|
}
|
}
|