diff --git a/Admin.Core.Tasks/QuartzNet/Jobs/Job_BoxFoamLastData_Quartz.cs b/Admin.Core.Tasks/QuartzNet/Jobs/Job_BoxFoamLastData_Quartz.cs
new file mode 100644
index 00000000..f339d20b
--- /dev/null
+++ b/Admin.Core.Tasks/QuartzNet/Jobs/Job_BoxFoamLastData_Quartz.cs
@@ -0,0 +1,414 @@
+using Admin.Core.IService.ISys;
+using Admin.Core.IService;
+using Quartz;
+using System;
+using System.Threading.Tasks;
+using log4net;
+using Admin.Core.Model;
+using System.Linq;
+using Admin.Core.Model.Model_New;
+using Aucma.Core.HwPLc;
+
+///
+/// 箱体发泡 最后一枪数据采集
+///
+namespace Admin.Core.Tasks
+{
+ public class Job_BoxFoamLastData_Quartz : JobBase, IJob
+ {
+ public delegate Task RefreshBoxFoamDataDelegate();
+ public static event RefreshBoxFoamDataDelegate RefreshBoxFoamDataDelegateEvent;
+ private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(Job_BoxFoamData_Quartz));
+ private readonly IBoxFoamDataServices _boxFoamDataServices;
+ private readonly IOldBoxFoamDataServices _oldBoxFoamDataServices;
+
+ public Job_BoxFoamLastData_Quartz(ISysTasksQzService SysTasksQzService, ISysJobLogService sysJobLogService,
+ IBoxFoamDataServices boxFoamDataServices, IOldBoxFoamDataServices oldBoxFoamDataServices)
+ {
+ _SysTasksQzService = SysTasksQzService;
+ _boxFoamDataServices = boxFoamDataServices;
+ _oldBoxFoamDataServices = oldBoxFoamDataServices;
+ }
+
+ public async Task Execute(IJobExecutionContext context)
+ {
+ await ExecuteJob(context, async () => await Run(context));
+ await ExecuteJob(context, async () => await BoxFoamDataRun(context));
+ }
+
+ public async Task Run(IJobExecutionContext context)
+ {
+ await SaveData();
+ }
+
+ public async Task BoxFoamDataRun(IJobExecutionContext context)
+ {
+ await SaveOldBoxFoamData();
+ }
+
+ #region PLC 任务处理表
+ ///
+ /// PLC 任务处理表
+ ///
+ /// 仓库编码
+ /// 物料编码
+ ///
+ public async Task SaveData()
+ {
+ //扫描入库信号,入库完成
+ try
+ {
+ var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("Plc"));
+ if (obj.plc.IsConnected)
+ {
+ var taskList = await _boxFoamDataServices.QueryAsync();
+ foreach (var item in taskList)
+ {
+ await UpdateRealData(obj, item);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ logHelper.Error($"入库数据处理异常:{ex.Message}");
+ }
+ }
+
+ private async Task UpdateRealData(PlcModel obj, BoxFoamData item)
+ {
+
+ try
+ {
+ #region 更新PLC数据
+ if (item.ObjId == 1)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW122.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW122.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD146");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD294");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD310");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD578");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 2)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX12.0");
+ if (obj.plc.ReadInt16("DB8.DBW124.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW124.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD150");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD318");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD334");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD582");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 3)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW126.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW126.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD154");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD342");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD358");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD586");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 4)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW128.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW128.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD158");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD366");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD382");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD590");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 5)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW130.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW130.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD162");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD390");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD406");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD594");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 6)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW122.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW122.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD166");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD414");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD430");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD598");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 7)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW134.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW134.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD170");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD438");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD454");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD602");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 8)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW136.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW136.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD174");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD462");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD478");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD606");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 9)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW138.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW138.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD178");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD486");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD502");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD610");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 10)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW140.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW140.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD182");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD510");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD526");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD614");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 11)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DDB8.DBW142.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW142.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD186");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD534");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD550");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD622");
+ item.UpdateTime = DateTime.Now;
+ }
+ if (item.ObjId == 12)
+ {
+ item.BoxFixturetype = obj.plc.ReadString("DB8.DBX2.0");
+ if (obj.plc.ReadInt16("DB8.DBW144.0") == 1) item.BoxFixturestatus = 1;
+ if (obj.plc.ReadInt16("DB8.DBW144.1") == 1) item.BoxFixturestatus = 0;
+ item.BoxFixtureproduction = obj.plc.ReadInt16("DB8.DBD190");
+ item.BoxFixturesideplate = obj.plc.ReadString("DB8.DBD558");
+ item.BoxClosebetatemperature = obj.plc.ReadString("DB8.DBD574");
+ item.BoxBeat = obj.plc.ReadInt16("DB8.DBD626");
+ item.UpdateTime = DateTime.Now;
+ }
+ #endregion
+ bool result = await _boxFoamDataServices.UpdateAsync(item);
+ if (result)
+ {
+ RefreshBoxFoamDataDelegateEvent?.Invoke();
+ }
+ else
+ {
+ // LogDelegateEvent?.Invoke($"物料[{planInfo.MaterialName}], 入库[{baseSpace.SpaceName}]失败,任务回滚!");
+ }
+ }
+ catch (Exception ex)
+ {
+ logHelper.Error($"更新箱体发泡数据失败");
+ }
+
+ return await Task.FromResult(item);
+ }
+ #endregion
+
+ #region PLC 任务处理表
+ ///
+ /// PLC 任务处理表
+ ///
+ /// 仓库编码
+ /// 物料编码
+ ///
+ public async Task SaveOldBoxFoamData()
+ {
+ try
+ {
+ var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("发泡Plc"));
+ if (obj.plc.IsConnected)
+ {
+ var taskList = await _oldBoxFoamDataServices.QueryAsync();
+ foreach (var item in taskList)
+ {
+ await UpdateRealBoxFoamData(obj, item);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ logHelper.Error($"入库数据处理异常:{ex.Message}");
+ }
+ }
+
+ private async Task UpdateRealBoxFoamData(PlcModel obj, OldBoxFoamData item)
+ {
+ try
+ {
+ #region 更新PLC数据
+ if (item.ObjId == 1)
+ {
+ item.Fixtureboxtype = obj.plc.ReadString("D3140")+ obj.plc.ReadString("D3141");
+ if (obj.plc.ReadInt16("Y0F0") == 1)
+ {
+ item.Fixturestatus = "手动";
+ }
+ if (obj.plc.ReadInt16("Y0F1") == 1)
+ {
+ item.Fixturestatus = "自动";
+ }
+ if (obj.plc.ReadInt16("Y110") == 1)
+ {
+ item.Fixturestatus = "停止";
+ }
+
+ item.Production = obj.plc.ReadInt16("D182");
+ item.CuringTimeSettingValue = obj.plc.ReadString("D911");
+ item.ActualValue = obj.plc.ReadString("T3");
+ item.UpdatedTime = DateTime.Now;
+ }
+ if (item.ObjId == 2)
+ {
+ item.Fixtureboxtype = obj.plc.ReadString("D3142") + obj.plc.ReadString("D3143");
+ if (obj.plc.ReadInt16("Y0F5") == 1)
+ {
+ item.Fixturestatus = "手动";
+ }
+ if (obj.plc.ReadInt16("Y0F6") == 1)
+ {
+ item.Fixturestatus = "自动";
+ }
+ if (obj.plc.ReadInt16("Y111") == 1)
+ {
+ item.Fixturestatus = "停止";
+ }
+
+ item.Production = obj.plc.ReadInt16("D183");
+ item.CuringTimeSettingValue = obj.plc.ReadString("D911");
+ item.ActualValue = obj.plc.ReadString("T13");
+ item.UpdatedTime = DateTime.Now;
+ }
+ if (item.ObjId == 3)
+ {
+ item.Fixtureboxtype = obj.plc.ReadString("D3144") + obj.plc.ReadString("D3145");
+ if (obj.plc.ReadInt16("Y0FA") == 1)
+ {
+ item.Fixturestatus = "手动";
+ }
+ if (obj.plc.ReadInt16("Y0FB") == 1)
+ {
+ item.Fixturestatus = "自动";
+ }
+ if (obj.plc.ReadInt16("Y112") == 1)
+ {
+ item.Fixturestatus = "停止";
+ }
+
+ item.Production = obj.plc.ReadInt16("D183");
+ item.CuringTimeSettingValue = obj.plc.ReadString("D912");
+ item.ActualValue = obj.plc.ReadString("T23");
+ item.UpdatedTime = DateTime.Now;
+ }
+ if (item.ObjId == 4)
+ {
+ item.Fixtureboxtype = obj.plc.ReadString("D3148") + obj.plc.ReadString("D3149");
+ if (obj.plc.ReadInt16("Y100 ") == 1)
+ {
+ item.Fixturestatus = "手动";
+ }
+ if (obj.plc.ReadInt16("Y101") == 1)
+ {
+ item.Fixturestatus = "自动";
+ }
+ if (obj.plc.ReadInt16("Y113") == 1)
+ {
+ item.Fixturestatus = "停止";
+ }
+
+ item.Production = obj.plc.ReadInt16("D184");
+ item.CuringTimeSettingValue = obj.plc.ReadString("D913");
+ item.ActualValue = obj.plc.ReadString("T33");
+ item.UpdatedTime = DateTime.Now;
+ }
+ if (item.ObjId == 5)
+ {
+ item.Fixtureboxtype = obj.plc.ReadString("D3150") + obj.plc.ReadString("D3151");
+ if (obj.plc.ReadInt16("Y105") == 1)
+ {
+ item.Fixturestatus = "手动";
+ }
+ if (obj.plc.ReadInt16("Y106") == 1)
+ {
+ item.Fixturestatus = "自动";
+ }
+ if (obj.plc.ReadInt16("Y114") == 1)
+ {
+ item.Fixturestatus = "停止";
+ }
+
+ item.Production = obj.plc.ReadInt16("D185");
+ item.CuringTimeSettingValue = obj.plc.ReadString("D914");
+ item.ActualValue = obj.plc.ReadString("T43");
+ item.UpdatedTime = DateTime.Now;
+ }
+ if (item.ObjId == 6)
+ {
+ item.Fixtureboxtype = obj.plc.ReadString("D3152") + obj.plc.ReadString("D3143");
+ if (obj.plc.ReadInt16("Y10A") == 1)
+ {
+ item.Fixturestatus = "手动";
+ }
+ if (obj.plc.ReadInt16("Y10B") == 1)
+ {
+ item.Fixturestatus = "自动";
+ }
+ if (obj.plc.ReadInt16("Y115") == 1)
+ {
+ item.Fixturestatus = "停止";
+ }
+
+ item.Production = obj.plc.ReadInt16("D186");
+ item.CuringTimeSettingValue = obj.plc.ReadString("D915");
+ item.ActualValue = obj.plc.ReadString("T53");
+ item.UpdatedTime = DateTime.Now;
+ }
+
+ #endregion
+ bool result = await _oldBoxFoamDataServices.UpdateAsync(item);
+ if (result)
+ {
+ //RefreshBoxFoamDataDelegateEvent?.Invoke();
+ }
+ else
+ {
+ // LogDelegateEvent?.Invoke($"物料[{planInfo.MaterialName}], 入库[{baseSpace.SpaceName}]失败,任务回滚!");
+ }
+ }
+ catch (Exception ex)
+ {
+ logHelper.Error($"更新老箱体发泡数据失败");
+ }
+
+ return await Task.FromResult(item);
+ }
+ #endregion
+ }
+}
diff --git a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
index 6be3f4a0..347ea329 100644
--- a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
+++ b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
@@ -18,9 +18,7 @@ namespace Aucma.Core.BoxFoam.ViewModels
{
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(MainWindowViewModel));
private IndexPageView firstPage = new IndexPageView();//首页
-
- //OldBoxFoamPageView oldBoxFoamPage= new OldBoxFoamPageView();
- //OldWarehousePageView oldWarehousePage = new OldWarehousePageView();
+
public MainWindowViewModel()
{
UserContent = firstPage;
@@ -74,7 +72,7 @@ namespace Aucma.Core.BoxFoam.ViewModels
///
public void RefreshPlc()
{
- var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("泡前库Plc"));
+ var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("SiemensHfPlc2"));
if (obj != null)
{
if (obj.plc.IsConnected)
@@ -222,12 +220,6 @@ namespace Aucma.Core.BoxFoam.ViewModels
FoamMachinesPageView foamMachinesPageView = new FoamMachinesPageView();
UserContent = foamMachinesPageView;
break;
- //case "OldBoxFoamPage":
- // UserContent = oldBoxFoamPage;
- // break;
- //case "OldWarehousePage":
- // UserContent = oldWarehousePage;
- // break;
default:
break;
}
@@ -298,6 +290,15 @@ namespace Aucma.Core.BoxFoam.ViewModels
set => SetProperty(ref _plcUIStatusWb, value);
}
///
+ ///方诺 UI plc 展示状态-文字
+ ///
+ public string _fnPlcUIStatusWb;
+ public string FnPlcUIStatusWb
+ {
+ get => _plcUIStatusWb;
+ set => SetProperty(ref _plcUIStatusWb, value);
+ }
+ ///
/// UI plc 展示状态-颜色
///
public string _plcUIColor;
@@ -326,13 +327,13 @@ namespace Aucma.Core.BoxFoam.ViewModels
{
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";
}
diff --git a/Aucma.Core.BoxFoam/Views/MainWindow.xaml b/Aucma.Core.BoxFoam/Views/MainWindow.xaml
index 8f7d2a18..4f8c88a8 100644
--- a/Aucma.Core.BoxFoam/Views/MainWindow.xaml
+++ b/Aucma.Core.BoxFoam/Views/MainWindow.xaml
@@ -88,7 +88,14 @@
+
+
+
+
+
+
+
diff --git a/Aucma.Core.BoxFoam/appsettings.json b/Aucma.Core.BoxFoam/appsettings.json
index 41f5a0a1..427dab17 100644
--- a/Aucma.Core.BoxFoam/appsettings.json
+++ b/Aucma.Core.BoxFoam/appsettings.json
@@ -171,14 +171,24 @@
}
},
"PLCServer": [
-
+
{
"Id": 1,
- "EquipName": "OldTypePlc4",
- "IP": "10.10.93.154",
- "Port": 5002
+ "PLcType": "Siemens",
+ "Enabled": true,
+ "EquipName": "SiemensHfPlc",
+ "IP": "10.10.93.180",
+ "Port": 102
+ },
+ {
+ "Id": 2,
+ "PLcType": "Siemens",
+ "Enabled": false,
+ "EquipName": "SiemensFnPlc",
+ "IP": "10.10.93.180",
+ "Port": 102,
+ "Remark": "泡前库"
}
-
],
"StoreInfo": {
"ShellInventoryStoreCode": "XKJCK-001",
diff --git a/Aucma.Core.HwPLc/Model/PlcModel.cs b/Aucma.Core.HwPLc/Model/PlcModel.cs
index 780cce12..8260c045 100644
--- a/Aucma.Core.HwPLc/Model/PlcModel.cs
+++ b/Aucma.Core.HwPLc/Model/PlcModel.cs
@@ -23,6 +23,14 @@ namespace Aucma.Core.HwPLc
///
public int Port { get; set; }
///
+ /// PLC类型
+ ///
+ public string PlcType { get; set; }
+ ///
+ /// PLC是否启动
+ ///
+ public bool Enabled { get; set; }
+ ///
/// 是否连接
///
public bool IsConnect { get; set; }
diff --git a/Aucma.Core.RunPlc/RunPlcService.cs b/Aucma.Core.RunPlc/RunPlcService.cs
index 1b642520..15c57f6f 100644
--- a/Aucma.Core.RunPlc/RunPlcService.cs
+++ b/Aucma.Core.RunPlc/RunPlcService.cs
@@ -18,7 +18,7 @@ namespace Aucma.Core.RunPlc
Task.Run(async () =>
{
await StartMelsecMcPlcServer();//三菱PLC
- //StartSiemensPlcServer();//西门子
+ await StartSiemensPlcServer();//西门子
});
}
#endregion
@@ -28,11 +28,16 @@ namespace Aucma.Core.RunPlc
#region 心跳
public Task StartPlcAsync()
{
- //timer.Elapsed += new System.Timers.ElapsedEventHandler(ExecSiemensHeartTask);
timer.Elapsed += new System.Timers.ElapsedEventHandler(ExecMelsecMcHeartTask); //到达时间的时候执行事件;
timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
timer.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它,
timer.Start();//timer.Start()的内部原理还是设置timer.Enabled = true;
+
+ timer.Elapsed += new System.Timers.ElapsedEventHandler(ExecSiemensHeartTask);
+ timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
+ timer.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它,
+ timer.Start();//timer.Start()的内部原理还是设置timer.Enabled = true;
+
return Task.CompletedTask;
}
@@ -40,13 +45,14 @@ namespace Aucma.Core.RunPlc
{
// string ip = Appsettings.app("Middleware", "Scanner1", "Ip");
var allPlcServices = Appsettings.app("PLCServer").ToList();
- foreach (var item in allPlcServices)
+ foreach (var item in allPlcServices.Where(d=>d.PlcType.Equals("Melsec")&&d.Enabled==true))
{
PlcModel model = new PlcModel();
model.Id = item.Id;
model.EquipName = item.EquipName;
model.IP = item.IP;
model.Port = item.Port;
+ model.PlcType = item.PlcType;
model.plc = new MelsecPlc(item.IP, item.Port);
PlcHelper.melsecList.Add(model);
}
@@ -56,13 +62,14 @@ namespace Aucma.Core.RunPlc
private static Task StartSiemensPlcServer()
{
var allPlcServices = Appsettings.app("PLCServer").ToList();
- foreach (var item in allPlcServices)
+ foreach (var item in allPlcServices.Where(d => d.PlcType.Equals("Siemens") && d.Enabled == true))
{
PlcModel model = new PlcModel();
model.Id = item.Id;
model.EquipName = item.EquipName;
model.IP = item.IP;
model.Port = item.Port;
+ model.PlcType = item.PlcType;
model.plc = new SiemensPlc(item.IP, item.Port);
PlcHelper.siemensList.Add(model);
}
@@ -74,6 +81,7 @@ namespace Aucma.Core.RunPlc
private async void ExecMelsecMcHeartTask(object? sender, ElapsedEventArgs e)
{
int num = PlcHelper.melsecList.Count;
+ if (num == 0) return;
for (int i = 1; i <= num; i++)
{
var item = PlcHelper.melsecList.Where(c => c.Id == i).FirstOrDefault();
@@ -109,8 +117,12 @@ namespace Aucma.Core.RunPlc
}
private async void ExecSiemensHeartTask(object? sender, ElapsedEventArgs e)
{
- foreach (var item in PlcHelper.siemensList)
+ int num = PlcHelper.melsecList.Count;
+ if (num == 0) return;
+ for (int i = 1; i <= num; i++)
{
+ var item = PlcHelper.melsecList.Where(c => c.Id == i).FirstOrDefault();
+ if (item == null) continue;
if (await item.plc.Read("M100"))
{
item.IsConnect = true;