From 3d247fb91d4c7d41d5fefeb18bbe304f6f6d3cf4 Mon Sep 17 00:00:00 2001 From: liuwf Date: Thu, 11 Jan 2024 17:52:34 +0800 Subject: [PATCH] =?UTF-8?q?change-=E9=97=A8=E4=BD=93=E5=8F=91=E6=B3=A1?= =?UTF-8?q?=E7=8A=B6=E6=80=81=EF=BC=8C=E6=9D=A1=E7=A0=81=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service_New/CodeBindingRecordServices.cs | 1 + .../Business/CollectionFoamLine.cs | 8 +- .../ViewModels/IndexPageViewModel.cs | 378 +++++++++--------- .../Views/IndexPageView.xaml | 16 +- .../ViewModels/MainWindowViewModel.cs | 83 +++- Aucma.Core.DoorFoam/Views/MainWindow.xaml | 8 + Aucma.Core.DoorFoam/appsettings.json | 2 +- Aucma.Core.HwPLc/Impl/SiemensPlc.cs | 15 +- Aucma.Core.RunPlc/RunPlcService.cs | 7 +- 9 files changed, 305 insertions(+), 213 deletions(-) diff --git a/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs b/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs index f39ad444..b61aa1b0 100644 --- a/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs +++ b/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs @@ -40,6 +40,7 @@ namespace Admin.Core.Service List list = null; var _db = this.BaseDal.Db; list = await _db.CopyNew().Ado.SqlQueryAsync("SELECT BOX_NAME as BoxName,COUNT(*) as Amount FROM CODE_BINDING WHERE PRODUCT_CODE IS NOT NULL GROUP BY BOX_NAME "); + list.OrderBy(x =>x.BoxName); return list; } catch (Exception) diff --git a/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs b/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs index 45348f88..6d7fd17c 100644 --- a/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs +++ b/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs @@ -299,10 +299,10 @@ namespace Aucma.Core.BoxFoam.Business return fixtureStatuses; } - + /// - /// 读取夹具状态 + /// 读取夹具状态,1正常生产 3暂停生产 /// static List ReadFixtureStatus(HwPLc.PlcModel obj, HwPLc.PlcModel obj2) { @@ -664,7 +664,7 @@ namespace Aucma.Core.BoxFoam.Business } /// - /// 根据二进制字符串确定夹具状态 1正常生产 2暂停生产 + /// 根据二进制字符串确定夹具状态 1正常生产 3暂停生产 /// static int judgeStatus(string str1) { @@ -675,7 +675,7 @@ namespace Aucma.Core.BoxFoam.Business } else if (str1.Substring(1, 1) == "1") { - item1 = 2; // + item1 = 3; // } return item1; } diff --git a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs index 16395f3c..16e2c5e6 100644 --- a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs +++ b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs @@ -32,6 +32,8 @@ using System.Windows.Media; using System.Drawing; using Brushes = System.Windows.Media.Brushes; using Admin.Core.Model.Model_New; +using Microsoft.IdentityModel.Logging; +using static Npgsql.Replication.PgOutput.Messages.RelationMessage; /* * 首页信息 */ @@ -53,8 +55,7 @@ namespace Aucma.Core.CodeBinding.ViewModels // 静态变量存code2 private static string code2Str = string.Empty; - // 定时检测数据库有没有pad绑定未放行的数据 - System.Timers.Timer timer = new System.Timers.Timer(1000); + public IndexPageViewModel() { try @@ -69,38 +70,37 @@ namespace Aucma.Core.CodeBinding.ViewModels MvCodeHelper.ReceiveCode2Event += receiveCode2; LoadData(); - - // 实时绑定两个条码 - realBinding(); - // pda手持检测plc放行定时器 - StartPlcTimer(); + //实时绑定条码和实时下发plc放行信号 + realBindingAndSendPlc(); - Task.Run(() => - { - Thread.Sleep(5000); - receiveCode1("L23000000899"); - Thread.Sleep(2000); - receiveCode2("B23000000824"); - //Thread.Sleep(6000); - //receiveCode1("993000000899"); - //receiveCode2("993000000824"); - }); + //Task.Run(() => + //{ + // Thread.Sleep(5000); + // receiveCode1("L23000000899"); + // Thread.Sleep(2000); + // receiveCode2("B23000000824"); + + //}); } - catch (Exception) + catch (Exception ex) { - + log.Error(ex); } } - public void realBinding() + + /// + /// 实时绑定条码和实时下发plc放行信号 + /// + public void realBindingAndSendPlc() { string tempCode1 ; string tempCode2; + // 实时绑定条码 Task.Run(() => { while(true) { - try { if (!string.IsNullOrEmpty(code1Str) && !string.IsNullOrEmpty(code2Str)) @@ -115,45 +115,39 @@ namespace Aucma.Core.CodeBinding.ViewModels catch (Exception ex) { Console.WriteLine(ex.ToString()); - } - Thread.Sleep(1000); + } + Thread.Sleep(500); } }); - } - /// - /// 开启定时器定时读取数据库并下发plc放行信号 - /// - private void StartPlcTimer() - { - if (!timer.Enabled) - { - timer.Elapsed += new System.Timers.ElapsedEventHandler(readDataSendPlc); - timer.AutoReset = true; - timer.Enabled = false; - timer.Start(); - } - - } - /// - /// 定时读取plc扫码信号,放行完成反馈信号 - /// - private async void readDataSendPlc(object source, System.Timers.ElapsedEventArgs e) - { - List records =await _codeBindingRecordServices.QueryAsync(x => x.isPlcPass == 1 && x.RecordTime2 >= System.DateTime.Now.AddDays(-1), "RECORD_TIME2 desc"); - if (records != null && records.Count>0) + // 实时下发plc放行信号 + Task.Run(() => { - CodeBindingRecord record = records[0]; - // 下发plc放行信号 - if (SendPlcPass()) + while (true) { - record.isPlcPass = 2; - await _codeBindingRecordServices.UpdateAsync(record); + try + { + CodeBindingRecord record = _codeBindingRecordServices.FirstAsync(x => x.isPlcPass == 1 && x.RecordTime2 >= System.DateTime.Now.AddDays(-1)).Result; + if (record != null) + { + // 下发plc放行信号 + if (SendPlcPass()) + { + record.isPlcPass = 2; + _ = _codeBindingRecordServices.UpdateAsync(record).Result; + } + } + } + catch (Exception ex) + { + log.Error(ex.ToString()); + } + Thread.Sleep(500); } - - } + }); } - + + #region 加载DataGrid数据 private async void LoadData() { @@ -186,25 +180,53 @@ namespace Aucma.Core.CodeBinding.ViewModels // 修改为统计近一天白班或夜班 private async void LoadCharts() { - - List list = await _codeBindingRecordServices.QueryCharts(); - // 图表赋值 - ChartValues achievement = new ChartValues(); - List chartList = new List(); - if (list == null) return; - foreach(CodeBindCharts item in list) + try + { + App.Current.Dispatcher.Invoke( () => + { + ProductionHourList = new List(); + List list = _codeBindingRecordServices.QueryCharts().Result; + // 图表赋值 + ChartValues achievement = new ChartValues(); + List chartList = new List(); + if (list == null) return; + + foreach (CodeBindCharts item in list) + { + achievement.Add(item.Amount); + + ProductionHourList.Add(item.BoxName.Substring(0, Math.Min(7, item.BoxName.Length))); + + } + var column = new ColumnSeries(); + column.DataLabels = true; + column.Title = "型号"; + column.Values = achievement; + column.Foreground = Brushes.White; + + + if (ModelStatistics.Count>0 && ModelStatistics.FirstOrDefault().Values.Count == achievement.Count) + { + for (int i = 0; i < achievement.Count(); i++) + { + ModelStatistics.FirstOrDefault().Values[i] = achievement.ElementAt(i); + } + } + else + { + ModelStatistics.Clear(); + ModelStatistics.Add(column); + } + + + }); + } + catch (Exception) { - achievement.Add(item.Amount); - chartList.Add(item.BoxName); + + throw; } - var column = new ColumnSeries(); - column.DataLabels = true; - column.Title = "型号"; - column.Values = achievement; - column.Foreground = Brushes.White; - ModelStatistics.Add(column); - ProductionHourList = chartList; - + } // 测试方法 @@ -233,20 +255,20 @@ namespace Aucma.Core.CodeBinding.ViewModels } } - ///// - ///// 条码1扫描时间 - ///// - //private string code1Time = string.Empty; - //public string Code1Time - //{ - // get { return code1Time; } - - // set - // { - // code1Time = value; - // OnPropertyChanged(nameof(Code1Time)); - // } - //} + /// + /// 条码1扫描时间 + /// + private string code1Time = string.Empty; + public string Code1Time + { + get { return code1Time; } + + set + { + code1Time = value; + OnPropertyChanged(nameof(Code1Time)); + } + } /// /// 条码2 /// @@ -263,16 +285,17 @@ namespace Aucma.Core.CodeBinding.ViewModels ///// ///// 条码2扫描时间 ///// - //private string code2Time = string.Empty; - //public string Code2Time - //{ - // get { return code2Time; } - // set - // { - // code2Time = value; - // OnPropertyChanged(nameof(Code2Time)); - // } - //} + private string code2Time = string.Empty; + public string Code2Time + { + get { return code2Time; } + set + { + code2Time = value; + OnPropertyChanged(nameof(Code2Time)); + } + } + /// /// 绑定提示信息 /// @@ -286,6 +309,7 @@ namespace Aucma.Core.CodeBinding.ViewModels OnPropertyChanged(nameof(BindingInfo)); } } + #region 日产量柱状图X轴日期 /// /// 日产量柱状图X轴日期 @@ -327,54 +351,16 @@ namespace Aucma.Core.CodeBinding.ViewModels } #endregion - /// - /// code1扫码信息刷新 - /// - /// - private void RefreshCode1(string code1, string time) - { - Code1 = code1; - // Code1Time = time; - } - - /// - /// code2扫码信息及表格记录刷新 - /// - /// - private void RefreshCode2(CodeBindingRecord record) - { - Code2 = record.ProductCode; - // Code2Time = record.RecordTime2.ToString(); - if (record.isPlcPass==2) - { - BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】绑定成功,下发Plc放行成功"; - } - else - { - BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】下发Plc放行失败"; - } - - Application.Current.Dispatcher.Invoke(() => - { - // ReaderInfo readerToUpdate = (ReaderInfo)ListItems.Select(item => item.No == 2); - ListItems.Add(new ReaderInfo() { No = ListItems.Count+1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName,BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass==2?"plc放行成功":"",RecordTime = record.RecordTime2.ToString() }); - }); - - } + + - /// - /// 条码绑定,条码1处理 - /// - /// + private async void receiveCode1(string code1) { - log.Info("进入条码1处理函数receiveCode1,code1:" + code1); - DateTime time = System.DateTime.Now; - string strTime = time.ToString(); - // 1.刷新界面条码信息 + log.Info("扫描到MES条码:" + code1); // 全局变量赋值,SN码扫描后使用 code1Str = code1; - RefreshCode1(code1, strTime); + RefreshCode1(code1); #region // 2.创建任务更新数据库条码1 // CodeBindingRecord codeRecord = new CodeBindingRecord(); @@ -393,70 +379,108 @@ namespace Aucma.Core.CodeBinding.ViewModels //}); //log.Info("条码1记录更新"); #endregion + } + + private async void receiveCode2(string code2) + { + log.Info("扫描到成品条码:" + code1); + // 1.刷新界面条码信息 + // 全局变量赋值,SN码扫描后使用 + code2Str = code2; + RefreshCode2(code2); + } + + + private void RefreshCode1(string code1) + { + DateTime time = System.DateTime.Now; + Code1 = code1; + Code1Time = time.ToString(); + } + + + private void RefreshCode2(string code2) + { + DateTime time = System.DateTime.Now; + Code2 = code2; + Code2Time = time.ToString(); + // Code2 = record.ProductCode; + //// Code2Time = record.RecordTime2.ToString(); + // if (record.isPlcPass==2) + // { + // BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】绑定成功,下发Plc放行成功"; + // } + // else + // { + // BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】下发Plc放行失败"; + // } + + // Application.Current.Dispatcher.Invoke(() => + // { + // // ReaderInfo readerToUpdate = (ReaderInfo)ListItems.Select(item => item.No == 2); + // ListItems.Add(new ReaderInfo() { No = ListItems.Count+1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName,BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass==2?"plc放行成功":"",RecordTime = record.RecordTime2.ToString() }); + // }); + } /// - /// 条码绑定,条码2处理 + /// 提示信息刷新并且存日志 /// - /// - private async void receiveCode2(string code2) + /// + private void RefreshAndWriteLog(string logStr) { - log.Info("进入条码2处理函数receiveCode2,code2:" + code2); - - // 1.刷新界面条码信息 - // 全局变量赋值,SN码扫描后使用 - code2Str = code2; + DateTime time = System.DateTime.Now; + BindingInfo = time + ":" + logStr; + log.Info(logStr); } + public void BindingCode(string code1,string code2) { try { - log.Info("开始处理条码绑定:"); - + RefreshAndWriteLog("开始绑定MES条码:" + code1 + " SN条码:" + code2); // 1.数据库查询各个工序质检结果,不合格报警 + // 2.查询条码绑定记录表(内胆箱壳绑定处就应该插入记录),绑定SN码 CodeBindingRecord record = _codeBindingRecordServices.FirstAsync(x => x.BoxCode == code1).Result; - - BaseMaterialInfo materialInfo = _baseMaterialInfoServices.FirstAsync(x => x.MaterialCode == code2.Substring(2, 10)).Result; + if (record == null) + { + RefreshAndWriteLog("未查询到MES条码记录,集存库未绑定箱壳内胆"); + return; + } + + BaseMaterialInfo materialInfo = _baseMaterialInfoServices.FirstAsync(x => x.MaterialCode == code1.Substring(7, 10)).Result; record.BoxName = materialInfo.MaterialName; record.ProductCode = code2; record.RecordTime1 = System.DateTime.Now; record.RecordTime2 = System.DateTime.Now; + record.isPlcPass = 1; record.BindingResult = "成功"; - - // 3.下发plc放行信号 - if (SendPlcPass()) + bool result =_codeBindingRecordServices.UpdateAsync(record).Result; + if (result) { - record.isPlcPass = 2; + RefreshAndWriteLog("条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】绑定成功"); + #region 更新过点数据,插入记录到MATERIAL_COMPLETION表 + //PrintBarCode print = await _printBarCodeServices.FirstAsync(x => x.MaterialBarcode == code1); + //if (print != null) return; + //MaterialCompletion completion = new MaterialCompletion(); + //completion.OrderCode = print.OrderCode; + //completion.MaterialBarcode = code1; + //completion.MaterialCode = print.MaterialCode; + //completion.MaterialName = print.MaterialName; + //completion.StationName = "1007"; + //completion.CompleteDate = DateTime.Now; + //await _iMaterialCompletionServices.AddAsync(completion); + #endregion + } - _codeBindingRecordServices.UpdateAsync(record); - - #region 更新过点数据,插入记录到MATERIAL_COMPLETION表 - //PrintBarCode print = await _printBarCodeServices.FirstAsync(x => x.MaterialBarcode == code1); - //if (print != null) return; - //MaterialCompletion completion = new MaterialCompletion(); - //completion.OrderCode = print.OrderCode; - //completion.MaterialBarcode = code1; - //completion.MaterialCode = print.MaterialCode; - //completion.MaterialName = print.MaterialName; - //completion.StationName = "1007"; - //completion.CompleteDate = DateTime.Now; - //await _iMaterialCompletionServices.AddAsync(completion); - #endregion - - // 2.刷新界面信息 - - RefreshCode2(record); } catch (Exception ex) { - - code1Str = string.Empty; - code2Str = string.Empty; - Console.WriteLine(ex.Message.ToString()); + RefreshAndWriteLog(ex.Message.ToString()); } finally { @@ -511,8 +535,6 @@ namespace Aucma.Core.CodeBinding.ViewModels { try { - lock (string.Empty) - { bool isFlag = true; var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("条码绑定Plc")); if (obj != null) @@ -539,7 +561,7 @@ namespace Aucma.Core.CodeBinding.ViewModels { log.Info("获取plc连接对象信息为空"); } - } + } catch (Exception ex) { diff --git a/Aucma.Core.CodeBinding/Views/IndexPageView.xaml b/Aucma.Core.CodeBinding/Views/IndexPageView.xaml index b3829f8b..ce762267 100644 --- a/Aucma.Core.CodeBinding/Views/IndexPageView.xaml +++ b/Aucma.Core.CodeBinding/Views/IndexPageView.xaml @@ -100,19 +100,23 @@ - + - + - + @@ -127,7 +131,7 @@ - + diff --git a/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs index d980944c..6643ccb9 100644 --- a/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs @@ -8,9 +8,9 @@ using System.Diagnostics; using System.Threading; using NPOI.HSSF.Record; using Admin.Core.Common; -using Aucma.Core.PLc; using Aucma.Core.Scanner; using System.Linq; +using Aucma.Core.HwPLc; namespace Aucma.Core.DoorFoam.ViewModels { @@ -29,7 +29,7 @@ namespace Aucma.Core.DoorFoam.ViewModels public void init() { // 设备状态刷新定时器 - System.Timers.Timer timer = new System.Timers.Timer(1000 * 5); + System.Timers.Timer timer = new System.Timers.Timer(1000 * 1); timer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshStatus); timer.AutoReset = true; timer.Enabled = true; @@ -67,7 +67,10 @@ namespace Aucma.Core.DoorFoam.ViewModels /// public void RefreshPlc() { - var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("发泡Plc")); + + var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("FoamPlc")); + var obj2 = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("DoorPlc")); + // 发泡机plc if (obj != null) { if (obj.plc.IsConnected) @@ -81,8 +84,26 @@ namespace Aucma.Core.DoorFoam.ViewModels } else { - PlcState(true); + PlcState(false); } + + if (obj2 != null) + { + if (obj2.plc.IsConnected) + { + Plc2State(true); + } + else + { + Plc2State(false); + } + } + else + { + Plc2State(false); + } + + } /// /// 扫码器状态刷新 @@ -258,7 +279,7 @@ namespace Aucma.Core.DoorFoam.ViewModels #region plc 状态 /// - /// UI plc 展示状态-文字 + /// 发泡机 plc 展示状态-文字 /// public string _plcUIStatusWb; public string PlcUIStatusWb @@ -285,28 +306,72 @@ namespace Aucma.Core.DoorFoam.ViewModels set => SetProperty(ref _plcUIIcon, value); } + /// - /// PLC连接状态-true:连接成功;false:失败 + /// 发泡线 plc 展示状态-文字 /// - /// + public string _plc2UIStatusWb; + public string Plc2UIStatusWb + { + get => _plc2UIStatusWb; + set => SetProperty(ref _plc2UIStatusWb, value); + } + /// + /// UI plc 展示状态-颜色 + /// + public string _plc2UIColor; + public string Plc2UIColor + { + get => _plc2UIColor; + set => SetProperty(ref _plc2UIColor, value); + } + /// + /// UI plc 展示状态-图标 + /// + public string _plc2UIIcon; + public string Plc2UIIcon + { + get => _plc2UIIcon; + set => SetProperty(ref _plc2UIIcon, value); + } + + public void PlcState(bool type) { Application.Current.Dispatcher.Invoke(() => { if (type) { - PlcUIStatusWb = "PLC连接成功"; + PlcUIStatusWb = "发泡机PLC"; PlcUIColor = "Green"; PlcUIIcon = "Assets/Images/Green.png"; } else { - PlcUIStatusWb = "PLC状态异常"; + PlcUIStatusWb = "发泡机PLC"; PlcUIColor = "Red"; PlcUIIcon = "Assets/Images/Red.png"; } }); } + public void Plc2State(bool type) + { + Application.Current.Dispatcher.Invoke(() => + { + if (type) + { + Plc2UIStatusWb = "发泡线PLC"; + Plc2UIColor = "Green"; + Plc2UIIcon = "Assets/Images/Green.png"; + } + else + { + Plc2UIStatusWb = "发泡线PLC"; + Plc2UIColor = "Red"; + Plc2UIIcon = "Assets/Images/Red.png"; + } + }); + } #endregion #region 扫码器1状态 diff --git a/Aucma.Core.DoorFoam/Views/MainWindow.xaml b/Aucma.Core.DoorFoam/Views/MainWindow.xaml index a770cf45..fcb10573 100644 --- a/Aucma.Core.DoorFoam/Views/MainWindow.xaml +++ b/Aucma.Core.DoorFoam/Views/MainWindow.xaml @@ -85,6 +85,14 @@ + + + + + + + + diff --git a/Aucma.Core.DoorFoam/appsettings.json b/Aucma.Core.DoorFoam/appsettings.json index 975fa644..51cf9d2b 100644 --- a/Aucma.Core.DoorFoam/appsettings.json +++ b/Aucma.Core.DoorFoam/appsettings.json @@ -183,7 +183,7 @@ }, "Middleware": { "Plc": { - "Enabled": false + "Enabled": true }, "QuartzNetJob": { "Enabled": false diff --git a/Aucma.Core.HwPLc/Impl/SiemensPlc.cs b/Aucma.Core.HwPLc/Impl/SiemensPlc.cs index f805ec39..973bdf5b 100644 --- a/Aucma.Core.HwPLc/Impl/SiemensPlc.cs +++ b/Aucma.Core.HwPLc/Impl/SiemensPlc.cs @@ -14,9 +14,9 @@ namespace Aucma.Core.HwPLc public class SiemensPlc : IPlc { private readonly log4net.ILog log = LogManager.GetLogger(typeof(MelsecPlc)); - private SiemensS7Net siemensS7Net; + public SiemensS7Net siemensS7Net; private SiemensPLCS siemensPLCS = SiemensPLCS.S1200; - + #region 构造函数 //public MelsecPlc() //{ @@ -478,19 +478,10 @@ namespace Aucma.Core.HwPLc } else { - var k = read.ErrorCode < 0 ? false : true; - if (k) - { - IsConnected = true; - return await Task.FromResult(IsConnected); - } - else - { + IsConnected = false; return await Task.FromResult(IsConnected); - } - } } catch (Exception ex) diff --git a/Aucma.Core.RunPlc/RunPlcService.cs b/Aucma.Core.RunPlc/RunPlcService.cs index 741b6e29..60fcc21a 100644 --- a/Aucma.Core.RunPlc/RunPlcService.cs +++ b/Aucma.Core.RunPlc/RunPlcService.cs @@ -12,7 +12,7 @@ namespace Aucma.Core.RunPlc public class RunPlcService : IRunPlcService { System.Timers.Timer timer = new System.Timers.Timer(3000);//创建定时器,设置间隔时间为1000毫秒; - System.Timers.Timer timer1 = new System.Timers.Timer(3000); + System.Timers.Timer timer1 = new System.Timers.Timer(1000); #region 构造函数 public RunPlcService() { @@ -119,12 +119,13 @@ namespace Aucma.Core.RunPlc } private async void ExecSiemensHeartTask(object? sender, ElapsedEventArgs e) { - int num = PlcHelper.melsecList.Count; + int num = PlcHelper.siemensList.Count; if (num == 0) return; for (int i = 1; i <= num; i++) { - var item = PlcHelper.melsecList.Where(c => c.Id == i).FirstOrDefault(); + var item = PlcHelper.siemensList.Where(c => c.Id == i).FirstOrDefault(); if (item == null) continue; + if (await item.plc.Read("M100")) { item.IsConnect = true;