From 42718c29f1f0eec034489db1227139d88713dcc0 Mon Sep 17 00:00:00 2001 From: SoulStar Date: Thu, 21 May 2026 18:52:32 +0800 Subject: [PATCH] =?UTF-8?q?feat=20-=20=E5=9F=BA=E6=9C=AC=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=88=A0=E5=87=8F=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sln.Iot.Business/BusinessStart.cs | 6 +- .../Entity/TCPRFIDBindingEntity.cs | 28 +++ Sln.Iot.Business/ErrorAnalyseBusiness.cs | 4 +- Sln.Iot.Business/MesReportBusiness.cs | 2 +- Sln.Iot.Business/RFID01Business.cs | 108 ++++------- Sln.Iot.Business/RFID02Business.cs | 127 +++++++----- Sln.Iot.Business/RFID03Business.cs | 94 ++++++--- Sln.Iot.Business/RFID04Business.cs | 181 ------------------ Sln.Iot.Business/RFID05Business.cs | 161 ---------------- Sln.Iot.Business/RFID06Business.cs | 177 ----------------- Sln.Iot.Business/TCPRFIDBinding.cs | 63 ++++++ Sln.Iot.Business/TouchTcpServer.cs | 65 +++++++ Sln.Iot.CFX/CFXConnect/CFXConnect3.cs | 132 ------------- Sln.Iot.CFX/CFXConnect/CFXConnect4.cs | 132 ------------- .../{CFXConnect2.cs => CFXConnectOven.cs} | 6 +- .../{CFXConnect1.cs => CFXConnectVacuum.cs} | 6 +- Sln.Iot.CFX/CFXTest.cs | 4 +- Sln.Iot.Config/AppConfig.cs | 10 - Sln.Iot.PLC/PLCConnect.cs | 46 ++--- .../service/TrayBindingService.cs | 26 +++ .../Sln.Iot.Touchsocket.csproj | 9 + Sln.Iot.Touchsocket/TouchSocketSetup.cs | 7 + Sln.Iot/Program.cs | 33 +--- Sln.Iot/appsettings.json | 14 +- 24 files changed, 434 insertions(+), 1007 deletions(-) create mode 100644 Sln.Iot.Business/Entity/TCPRFIDBindingEntity.cs delete mode 100644 Sln.Iot.Business/RFID04Business.cs delete mode 100644 Sln.Iot.Business/RFID05Business.cs delete mode 100644 Sln.Iot.Business/RFID06Business.cs create mode 100644 Sln.Iot.Business/TCPRFIDBinding.cs create mode 100644 Sln.Iot.Business/TouchTcpServer.cs delete mode 100644 Sln.Iot.CFX/CFXConnect/CFXConnect3.cs delete mode 100644 Sln.Iot.CFX/CFXConnect/CFXConnect4.cs rename Sln.Iot.CFX/CFXConnect/{CFXConnect2.cs => CFXConnectOven.cs} (96%) rename Sln.Iot.CFX/CFXConnect/{CFXConnect1.cs => CFXConnectVacuum.cs} (95%) create mode 100644 Sln.Iot.Touchsocket/Sln.Iot.Touchsocket.csproj create mode 100644 Sln.Iot.Touchsocket/TouchSocketSetup.cs diff --git a/Sln.Iot.Business/BusinessStart.cs b/Sln.Iot.Business/BusinessStart.cs index 5ca60e1..32acebe 100644 --- a/Sln.Iot.Business/BusinessStart.cs +++ b/Sln.Iot.Business/BusinessStart.cs @@ -20,7 +20,8 @@ namespace Sln.Iot.Business private RFID06Business _rfid06; private ErrorAnalyseBusiness _errorAnalyse; private RecipeBusiness _recipeBusiness; - private MesReportBusiness _mesReportBusiness; + private TCPRFIDBinding _tcpRfidBinding; + //private MesReportBusiness _mesReportBusiness; public BusinessStart() { _rfid01 = new RFID01Business(); @@ -31,7 +32,8 @@ namespace Sln.Iot.Business _rfid06 = new RFID06Business(); _errorAnalyse = new ErrorAnalyseBusiness(); _recipeBusiness = new RecipeBusiness(); - _mesReportBusiness = new MesReportBusiness(); + _tcpRfidBinding = TCPRFIDBinding.Instance; + //_mesReportBusiness = new MesReportBusiness(); } } } diff --git a/Sln.Iot.Business/Entity/TCPRFIDBindingEntity.cs b/Sln.Iot.Business/Entity/TCPRFIDBindingEntity.cs new file mode 100644 index 0000000..8f08aa3 --- /dev/null +++ b/Sln.Iot.Business/Entity/TCPRFIDBindingEntity.cs @@ -0,0 +1,28 @@ +using System.Text.Json.Serialization; + +namespace Sln.Iot.Business.Entity +{ + public class TCPRFIDBindingEntity + { + [JsonPropertyName("rfid")] + public string? Rfid { get; set; } + + [JsonPropertyName("sn1")] + public string? Sn1 { get; set; } + + [JsonPropertyName("sn2")] + public string? Sn2 { get; set; } + + [JsonPropertyName("sn3")] + public string? Sn3 { get; set; } + + [JsonPropertyName("sn4")] + public string? Sn4 { get; set; } + + [JsonPropertyName("sn5")] + public string? Sn5 { get; set; } + + [JsonPropertyName("sn6")] + public string? Sn6 { get; set; } + } +} diff --git a/Sln.Iot.Business/ErrorAnalyseBusiness.cs b/Sln.Iot.Business/ErrorAnalyseBusiness.cs index ea147e9..e9ee09d 100644 --- a/Sln.Iot.Business/ErrorAnalyseBusiness.cs +++ b/Sln.Iot.Business/ErrorAnalyseBusiness.cs @@ -35,9 +35,7 @@ namespace Sln.Iot.Business private FaultOccurredEvent faultOccurredEvent = new FaultOccurredEvent(); private FaultClearedEvent faultClearedEvent = new FaultClearedEvent(); - private CFXConnect1 connect1 = CFXConnect1.Instance; - private CFXConnect2 connect2 = CFXConnect2.Instance; - private CFXConnect3 connect3 = CFXConnect3.Instance; + private CFXConnectOven connect2 = CFXConnectOven.Instance; public ErrorAnalyseBusiness() { diff --git a/Sln.Iot.Business/MesReportBusiness.cs b/Sln.Iot.Business/MesReportBusiness.cs index e05cf76..52ff34f 100644 --- a/Sln.Iot.Business/MesReportBusiness.cs +++ b/Sln.Iot.Business/MesReportBusiness.cs @@ -28,7 +28,7 @@ namespace Sln.Iot.Business private readonly PLCConnect _plc = PLCConnect.Instance; CFXConnect1 _cfxHelper = CFXConnect1.Instance; - CFXConnect2 _cfxHelper2 = CFXConnect2.Instance; + CFXConnectOven _cfxHelper2 = CFXConnectOven.Instance; CFXConnect3 _cfxHelper3 = CFXConnect3.Instance; CFXConnect4 _cfxHelper4 = CFXConnect4.Instance; StationParametersModifiedEvent stationParametersModifiedEvent = new StationParametersModifiedEvent(); diff --git a/Sln.Iot.Business/RFID01Business.cs b/Sln.Iot.Business/RFID01Business.cs index 849b196..1085e79 100644 --- a/Sln.Iot.Business/RFID01Business.cs +++ b/Sln.Iot.Business/RFID01Business.cs @@ -15,6 +15,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using TouchSocket.Core; @@ -22,6 +23,9 @@ using static System.Runtime.CompilerServices.RuntimeHelpers; namespace Sln.Iot.Business { + /// + /// RFID01真空箱内 + /// public class RFID01Business { private Timer _timer; @@ -37,9 +41,7 @@ namespace Sln.Iot.Business private UnitsDepartedEvent unitsDepartedEvent = new UnitsDepartedEvent(); private TrayBindingService trayBindingService = TrayBindingService.Instance; - private CFXConnect1 connect1 = CFXConnect1.Instance; - private CFXConnect2 connect2 = CFXConnect2.Instance; - private CFXConnect3 connect3 = CFXConnect3.Instance; + private CFXConnectVacuum connectVacuum = CFXConnectVacuum.Instance; public RFID01Business() { @@ -47,7 +49,7 @@ namespace Sln.Iot.Business } /// - /// RFID01上料提升机数据处理流程业务刷新 + /// RFID01真空箱内 /// /// public void TimerCallback(object? state) @@ -56,7 +58,7 @@ namespace Sln.Iot.Business { // 定时任务逻辑 //读取信号 - OperateResult signalRes = _plc.ReadInt16(_plc.DeltaInstance3, "D500"); + OperateResult signalRes = _plc.ReadInt16(_plc.PLC22, "D800"); //成功验证 if (signalRes.IsSuccess) { @@ -65,11 +67,9 @@ namespace Sln.Iot.Business if (signalValue == 1001) { //读取托盘码和产品码 - OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance3, "D5000", 10); - OperateResult pordBytesResult1 = _plc.ReadBytes(_plc.DeltaInstance3, "D8000", 90); - OperateResult pordBytesResult2 = _plc.ReadBytes(_plc.DeltaInstance3, "D8090", 90); + OperateResult trayBytesResult = _plc.ReadBytes(_plc.PLC22, "D5000", 10); //成功验证 - if (trayBytesResult.IsSuccess && pordBytesResult1.IsSuccess && pordBytesResult2.IsSuccess) + if (trayBytesResult.IsSuccess) { //转换托盘码 @@ -77,56 +77,28 @@ namespace Sln.Iot.Business traycode = traycode.Replace("?", ""); traycode = traycode.Replace("\0", ""); _log.Info($"托盘到达-RFID01-托盘号-[{traycode}]"); - byte[] prodBytes = pordBytesResult1.Content.Concat(pordBytesResult2.Content).ToArray(); - string[] prodcode = new string[6]; - //分割转换产品码 - for (int i = 0; i < 6; i++) - { - prodcode[i] = Encoding.ASCII.GetString(prodBytes[(i * 60)..(i * 60 + 60)]); - prodcode[i] = prodcode[i].Replace("\0", ""); - if (!string.IsNullOrEmpty(prodcode[i])) - { - // 将相邻偶数位和奇数位字符对调 - char[] chars = prodcode[i].ToCharArray(); - for (int j = 0; j < chars.Length - 1; j += 2) - { - // 交换相邻的两个字符 - char temp = chars[j]; - chars[j] = chars[j + 1]; - chars[j + 1] = temp; - } - prodcode[i] = new string(chars); - GlobalVar.Connect2Entity.InputQuantity++; - GlobalVar.Connect2Entity.PassQuantity++; - GlobalVar.Connect3Entity.InputQuantity++; - GlobalVar.Connect1Entity.InputQuantity++; - GlobalVar.Connect1Entity.PassQuantity++; - GlobalVar.Connect3Entity.PassQuantity++; - GlobalVar.Connect4Entity.InputQuantity++; - GlobalVar.Connect4Entity.PassQuantity++; - _log.Info($"{prodcode[i]}进入产线"); - } - } - - //connect1.SendValidateUnitsRequest("", traycode, prodcode); - - //生成work唯一guid(tid) - Guid tid = Guid.NewGuid(); - //sql更新 - bool res = trayBindingService.TrayBindingRefresh(tid, traycode, prodcode); - if (!res) - { - _log.Error("上料提升机数据库写入异常"); - } + //记录预热炉到达时间 + trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "1"); //写入完成信号 - res = _plc.PlcWrite(_plc.DeltaInstance3, "D500", 1002, DataTypeEnum.UInt16).IsSuccess; + bool res = _plc.PlcWrite(_plc.PLC22, "D800", 1002, DataTypeEnum.UInt16).IsSuccess; if (!res) { - _log.Error("上料提升机PLC写入完成信号异常"); + _log.Error("RFID01 读电子标签 PLC写入完成信号异常"); } + //取出work唯一guid(tid) + string stid = trayBindingService.TidGet(traycode); + if (!Guid.TryParse(stid, out Guid tid)) + { + tid = Guid.Parse("11111111-1111-4111-9111-111111111111"); + _log.Error("找不到对应的托盘信息,赋值默认GUID"); + } + + //读取托盘对应的产品码 + string[] prodcode = trayBindingService.ProdCodeGet(traycode); + GlobalVar.Connect2Entity.CycleTime = CommonUtil.AddRandom(AppConfigSetting._config.CycleTime2, 5); //CFX @@ -134,29 +106,33 @@ namespace Sln.Iot.Business { //单元抵达事件 - connect1.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode))); - connect2.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode))); - connect3.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode))); - _log.Info($"{traycode} 抵达设备"); + connectVacuum.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode))); //工作开始事件 - connect1.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode))); - connect2.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode))); - connect3.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode))); + connectVacuum.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode))); _log.Info($"工作开始,ID:{tid}"); - connect2.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode))); - connect2.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode))); - - //预热炉工段开启 - connect3.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "PreHeatOven", 1))); - _log.Info($"预热炉工段开始 ID:{tid}"); + //真空箱工段开启 + connectVacuum.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "Vacuum", 1))); + _log.Info($"真空箱工段开始 ID:{tid}"); }); } else { - _log.Error($"PLC读取失败,原因1:{trayBytesResult.Message} 2:{pordBytesResult1.Message} 3:{pordBytesResult2.Message}"); + _log.Error($"PLC读取失败,原因1:{trayBytesResult.Message} "); } //流程完成 } + else if (signalValue == 1003) + { + //TODO :读取参数 + + + //写入完成信号 + bool res = _plc.PlcWrite(_plc.PLC22, "D800", 1004, DataTypeEnum.UInt16).IsSuccess; + if (!res) + { + _log.Error("RFID01 读胶机参数 PLC写入完成信号异常"); + } + } } else { diff --git a/Sln.Iot.Business/RFID02Business.cs b/Sln.Iot.Business/RFID02Business.cs index 0ed2658..76cc7ab 100644 --- a/Sln.Iot.Business/RFID02Business.cs +++ b/Sln.Iot.Business/RFID02Business.cs @@ -30,9 +30,13 @@ namespace Sln.Iot.Business private WorkStageStartedEvent workStageStartedEvent = new WorkStageStartedEvent(); private WorkStageCompletedEvent workStageCompletedEvent = new WorkStageCompletedEvent(); - private CFXConnect1 connect1 = CFXConnect1.Instance; - private CFXConnect2 connect2 = CFXConnect2.Instance; - private CFXConnect3 connect3 = CFXConnect3.Instance; + private WorkCompletedEvent workCompletedEvent = new WorkCompletedEvent(); + private UnitsDepartedEvent unitsDepartedEvent = new UnitsDepartedEvent(); + private UnitsArrivedEvent unitsArrivedEvent = new UnitsArrivedEvent(); + private WorkStartedEvent workStartedEvent = new WorkStartedEvent(); + + private CFXConnectOven ConnectOven = CFXConnectOven.Instance; + private CFXConnectVacuum ConnectVacuum = CFXConnectVacuum.Instance; public RFID02Business() @@ -50,7 +54,7 @@ namespace Sln.Iot.Business { // 定时任务逻辑 //读取信号 - OperateResult signalRes = _plc.ReadInt16(_plc.DeltaInstance1, "D800"); + OperateResult signalRes = _plc.ReadInt16(_plc.PLC23, "D800"); //成功验证 if (signalRes.IsSuccess) { @@ -59,7 +63,7 @@ namespace Sln.Iot.Business if (signalValue == 2001) { //读取托盘码 - OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance1, "D5000", 10); + OperateResult trayBytesResult = _plc.ReadBytes(_plc.PLC23, "D5000", 10); //成功验证 if (trayBytesResult.IsSuccess) { @@ -69,55 +73,46 @@ namespace Sln.Iot.Business traycode = traycode.Replace("\0", ""); _log.Info($"托盘到达-RFID02-托盘号-[{traycode}]"); - //sql更新 - - //取出work唯一guid(tid) - string stid = trayBindingService.TidGet(traycode); - if(!Guid.TryParse(stid, out Guid tid)) - { - tid = Guid.Parse("11111111-1111-4111-9111-111111111111"); - _log.Error("找不到对应的托盘信息,赋值默认GUID"); - } + //记录胶机1真空箱内到达时间 + trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "2"); bool res = false; - - //写入完成信号 - res = _plc.PlcWrite(_plc.DeltaInstance1, "D800", 2002, DataTypeEnum.UInt16).IsSuccess; + res = _plc.PlcWrite(_plc.PLC23, "D800", 2002, DataTypeEnum.UInt16).IsSuccess; if (!res) { _log.Error("胶机1真空箱内写入完成信号异常"); } - //CFX + //取出work唯一guid(tid) + string stid = trayBindingService.TidGet(traycode); + if (!Guid.TryParse(stid, out Guid tid)) + { + tid = Guid.Parse("11111111-1111-4111-9111-111111111111"); + _log.Error("找不到对应的托盘信息,赋值默认GUID"); + } + + string[] prodcode = trayBindingService.ProdCodeGet(traycode); + + //CFX TODO Task.Run(() => { - //预热炉工段完成事件 - connect3.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "PreHeatOven", 1))); - _log.Info($"预热炉工段完成 ID:{tid}"); - //真空箱1工段开启 - connect1.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "VacuumInjection1", 1))); - _log.Info($"真空箱1工段开始 ID:{tid}"); + //真空箱工段完成事件 + ConnectVacuum.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "Vacuum", 1))); + _log.Info($"真空箱工段完成 ID:{tid}"); + ConnectVacuum.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode))); + _log.Info($"工作完成事件发布 ID:{tid}"); + ConnectVacuum.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode))); + _log.Info($"单元离站 ID:{tid}"); - - //预热炉数据采集 - var data = unitsProcessPLCDataGetBusiness.PreHeatOvenPlcDataGet(); - ovenPlcDataService.InsertData(stid, data); - _log.Info($"预热炉数据采集, 预热炉温度:{data}"); - //真空箱1数据采集 - var data2 = unitsProcessPLCDataGetBusiness.Vacuum1PlcDataGet(); - vacuumInjectionPlcDataService.InsertData(stid, data2); - _log.Info($"真空箱1温度数据采集\n" + - $"胶量1:{data2.GlueAmountSetValue1}\t" + - $"推胶速度1:{data2.GluePushSpeedSetValue1}\n" + - $"A1温度1:{data2.BarrelA1TempActValue1}\t" + - $"A2温度1:{data2.BarrelA2TempActValue1}\t" + - $"B1温度1:{data2.BarrelB1TempActValue1}\t" + - $"B2温度1:{data2.BarrelB2TempActValue1}\n" + - $"A泵压力1:{data2.PumpAPressureActValue1}\t" + - $"B泵压力1:{data2.PumpBPressureActValue1}\t" + - $"真空度1:{data2.VacuumDegreeActValue1}\t" + - $"保压时间1:{data2.PressureHoldTimeSetValue1}"); + //单元抵达事件 + ConnectOven.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode))); + //工作开始事件 + ConnectOven.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode))); + _log.Info($"工作开始,ID:{tid}"); + //真空箱工段开启 + ConnectOven.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "Oven", 1))); + _log.Info($"真空箱工段开始 ID:{tid}"); }); //CFX @@ -128,6 +123,50 @@ namespace Sln.Iot.Business } //流程完成 } + else if (signalValue == 2003) + { + //读取托盘码 + OperateResult trayBytesResult = _plc.ReadBytes(_plc.PLC23, "D5000", 10); + if (trayBytesResult.IsSuccess) + { + string traycode = Encoding.ASCII.GetString(trayBytesResult.Content); + traycode = traycode.Replace("?", ""); + traycode = traycode.Replace("\0", ""); + + //计算预热炉停留时长: time2 - time1 + string time2 = trayBindingService.GetTimeByTrayCode(traycode, "2"); + string time1 = trayBindingService.GetTimeByTrayCode(traycode, "1"); + ushort spanSecond = 0; + if (!string.IsNullOrEmpty(time2) && !string.IsNullOrEmpty(time1)) + { + TimeSpan span = Convert.ToDateTime(time2) - Convert.ToDateTime(time1); + spanSecond = (ushort)span.TotalSeconds; + _log.Info($"预热炉停留时长: [{spanSecond}]秒"); + } + bool re = _plc.PlcWrite(_plc.PLC23, "D810", spanSecond, DataTypeEnum.UInt16).IsSuccess; + if (!re) + { + _log.Error("RFID02 发送预热炉停留时长 PLC写入异常"); + } + } + else + { + _log.Error($"PLC读取失败,原因:{trayBytesResult.Message}"); + } + + //写入完成信号 + bool res = _plc.PlcWrite(_plc.PLC23, "D800", 2004, DataTypeEnum.UInt16).IsSuccess; + if (!res) + { + _log.Error("RFID02 发送真空箱停留时长 PLC写入完成信号异常"); + } + + Task.Run(() => + { + //TODO: UnitsProcessedEvent + + }); + } } else { @@ -138,7 +177,7 @@ namespace Sln.Iot.Business { _log.Error("RFID02业务出现异常", ex); } - + } } } diff --git a/Sln.Iot.Business/RFID03Business.cs b/Sln.Iot.Business/RFID03Business.cs index b017422..43518f8 100644 --- a/Sln.Iot.Business/RFID03Business.cs +++ b/Sln.Iot.Business/RFID03Business.cs @@ -27,9 +27,11 @@ namespace Sln.Iot.Business private TrayBindingService trayBindingService = TrayBindingService.Instance; private WorkStageStartedEvent workStageStartedEvent = new WorkStageStartedEvent(); private WorkStageCompletedEvent workStageCompletedEvent = new WorkStageCompletedEvent(); - private CFXConnect1 connect1 = CFXConnect1.Instance; - private CFXConnect2 connect2 = CFXConnect2.Instance; - private CFXConnect3 connect3 = CFXConnect3.Instance; + private WorkCompletedEvent workCompletedEvent = new WorkCompletedEvent(); + private UnitsDepartedEvent unitsDepartedEvent = new UnitsDepartedEvent(); + + private CFXConnectOven ConnectOven = CFXConnectOven.Instance; + public RFID03Business() { @@ -46,7 +48,7 @@ namespace Sln.Iot.Business { // 定时任务逻辑 //读取信号 - OperateResult signalRes = _plc.ReadInt16(_plc.DeltaInstance1, "D802"); + OperateResult signalRes = _plc.ReadInt16(_plc.PLC24, "D800"); //成功验证 if (signalRes.IsSuccess) { @@ -55,7 +57,7 @@ namespace Sln.Iot.Business if (signalValue == 3001) { //读取托盘码 - OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance1, "D5020", 10); + OperateResult trayBytesResult = _plc.ReadBytes(_plc.PLC24, "D5000", 10); //成功验证 if (trayBytesResult.IsSuccess) { @@ -65,6 +67,19 @@ namespace Sln.Iot.Business traycode = traycode.Replace("\0", ""); _log.Info($"托盘到达-RFID03-托盘号-[{traycode}]"); + bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "3"); + if (!res) + { + _log.Error("胶机1真空箱外时间更新失败(未扫托盘号)"); + } + + //写入完成信号 + res = _plc.PlcWrite(_plc.PLC24, "D802", 3002, DataTypeEnum.UInt16).IsSuccess; + if (!res) + { + _log.Error("胶机1真空箱外写入完成信号异常"); + } + //sql更新 //取出work唯一guid(tid) string stid = trayBindingService.TidGet(traycode); @@ -73,30 +88,19 @@ namespace Sln.Iot.Business tid = Guid.Parse("11111111-1111-4111-9111-111111111111"); _log.Error("找不到对应的托盘信息,赋值默认GUID"); } - bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "1"); - if (!res) - { - _log.Error("胶机1真空箱外时间更新失败(未扫托盘号)"); - } - //写入完成信号 - res = _plc.PlcWrite(_plc.DeltaInstance1, "D802", 3002, DataTypeEnum.UInt16).IsSuccess; - if (!res) - { - _log.Error("胶机1真空箱外写入完成信号异常"); - } - - GlobalVar.Connect1Entity.CycleTime = CommonUtil.AddRandom(AppConfigSetting._config.CycleTime1, 300); + string[] prodcode = trayBindingService.ProdCodeGet(traycode); //CFX Task.Run(() => { - //真空箱1工段完成事件 - connect1.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "VacuumInjection1", 1))); - _log.Info($"真空箱1工段完成, {tid}"); - //预固炉工段开启 - connect3.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "PreCureOven", 2))); - _log.Info($"预固炉工段开启, {tid}"); + //真空箱工段完成事件 + ConnectOven.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "Oven", 1))); + _log.Info($"真空箱工段完成 ID:{tid}"); + ConnectOven.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode))); + _log.Info($"工作完成事件发布 ID:{tid}"); + ConnectOven.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode))); + _log.Info($"单元离站 ID:{tid}"); }); } else @@ -105,6 +109,48 @@ namespace Sln.Iot.Business } //流程完成 } + else if(signalValue == 3003) + { + //读取托盘码 + OperateResult trayBytesResult = _plc.ReadBytes(_plc.PLC24, "D5000", 10); + if (trayBytesResult.IsSuccess) + { + string traycode = Encoding.ASCII.GetString(trayBytesResult.Content); + traycode = traycode.Replace("?", ""); + traycode = traycode.Replace("\0", ""); + + //计算真空箱1停留时长: time3 - time2 + string time3 = trayBindingService.GetTimeByTrayCode(traycode, "3"); + string time2 = trayBindingService.GetTimeByTrayCode(traycode, "2"); + ushort spanSecond = 0; + if (!string.IsNullOrEmpty(time3) && !string.IsNullOrEmpty(time2)) + { + TimeSpan span = Convert.ToDateTime(time3) - Convert.ToDateTime(time2); + spanSecond = (ushort)span.TotalSeconds; + _log.Info($"真空箱1停留时长: [{spanSecond}]秒"); + } + bool re = _plc.PlcWrite(_plc.PLC24, "D810", spanSecond, DataTypeEnum.UInt16).IsSuccess; + if (!re) + { + _log.Error("RFID03 发送真空箱停留时长 PLC写入异常"); + } + } + else + { + _log.Error($"PLC读取失败,原因:{trayBytesResult.Message}"); + } + + //写入完成信号 + bool res = _plc.PlcWrite(_plc.PLC24, "D800", 3004, DataTypeEnum.UInt16).IsSuccess; + if (!res) + { + _log.Error("RFID03 发送真空箱停留时长 PLC写入完成信号异常"); + } + + Task.Run(() => + { + //TODO: UnitsProcessedEvent + } } else { diff --git a/Sln.Iot.Business/RFID04Business.cs b/Sln.Iot.Business/RFID04Business.cs deleted file mode 100644 index db173da..0000000 --- a/Sln.Iot.Business/RFID04Business.cs +++ /dev/null @@ -1,181 +0,0 @@ -using CFX; -using HslCommunication; -using Sln.Iot.CFX.CFXConnect; -using Sln.Iot.CFX.Event; -using Sln.Iot.PLC; -using Sln.Iot.Repository.service; -using Sln.Iot.Serilog; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TouchSocket.Core; -using static System.Runtime.CompilerServices.RuntimeHelpers; - -namespace Sln.Iot.Business -{ - public class RFID04Business - { - private Timer _timer; - - private readonly PLCConnect _plc = PLCConnect.Instance; - - private readonly SerilogHelper _log = SerilogHelper.Instance; - private OvenPlcDataService ovenPlcDataService = OvenPlcDataService.Instance; - private VacuumInjectionPlcDataService vacuumInjectionPlcDataService = VacuumInjectionPlcDataService.Instance; - - private UnitsProcessPLCDataGetBusiness unitsProcessPLCDataGetBusiness = UnitsProcessPLCDataGetBusiness.Instance; - - private TrayBindingService trayBindingService = TrayBindingService.Instance; - private WorkStageStartedEvent workStageStartedEvent = new WorkStageStartedEvent(); - private WorkStageCompletedEvent workStageCompletedEvent = new WorkStageCompletedEvent(); - private CFXConnect1 connect1 = CFXConnect1.Instance; - private CFXConnect2 connect2 = CFXConnect2.Instance; - private CFXConnect3 connect3 = CFXConnect3.Instance; - - public RFID04Business() - { - _timer = new Timer(TimerCallback, null, 0, 2000); - } - - /// - /// RFID04胶机2真空箱前数据处理流程 - /// - /// - public void TimerCallback(object? state) - { - try - { - // 定时任务逻辑 - //读取信号 - OperateResult signalRes = _plc.ReadInt16(_plc.DeltaInstance2, "D800"); - //成功验证 - if (signalRes.IsSuccess) - { - short signalValue = signalRes.Content; - // 如果有读取信号 - // 读电子标签 - if (signalValue == 4001) - { - //读取托盘码和产品码 - OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance2, "D5000", 10); - //成功验证 - if (trayBytesResult.IsSuccess) - { - //转换托盘吗 - string traycode = Encoding.ASCII.GetString(trayBytesResult.Content); - traycode = traycode.Replace("?", ""); - traycode = traycode.Replace("\0", ""); - _log.Info($"托盘到达-RFID04-托盘号-[{traycode}]"); - - //sql更新 - //取出work唯一guid(tid) - string stid = trayBindingService.TidGet(traycode); - if (!Guid.TryParse(stid, out Guid tid)) - { - tid = Guid.Parse("11111111-1111-4111-9111-111111111111"); - _log.Error("找不到对应的托盘信息,赋值默认GUID"); - } - - bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "2"); - if (!res) - { - _log.Error("胶机2真空箱前时间数据库更新异常"); - } - - //写入完成信号 - res = _plc.PlcWrite(_plc.DeltaInstance2, "D800", 4002, DataTypeEnum.UInt16).IsSuccess; - if (!res) - { - _log.Error("胶机2真空箱前开始时间PLC写入完成信号异常"); - } - - //CFX - Task.Run(() => - { - //预固炉工段完成事件 - connect3.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "PreCureOven", 2))); - _log.Info($"预固炉工段完成, {tid}"); - //真空箱2工段开启 - connect1.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "VacuumInjection2", 2))); - _log.Info($"真空箱2工段开启, {tid}"); - - //预固炉数据采集 - var data = unitsProcessPLCDataGetBusiness.PreCureOvenPlcDataGet(); - ovenPlcDataService.UpdateDataPreCure(stid, data); - _log.Info($"预固炉温度数据采集\n" + - $"预固炉1温度:{data.PreCureOven1TempActValue}\t" + - $"预固炉2温度:{data.PreCureOven2TempActValue}\t" + - $"预固炉3温度:{data.PreCureOven3TempActValue}\t" + - $"预固炉4温度:{data.PreCureOven4TempActValue}\n"); - }); - } - else - { - _log.Error($"PLC读取失败,原因:{trayBytesResult.Message}"); - } - //流程完成 - } - // 计算时间差 - if (signalValue == 4003) - { - //读取托盘码 - OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance2, "D5000", 10); - //成功验证 - if (trayBytesResult.IsSuccess) - { - //转换托盘吗 - string traycode = Encoding.ASCII.GetString(trayBytesResult.Content); - traycode = traycode.Replace("?", ""); - traycode = traycode.Replace("\0", ""); - _log.Info($"托盘号-[{traycode}]-开始计算时间"); - - //sql更新 - string nowTime = DateTime.Now.ToString(); - bool res = TrayBindingService.Instance.UpDateTime(nowTime, traycode, "3"); - if (!res) - { - _log.Error("胶机2真空箱前时间计算数据库更新异常"); - } - //取之前存的时间 - string time2 = TrayBindingService.Instance.GetTime2ByTrayCode(traycode); - ushort spanSecond = 0; - if (!time2.IsNullOrEmpty()) - { - //计算时间差 - TimeSpan span = Convert.ToDateTime(time2) - Convert.ToDateTime(nowTime); - spanSecond = (ushort)span.TotalSeconds; - _log.Info($"预固炉时间差: [" + spanSecond + "] 秒"); - } - res = _plc.PlcWrite(_plc.DeltaInstance2, "D810", spanSecond, DataTypeEnum.UInt16).IsSuccess; - if (!res) - { - _log.Error("胶机2真空箱前时间计算结果PLC写入异常"); - } - //写入完成信号 - res = _plc.PlcWrite(_plc.DeltaInstance2, "D800", 4004, DataTypeEnum.UInt16).IsSuccess; - if (!res) - { - _log.Error("胶机2真空箱前时间计算PLC写入完成信号异常"); - } - } - else - { - _log.Error($"PLC读取失败,原因:{trayBytesResult.Message}"); - } - //流程完成 - } - } - else - { - _log.Error($"胶机2真空箱前开始时间读PLC取信号异常,原因:{signalRes.Message}"); - } - } - catch (Exception ex) - { - _log.Error("RFID0业务出现异常", ex); - } - } - } -} diff --git a/Sln.Iot.Business/RFID05Business.cs b/Sln.Iot.Business/RFID05Business.cs deleted file mode 100644 index 66ff07a..0000000 --- a/Sln.Iot.Business/RFID05Business.cs +++ /dev/null @@ -1,161 +0,0 @@ -using CFX; -using HslCommunication; -using Sln.Iot.CFX.CFXBusiness; -using Sln.Iot.CFX.CFXConnect; -using Sln.Iot.CFX.Event; -using Sln.Iot.PLC; -using Sln.Iot.Repository.service; -using Sln.Iot.Serilog; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Sln.Iot.Business -{ - public class RFID05Business - { - private Timer _timer; - - private readonly PLCConnect _plc = PLCConnect.Instance; - - private readonly SerilogHelper _log = SerilogHelper.Instance; - - private TrayBindingService trayBindingService = TrayBindingService.Instance; - private OvenPlcDataService ovenPlcDataService = OvenPlcDataService.Instance; - private VacuumInjectionPlcDataService vacuumInjectionPlcDataService = VacuumInjectionPlcDataService.Instance; - - private UnitsProcessPLCDataGetBusiness unitsProcessPLCDataGetBusiness = UnitsProcessPLCDataGetBusiness.Instance; - - private CFXUnitProcessedDataGet cFXUnitProcessedDataGet = CFXUnitProcessedDataGet.Instance; - - private WorkStageStartedEvent workStageStartedEvent = new WorkStageStartedEvent(); - private WorkStageCompletedEvent workStageCompletedEvent = new WorkStageCompletedEvent(); - private UnitsProcessedEvent unitsProcessedEvent = new UnitsProcessedEvent(); - private CFXConnect1 connect1 = CFXConnect1.Instance; - private CFXConnect2 connect2 = CFXConnect2.Instance; - private CFXConnect3 connect3 = CFXConnect3.Instance; - - public RFID05Business() - { - _timer = new Timer(TimerCallback, null, 0, 2000); - } - - /// - /// RFID05胶机2真空箱后数据处理流程 - /// - /// - public void TimerCallback(object? state) - { - try - { - // 定时任务逻辑 - //读取信号 - OperateResult signalRes = _plc.ReadInt16(_plc.DeltaInstance2, "D802"); - //成功验证 - if (signalRes.IsSuccess) - { - short signalValue = signalRes.Content; - //如果有读取信号 - if (signalValue == 5001) - { - //读取托盘码 - OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance2, "D5020", 10); - //成功验证 - if (trayBytesResult.IsSuccess) - { - //转换托盘吗 - string traycode = Encoding.ASCII.GetString(trayBytesResult.Content); - traycode = traycode.Replace("?", ""); - traycode = traycode.Replace("\0", ""); - _log.Info($"托盘到达-RFID05-托盘号-[{traycode}]"); - - //sql更新 - //取出work唯一guid(tid) - string stid = trayBindingService.TidGet(traycode); - if (!Guid.TryParse(stid, out Guid tid)) - { - tid = Guid.Parse("11111111-1111-4111-9111-111111111111"); - _log.Error("找不到对应的托盘信息,赋值默认GUID"); - } - - bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "4"); - if (!res) - { - _log.Error("胶机2真空箱后数据库写入异常"); - } - - //写入完成信号 - res = _plc.PlcWrite(_plc.DeltaInstance2, "D802", 5002, DataTypeEnum.UInt16).IsSuccess; - if (!res) - { - _log.Error("胶机2真空箱后PLC写入完成信号异常"); - } - - //CFX - Task.Run(() => - { - //真空箱2工段完成事件 - connect1.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "VacuumInjection2", 2))); - _log.Info($"真空箱2工段完成, {tid}"); - //固化炉工段开启 - connect3.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "CureOven", 3))); - _log.Info($"固化炉工段开启, {tid}"); - - //真空箱获取并上传数据 - var unitsData1 = vacuumInjectionPlcDataService.GetData(stid); - var unitsData2 = unitsProcessPLCDataGetBusiness.Vacuum2PlcDataGet(); - unitsData1.GlueAmountSetValue2 = unitsData2.GlueAmountSetValue2; - unitsData1.GluePushSpeedSetValue2 = unitsData2.GluePushSpeedSetValue2; - unitsData1.BarrelA1TempActValue2 = unitsData2.BarrelA1TempActValue2; - unitsData1.BarrelA2TempActValue2 = unitsData2.BarrelA2TempActValue2; - unitsData1.BarrelB1TempActValue2 = unitsData2.BarrelB1TempActValue2; - unitsData1.BarrelB2TempActValue2 = unitsData2.BarrelB2TempActValue2; - unitsData1.PumpAPressureActValue2 = unitsData2.PumpAPressureActValue2; - unitsData1.PumpBPressureActValue2 = unitsData2.PumpBPressureActValue2; - unitsData1.VacuumDegreeActValue2 = unitsData2.VacuumDegreeActValue2; - unitsData1.PressureHoldTimeSetValue2 = unitsData2.PressureHoldTimeSetValue2; - connect1.PublishEvent(new CFXEnvelope(unitsProcessedEvent.Handle(tid, cFXUnitProcessedDataGet.ProcessDataGet1(unitsData1)))); - _log.Info($"真空箱温度数据上传\n" + - $"胶量1:{unitsData1.GlueAmountSetValue1}\t" + - $"推胶速度1:{unitsData1.GluePushSpeedSetValue1}\n" + - $"A1温度1:{unitsData1.BarrelA1TempActValue1}\t" + - $"A2温度1:{unitsData1.BarrelA2TempActValue1}\t" + - $"B1温度1:{unitsData1.BarrelB1TempActValue1}\t" + - $"B2温度1:{unitsData1.BarrelB2TempActValue1}\n" + - $"A泵压力1:{unitsData1.PumpAPressureActValue1}\t" + - $"B泵压力1:{unitsData1.PumpBPressureActValue1}\t" + - $"真空度1:{unitsData1.VacuumDegreeActValue1}\t" + - $"保压时间1:{unitsData1.PressureHoldTimeSetValue1}\n" + - $"胶量2:{unitsData1.GlueAmountSetValue2}\t" + - $"推胶速度2:{unitsData1.GluePushSpeedSetValue2}\n" + - $"A1温度2:{unitsData1.BarrelA1TempActValue2}\t" + - $"A2温度2:{unitsData1.BarrelA2TempActValue2}\t" + - $"B1温度2:{unitsData1.BarrelB1TempActValue2}\t" + - $"B2温度2:{unitsData1.BarrelB2TempActValue2}\n" + - $"A泵压力2:{unitsData1.PumpAPressureActValue2}\t" + - $"B泵压力2:{unitsData1.PumpBPressureActValue2}\t" + - $"真空度2:{unitsData1.VacuumDegreeActValue2}\t" + - $"保压时间2:{unitsData1.PressureHoldTimeSetValue2}"); - }); - } - else - { - _log.Error($"PLC读取失败,原因:{trayBytesResult.Message}"); - } - //流程完成 - } - } - else - { - _log.Error($"胶机2真空箱后PLC读取信号异常,原因:{signalRes.Message}"); - } - } - catch (Exception ex) - { - _log.Error("RFID0业务出现异常", ex); - } - } - } -} diff --git a/Sln.Iot.Business/RFID06Business.cs b/Sln.Iot.Business/RFID06Business.cs deleted file mode 100644 index cced3e0..0000000 --- a/Sln.Iot.Business/RFID06Business.cs +++ /dev/null @@ -1,177 +0,0 @@ -using CFX; -using CFX.Structures; -using CFX.Structures.PressInsertion; -using HslCommunication; -using Sln.Iot.CFX.CFXBusiness; -using Sln.Iot.CFX.CFXConnect; -using Sln.Iot.CFX.Event; -using Sln.Iot.Common; -using Sln.Iot.Config; -using Sln.Iot.PLC; -using Sln.Iot.Repository.service; -using Sln.Iot.Serilog; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Sln.Iot.Business -{ - public class RFID06Business - { - private Timer _timer; - - private readonly PLCConnect _plc = PLCConnect.Instance; - - private readonly SerilogHelper _log = SerilogHelper.Instance; - - - //CFX数据采集业务 - private UnitsProcessPLCDataGetBusiness unitsProcessPLCDataGetBusiness = UnitsProcessPLCDataGetBusiness.Instance; - private CFXUnitProcessedDataGet cFXUnitProcessedDataGet = CFXUnitProcessedDataGet.Instance; - - //SQL服务 - private OvenPlcDataService ovenPlcDataService = OvenPlcDataService.Instance; - private VacuumInjectionPlcDataService vacuumInjectionPlcDataService = VacuumInjectionPlcDataService.Instance; - private TrayBindingService trayBindingService = TrayBindingService.Instance; - - //CFX事件 - private UnitsDepartedEvent unitsDepartedEvent = new UnitsDepartedEvent(); - private WorkStageCompletedEvent workStageCompletedEvent = new WorkStageCompletedEvent(); - private UnitsProcessedEvent unitsProcessedEvent = new UnitsProcessedEvent(); - private WorkCompletedEvent workCompletedEvent = new WorkCompletedEvent(); - private UnitsArrivedEvent unitsArrivedEvent = new UnitsArrivedEvent(); - private WorkStartedEvent workStartedEvent = new WorkStartedEvent(); - - // CFX连接 - private CFXConnect1 connect1 = CFXConnect1.Instance; - private CFXConnect3 connect3 = CFXConnect3.Instance; - private CFXConnect4 connect4 = CFXConnect4.Instance; - - public RFID06Business() - { - _timer = new Timer(TimerCallback, null, 0, 2000); - } - - /// - /// RFID06下料提升机数据处理流程 - /// - /// - public void TimerCallback(object? state) - { - try - { - // 定时任务逻辑 - //读取信号 - OperateResult signalRes = _plc.ReadInt16(_plc.DeltaInstance4, "D500"); - //成功验证 - if (signalRes.IsSuccess) - { - short signalValue = signalRes.Content; - //如果有读取信号 - if (signalValue == 6001) - { - //读取托盘码和产品码 - OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance4, "D5000", 10); - //成功验证 - if (trayBytesResult.IsSuccess) - { - //转换托盘吗 - string traycode = Encoding.ASCII.GetString(trayBytesResult.Content); - traycode = traycode.Replace("?", ""); - traycode = traycode.Replace("\0", ""); - _log.Info($"托盘到达-RFID06-托盘号-[{traycode}]"); - - //sql更新 - //取出work唯一guid(tid) - string stid = trayBindingService.TidGet(traycode); - if (!Guid.TryParse(stid, out Guid tid)) - { - tid = Guid.Parse("11111111-1111-4111-9111-111111111111"); - _log.Error("找不到对应的托盘信息,赋值默认GUID"); - } - - string[] prodcode = trayBindingService.ProdCodeGet(traycode); - - - - bool res = trayBindingService.TrayCodeDelete(traycode); - - if (!res) - { - _log.Error("下料提升机绑定数据删除异常或删除条数为0"); - } - - //写入完成信号 - res = _plc.PlcWrite(_plc.DeltaInstance4, "D500", 6002, DataTypeEnum.UInt16).IsSuccess; - if (!res) - { - _log.Error("下料提升机PLC写入完成信号异常"); - } - - GlobalVar.Connect3Entity.CycleTime = CommonUtil.AddRandom(AppConfigSetting._config.CycleTime3, 1000); - GlobalVar.Connect4Entity.CycleTime = CommonUtil.AddRandom(AppConfigSetting._config.CycleTime4, 5); - - //CFX - Task.Run(() => - { - //固化炉工段完成事件 - connect3.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "CureOven", 3))); - _log.Info($"固化炉工段完成, {tid}"); - - connect4.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode))); - connect4.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode))); - - - //工单完成事件 - connect1.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode))); - connect4.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode))); - connect3.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode))); - _log.Info($"工单完成 ID:{tid}"); - //单元离站事件 - connect1.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode))); - connect4.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode))); - connect3.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode))); - _log.Info($"{traycode} 单元离站 "); - - //固化炉数据采集 - var unitsdata = unitsProcessPLCDataGetBusiness.CureOvenPlcDataGet(); - //存数据库里整合 - ovenPlcDataService.UpdateDataCure(stid, unitsdata); - //取出整合数据 - unitsdata = ovenPlcDataService.GetData(stid); - - connect3.PublishEvent(new CFXEnvelope(unitsProcessedEvent.Handle(tid, cFXUnitProcessedDataGet.ProcessDataGet3(unitsdata)))); - _log.Info($"隧道烤箱温度数据上传\n" + - $"预热炉温度:{unitsdata.PreheatOvenTempActValue}\n" + - $"预固炉1温度:{unitsdata.PreCureOven1TempActValue}\t" + - $"预固炉2温度:{unitsdata.PreCureOven2TempActValue}\t" + - $"预固炉3温度:{unitsdata.PreCureOven3TempActValue}\t" + - $"预固炉4温度:{unitsdata.PreCureOven4TempActValue}\n" + - $"固化炉1温度:{unitsdata.CureOven1TempActValue}\t" + - $"固化炉2温度:{unitsdata.CureOven2TempActValue}\t" + - $"固化炉3温度:{unitsdata.CureOven3TempActValue}\t" + - $"固化炉4温度:{unitsdata.CureOven4TempActValue}"); - }); - } - else - { - _log.Error($"PLC读取失败,原因:{trayBytesResult.Message}"); - } - //流程完成 - } - } - else - { - _log.Error($"下料提升机PLC读取信号异常,原因:{signalRes.Message}"); - } - } - catch (Exception ex) - { - _log.Error("RFID0业务出现异常", ex); - } - - } - } -} diff --git a/Sln.Iot.Business/TCPRFIDBinding.cs b/Sln.Iot.Business/TCPRFIDBinding.cs new file mode 100644 index 0000000..80f92de --- /dev/null +++ b/Sln.Iot.Business/TCPRFIDBinding.cs @@ -0,0 +1,63 @@ +using Sln.Iot.Business.Entity; +using Sln.Iot.Repository.service; +using System.Reflection; +using System.Text.Json; + +namespace Sln.Iot.Business +{ + /// + /// TCPRFID信息绑定 + /// + public class TCPRFIDBinding + { + private static readonly Lazy lazy = new Lazy(() => new TCPRFIDBinding()); + + public static TCPRFIDBinding Instance + { + get + { + return lazy.Value; + } + } + + public static Action? GetNewMessage = new Action((message) => { }); + + private readonly TrayBindingService _trayBinding = TrayBindingService.Instance; + + public TCPRFIDBinding() + { + GetNewMessage += StoreBindingMessage; + } + + private static readonly PropertyInfo[] _snProperties = + typeof(TCPRFIDBindingEntity).GetProperties() + .Where(p => p.Name.StartsWith("Sn", StringComparison.OrdinalIgnoreCase)) + .ToArray(); + + + /// + /// 数据绑定到数据库 + /// + public void StoreBindingMessage(string message) + { + var entity = ParseMessage(message); + if (entity == null || string.IsNullOrWhiteSpace(entity.Rfid)) return; + + var prodCodes = _snProperties + .Select(p => p.GetValue(entity) as string) + .Where(v => !string.IsNullOrWhiteSpace(v)) + .ToArray(); + + if (prodCodes.Length == 0) return; + + _trayBinding.TrayBindingRefresh(Guid.NewGuid(), entity.Rfid, prodCodes!); + } + + private static TCPRFIDBindingEntity? ParseMessage(string message) + { + if (string.IsNullOrWhiteSpace(message)) return null; + + return JsonSerializer.Deserialize(message); + } + } +} diff --git a/Sln.Iot.Business/TouchTcpServer.cs b/Sln.Iot.Business/TouchTcpServer.cs new file mode 100644 index 0000000..5b1dbca --- /dev/null +++ b/Sln.Iot.Business/TouchTcpServer.cs @@ -0,0 +1,65 @@ +using Sln.Iot.Business; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TouchSocket.Core; +using TouchSocket.Sockets; + +namespace Sln.Iot.Business +{ + /// + /// TCP服务端 + /// + public class TouchTcpServer + { + private static readonly Lazy lazy = new Lazy(() => new TouchTcpServer()); + + public static TouchTcpServer Instance + { + get + { + return lazy.Value; + } + } + + /// + /// 服务端启动 + /// + public async void TcpServerStarted(string ipHost) + { + var service = new TcpService(); + service.Connecting = (client, e) => { return EasyTask.CompletedTask; };//有客户端正在连接 + service.Connected = (client, e) => { return EasyTask.CompletedTask; };//有客户端成功连接 + service.Closing = (client, e) => { return EasyTask.CompletedTask; };//有客户端正在断开连接,只有当主动断开时才有效。 + service.Closed = (client, e) => { return EasyTask.CompletedTask; };//有客户端断开连接 + + #region Tcp服务器使用Received异步委托接收数据 + service.Received = async (client, e) => + { + //从客户端收到信息 + var mes = e.Memory.Span.ToString(Encoding.UTF8); + client.Logger.Info($"已从{client.Id}接收到信息:{mes}"); + TCPRFIDBinding.GetNewMessage?.Invoke(mes); + //简单消除Task,当使用插件接收时,需要使用 await e.InvokeNext();来继续执行后续插件。 + await EasyTask.CompletedTask; + }; + #endregion + + + await service.SetupAsync(new TouchSocketConfig()//载入配置 + .SetListenIPHosts($"tcp://{ipHost}")//可以同时监听多个地址 + .ConfigureContainer(a =>//容器的配置 + { + a.AddConsoleLogger();//添加一个控制台日志注入(注意:在maui中控制台日志不可用) + }) + .ConfigurePlugins(a => + { + //a.Add();//此处可以添加插件 + })); + + await service.StartAsync();//启动 + } + } +} diff --git a/Sln.Iot.CFX/CFXConnect/CFXConnect3.cs b/Sln.Iot.CFX/CFXConnect/CFXConnect3.cs deleted file mode 100644 index 1f45799..0000000 --- a/Sln.Iot.CFX/CFXConnect/CFXConnect3.cs +++ /dev/null @@ -1,132 +0,0 @@ -using CFX.InformationSystem.UnitValidation; -using CFX.ResourcePerformance; -using CFX.Structures; -using CFX; -using Sln.Iot.CFX.RequestReceived; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using CFX.Production; -using Sln.Iot.CFX.CFXRequestes; -using Sln.Iot.CFX.CFXBusiness; -using Sln.Iot.CFX.Event; - -namespace Sln.Iot.CFX.CFXConnect -{ - /// - /// 烤箱连接 - /// - public class CFXConnect3 : CFXHelper - { - private static readonly Lazy lazy = new Lazy(() => new CFXConnect3()); - - public static CFXConnect3 Instance - { - get - { - return lazy.Value; - } - } - - AreYouThereRequestReceived3 areYouThereRequestReceived3 = new AreYouThereRequestReceived3(); - GetEndpointInformationRequestReceived3 getEndpointInformationRequestReceived3 = new GetEndpointInformationRequestReceived3(); - WhoIsThereRequestReceived3 whoIsThereRequestReceived3 = new WhoIsThereRequestReceived3(); - GetActiveRecipeRequestReceived3 getActiveRecipeRequestReceived3 = new GetActiveRecipeRequestReceived3(); - GetActiveFaultsRequestReceived3 getActiveFaultsRequestReceived3 = new GetActiveFaultsRequestReceived3(); - HandleFaultRequestReceived3 handleFaultRequestReceived3 = new HandleFaultRequestReceived3(); - ModifyStationParametersRequestReceived3 modifyStationParametersRequestReceived3 = new ModifyStationParametersRequestReceived3(); - - //HeartbeatEvent heartbeatEvent = new HeartbeatEvent(); - - CFXEventTools cFXEventTools = CFXEventTools.Instance; - - public string CFXHandle { get; set; } = "CFX.A00.OT00470017"; - - protected override CFXMessage HandleRequest(CFXEnvelope request) - { - CFXMessage response = null; - - if (request.MessageBody is AreYouThereRequest) //存在性检测请求 - { - areYouThereRequestReceived3.Handle(request.MessageBody as AreYouThereRequest, out response); - } - else if (request.MessageBody is GetEndpointInformationRequest) //获取终端节点信息请求 - { - getEndpointInformationRequestReceived3.Handle(request.MessageBody as GetEndpointInformationRequest, out response); - } - else if (request.MessageBody is WhoIsThereRequest) //设备存在性查询请求 - { - whoIsThereRequestReceived3.Handle(request.MessageBody as WhoIsThereRequest, out response); - } - else if (request.MessageBody is GetActiveRecipeRequest) //获取当前激活配方请求 - { - getActiveRecipeRequestReceived3.Handle(request.MessageBody as GetActiveRecipeRequest, out response); - } - else if (request.MessageBody is GetActiveFaultsRequest) //获取当前错误状态请求 - { - getActiveFaultsRequestReceived3.Handle(request.MessageBody as GetActiveFaultsRequest, out response); - } - else if (request.MessageBody is HandleFaultRequest) //处理错误请求 - { - handleFaultRequestReceived3.Handle(request.MessageBody as HandleFaultRequest, out response); - } - else if (request.MessageBody is ModifyStationParametersRequest) //设备修改参数请求 - { - modifyStationParametersRequestReceived3.Handle(request.MessageBody as ModifyStationParametersRequest, out response); - } - else //不支持的请求类型 - { - response = new NotSupportedResponse() - { - RequestResult = new RequestResult() - { - Result = StatusResult.Failed, - ResultCode = 0, - Message = $"不支持的请求类型:{request.MessageBody.GetType().Name}" - } - }; - } - - return response; - } - - /// - /// 发送生产单元验证请求接收通知 - /// - public void SendValidateUnitsRequest(string uri, string primaryIdentifier, string[] unitsIdentifier) - { - try - { - ValidateUnitsRequest msg = new ValidateUnitsRequest() - { - Validations = new List() - { - ValidationType.UnitTraceValidation, - }, - PrimaryIdentifier = primaryIdentifier, - Units = cFXEventTools.UnitPositionTrans(unitsIdentifier) - }; - - var validateresult = Endpoint.ExecuteRequest(uri, new CFXEnvelope(msg) - { - Source = Endpoint.CFXHandle, - Target = "inline-control" - }); - - if (validateresult == null) - { - return; - } - - var response = validateresult.MessageBody as ValidateUnitsResponse; - //响应逻辑 - } - catch (Exception ex) - { - - } - } - } -} diff --git a/Sln.Iot.CFX/CFXConnect/CFXConnect4.cs b/Sln.Iot.CFX/CFXConnect/CFXConnect4.cs deleted file mode 100644 index eac3d15..0000000 --- a/Sln.Iot.CFX/CFXConnect/CFXConnect4.cs +++ /dev/null @@ -1,132 +0,0 @@ -using CFX.InformationSystem.UnitValidation; -using CFX.ResourcePerformance; -using CFX.Structures; -using CFX; -using Sln.Iot.CFX.RequestReceived; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using CFX.Production; -using Sln.Iot.CFX.CFXRequestes; -using Sln.Iot.CFX.CFXBusiness; -using Sln.Iot.CFX.Event; - -namespace Sln.Iot.CFX.CFXConnect -{ - /// - /// 提升机2连接 - /// - public class CFXConnect4 : CFXHelper - { - private static readonly Lazy lazy = new Lazy(() => new CFXConnect4()); - - public static CFXConnect4 Instance - { - get - { - return lazy.Value; - } - } - - AreYouThereRequestReceived4 areYouThereRequestReceived4 = new AreYouThereRequestReceived4(); - GetEndpointInformationRequestReceived4 getEndpointInformationRequestReceived4 = new GetEndpointInformationRequestReceived4(); - WhoIsThereRequestReceived4 whoIsThereRequestReceived4 = new WhoIsThereRequestReceived4(); - GetActiveRecipeRequestReceived4 getActiveRecipeRequestReceived4 = new GetActiveRecipeRequestReceived4(); - GetActiveFaultsRequestReceived4 getActiveFaultsRequestReceived4 = new GetActiveFaultsRequestReceived4(); - HandleFaultRequestReceived4 handleFaultRequestReceived4 = new HandleFaultRequestReceived4(); - ModifyStationParametersRequestReceived4 modifyStationParametersRequestReceived4 = new ModifyStationParametersRequestReceived4(); - - //HeartbeatEvent heartbeatEvent = new HeartbeatEvent(); - - CFXEventTools cFXEventTools = CFXEventTools.Instance; - - public string CFXHandle { get; set; } = "CFX.A00.OT00470020"; - - protected override CFXMessage HandleRequest(CFXEnvelope request) - { - CFXMessage response = null; - - if (request.MessageBody is AreYouThereRequest) //存在性检测请求 - { - areYouThereRequestReceived4.Handle(request.MessageBody as AreYouThereRequest, out response); - } - else if (request.MessageBody is GetEndpointInformationRequest) //获取终端节点信息请求 - { - getEndpointInformationRequestReceived4.Handle(request.MessageBody as GetEndpointInformationRequest, out response); - } - else if (request.MessageBody is WhoIsThereRequest) //设备存在性查询请求 - { - whoIsThereRequestReceived4.Handle(request.MessageBody as WhoIsThereRequest, out response); - } - else if (request.MessageBody is GetActiveRecipeRequest) //获取当前激活配方请求 - { - getActiveRecipeRequestReceived4.Handle(request.MessageBody as GetActiveRecipeRequest, out response); - } - else if (request.MessageBody is GetActiveFaultsRequest) //获取当前错误状态请求 - { - getActiveFaultsRequestReceived4.Handle(request.MessageBody as GetActiveFaultsRequest, out response); - } - else if (request.MessageBody is HandleFaultRequest) //处理错误请求 - { - handleFaultRequestReceived4.Handle(request.MessageBody as HandleFaultRequest, out response); - } - else if (request.MessageBody is ModifyStationParametersRequest) //设备修改参数请求 - { - modifyStationParametersRequestReceived4.Handle(request.MessageBody as ModifyStationParametersRequest, out response); - } - else //不支持的请求类型 - { - response = new NotSupportedResponse() - { - RequestResult = new RequestResult() - { - Result = StatusResult.Failed, - ResultCode = 0, - Message = $"不支持的请求类型:{request.MessageBody.GetType().Name}" - } - }; - } - - return response; - } - - /// - /// 发送生产单元验证请求接收通知 - /// - public void SendValidateUnitsRequest(string uri, string primaryIdentifier, string[] unitsIdentifier) - { - try - { - ValidateUnitsRequest msg = new ValidateUnitsRequest() - { - Validations = new List() - { - ValidationType.UnitTraceValidation, - }, - PrimaryIdentifier = primaryIdentifier, - Units = cFXEventTools.UnitPositionTrans(unitsIdentifier) - }; - - var validateresult = Endpoint.ExecuteRequest(uri, new CFXEnvelope(msg) - { - Source = Endpoint.CFXHandle, - Target = "inline-control" - }); - - if (validateresult == null) - { - return; - } - - var response = validateresult.MessageBody as ValidateUnitsResponse; - //响应逻辑 - } - catch (Exception ex) - { - - } - } - } -} diff --git a/Sln.Iot.CFX/CFXConnect/CFXConnect2.cs b/Sln.Iot.CFX/CFXConnect/CFXConnectOven.cs similarity index 96% rename from Sln.Iot.CFX/CFXConnect/CFXConnect2.cs rename to Sln.Iot.CFX/CFXConnect/CFXConnectOven.cs index a507928..9960b98 100644 --- a/Sln.Iot.CFX/CFXConnect/CFXConnect2.cs +++ b/Sln.Iot.CFX/CFXConnect/CFXConnectOven.cs @@ -18,11 +18,11 @@ namespace Sln.Iot.CFX.CFXConnect /// /// 提升机1连接 /// - public class CFXConnect2 : CFXHelper + public class CFXConnectOven : CFXHelper { - private static readonly Lazy lazy = new Lazy(() => new CFXConnect2()); + private static readonly Lazy lazy = new Lazy(() => new CFXConnectOven()); - public static CFXConnect2 Instance + public static CFXConnectOven Instance { get { diff --git a/Sln.Iot.CFX/CFXConnect/CFXConnect1.cs b/Sln.Iot.CFX/CFXConnect/CFXConnectVacuum.cs similarity index 95% rename from Sln.Iot.CFX/CFXConnect/CFXConnect1.cs rename to Sln.Iot.CFX/CFXConnect/CFXConnectVacuum.cs index 6f3bbb5..f9acc7f 100644 --- a/Sln.Iot.CFX/CFXConnect/CFXConnect1.cs +++ b/Sln.Iot.CFX/CFXConnect/CFXConnectVacuum.cs @@ -18,11 +18,11 @@ namespace Sln.Iot.CFX.CFXConnect /// /// 真空箱连接 /// - public class CFXConnect1 : CFXHelper + public class CFXConnectVacuum : CFXHelper { - private static readonly Lazy lazy = new Lazy(() => new CFXConnect1()); + private static readonly Lazy lazy = new Lazy(() => new CFXConnectVacuum()); - public static CFXConnect1 Instance + public static CFXConnectVacuum Instance { get { diff --git a/Sln.Iot.CFX/CFXTest.cs b/Sln.Iot.CFX/CFXTest.cs index a3e2bd5..f9d26d1 100644 --- a/Sln.Iot.CFX/CFXTest.cs +++ b/Sln.Iot.CFX/CFXTest.cs @@ -17,9 +17,7 @@ namespace Sln.Iot.CFX /// public class CFXTest { - CFXConnect1 _cfxHelper = CFXConnect1.Instance; - CFXConnect2 _cfxHelper2 = CFXConnect2.Instance; - CFXConnect3 _cfxHelper3 = CFXConnect3.Instance; + CFXConnectOven _cfxHelper2 = CFXConnectOven.Instance; CFXUnitProcessedDataGet cFXUnitProcessedDataGet = CFXUnitProcessedDataGet.Instance; //HeartbeatEvent heartbeatEvent = new HeartbeatEvent(); diff --git a/Sln.Iot.Config/AppConfig.cs b/Sln.Iot.Config/AppConfig.cs index b570d4f..6e3a8b8 100644 --- a/Sln.Iot.Config/AppConfig.cs +++ b/Sln.Iot.Config/AppConfig.cs @@ -64,21 +64,11 @@ namespace Sln.Iot.Config /// public CFXConfig VacuumConfig { get; set; } - /// - /// CFX配置-提升机1 - /// - public CFXConfig Lift1Config { get; set; } - /// /// CFX配置-烤炉 /// public CFXConfig OvenConfig { get; set; } - /// - /// CFX配置-提升机2 - /// - public CFXConfig Lift2Config { get; set; } - /// /// MES的URL /// diff --git a/Sln.Iot.PLC/PLCConnect.cs b/Sln.Iot.PLC/PLCConnect.cs index eb79cf7..5916f3e 100644 --- a/Sln.Iot.PLC/PLCConnect.cs +++ b/Sln.Iot.PLC/PLCConnect.cs @@ -20,30 +20,30 @@ namespace Sln.Iot.PLC private readonly SerilogHelper _log = SerilogHelper.Instance; - /// - /// PLC1 192.168.1.20 烤箱 - /// - public DeltaTcpNet DeltaInstance0; + ///// + ///// PLC1 192.168.1.20 烤箱 + ///// + //public DeltaTcpNet VacuumPlc; /// - /// PLC1 192.168.1.21 真空箱1 + /// PLC1 192.168.1.21 胶机 /// - public DeltaTcpNet DeltaInstance1; + public DeltaTcpNet PLC21; /// - /// PLC2 192.168.1.22 真空箱2 + /// PLC2 192.168.1.22 真空箱 /// - public DeltaTcpNet DeltaInstance2; + public DeltaTcpNet PLC22; /// - /// PLC3 192.168.1.23 提升机1 + /// PLC3 192.168.1.23 接驳台1 /// - public DeltaTcpNet DeltaInstance3; + public DeltaTcpNet PLC23; /// - /// PLC4 192.168.1.24 提升机2 + /// PLC4 192.168.1.24 接驳台2 /// - public DeltaTcpNet DeltaInstance4; + public DeltaTcpNet PLC24; /// /// 锁对象1 @@ -54,7 +54,7 @@ namespace Sln.Iot.PLC { List> tasks = new List> { - CreateDeltaConnect("192.168.1.20", 502, 1), + //CreateDeltaConnect("192.168.1.20", 502, 1), CreateDeltaConnect("192.168.1.21", 502, 1), CreateDeltaConnect("192.168.1.22", 502, 1), CreateDeltaConnect("192.168.1.23", 502, 1), @@ -63,16 +63,16 @@ namespace Sln.Iot.PLC await Task.WhenAll(tasks); - DeltaInstance0 = tasks[0].GetAwaiter().GetResult(); - _log.Info($"PLC连接成功: {DeltaInstance0.IpAddress}"); - DeltaInstance1 = tasks[1].GetAwaiter().GetResult(); - _log.Info($"PLC连接成功: {DeltaInstance1.IpAddress}"); - DeltaInstance2 = tasks[2].GetAwaiter().GetResult(); - _log.Info($"PLC连接成功: {DeltaInstance2.IpAddress}"); - DeltaInstance3 = tasks[3].GetAwaiter().GetResult(); - _log.Info($"PLC连接成功: {DeltaInstance3.IpAddress}"); - DeltaInstance4 = tasks[4].GetAwaiter().GetResult(); - _log.Info($"PLC连接成功: {DeltaInstance4.IpAddress}"); + //DeltaInstance0 = tasks[0].GetAwaiter().GetResult(); + //_log.Info($"PLC连接成功: {DeltaInstance0.IpAddress}"); + PLC21 = tasks[0].GetAwaiter().GetResult(); + _log.Info($"PLC连接成功: {PLC21.IpAddress}"); + PLC22 = tasks[1].GetAwaiter().GetResult(); + _log.Info($"PLC连接成功: {PLC22.IpAddress}"); + PLC23 = tasks[2].GetAwaiter().GetResult(); + _log.Info($"PLC连接成功: {PLC23.IpAddress}"); + PLC24 = tasks[3].GetAwaiter().GetResult(); + _log.Info($"PLC连接成功: {PLC24.IpAddress}"); _log.Info("PLC连接全部成功"); } diff --git a/Sln.Iot.Repository/service/TrayBindingService.cs b/Sln.Iot.Repository/service/TrayBindingService.cs index 3a2b71f..6a3d8a4 100644 --- a/Sln.Iot.Repository/service/TrayBindingService.cs +++ b/Sln.Iot.Repository/service/TrayBindingService.cs @@ -202,5 +202,31 @@ namespace Sln.Iot.Repository.service return time2; } } + + /// + /// 根据时间字段索引获取时间值 + /// + public string GetTimeByTrayCode(string trayCode, string timeField) + { + try + { + var res = _helper.Query(t => t.TrayCode == trayCode).FirstOrDefault(); + if (res == null) return string.Empty; + + return timeField switch + { + "1" => res.Time1 ?? string.Empty, + "2" => res.Time2 ?? string.Empty, + "3" => res.Time3 ?? string.Empty, + "4" => res.Time4 ?? string.Empty, + _ => string.Empty + }; + } + catch (Exception ex) + { + _log.Error($"根据托盘码获取time{timeField}错误", ex); + return string.Empty; + } + } } } diff --git a/Sln.Iot.Touchsocket/Sln.Iot.Touchsocket.csproj b/Sln.Iot.Touchsocket/Sln.Iot.Touchsocket.csproj new file mode 100644 index 0000000..cfadb03 --- /dev/null +++ b/Sln.Iot.Touchsocket/Sln.Iot.Touchsocket.csproj @@ -0,0 +1,9 @@ + + + + net7.0 + enable + enable + + + diff --git a/Sln.Iot.Touchsocket/TouchSocketSetup.cs b/Sln.Iot.Touchsocket/TouchSocketSetup.cs new file mode 100644 index 0000000..c0982cb --- /dev/null +++ b/Sln.Iot.Touchsocket/TouchSocketSetup.cs @@ -0,0 +1,7 @@ +namespace Sln.Iot.Touchsocket +{ + public class TouchSocketSetup + { + + } +} diff --git a/Sln.Iot/Program.cs b/Sln.Iot/Program.cs index 58b1a7a..df85e51 100644 --- a/Sln.Iot/Program.cs +++ b/Sln.Iot/Program.cs @@ -74,36 +74,13 @@ namespace Sln.Iot //CFX接口启动 //真空注胶机 - CFXConnect1.Instance.Init(appConfig.VacuumConfig.CFXHandle, + CFXConnectOven.Instance.Init(appConfig.VacuumConfig.CFXHandle, new Uri(appConfig.VacuumConfig.LocalURI), new Uri(appConfig.VacuumConfig.UpperURI)); //提升机1 - CFXConnect2.Instance.Init(appConfig.Lift1Config.CFXHandle, + CFXConnectVacuum.Instance.Init(appConfig.Lift1Config.CFXHandle, new Uri(appConfig.Lift1Config.LocalURI), new Uri(appConfig.Lift1Config.UpperURI)); - //隧道烤箱 - CFXConnect3.Instance.Init(appConfig.OvenConfig.CFXHandle, - new Uri(appConfig.OvenConfig.LocalURI), - new Uri(appConfig.OvenConfig.UpperURI)); - //提升机2 - CFXConnect4.Instance.Init(appConfig.Lift2Config.CFXHandle, - new Uri(appConfig.Lift2Config.LocalURI), - new Uri(appConfig.Lift2Config.UpperURI)); - - ////CFX接口启动 - ////真空注胶机 - //CFXConnect1.Instance.Init("CFX.A00.SDSH000001", - // new Uri("amqp://127.0.0.1:1235"), - // new Uri("amqp://127.0.0.1:8888")); - ////升降回流 - //CFXConnect2.Instance.Init("CFX.A00.SDSH000002", - // new Uri("amqp://127.0.0.1:1235"), - // new Uri("amqp://127.0.0.1:8888")); - ////隧道烤箱 - //CFXConnect3.Instance.Init("CFX.A00.SDSH000003", - // new Uri("amqp://127.0.0.1:1235"), - // new Uri("amqp://127.0.0.1:8888")); - //业务类启动 BusinessStart business = new BusinessStart(); @@ -123,10 +100,8 @@ namespace Sln.Iot /// public static void ProgramClose() { - CFXConnect1.Instance.PublishEvent(new CFXEnvelope(new EndpointShuttingDownEvent().Handle(CFXConnect1.Instance.CFXHandle))); - CFXConnect2.Instance.PublishEvent(new CFXEnvelope(new EndpointShuttingDownEvent().Handle(CFXConnect2.Instance.CFXHandle))); - CFXConnect3.Instance.PublishEvent(new CFXEnvelope(new EndpointShuttingDownEvent().Handle(CFXConnect3.Instance.CFXHandle))); - CFXConnect4.Instance.PublishEvent(new CFXEnvelope(new EndpointShuttingDownEvent().Handle(CFXConnect4.Instance.CFXHandle))); + CFXConnectOven.Instance.PublishEvent(new CFXEnvelope(new EndpointShuttingDownEvent().Handle(CFXConnectOven.Instance.CFXHandle))); + CFXConnectVacuum.Instance.PublishEvent(new CFXEnvelope(new EndpointShuttingDownEvent().Handle(CFXConnectVacuum.Instance.CFXHandle))); } } } \ No newline at end of file diff --git a/Sln.Iot/appsettings.json b/Sln.Iot/appsettings.json index a9a8a6d..8d66e10 100644 --- a/Sln.Iot/appsettings.json +++ b/Sln.Iot/appsettings.json @@ -16,24 +16,12 @@ //上位系统URI "UpperURI": "http://10.148.192.32:8090/sensordata?sensorId=UploadMachineData" }, - "Lift1Config": { - "DeviceName": "Lift1", - "CFXHandle": "CFX.A00.OT00470019", - "LocalURI": "amqp://127.0.0.1:1236", - "UpperURI": "http://10.148.192.32:8090/sensordata?sensorId=UploadMachineData" - }, "OvenConfig": { "DeviceName": "Oven", "CFXHandle": "CFX.A00.OT00470017", "LocalURI": "amqp://127.0.0.1:1237", "UpperURI": "http://10.148.192.32:8090/sensordata?sensorId=UploadMachineData" - }, - "Lift2Config": { - "DeviceName": "Lift2", - "CFXHandle": "CFX.A00.OT00470020", - "LocalURI": "amqp://127.0.0.1:1238", - "UpperURI": "http://10.148.192.32:8090/sensordata?sensorId=UploadMachineData" - }, + } //MES连接地址和端口号 "MESURL": "http://10.148.192.32:8090", //MES连接接口地址