diff --git a/Aucma.Core.HwPLc/Impl/MelsecPlc.cs b/Aucma.Core.HwPLc/Impl/MelsecPlc.cs index a6648ecc..4ac238a4 100644 --- a/Aucma.Core.HwPLc/Impl/MelsecPlc.cs +++ b/Aucma.Core.HwPLc/Impl/MelsecPlc.cs @@ -76,7 +76,7 @@ namespace Aucma.Core.HwPLc /// public bool Connect(string iP, int port) { - //melsecMcNet.IpAddress = iP;//正式环境开启 + melsecMcNet.IpAddress = iP;//正式环境开启 melsecMcNet.Port = port; // 如果网络不太理想,配置了两个端口,一个有问题,立即切换另一个的话,可以配置如下的代码 diff --git a/Aucma.Core.OldBoxFoam/Aucma.Core.OldBoxFoam.csproj b/Aucma.Core.OldBoxFoam/Aucma.Core.OldBoxFoam.csproj index afffdecb..a4a39d03 100644 --- a/Aucma.Core.OldBoxFoam/Aucma.Core.OldBoxFoam.csproj +++ b/Aucma.Core.OldBoxFoam/Aucma.Core.OldBoxFoam.csproj @@ -1,7 +1,7 @@  - WinExe + Exe net6.0-windows enable true diff --git a/Aucma.Core.OldBoxFoam/Business/Collection.cs b/Aucma.Core.OldBoxFoam/Business/Collection.cs index 1ec0f1e0..8937bce8 100644 --- a/Aucma.Core.OldBoxFoam/Business/Collection.cs +++ b/Aucma.Core.OldBoxFoam/Business/Collection.cs @@ -37,7 +37,8 @@ namespace Aucma.Core.OldBoxFoam.Business try { ///Task.Run(() => - //{ + //{ + // Thread.Sleep(3000); plc1 = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldMelsecPlc1")); plc2 = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldMelsecPlc2")); plc3 = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldMelsecPlc3")); @@ -83,19 +84,8 @@ namespace Aucma.Core.OldBoxFoam.Business ReadStoreAmount(plc4, StoreAmountList); for (int i = 0; i < 24; i++) { - if (listFixtureStatus.Count > 0) - { - FixtureStatus model = new FixtureStatus(); - model.ObjId = i + 1; - if (BoxTypeList.Count > 0) model.FixtureBoxType = BoxTypeList[i].ToString(); - if (HolderStatusList.Count > 0) model.Status = HolderStatusList[i]; - if (HolderOutPutList.Count > 0) model.Yield = HolderOutPutList[i]; - if (SolidifyTimeList.Count > 0) model.PlanCuringTime = SolidifyTimeList[i]; - - listFixtureStatus.Add(model); - } - else - { + //if (listFixtureStatus.Count > 0) + //{ FixtureStatus model = new FixtureStatus(); model.ObjId = i + 1; if (BoxTypeList.Count > 0) model.FixtureBoxType = BoxTypeList[i].ToString(); @@ -104,7 +94,18 @@ namespace Aucma.Core.OldBoxFoam.Business if (SolidifyTimeList.Count > 0) model.PlanCuringTime = SolidifyTimeList[i]; listFixtureStatus.Add(model); - } + //} + //else + //{ + // FixtureStatus model = new FixtureStatus(); + // model.ObjId = i + 1; + // if (BoxTypeList.Count > 0) model.FixtureBoxType = BoxTypeList[i].ToString(); + // if (HolderStatusList.Count > 0) model.Status = HolderStatusList[i]; + // if (HolderOutPutList.Count > 0) model.Yield = HolderOutPutList[i]; + // if (SolidifyTimeList.Count > 0) model.PlanCuringTime = SolidifyTimeList[i]; + + // listFixtureStatus.Add(model); + //} } for (int i = 0; i < 8; i++) @@ -128,6 +129,8 @@ namespace Aucma.Core.OldBoxFoam.Business /// static void ReadBoxType(HwPLc.PlcModel obj, List BoxTypeList) { + if (obj == null) return; + if (obj.plc.IsConnected) { byte[] result = obj.plc.Read("D3140", 48); @@ -154,6 +157,7 @@ namespace Aucma.Core.OldBoxFoam.Business /// static void ReadHolderStatus(PlcModel obj1, List HolderStatusList) { + if (obj1 == null) return; byte[] result = obj1.plc.Read("YF0", 1); if (result == null) return; //输出二进制字符串,1#-3#手动、自动数据 @@ -261,6 +265,7 @@ namespace Aucma.Core.OldBoxFoam.Business /// static void ReadHolderOutPut(PlcModel obj,List HolderOutPutList) { + if (obj == null) return; byte[] result = obj.plc.Read("D182", 24); if (result == null) return; byte[] info = result; @@ -285,6 +290,7 @@ namespace Aucma.Core.OldBoxFoam.Business /// static void ReadSolidifyTime(PlcModel obj,List SolidifyTimeList) { + if (obj == null) return; byte[] result = obj.plc.Read("D910", 24); if (result == null) return; byte[] info = result; @@ -308,6 +314,7 @@ namespace Aucma.Core.OldBoxFoam.Business /// static void ReadStoreType(PlcModel obj, List storeType) { + if (obj == null) return; //夹具箱型 byte[] result = obj.plc.Read("D2010", 40); if (result == null) return; @@ -328,6 +335,7 @@ namespace Aucma.Core.OldBoxFoam.Business /// static void ReadStoreAmount(PlcModel obj, List storeAmount) { + if (obj == null) return; byte[] result = obj.plc.Read("L101", 1); if (result == null) return; string str1 = ByteArrayToBinary(array(result)).Substring(0, 3); diff --git a/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs b/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs index 45ad9d2b..17db22a0 100644 --- a/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs +++ b/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs @@ -40,51 +40,52 @@ namespace Aucma.Core.OldBoxFoam.ViewModels private readonly IBoxFoamDataRecordServices _boxFoamDataRecordServices; private static readonly log4net.ILog log = LogManager.GetLogger(typeof(OldBoxFoamPageViewModel)); Collection collection = new Collection(); - System.Timers.Timer timer1 = new System.Timers.Timer(2000); - System.Timers.Timer timer2 = new System.Timers.Timer(10000); + System.Timers.Timer timer1 = new System.Timers.Timer(5000); + System.Timers.Timer timer2 = new System.Timers.Timer(3000); int totalAmount = 0; - + bool flag = true; public OldBoxFoamPageViewModel() { _oldBoxFoamDataServices = App.ServiceProvider.GetService(); _oldBoxFoamTypeServices = App.ServiceProvider.GetService(); _boxFoamPlanServices = App.ServiceProvider.GetService(); _sysUserInfoServices = App.ServiceProvider.GetService(); _currentTeamTimeServices = App.ServiceProvider.GetService(); - _currentTeamTimeServices = App.ServiceProvider.GetService(); + // _currentTeamTimeServices = App.ServiceProvider.GetService(); _boxFoamDataRecordServices = App.ServiceProvider.GetService(); //AucamTaskService.RefreshOldBoxFoamDataDelegateEvent += OldBoxFoamOnLoad3; - timer1.Elapsed += new System.Timers.ElapsedEventHandler(OldBoxFoamOnLoad); //到达时间的时候执行事件; - timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true); - timer1.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它, - timer1.Start();//timer.Start()的内部原理还是设置timer.Enabled = true; + //timer1.Elapsed += new System.Timers.ElapsedEventHandler(OldBoxFoamOnLoad); //到达时间的时候执行事件; + //timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true); + //timer1.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它, + //timer1.Start();//timer.Start()的内部原理还是设置timer.Enabled = true; timer2.Elapsed += new System.Timers.ElapsedEventHandler(RealTimeFoamingTask); //到达时间的时候执行事件; timer2.AutoReset = true;//设置是执行一次(false)还是一直执行(true); timer2.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它, timer2.Start();//timer.Start()的内部原理还是设置timer.Enabled = true; + + //Task.WaitAll(OldBoxFoamOnLoad3()); } #region 初始化加载数据 - private void OldBoxFoamOnLoad(object? sender, ElapsedEventArgs e) + private void OldBoxFoamOnLoad(List prderList) { try { + //collection.startCollect(); + ///if (collection.listFixtureStatus == null) return; + //var prderList= collection.listFixtureStatus; + int num = prderList.Sum(d => d.Yield); + if (prderList.Count==0) return; totalAmount = 0; _fixtureName.Clear(); _production.Clear(); _beat.Clear(); _statusColor.Clear(); - - if (collection.listFixtureStatus == null) return; - int i = 0; - var prderList= collection.listFixtureStatus; - int num = prderList.Sum(d => d.Yield); - foreach (var item in prderList) { - if (item.Status == 1)//生产 + if (item.Status == 2)//生产 { _statusColor.Add("green"); } @@ -112,44 +113,36 @@ namespace Aucma.Core.OldBoxFoam.ViewModels } } } - public async Task OldBoxFoamOnLoad3(List list) + public async Task OldBoxFoamOnLoad3() { try { - if (list == null) return; - System.Windows.Application.Current.Dispatcher.Invoke((Action)(() => + collection.startCollect(); + if (collection.listFixtureStatus == null) return; + var prderList = collection.listFixtureStatus; + int num = prderList.Sum(d => d.Yield); + if (prderList.Count==0) return; + totalAmount = 0; + _fixtureName.Clear(); + _production.Clear(); + _beat.Clear(); + _statusColor.Clear(); + foreach (var item in prderList) { - _fixtureName.Clear(); - _production.Clear(); - _beat.Clear(); - _statusColor.Clear(); - OldBoxFoamDataGrid.Clear(); - int i = 0; - var prderList = list.OrderBy(d => d.MainId); - foreach (var item in prderList) + if (item.Status == 1)//生产 { - OldBoxFoamDataModel model = new OldBoxFoamDataModel(); - model.ObjId = item.ObjId; - model.Fixtureboxtype = item.Fixtureboxtype; - model.Fixturestatus = item.Fixturestatus; - model.Production = item.Production; - model.CuringTimeSettingValue = item.CuringTimeSettingValue; - if (item.Fixturestatus == 1)//停止 - { - _statusColor.Add("green"); - - } - else - { - _statusColor.Add("red"); - } - _fixtureName.Add(item.Fixtureboxtype); - _production.Add(item.Production); - _beat.Add(item.BoxBeat); - i = +item.Production; + _statusColor.Add("green"); } - - })); + else + { + _statusColor.Add("red"); + } + _fixtureName.Add(item.FixtureBoxType); + _production.Add(item.Yield); + //_beat.Add(item.BoxBeat); + totalAmount = totalAmount + item.Yield; + } + Totle = totalAmount.ToString(); } catch (Exception ex) { @@ -157,9 +150,10 @@ namespace Aucma.Core.OldBoxFoam.ViewModels } finally { + if (GetStoreTimer != null) { - GetStoreTimer.Change(10000, Timeout.Infinite); + GetStoreTimer.Change(20000, Timeout.Infinite); } } } @@ -353,8 +347,6 @@ namespace Aucma.Core.OldBoxFoam.ViewModels private async void ExecHourData(string productLineCode) { - - try { List bLis = new List(); @@ -362,44 +354,60 @@ namespace Aucma.Core.OldBoxFoam.ViewModels collection.startCollect(); bLis = collection.listFixtureStatus; if (bLis.Count == 0) return; - int total = 0; + List bfds = await _oldBoxFoamDataServices.QueryAsync(); List spaceList = await _oldBoxFoamTypeServices.QueryAsync(); - List < BoxFoamPlan> planList = await _boxFoamPlanServices.QueryAsync(); + List planList = await _boxFoamPlanServices.QueryAsync(); for (int j = 0; j < bLis.Count; j++) { - OldBoxFoamType space = spaceList.FirstOrDefault(d => d.Boxtype == bLis[j].FixtureBoxType); - //根据夹具找货道,根据货道找物料 - if (space != null) + try { - BoxFoamPlan plan = planList.FirstOrDefault(d => d.MaterialCode == space.MaterialCode && d.PlanAmount > d.CompleteAmount); - if (plan != null) + OldBoxFoamType space = spaceList.FirstOrDefault(d => d.Boxtype == bLis[j].FixtureBoxType); + //根据夹具找货道,根据货道找物料 + if (space != null) { - int complateAmount = 0; - //更新小时数据 - BoxFoamData bfd = bfds.FirstOrDefault(d => d.Fixtureboxtype == bLis[j].FixtureBoxType && d.MainId == bLis[j].ObjId); - if (bfd != null) + BoxFoamPlan plan = planList.FirstOrDefault(d => d.MaterialCode == space.MaterialCode && d.PlanAmount > d.CompleteAmount); + if (plan != null) { - UpdateBoxData(bLis[j], bfd); - //更新计划数量 - complateAmount = bLis[j].Yield - bfd.Production; + int complateAmount = 0; + //更新小时数据 + BoxFoamData bfd = bfds.FirstOrDefault(d => d.Fixtureboxtype == bLis[j].FixtureBoxType && d.MainId == bLis[j].ObjId); + if (bfd != null) + { + //更新计划数量 + complateAmount = bLis[j].Yield - bfd.Production; + UpdateBoxData(bLis[j], bfd); + } + else + { + SaveBoxData(productLineCode, bLis[j]); + } + plan.CompleteAmount = plan.CompleteAmount + complateAmount; + await _boxFoamPlanServices.UpdateAsync(plan); } else { - SaveBoxData(productLineCode, bLis[j]); + //更新小时数据 + BoxFoamData bfd = bfds.FirstOrDefault(d => d.Fixtureboxtype == bLis[j].FixtureBoxType && d.MainId == bLis[j].ObjId); + if (bfd != null) + { + UpdateBoxData(bLis[j], bfd); + } + else + { + SaveBoxData(productLineCode, bLis[j]); + } } - plan.CompleteAmount = plan.CompleteAmount + complateAmount; - await _boxFoamPlanServices.UpdateAsync(plan); } else { //更新小时数据 //List bfd = await _oldBoxFoamDataServices.QueryAsync(d => d.Fixtureboxtype == bLis[j].FixtureBoxType && d.MainId == bLis[j].ObjId); + BoxFoamData bfd = bfds.FirstOrDefault(d => d.Fixtureboxtype == bLis[j].FixtureBoxType && d.MainId == bLis[j].ObjId); - if (bfd!=null) + if (bfd != null) { UpdateBoxData(bLis[j], bfd); - } else { @@ -407,22 +415,11 @@ namespace Aucma.Core.OldBoxFoam.ViewModels } } } - else - { - //更新小时数据 - //List bfd = await _oldBoxFoamDataServices.QueryAsync(d => d.Fixtureboxtype == bLis[j].FixtureBoxType && d.MainId == bLis[j].ObjId); + catch { } - BoxFoamData bfd = bfds.FirstOrDefault(d => d.Fixtureboxtype == bLis[j].FixtureBoxType && d.MainId == bLis[j].ObjId); - if (bfd != null) - { - UpdateBoxData(bLis[j], bfd); - } - else - { - SaveBoxData(productLineCode, bLis[j]); - } - } } + + OldBoxFoamOnLoad(bLis); } catch (Exception ex) {