|
|
|
@ -28,6 +28,7 @@ namespace zzz.Services.ReadPLC
|
|
|
|
|
private readonly IBaseRepository<Eqmt7> _eqmt7Rep;//lgy add
|
|
|
|
|
private readonly IBaseRepository<Eqmt2> _eqmt2Rep;//lgy add
|
|
|
|
|
private readonly IBaseRepository<Eqmt20> _eqmt20Rep;//lgy add
|
|
|
|
|
private readonly IBaseRepository<Eqmt3> _eqmt3Rep;//cg add
|
|
|
|
|
|
|
|
|
|
private readonly IBaseRepository<Eqmt16> _eqmt16Rep;
|
|
|
|
|
private readonly IBaseRepository<Eqmt17> _eqmt17Rep;
|
|
|
|
@ -52,6 +53,7 @@ namespace zzz.Services.ReadPLC
|
|
|
|
|
IBaseRepository<Eqmt15> eqmt15Rep,
|
|
|
|
|
IBaseRepository<Eqmt7> eqmt7Rep,
|
|
|
|
|
IBaseRepository<Eqmt2> eqmt2Rep,
|
|
|
|
|
IBaseRepository<Eqmt3> eqmt3Rep,
|
|
|
|
|
IBaseRepository<Eqmt20> eqmt20Rep,
|
|
|
|
|
IBaseRepository<Eqmt16> eqmt16Rep,
|
|
|
|
|
IBaseRepository<Eqmt17> eqmt17Rep,
|
|
|
|
@ -76,6 +78,7 @@ namespace zzz.Services.ReadPLC
|
|
|
|
|
_eqmt15Rep = eqmt15Rep;
|
|
|
|
|
_eqmt7Rep = eqmt7Rep;
|
|
|
|
|
_eqmt2Rep = eqmt2Rep;
|
|
|
|
|
_eqmt3Rep = eqmt3Rep;
|
|
|
|
|
_eqmt20Rep = eqmt20Rep;
|
|
|
|
|
_eqmt16Rep = eqmt16Rep;
|
|
|
|
|
_eqmt17Rep = eqmt17Rep;
|
|
|
|
@ -1875,61 +1878,15 @@ namespace zzz.Services.ReadPLC
|
|
|
|
|
eqmt7.d9508 = _melsecMcNet.ReadInt32("D9508").Content; // 班废品
|
|
|
|
|
eqmt7.d9510 = _melsecMcNet.ReadInt32("D9510").Content; // 班能耗
|
|
|
|
|
eqmt7.d9522 = _melsecMcNet.ReadInt32("D9522").Content; // 视觉废品
|
|
|
|
|
eqmt7.d9524 = _melsecMcNet.ReadInt32("D9524").Content/10; //班合格率
|
|
|
|
|
Console.WriteLine(_melsecMcNet.ReadFloat("D9524").Content);
|
|
|
|
|
|
|
|
|
|
eqmt7.d9524 = Math.Round((decimal) _melsecMcNet.ReadInt32("D9524").Content / 10, 2); //班合格率
|
|
|
|
|
//Console.WriteLine(_melsecMcNet.ReadFloat("D9524").Content);
|
|
|
|
|
|
|
|
|
|
eqmt7.d9526 = _melsecMcNet.ReadFloat("D9526").Content.ObjToDecimal(0); //班开机率
|
|
|
|
|
eqmt7.d9528 = _melsecMcNet.ReadFloat("D9528").Content.ObjToDecimal(0); //班有效率
|
|
|
|
|
eqmt7.d9530 = _melsecMcNet.ReadInt32("D9530").Content; //班OEE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//异常不停机数据
|
|
|
|
|
#region 异常不停机数据
|
|
|
|
|
/*
|
|
|
|
|
var except02 = new List<string>();
|
|
|
|
|
|
|
|
|
|
var L100_L115 = _melsecMcNet.ReadBool("L100", 18);
|
|
|
|
|
for (int i = 0; i < 18; i++)
|
|
|
|
|
{
|
|
|
|
|
if (L100_L115.Content[i])
|
|
|
|
|
{
|
|
|
|
|
except02.Add($"L{100 + i}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var M800_M834 = _melsecMcNet.ReadBool("M800", 35);
|
|
|
|
|
for (int i = 0; i < 35; i++)
|
|
|
|
|
{
|
|
|
|
|
if (M800_M834.Content[i])
|
|
|
|
|
{
|
|
|
|
|
except02.Add($"M{800 + i}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var M860_M874 = _melsecMcNet.ReadBool("M860", 15);
|
|
|
|
|
for (int i = 0; i < 15; i++)
|
|
|
|
|
{
|
|
|
|
|
if (M860_M874.Content[i])
|
|
|
|
|
{
|
|
|
|
|
except02.Add($"M{860 + i}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var SM52 = _melsecMcNet.ReadBool("SM52");
|
|
|
|
|
if (SM52.Content) except02.Add($"SM52");
|
|
|
|
|
|
|
|
|
|
var B0000F = _melsecMcNet.ReadBool("B0000F");
|
|
|
|
|
if (B0000F.Content) except02.Add($"B0000F");
|
|
|
|
|
|
|
|
|
|
var B0050F = _melsecMcNet.ReadBool("B0050F");
|
|
|
|
|
if (B0050F.Content) except02.Add($"B0050F");
|
|
|
|
|
|
|
|
|
|
var B00A0F = _melsecMcNet.ReadBool("B00A0F");
|
|
|
|
|
if (B00A0F.Content) except02.Add($"B00A0F");
|
|
|
|
|
*/
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 增加EqmtPub数据
|
|
|
|
|
var product_type = "1";
|
|
|
|
|
//if (eqmt7.l271 == 1)
|
|
|
|
@ -2077,7 +2034,7 @@ namespace zzz.Services.ReadPLC
|
|
|
|
|
eqmt2.d9554 = _melsecMcNet.ReadInt32("D7954").Content; // 总能耗
|
|
|
|
|
eqmt2.d9506 = _melsecMcNet.ReadInt32("D7552").Content; // 班成品
|
|
|
|
|
eqmt2.d9508 = _melsecMcNet.ReadInt32("D7554").Content; // 班废品
|
|
|
|
|
eqmt2.d9524 = Math.Round((decimal) eqmt2.d9506/eqmt2.d9504, 2) * 100; //班合格率
|
|
|
|
|
eqmt2.d9524 = eqmt2.d9504 == 0 ? 0 : Math.Round((decimal) eqmt2.d9506 * 100 / eqmt2.d9504, 2); //班合格率
|
|
|
|
|
|
|
|
|
|
eqmt2.d9526 = _melsecMcNet.ReadFloat("D9526").Content.ObjToDecimal(0); //班开机率
|
|
|
|
|
eqmt2.d9528 = _melsecMcNet.ReadFloat("D9528").Content.ObjToDecimal(0); //班有效率
|
|
|
|
@ -2230,6 +2187,98 @@ namespace zzz.Services.ReadPLC
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 读取3线数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="input"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task ReadDataLine3(EquipInput input)
|
|
|
|
|
{
|
|
|
|
|
Stopwatch oTime1 = new Stopwatch();
|
|
|
|
|
oTime1.Start(); //记录开始时间
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"读取3线数据 开始");
|
|
|
|
|
|
|
|
|
|
var eqmt3 = new Eqmt3()
|
|
|
|
|
{
|
|
|
|
|
eqmt_id = input.eqmt_id,
|
|
|
|
|
collect_id = Guid.NewGuid().ToString(),
|
|
|
|
|
gmt_create = DateTime.Now,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var connSuccess = ConnectPLC(input.ip, input.port[0]);
|
|
|
|
|
|
|
|
|
|
if (connSuccess)
|
|
|
|
|
{
|
|
|
|
|
eqmt3.d260 = _melsecMcNet.ReadInt16("D260").Content; // 产品型号
|
|
|
|
|
eqmt3.d204 = _melsecMcNet.ReadInt16("D204").Content; // 生产速度
|
|
|
|
|
|
|
|
|
|
eqmt3.d840 = _melsecMcNet.ReadInt32("D840").Content; // 总生产产量
|
|
|
|
|
eqmt3.d842 = _melsecMcNet.ReadInt32("D842").Content; // 总成品量
|
|
|
|
|
eqmt3.d6600 = _melsecMcNet.ReadInt32("D6600").Content; // 班产量
|
|
|
|
|
eqmt3.d6602 = _melsecMcNet.ReadInt32("D6602").Content; // 班成品
|
|
|
|
|
eqmt3.d6604 = _melsecMcNet.ReadInt32("D6604").Content; // 班废品
|
|
|
|
|
eqmt3.d6614 = _melsecMcNet.ReadInt32("D6614").Content; //班合格率
|
|
|
|
|
|
|
|
|
|
eqmt3.d9530 = _melsecMcNet.ReadInt32("D9530").Content; //班OEE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 增加EqmtPub数据
|
|
|
|
|
var product_type = "1";
|
|
|
|
|
var eqmtBaseInfo = (await _eqmtBaseRep.QueryAsync(x => x.eqmt_id == eqmt3.eqmt_id)).FirstOrDefault();
|
|
|
|
|
var eqmtProductSpecInfo = (await _eqmtProductSpecRep.QueryAsync(x => x.eqmt_id == eqmt3.eqmt_id && x.product_type == product_type)).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
EqmtPubData newPub = new EqmtPubData();
|
|
|
|
|
|
|
|
|
|
newPub.collect_id = eqmt3.collect_id;
|
|
|
|
|
newPub.eqmt_id = eqmt3.eqmt_id;
|
|
|
|
|
newPub.product_type = product_type;
|
|
|
|
|
newPub.product_type_name = $"{eqmtBaseInfo?.product}({eqmtProductSpecInfo?.product_type_name})";
|
|
|
|
|
|
|
|
|
|
newPub.speed = eqmt3.d204;
|
|
|
|
|
newPub.total_product_qty = eqmt3.d840;
|
|
|
|
|
newPub.intraday_product_qty = eqmt3.d842;
|
|
|
|
|
|
|
|
|
|
newPub.intraday_ok_qty = eqmt3.d6600;
|
|
|
|
|
newPub.intraday_ng_qty = eqmt3.d6604;
|
|
|
|
|
newPub.intraday_yield_rate = eqmt3.d6614;
|
|
|
|
|
|
|
|
|
|
newPub.oee = eqmt3.d9530;
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 写入数据库
|
|
|
|
|
//报工数据 一定要写在 pubData插入之前
|
|
|
|
|
var addData = await CreateEqmtCollectAddData(newPub);
|
|
|
|
|
await _eqmtAddDataRep.InsertAsync(addData);
|
|
|
|
|
|
|
|
|
|
await _eqmt3Rep.InsertAsync(eqmt3);
|
|
|
|
|
|
|
|
|
|
await _eqmtPubRep.InsertAsync(newPub);
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"读取3线数据 异常 {e.Message}");
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
oTime1.Stop(); //记录结束时间
|
|
|
|
|
_logger.LogInformation($"读取3线数据 完成,耗时{oTime1.Elapsed.TotalSeconds}秒");
|
|
|
|
|
DisConnectPLC();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 读取20线数据
|
|
|
|
|
/// </summary>
|
|
|
|
|