From 80bbcd062eeb281f5b71ad4fa34fdb65d5b18c55 Mon Sep 17 00:00:00 2001 From: "liulb@mesnac.com" Date: Wed, 27 Dec 2023 10:37:23 +0800 Subject: [PATCH] add IPLC Read --- Admin.Core.Api/Admin.Core.Model.xml | 5 +++ .../QuartzNet/Jobs/Job_OldBoxFoam_Quartz.cs | 16 ++++++-- Aucma.Core.HwPLc/IPlc.cs | 6 +++ Aucma.Core.HwPLc/Impl/MelsecPlc.cs | 23 +++++++++++ Aucma.Core.HwPLc/Impl/SiemensPlc.cs | 27 ++++++++++--- Aucma.Core.PLc/IPlc.cs | 6 +++ Aucma.Core.PLc/Impl/MelsecPlc.cs | 21 ++++++++++ Aucma.Core.PLc/Impl/SiemensPlc.cs | 21 ++++++++++ Aucma.Core.RunPlc/RunPlcService.cs | 38 +++++++++---------- 9 files changed, 136 insertions(+), 27 deletions(-) diff --git a/Admin.Core.Api/Admin.Core.Model.xml b/Admin.Core.Api/Admin.Core.Model.xml index 7a3c6968..751d7ed6 100644 --- a/Admin.Core.Api/Admin.Core.Model.xml +++ b/Admin.Core.Api/Admin.Core.Model.xml @@ -1556,6 +1556,11 @@ 主键标识 + + + 所属产线 + + 拆分的SAP BOM 信息 diff --git a/Admin.Core.Tasks/QuartzNet/Jobs/Job_OldBoxFoam_Quartz.cs b/Admin.Core.Tasks/QuartzNet/Jobs/Job_OldBoxFoam_Quartz.cs index 3fd21514..07001cf8 100644 --- a/Admin.Core.Tasks/QuartzNet/Jobs/Job_OldBoxFoam_Quartz.cs +++ b/Admin.Core.Tasks/QuartzNet/Jobs/Job_OldBoxFoam_Quartz.cs @@ -55,7 +55,17 @@ namespace Admin.Core.Tasks public async Task Execute(IJobExecutionContext context) { - await ExecuteJob(context, async () => await OldBoxFoamDataRun(context));//发泡线 + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldMelsecPlc1")); + if (obj == null) { return; } + if (obj.plc.IsConnected) + { + ushort len =Convert.ToUInt16("48"); + byte[] bt = obj.plc.ReadBytes("D2010", len); + readbyte.Content.Skip(2).Take(4).ToArray() + (int)byteTransform.TransSingle(readbyte.Content.Skip(2).Take(4).ToArray(), 0); + var t= bt; + } + //await ExecuteJob(context, async () => await OldBoxFoamDataRun(context));//发泡线 //await ExecuteJob(context, async () => await OldBoxFoamStoreDataRun(context)); } /// @@ -70,7 +80,7 @@ namespace Admin.Core.Tasks public async Task OldBoxFoamStoreDataRun(IJobExecutionContext context) { - await OldBoxFoamStoreData(); + await OldBoxFoamStoreData(); } #region PLC 老泡前库任务处理表 @@ -84,7 +94,7 @@ namespace Admin.Core.Tasks { try { - var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldTypePlc1")); + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("OldMelsecPlc1")); if (obj == null) { return; } if (obj.plc.IsConnected) { diff --git a/Aucma.Core.HwPLc/IPlc.cs b/Aucma.Core.HwPLc/IPlc.cs index cc16c35f..d6722fe0 100644 --- a/Aucma.Core.HwPLc/IPlc.cs +++ b/Aucma.Core.HwPLc/IPlc.cs @@ -33,6 +33,12 @@ namespace Aucma.Core.HwPLc /// byte[] ReadBytes(string address, ushort len); /// + /// 读取 + /// + /// + /// + byte[] Read(string address, ushort len); + /// /// 读取bool /// /// diff --git a/Aucma.Core.HwPLc/Impl/MelsecPlc.cs b/Aucma.Core.HwPLc/Impl/MelsecPlc.cs index 2e594c86..6e1f962d 100644 --- a/Aucma.Core.HwPLc/Impl/MelsecPlc.cs +++ b/Aucma.Core.HwPLc/Impl/MelsecPlc.cs @@ -502,6 +502,29 @@ namespace Aucma.Core.HwPLc } return false; } + + #endregion + + /// + /// 读取byte + /// + /// 地址 + /// 长度 + /// + public byte[] Read(string address, ushort len) + { + OperateResult readbyte = melsecMcNet.Read(address, len); + if (readbyte.IsSuccess) + { + IsConnected = true; + return readbyte.Content; + } + else + { + IsConnected = false; + return null; + } + } } } diff --git a/Aucma.Core.HwPLc/Impl/SiemensPlc.cs b/Aucma.Core.HwPLc/Impl/SiemensPlc.cs index a837fd10..0dc56418 100644 --- a/Aucma.Core.HwPLc/Impl/SiemensPlc.cs +++ b/Aucma.Core.HwPLc/Impl/SiemensPlc.cs @@ -119,12 +119,12 @@ namespace Aucma.Core.HwPLc /// /// /// - public byte[] ReadBytes(string address) + public byte[] ReadBytes(string address,ushort len) { byte[] bytes = null; try { - OperateResult read = siemensS7Net.Read(address, 26); + OperateResult read = siemensS7Net.Read(address, len); if (read.IsSuccess) { byte[] code = new byte[read.Content.Length - 2]; @@ -499,10 +499,27 @@ namespace Aucma.Core.HwPLc return false; } - public byte[] ReadBytes(string address, ushort len) + #endregion + + /// + /// 读取byte + /// + /// 地址 + /// 长度 + /// + public byte[] Read(string address, ushort len) { - throw new NotImplementedException(); + OperateResult readbyte = siemensS7Net.Read(address, len); + if (readbyte.IsSuccess) + { + IsConnected = true; + return readbyte.Content; + } + else + { + IsConnected = false; + return null; + } } - #endregion } } diff --git a/Aucma.Core.PLc/IPlc.cs b/Aucma.Core.PLc/IPlc.cs index a89b3ad5..f453720c 100644 --- a/Aucma.Core.PLc/IPlc.cs +++ b/Aucma.Core.PLc/IPlc.cs @@ -33,6 +33,12 @@ namespace Aucma.Core.PLc /// byte[] ReadBytes(string address); /// + /// 读取 + /// + /// + /// + byte[] Read(string address, ushort len); + /// /// 读取bool /// /// diff --git a/Aucma.Core.PLc/Impl/MelsecPlc.cs b/Aucma.Core.PLc/Impl/MelsecPlc.cs index 0b70b406..edf78385 100644 --- a/Aucma.Core.PLc/Impl/MelsecPlc.cs +++ b/Aucma.Core.PLc/Impl/MelsecPlc.cs @@ -505,5 +505,26 @@ namespace Aucma.Core.PLc return false; } #endregion + + /// + /// 读取byte + /// + /// 地址 + /// 长度 + /// + public byte[] Read(string address, ushort len) + { + OperateResult readbyte = melsecMcNet.Read(address, len); + if (readbyte.IsSuccess) + { + IsConnected = true; + return readbyte.Content; + } + else + { + IsConnected = false; + return null; + } + } } } diff --git a/Aucma.Core.PLc/Impl/SiemensPlc.cs b/Aucma.Core.PLc/Impl/SiemensPlc.cs index c5e41131..d235eb9f 100644 --- a/Aucma.Core.PLc/Impl/SiemensPlc.cs +++ b/Aucma.Core.PLc/Impl/SiemensPlc.cs @@ -499,5 +499,26 @@ namespace Aucma.Core.PLc return false; } #endregion + + /// + /// 读取byte + /// + /// 地址 + /// 长度 + /// + public byte[] Read(string address, ushort len) + { + OperateResult readbyte = siemensS7Net.Read(address, len); + if (readbyte.IsSuccess) + { + IsConnected = true; + return readbyte.Content; + } + else + { + IsConnected = false; + return null; + } + } } } diff --git a/Aucma.Core.RunPlc/RunPlcService.cs b/Aucma.Core.RunPlc/RunPlcService.cs index 23f413df..ce447895 100644 --- a/Aucma.Core.RunPlc/RunPlcService.cs +++ b/Aucma.Core.RunPlc/RunPlcService.cs @@ -44,10 +44,11 @@ namespace Aucma.Core.RunPlc private static Task StartMelsecMcPlcServer() { - // string ip = Appsettings.app("Middleware", "Scanner1", "Ip"); var allPlcServices = Appsettings.app("PLCServer").ToList(); - var list = allPlcServices.Where(d => d.PlcType=="Melsec" && d.Enabled == true).ToList(); - foreach (var item in list) + if (allPlcServices == null) return Task.CompletedTask; + var list = allPlcServices.FindAll(d => d.PlcType == "Melsec" && d.Enabled == true); + + foreach (var item in allPlcServices) { PlcModel model = new PlcModel(); model.Id = item.Id; @@ -63,22 +64,21 @@ namespace Aucma.Core.RunPlc private static Task StartSiemensPlcServer() { - //var allPlcServices = Appsettings.app("PLCServer").ToList(); - //if (allPlcServices==null) return Task.CompletedTask; - ////var list1 = allPlcServices.Where(d => d.PlcType.Equals("Siemens") && d.Enabled == true); - // if (list1 == null) return Task.CompletedTask; - //var list = list1.Where(d => d.PlcType.Equals("Siemens") && d.Enabled == true); - //foreach (var item in list) - //{ - // 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); - //} + List allPlcServices = Appsettings.app("PLCServer").ToList(); + if (allPlcServices == null) return Task.CompletedTask; + var list = allPlcServices.FindAll(d => d.PlcType=="Siemens" && d.Enabled == true); + + foreach (var item in list) + { + 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); + } return Task.CompletedTask; } #endregion