using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using WIDESEA_Common; using WIDESEA_WCS.Jobs.ConveyorLine.InboundArea; using WIDESEA_WCS.Jobs.ConveyorLine.OutboundArea; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS.ToWCS { public partial class QueryEquipmentinfoOperation { /// /// 查询设备信息 /// /// public static async Task QueryEquipmentinfo() { bool flag = true; EquipmentStateinfo equipmentStateinfo = new EquipmentStateinfo() { BearingOutInfo = new List(), InStationInfo = new List(), LineInfo = new List(), OutStationInfo = new List(), }; try { await Task.Run(() => { PLCClient client = WCSService.Clients.Find(r => r.PLCName == "LineDevice"); //轴承出库站台 foreach (var item in OutboundAreaDispatch.endStationNo) { equipmentStateinfo.BearingOutInfo.Add(QueryBarcodeAndTaskNumber(client, item)); } //入库/测量站台 foreach (var item in InboundAreaDispatch.InboundStationNo) { equipmentStateinfo.InStationInfo.Add(QueryBarcodeAndTaskNumber(client, item)); } //入库区出库站台 foreach (var item in InboundAreaDispatch.OutboundStationNo) { equipmentStateinfo.OutStationInfo.Add(QueryBarcodeAndTaskNumber(client, item)); } equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "InBound", "入库线")); equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "Outbound_E", "空托出库线")); equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "Measure_B", "测量线")); equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "ChangeLayer", "换层线")); equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "OutboundArea", "轴承出库线")); equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "ReIboundArea", "轴承回库线")); int inboundState = int.Parse(client.ReadValue(CLineInfoDBName.R_System_Inline_Run_Model.ToString(), "System").ToString()); int outboundState = int.Parse(client.ReadValue(CLineInfoDBName.R_System_Inline_Run_Model.ToString(), "OutSystem").ToString()); equipmentStateinfo.EQState = new { //设备模式 eqState = new { inboundState = GetState(inboundState), outboundState = GetState(outboundState), },//入库申请 inboundRequstState = new { inboundRequest = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_Confirm_OK.ToString(), "20101").ToString()), barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "20101").ToString(), }, weighStationState = new { barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "20201").ToString(), weigh = client.ReadValue(CLineInfoDBName.R_Line_Weight.ToString(), "20201").ToString() }, inboundCheck = new { barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "30301").ToString(), taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "30301").ToString(), }, outboundCheck = new { barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "30302").ToString(), taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "30302").ToString(), }, measureState = new { barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "10301").ToString(), taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "10301").ToString(), }, reInboundState = new { barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "90101").ToString(), loadState = client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), "90101").ToString(), }, hoisterState = new { barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "90100").ToString(), taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "90100").ToString(), //提升状态 histerState = client.Read("DB506.36.0", "bool").ToString(), //滚筒状态 rollerState = client.ReadValue(CLineInfoDBName.R_Line_DeviceNormal.ToString(), "90100").ToString(), histerLayer = client.ReadValue(CLineInfoDBName.R_Line_Layer.ToString(), "90100").ToString(), rgvRunState = client.ReadValue(CLineInfoDBName.W_System_RGVState.ToString()).ToString(), }, }; }); } catch { flag = false; } object resp = new { data = equipmentStateinfo, status = flag, }; return resp; } public static object QueryBarcodeAndTaskNumber(PLCClient client, string station) { return new { station = station, barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), station), taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), station), }; } public static string GetState(int state) { if (state == 1) return "手动模式"; else if (state == 2) return "单机模式"; else if (state == 3) return "联机模式"; else return "未知模式"; } public static object QueryLineInfo(PLCClient client, string lineCode, string name) { return new { name = name, barcode = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode), taskNumber = client.ReadValue(CLineInfoDBName.W_Line_TaskNumber.ToString(), lineCode), startStation = client.ReadValue(CLineInfoDBName.W_Line_StartStation.ToString(), lineCode), endStation = client.ReadValue(CLineInfoDBName.W_Line_EndStation.ToString(), lineCode), logic = client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString() }; } } public class EquipmentStateinfo { /// /// 出入库线信息 /// public List LineInfo { get; set; } /// /// 入库站台信息 /// public List InStationInfo { get; set; } /// /// 出库站台信息 /// public List OutStationInfo { get; set; } /// /// 轴承出库信息 /// public List BearingOutInfo { get; set; } /// /// 设备状态 /// public object EQState { get; set; } } }