liulb@mesnac.com 1 year ago
parent 0667914e1c
commit 3392d61d2b

@ -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;
/// <summary>
/// 箱体发泡 最后一枪数据采集
/// </summary>
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 任务处理表
/// <summary>
/// PLC 任务处理表
/// </summary>
/// <param name="storeCode">仓库编码</param>
/// <param name="materialBarCode">物料编码</param>
/// <returns></returns>
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<BoxFoamData> 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 任务处理表
/// <summary>
/// PLC 任务处理表
/// </summary>
/// <param name="storeCode">仓库编码</param>
/// <param name="materialBarCode">物料编码</param>
/// <returns></returns>
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<OldBoxFoamData> 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
}
}

@ -19,8 +19,6 @@ 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
/// <param name="e"></param>
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);
}
/// <summary>
///方诺 UI plc 展示状态-文字
/// </summary>
public string _fnPlcUIStatusWb;
public string FnPlcUIStatusWb
{
get => _plcUIStatusWb;
set => SetProperty(ref _plcUIStatusWb, value);
}
/// <summary>
/// UI plc 展示状态-颜色
/// </summary>
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";
}

@ -88,7 +88,14 @@
<ImageBrush x:Name="PlcStatus" ImageSource="{Binding PlcUIIcon}"/>
</Border.Background>
</Border>
<TextBlock x:Name="FnPLCState" Text="{Binding FnPlcStatus}" VerticalAlignment="Center" Foreground="{Binding PlcUIColor}" FontSize="18" Margin="10,0"/>
<Border Width="30" Height="30" CornerRadius="15">
<Border.Background>
<ImageBrush x:Name="FnPlcStatus" ImageSource="{Binding FnPlcUIIcon}"/>
</Border.Background>
</Border>
<TextBlock x:Name="PLCState" Text="{Binding PlcUIStatusWb}" VerticalAlignment="Center" Foreground="{Binding PlcUIColor}" FontSize="18" Margin="10,0"/>
<Border Width="30" Height="30" CornerRadius="15">
<Border.Background>
<ImageBrush x:Name="Scanner1Status" ImageSource="{Binding Scanner1UIIcon}"/>

@ -174,11 +174,21 @@
{
"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",

@ -23,6 +23,14 @@ namespace Aucma.Core.HwPLc
/// </summary>
public int Port { get; set; }
/// <summary>
/// PLC类型
/// </summary>
public string PlcType { get; set; }
/// <summary>
/// PLC是否启动
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 是否连接
/// </summary>
public bool IsConnect { get; set; }

@ -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<PlcModel>("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<PlcModel>("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;

Loading…
Cancel
Save