From 652776e79e6b55a00687c5a07bf2ebf9911cc2f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LI-CCONG=5C=E6=9D=8E=E8=81=AA=E8=81=AA?= <1441652193@qq.com> Date: Mon, 15 Jan 2024 12:46:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E9=87=87bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/BigScreenController.cs | 463 ++++++++++++++++++ yuhong_plc/zzz.Api/appsettings.json | 4 +- .../ReadPLC/ReadPLCDataService.cs | 220 ++------- .../zzz.model/Entity/Equipment/Eqmt7.cs | 3 +- 4 files changed, 498 insertions(+), 192 deletions(-) create mode 100644 yuhong_plc/zzz.Api/Controllers/BigScreenController.cs diff --git a/yuhong_plc/zzz.Api/Controllers/BigScreenController.cs b/yuhong_plc/zzz.Api/Controllers/BigScreenController.cs new file mode 100644 index 0000000..af7ac20 --- /dev/null +++ b/yuhong_plc/zzz.Api/Controllers/BigScreenController.cs @@ -0,0 +1,463 @@ +using Microsoft.AspNetCore.Mvc; +using StackExchange.Profiling; +using zzz.Common.Helper; +using zzz.Model; +using zzz.Model.Entity; +using zzz.Repository; +using zzz.Services.ERP.Dtos; +using zzz.Tasks; + +namespace zzz.Api.Controllers +{ + /// + /// 余宏大屏数据 + /// + [ApiController] + [Route("api/[controller]/[action]")] + public class BigScreenController : BaseApiController + { + private readonly ILogger _logger; + private readonly IBaseRepository _planOrderRep; + private readonly IBaseRepository _salesout_delivery_orderRep; + private readonly IBaseRepository _eqmtAddRep; + private readonly IBaseRepository _eqmtBaseRep; + private readonly IBaseRepository _eqmtPubRep; + /// + /// 余宏大屏数据 + /// + /// + /// + /// + public BigScreenController( + IBaseRepository planOrderRep, + IBaseRepository salesout_delivery_orderRep, + IBaseRepository eqmtAddRep, + IBaseRepository eqmtBaseRep, + IBaseRepository eqmtPubRep, + ILogger logger + ) + { + _planOrderRep = planOrderRep; + _salesout_delivery_orderRep = salesout_delivery_orderRep; + _eqmtAddRep = eqmtAddRep; + _eqmtBaseRep = eqmtBaseRep; + _eqmtPubRep = eqmtPubRep; + _logger = logger; + } + + + /// + /// 工单列表数据 + /// + /// + [HttpGet] + public async Task>> getPlanOrderList() + { + //var orderList = await _planOrderRep.QueryAsync(x => x.FSTATUS != "结案" && x.FSTART_DATE.Length > 0); + + var orderList = Task.FromResult(await _planOrderRep.QueryAsync(x => x.FSTATUS != "结案" && x.FSTART_DATE.Length > 0)).Result; + + var ret = orderList.OrderByDescending(x => x.FBILL_NO).Take(50).AsEnumerable().MapToList(); + + foreach (var item in ret) + { + item.FBILL_NO = " " + item.FBILL_NO; + } + return Success(ret.ToList()); + } + + /// + /// 工单详情 + /// + /// + [HttpGet] + public async Task> getPlanOrderDetail(long fentryId) + { + var orderInfo = await _planOrderRep.FirstOrDefaultAsync(x=>x.FENTRY_ID == fentryId); + + var ret = orderInfo.MapTo(); + + return Success(ret); + } + + /// + /// 动态月订单信息数据 + /// + /// + [HttpGet] + public async Task> getMonthData() + { + var ret = new MonthDataOutput() { + ProductQty = new ProductQtyDto(), + EqmtRate = new LineRateDto(), + ProductOKRate = new List(), + }; + + var exceptDate = new DateTime(1900, 01, 01); + var monthFirstDat = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + + //设备列表 + //var eqmtList = await _eqmtBaseRep.QueryAsync(); + + //生产工单 + var MoList = await _planOrderRep.QueryAsync( + x => x.FPLAN_FINISH_DATE.StartsWith(DateTime.Now.ToString("yyyy-MM")) + ); //本月数据 + + //生产计划达成率 + var moTotalCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count(); + if (moTotalCnt > 0) + { + var completeList = new List() { "结案", "完工" }; + var completeCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && completeList.Contains(x.FSTATUS)).Count(); + ret.MoCompleteRate = Math.Round(completeCnt.ObjToDecimal() / moTotalCnt.ObjToDecimal(), 4) * 100; + } + + //订单交付率 + var SoList = await _salesout_delivery_orderRep.QueryAsync( + x => x.FDATE.StartsWith(DateTime.Now.ToString("yyyy-MM")) + ); //本月数据 + var soCount = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count(); + if (soCount>0) + { + var soCompleteCnt = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && x.FREAL_QTY > 0).Count(); + ret.PoCompleteRate = Math.Round(soCompleteCnt.ObjToDecimal() / soCount.ObjToDecimal(), 4) * 100; + } + + //月产量 _eqmtAddRep + var productType = (await _eqmtBaseRep.QueryAsync()).Select(x => x.product).Distinct(); + ret.ProductQty.xAxis.type = "category"; + ret.ProductQty.xAxis.data = new List(); + for (int i = 6; i >= 0 ; i--) + { + ret.ProductQty.xAxis.data.Add(DateTime.Now.Date.AddDays(-i).ToString("MM-dd")); + } + var addList = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= DateTime.Now.Date.AddDays(-6).Date); + //var addList = await _eqmtAddRep.QueryAsync(); + + + foreach (var t in productType) + { + seriesDto s = new seriesDto(); + s.name = t; + s.type = "bar"; + s.data = new List(); + + for (int i = 6; i >= 0; i--) + { + var day = DateTime.Now.Date.AddDays(-i).Date; + var sumQty = addList.Where(x => x.add_datetime.Value.Date == day && x.product == t).Sum(x => x.add_qty_ok); + s.data.Add(sumQty); + } + + ret.ProductQty.series.Add(s); + } + /* + //设备利用率 + ret.EqmtRate.xAxis.data = (await _eqmtBaseRep.QueryAsync()).Select(x => x.line_name).ToList(); + var pubList = await _eqmtPubRep.QueryAsync(x => x.gmt_create >= monthFirstDat); + + seriesDto01 newSeries = new seriesDto01(); + + foreach (var item in eqmtList) + { + var totalTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_run_time); + var workTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_work_time); + if (totalTime > 0) + { + newSeries.data.Add(Math.Round((decimal)workTime / totalTime, 4)*100); + } + else + { + newSeries.data.Add(0); + } + } + ret.EqmtRate.series.Add(newSeries); + + //合格率 + var addListMonth = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= monthFirstDat); + + foreach (var item in productType) + { + ProductOkRateDto newOK = new ProductOkRateDto(); + + newOK.ProductName = item; + var okQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ok); + var ngQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ng); + if (okQty > 0 || ngQty>0) + { + newOK.OKRate = Math.Round((decimal)okQty / (okQty + ngQty), 4) * 100; + } + ret.ProductOKRate.Add(newOK); + } + */ + return Success(ret); + } + + /// + /// 动态月订单信息数据 + /// + /// + [HttpGet] + public async Task> getMonthData1() + { + var ret = new MonthDataOutput() + { + ProductQty = new ProductQtyDto(), + EqmtRate = new LineRateDto(), + ProductOKRate = new List(), + }; + + var exceptDate = new DateTime(1900, 01, 01); + var monthFirstDat = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + + //设备列表 + var eqmtList = await _eqmtBaseRep.QueryAsync(); + /* + //生产工单 + var MoList = await _planOrderRep.QueryAsync( + x => x.FPLAN_FINISH_DATE.StartsWith(DateTime.Now.ToString("yyyy-MM")) + ); //本月数据 + + //生产计划达成率 + var moTotalCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count(); + if (moTotalCnt > 0) + { + var completeList = new List() { "结案", "完工" }; + var completeCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && completeList.Contains(x.FSTATUS)).Count(); + ret.MoCompleteRate = Math.Round(completeCnt.ObjToDecimal() / moTotalCnt.ObjToDecimal(), 4) * 100; + } + + //订单交付率 + var SoList = await _salesout_delivery_orderRep.QueryAsync( + x => x.FDATE.StartsWith(DateTime.Now.ToString("yyyy-MM")) + ); //本月数据 + var soCount = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count(); + if (soCount > 0) + { + var soCompleteCnt = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && x.FREAL_QTY > 0).Count(); + ret.PoCompleteRate = Math.Round(soCompleteCnt.ObjToDecimal() / soCount.ObjToDecimal(), 4) * 100; + } + + //月产量 _eqmtAddRep + var productType = (await _eqmtBaseRep.QueryAsync()).Select(x => x.product).Distinct(); + ret.ProductQty.xAxis.type = "category"; + ret.ProductQty.xAxis.data = new List(); + for (int i = 6; i >= 0; i--) + { + ret.ProductQty.xAxis.data.Add(DateTime.Now.Date.AddDays(-i).ToString("MM-dd")); + } + var addList = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= DateTime.Now.Date.AddDays(-6).Date); + //var addList = await _eqmtAddRep.QueryAsync(); + + + foreach (var t in productType) + { + seriesDto s = new seriesDto(); + s.name = t; + s.type = "bar"; + s.data = new List(); + + for (int i = 6; i >= 0; i--) + { + var day = DateTime.Now.Date.AddDays(-i).Date; + var sumQty = addList.Where(x => x.add_datetime.Value.Date == day && x.product == t).Sum(x => x.add_qty_ok); + s.data.Add(sumQty); + } + + ret.ProductQty.series.Add(s); + } + */ + //设备利用率 + ret.EqmtRate.xAxis.data = (await _eqmtBaseRep.QueryAsync()).Select(x => x.line_name).ToList(); + var pubList = await _eqmtPubRep.QueryAsync(x => x.gmt_create >= monthFirstDat); + + seriesDto01 newSeries = new seriesDto01(); + + foreach (var item in eqmtList) + { + var totalTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_run_time); + var workTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_work_time); + if (totalTime > 0) + { + newSeries.data.Add(Math.Round((decimal)workTime / totalTime, 4) * 100); + } + else + { + newSeries.data.Add(0); + } + } + ret.EqmtRate.series.Add(newSeries); + /* + //合格率 + var addListMonth = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= monthFirstDat); + + foreach (var item in productType) + { + ProductOkRateDto newOK = new ProductOkRateDto(); + + newOK.ProductName = item; + var okQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ok); + var ngQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ng); + if (okQty > 0 || ngQty > 0) + { + newOK.OKRate = Math.Round((decimal)okQty / (okQty + ngQty), 4) * 100; + } + ret.ProductOKRate.Add(newOK); + } + */ + return Success(ret); + } + + /// + /// 动态月订单信息数据 + /// + /// + [HttpGet] + public async Task> getMonthData2() + { + var ret = new MonthDataOutput() + { + ProductQty = new ProductQtyDto(), + EqmtRate = new LineRateDto(), + ProductOKRate = new List(), + }; + + var exceptDate = new DateTime(1900, 01, 01); + var monthFirstDat = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + /* + //设备列表 + var eqmtList = await _eqmtBaseRep.QueryAsync(); + + //生产工单 + var MoList = await _planOrderRep.QueryAsync( + x => x.FPLAN_FINISH_DATE.StartsWith(DateTime.Now.ToString("yyyy-MM")) + ); //本月数据 + + //生产计划达成率 + var moTotalCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count(); + if (moTotalCnt > 0) + { + var completeList = new List() { "结案", "完工" }; + var completeCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && completeList.Contains(x.FSTATUS)).Count(); + ret.MoCompleteRate = Math.Round(completeCnt.ObjToDecimal() / moTotalCnt.ObjToDecimal(), 4) * 100; + } + + //订单交付率 + var SoList = await _salesout_delivery_orderRep.QueryAsync( + x => x.FDATE.StartsWith(DateTime.Now.ToString("yyyy-MM")) + ); //本月数据 + var soCount = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count(); + if (soCount > 0) + { + var soCompleteCnt = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && x.FREAL_QTY > 0).Count(); + ret.PoCompleteRate = Math.Round(soCompleteCnt.ObjToDecimal() / soCount.ObjToDecimal(), 4) * 100; + } + + //月产量 _eqmtAddRep + var productType = (await _eqmtBaseRep.QueryAsync()).Select(x => x.product).Distinct(); + ret.ProductQty.xAxis.type = "category"; + ret.ProductQty.xAxis.data = new List(); + for (int i = 6; i >= 0; i--) + { + ret.ProductQty.xAxis.data.Add(DateTime.Now.Date.AddDays(-i).ToString("MM-dd")); + } + var addList = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= DateTime.Now.Date.AddDays(-6).Date); + //var addList = await _eqmtAddRep.QueryAsync(); + + + foreach (var t in productType) + { + seriesDto s = new seriesDto(); + s.name = t; + s.type = "bar"; + s.data = new List(); + + for (int i = 6; i >= 0; i--) + { + var day = DateTime.Now.Date.AddDays(-i).Date; + var sumQty = addList.Where(x => x.add_datetime.Value.Date == day && x.product == t).Sum(x => x.add_qty_ok); + s.data.Add(sumQty); + } + + ret.ProductQty.series.Add(s); + } + + //设备利用率 + ret.EqmtRate.xAxis.data = (await _eqmtBaseRep.QueryAsync()).Select(x => x.line_name).ToList(); + var pubList = await _eqmtPubRep.QueryAsync(x => x.gmt_create >= monthFirstDat); + + seriesDto01 newSeries = new seriesDto01(); + + foreach (var item in eqmtList) + { + var totalTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_run_time); + var workTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_work_time); + if (totalTime > 0) + { + newSeries.data.Add(Math.Round((decimal)workTime / totalTime, 4) * 100); + } + else + { + newSeries.data.Add(0); + } + } + ret.EqmtRate.series.Add(newSeries); + */ + + var productType = (await _eqmtBaseRep.QueryAsync()).Select(x => x.product).Distinct(); + //合格率 + var addListMonth = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= monthFirstDat); + + foreach (var item in productType) + { + ProductOkRateDto newOK = new ProductOkRateDto(); + + newOK.ProductName = item; + var okQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ok); + var ngQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ng); + if (okQty > 0 || ngQty > 0) + { + newOK.OKRate = Math.Round((decimal)okQty / (okQty + ngQty), 4) * 100; + } + ret.ProductOKRate.Add(newOK); + } + + return Success(ret); + } + + /// + /// 设备信息 + /// + /// + [HttpGet] + public async Task>> getEqmtDetailList() + { + List ret = new List(); + //设备列表 + var eqmtList = await _eqmtBaseRep.QueryAsync(); + + var pubList = await _eqmtPubRep.QueryAsync(x => x.gmt_create >= DateTime.Now.Date); + + foreach (var item in eqmtList) + { + EqmtInfoOutput newOne = new EqmtInfoOutput(); + + var lastInfo = pubList.Where(x => x.eqmt_id == item.eqmt_id).OrderByDescending(x => x.gmt_create).FirstOrDefault(); + if (lastInfo != null) + { + newOne = lastInfo.MapTo(); + } + else + { + + } + newOne.eqmt_name = eqmtList.Where(x => x.eqmt_id == item.eqmt_id).FirstOrDefault()?.line_name; + ret.Add(newOne); + } + + + return Success(ret); + } + } +} diff --git a/yuhong_plc/zzz.Api/appsettings.json b/yuhong_plc/zzz.Api/appsettings.json index 414ab6a..4e422cb 100644 --- a/yuhong_plc/zzz.Api/appsettings.json +++ b/yuhong_plc/zzz.Api/appsettings.json @@ -6,8 +6,8 @@ "Sqlite": "Data Source=./Magic.db", "SqlServer": "Server=BLACK; Database=zzzTest01; User=sa; Password=123456zls!;MultipleActiveResultSets=True;", //"MySql": "Data Source=150.158.169.212;Database=cjyx;User ID=base;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;", - "MySql": "Data Source=222.71.165.187;Database=cjyx;User ID=root;Password=qawsed,.123;pooling=true;port=3309;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;" - //"MySql": "Data Source=101.34.35.69;Database=cjyx_wm;User ID=base;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;" + //"MySql": "Data Source=222.71.165.187;Database=cjyx;User ID=root;Password=qawsed,.123;pooling=true;port=3309;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;" + "MySql": "Data Source=118.195.155.9;Database=yh-sc;User ID=yuhong;Password=bPFH6ZCe6srNATJz;pooling=true;port=3306;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;" }, //�Զ��������ݿ� "SeedDBEnabled": false, diff --git a/yuhong_plc/zzz.Services/ReadPLC/ReadPLCDataService.cs b/yuhong_plc/zzz.Services/ReadPLC/ReadPLCDataService.cs index 0c592f2..3ecdc12 100644 --- a/yuhong_plc/zzz.Services/ReadPLC/ReadPLCDataService.cs +++ b/yuhong_plc/zzz.Services/ReadPLC/ReadPLCDataService.cs @@ -1865,11 +1865,8 @@ namespace zzz.Services.ReadPLC { eqmt7.d2000 = _melsecMcNet.ReadInt16("D2000").Content; // 产品型号 - // eqmt7.w10 = _melsecMcNet.ReadInt16("W10").Content; // 生产速度 eqmt7.w10 = _melsecMcNet.ReadInt32("W10").Content/10; // 生产速度 - // var d1 = _melsecMcNet.ReadInt32("D2990").Content; // 生产速度 - eqmt7.d9500 = _melsecMcNet.ReadInt32("D9500").Content; // 总生产产量 eqmt7.d9502 = _melsecMcNet.ReadInt32("D9502").Content; // 总成品量 eqmt7.d9554 = _melsecMcNet.ReadInt32("D9554").Content; // 总能耗 @@ -1878,98 +1875,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 = _melsecMcNet.ReadFloat("D9524").Content.ObjToDecimal(0); //班合格率 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 except01 = new List(); - - var M160_M190 = _melsecMcNet.ReadBool("M160", 31); - for (int i = 0; i < 31; i++) - { - if (M160_M190.Content[i]) - { - except01.Add($"M{160 + i}"); - } - } - - var M70 = _melsecMcNet.ReadBool("M70"); - if (M70.Content) except01.Add($"M70"); - - var M700_M745 = _melsecMcNet.ReadBool("M700", 46); - for (int i = 0; i < 46; i++) - { - if (M700_M745.Content[i]) - { - except01.Add($"M{700 + i}"); - } - } - - var M108_M121 = _melsecMcNet.ReadBool("M108", 14); - for (int i = 0; i < 14; i++) - { - if (M108_M121.Content[i]) - { - except01.Add($"M{108 + i}"); - } - } - - var M50 = _melsecMcNet.ReadBool("M50"); - if (M50.Content) except01.Add($"M50"); - - var M380_M394 = _melsecMcNet.ReadBool("M380", 15); - for (int i = 0; i < 15; i++) - { - if (M380_M394.Content[i]) - { - except01.Add($"M{380 + i}"); - } - } - - var B00010_B0002F = _melsecMcNet.ReadBool("B00010", 32); - for (int i = 0; i < 32; i++) - { - if (B00010_B0002F.Content[i]) - { - except01.Add($"B000{(16 + i).ToString("x2").ToUpper()}"); - } - } - - var B00510_B0052F = _melsecMcNet.ReadBool("B00510", 32); - for (int i = 0; i < 32; i++) - { - if (B00510_B0052F.Content[i]) - { - except01.Add($"B005{(16 + i).ToString("x2").ToUpper()}"); - } - } - - var B00A10_B00A2F = _melsecMcNet.ReadBool("B00A10", 32); - for (int i = 0; i < 32; i++) - { - if (B00A10_B00A2F.Content[i]) - { - except01.Add($"B00A{(16 + i).ToString("x2").ToUpper()}"); - } - } - - var B01810_B01819 = _melsecMcNet.ReadBool("B01810", 10); - for (int i = 0; i < 10; i++) - { - if (B01810_B01819.Content[i]) - { - except01.Add($"B018{(16 + i).ToString("x2").ToUpper()}"); - } - }*/ - #endregion - //异常不停机数据 #region 异常不停机数据 /* @@ -2138,107 +2052,37 @@ namespace zzz.Services.ReadPLC if (connSuccess) { - - eqmt2.d2000 = _melsecMcNet.ReadInt16("D2000").Content; // 产品型号 - eqmt2.w10 = _melsecMcNet.ReadInt16("W10").Content/10; // 生产速度 - eqmt2.d9500 = _melsecMcNet.ReadInt32("D9500").Content; // 总生产产量 - eqmt2.d9502 = _melsecMcNet.ReadInt32("D9502").Content; // 总成品量 - eqmt2.d9554 = _melsecMcNet.ReadInt32("D9554").Content; // 总能耗 - eqmt2.d9504 = _melsecMcNet.ReadInt32("D9504").Content; // 班产量 - eqmt2.d9506 = _melsecMcNet.ReadInt32("D9506").Content; // 班成品 - eqmt2.d9508 = _melsecMcNet.ReadInt32("D9508").Content; // 班废品 - eqmt2.d9510 = _melsecMcNet.ReadInt32("D9510").Content; // 班能耗 - eqmt2.d9522 = _melsecMcNet.ReadInt32("D9522").Content; // 视觉废品 - - eqmt2.d9524 = _melsecMcNet.ReadFloat("D9524").Content.ObjToDecimal(0); //班合格率 - eqmt2.d9526 = _melsecMcNet.ReadFloat("D9526").Content.ObjToDecimal(0); //班开机率 - eqmt2.d9528 = _melsecMcNet.ReadFloat("D9528").Content.ObjToDecimal(0); //班有效率 + //eqmt2.d2000 = _melsecMcNet.ReadInt16("D2000").Content; // 产品型号 + //eqmt2.w10 = _melsecMcNet.ReadInt16("W10").Content/10; // 生产速度 + //eqmt2.d9500 = _melsecMcNet.ReadInt32("D9500").Content; // 总生产产量 + //eqmt2.d9502 = _melsecMcNet.ReadInt32("D9502").Content; // 总成品量 + //eqmt2.d9554 = _melsecMcNet.ReadInt32("D9554").Content; // 总能耗 + //eqmt2.d9504 = _melsecMcNet.ReadInt32("D9504").Content; // 班产量 + //eqmt2.d9506 = _melsecMcNet.ReadInt32("D9506").Content; // 班成品 + //eqmt2.d9508 = _melsecMcNet.ReadInt32("D9508").Content; // 班废品 + //eqmt2.d9510 = _melsecMcNet.ReadInt32("D9510").Content; // 班能耗 + //eqmt2.d9522 = _melsecMcNet.ReadInt32("D9522").Content; // 视觉废品 + + //eqmt2.d9524 = _melsecMcNet.ReadFloat("D9524").Content.ObjToDecimal(0); //班合格率 + //eqmt2.d9526 = _melsecMcNet.ReadFloat("D9526").Content.ObjToDecimal(0); //班开机率 + //eqmt2.d9528 = _melsecMcNet.ReadFloat("D9528").Content.ObjToDecimal(0); //班有效率 + //eqmt2.d9530 = _melsecMcNet.ReadInt32("D9530").Content; //班OEE + + eqmt2.d2000 = _melsecMcNet.ReadInt16("D7558").Content; // 产品型号 + eqmt2.w10 = _melsecMcNet.ReadInt16("W10").Content / 10; // 生产速度 + + eqmt2.d9500 = _melsecMcNet.ReadInt32("D7500").Content; // 总生产产量 + eqmt2.d9502 = _melsecMcNet.ReadInt32("D7502").Content; // 总成品量 + eqmt2.d9504 = _melsecMcNet.ReadInt32("D7550").Content; // 班产量 + 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.d9526 = _melsecMcNet.ReadFloat("D9526").Content.ObjToDecimal(0); //班开机率 + eqmt2.d9528 = _melsecMcNet.ReadFloat("D9528").Content.ObjToDecimal(0); //班有效率 eqmt2.d9530 = _melsecMcNet.ReadInt32("D9530").Content; //班OEE - - - //异常停机数据 - #region 异常停机数据 - /* - var except01 = new List(); - - var M160_M190 = _melsecMcNet.ReadBool("M160", 31); - for (int i = 0; i < 31; i++) - { - if (M160_M190.Content[i]) - { - except01.Add($"M{160 + i}"); - } - } - - var M70 = _melsecMcNet.ReadBool("M70"); - if (M70.Content) except01.Add($"M70"); - - var M700_M745 = _melsecMcNet.ReadBool("M700", 46); - for (int i = 0; i < 46; i++) - { - if (M700_M745.Content[i]) - { - except01.Add($"M{700 + i}"); - } - } - - var M108_M121 = _melsecMcNet.ReadBool("M108", 14); - for (int i = 0; i < 14; i++) - { - if (M108_M121.Content[i]) - { - except01.Add($"M{108 + i}"); - } - } - - var M50 = _melsecMcNet.ReadBool("M50"); - if (M50.Content) except01.Add($"M50"); - - var M380_M394 = _melsecMcNet.ReadBool("M380", 15); - for (int i = 0; i < 15; i++) - { - if (M380_M394.Content[i]) - { - except01.Add($"M{380 + i}"); - } - } - - var B00010_B0002F = _melsecMcNet.ReadBool("B00010", 32); - for (int i = 0; i < 32; i++) - { - if (B00010_B0002F.Content[i]) - { - except01.Add($"B000{(16 + i).ToString("x2").ToUpper()}"); - } - } - - var B00510_B0052F = _melsecMcNet.ReadBool("B00510", 32); - for (int i = 0; i < 32; i++) - { - if (B00510_B0052F.Content[i]) - { - except01.Add($"B005{(16 + i).ToString("x2").ToUpper()}"); - } - } - - var B00A10_B00A2F = _melsecMcNet.ReadBool("B00A10", 32); - for (int i = 0; i < 32; i++) - { - if (B00A10_B00A2F.Content[i]) - { - except01.Add($"B00A{(16 + i).ToString("x2").ToUpper()}"); - } - } - - var B01810_B01819 = _melsecMcNet.ReadBool("B01810", 10); - for (int i = 0; i < 10; i++) - { - if (B01810_B01819.Content[i]) - { - except01.Add($"B018{(16 + i).ToString("x2").ToUpper()}"); - } - }*/ #endregion //异常不停机数据 @@ -2657,7 +2501,5 @@ namespace zzz.Services.ReadPLC } } - #endregion - } } diff --git a/yuhong_plc/zzz.model/Entity/Equipment/Eqmt7.cs b/yuhong_plc/zzz.model/Entity/Equipment/Eqmt7.cs index 1ea6413..134f128 100644 --- a/yuhong_plc/zzz.model/Entity/Equipment/Eqmt7.cs +++ b/yuhong_plc/zzz.model/Entity/Equipment/Eqmt7.cs @@ -55,7 +55,8 @@ namespace zzz.Model.Entity public int d9510 { get; set; } public int d9522 { get; set; } - public decimal d9524 { get; set; } + public int d9524 { get; set; } + public decimal d9526 { get; set; } public decimal d9528 { get; set; } public decimal d9530 { get; set; }