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
|
{
|
/// <summary>
|
/// 查询设备信息
|
/// </summary>
|
/// <returns></returns>
|
public static async Task<object> QueryEquipmentinfo()
|
{
|
bool flag = true;
|
EquipmentStateinfo equipmentStateinfo = new EquipmentStateinfo()
|
{
|
BearingOutInfo = new List<object>(),
|
InStationInfo = new List<object>(),
|
LineInfo = new List<object>(),
|
OutStationInfo = new List<object>(),
|
};
|
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
|
{
|
/// <summary>
|
/// 出入库线信息
|
/// </summary>
|
public List<object> LineInfo { get; set; }
|
/// <summary>
|
/// 入库站台信息
|
/// </summary>
|
public List<object> InStationInfo { get; set; }
|
/// <summary>
|
/// 出库站台信息
|
/// </summary>
|
public List<object> OutStationInfo { get; set; }
|
/// <summary>
|
/// 轴承出库信息
|
/// </summary>
|
public List<object> BearingOutInfo { get; set; }
|
/// <summary>
|
/// 设备状态
|
/// </summary>
|
public object EQState { get; set; }
|
}
|
}
|