using CFX.Structures.PressInsertion; using CFX; using HslCommunication; using HslCommunication.Core; using Serilog; using Sln.Iot.CFX.CFXBusiness; 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.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace Sln.Iot.Business { public class TestBusiness { private Timer _timer; private readonly PLCConnect _plc = PLCConnect.Instance; private readonly SerilogHelper _log = SerilogHelper.Instance; private ErrorAnalyseBusiness _errorAnalyse; private RecipeBusiness _recipeBusiness; public TestBusiness() { _errorAnalyse = new ErrorAnalyseBusiness(); _recipeBusiness = new RecipeBusiness(); //_timer = new Timer(TimerCallback, null, 0, 1000); } /// /// RFID01上料提升机数据处理流程业务刷新 /// /// public void TimerCallback(object? state) { try { UnitsProcessPLCDataGetBusiness unitsProcessPLCDataGetBusiness = UnitsProcessPLCDataGetBusiness.Instance; var data1 = unitsProcessPLCDataGetBusiness.Vacuum1PlcDataGet(); var data2 = unitsProcessPLCDataGetBusiness.Vacuum2PlcDataGet(); var data3 = unitsProcessPLCDataGetBusiness.PreHeatOvenPlcDataGet(); var data4 = unitsProcessPLCDataGetBusiness.PreCureOvenPlcDataGet(); var data5 = unitsProcessPLCDataGetBusiness.CureOvenPlcDataGet(); data1.GlueAmountSetValue2 = data2.GlueAmountSetValue2; data1.GluePushSpeedSetValue2 = data2.GluePushSpeedSetValue2; data1.BarrelA1TempActValue2 = data2.BarrelA1TempActValue2; data1.BarrelA2TempActValue2 = data2.BarrelA2TempActValue2; data1.BarrelB1TempActValue2 = data2.BarrelB1TempActValue2; data1.BarrelB2TempActValue2 = data2.BarrelB2TempActValue2; data1.PumpAPressureActValue2 = data2.PumpAPressureActValue2; data1.PumpBPressureActValue2 = data2.PumpBPressureActValue2; data1.VacuumDegreeActValue2 = data2.VacuumDegreeActValue2; data1.PressureHoldTimeSetValue2 = data2.PressureHoldTimeSetValue2; _log.Info($"真空箱温度数据上传,\n " + $"GlueAmountSetValue1:{data1.GlueAmountSetValue1}\n " + $"GluePushSpeedSetValue1:{data1.GluePushSpeedSetValue1}\n " + $"BarrelA1TempActValue1:{data1.BarrelA1TempActValue1}\n " + $"BarrelA2TempActValue1:{data1.BarrelA2TempActValue1}\n " + $"BarrelB1TempActValue1:{data1.BarrelB1TempActValue1}\n " + $"BarrelB2TempActValue1:{data1.BarrelB2TempActValue1}\n " + $"PumpAPressureActValue1:{data1.PumpAPressureActValue1}\n " + $"PumpBPressureActValue1:{data1.PumpBPressureActValue1}\n " + $"VacuumDegreeActValue1:{data1.VacuumDegreeActValue1}\n " + $"PressureHoldTimeSetValue1:{data1.PressureHoldTimeSetValue1}\n " + $"GlueAmountSetValue2:{data1.GlueAmountSetValue2}\n " + $"GluePushSpeedSetValue2:{data1.GluePushSpeedSetValue2}\n " + $"BarrelA1TempActValue2:{data1.BarrelA1TempActValue2}\n " + $"BarrelA2TempActValue2:{data1.BarrelA2TempActValue2}\n " + $"BarrelB1TempActValue2:{data1.BarrelB1TempActValue2}\n " + $"BarrelB2TempActValue2:{data1.BarrelB2TempActValue2}\n " + $"PumpAPressureActValue2:{data1.PumpAPressureActValue2}\n " + $"PumpBPressureActValue2:{data1.PumpBPressureActValue2}\n " + $"VacuumDegreeActValue2:{data1.VacuumDegreeActValue2}\n " + $"PressureHoldTimeSetValue2:{data1.PressureHoldTimeSetValue2}"); _log.Info($"隧道烤箱温度数据上传,\n " + $"PreheatOvenTempActValue:{data3}\n " + $"PreCureOven1TempActValue:{data4.PreCureOven1TempActValue}\n " + $"PreCureOven2TempActValue:{data4.PreCureOven2TempActValue}\n " + $"PreCureOven3TempActValue:{data4.PreCureOven3TempActValue}\n " + $"PreCureOven4TempActValue:{data4.PreCureOven4TempActValue}\n " + $"CureOven1TempActValue:{data5.CureOven1TempActValue}\n " + $"CureOven2TempActValue:{data5.CureOven2TempActValue}\n " + $"CureOven3TempActValue:{data5.CureOven3TempActValue}\n " + $"CureOven4TempActValue:{data5.CureOven4TempActValue} "); ////var res = _plc.ReadBytes(_plc.DeltaInstance0, "D200", 9); ////var bytes = res.Content.Reverse().ToArray(); ////ushort[] shorts = new ushort[9]; ////if (bytes != null && bytes.Length != 0) ////{ //// shorts[0] = BitConverter.ToUInt16(bytes, 0); //// shorts[1] = BitConverter.ToUInt16(bytes, 2); //// shorts[2] = BitConverter.ToUInt16(bytes, 4); //// shorts[3] = BitConverter.ToUInt16(bytes, 6); //// shorts[4] = BitConverter.ToUInt16(bytes, 8); //// shorts[5] = BitConverter.ToUInt16(bytes, 10); //// shorts[6] = BitConverter.ToUInt16(bytes, 12); //// shorts[7] = BitConverter.ToUInt16(bytes, 14); //// shorts[8] = BitConverter.ToUInt16(bytes, 16); ////} ////for (int i = 0; i < 9; i++) ////{ //// _log.Info($"D20{i * 2}数值[{shorts[i].ToString()}]"); ////} ////读取托盘码和产品码 //OperateResult trayBytesResult = _plc.ReadBytes(_plc.DeltaInstance3, "D5000", 10); //OperateResult pordBytesResult = _plc.ReadBytes(_plc.DeltaInstance3, "D8000", 60); ////转换托盘码 //string traycode = Encoding.ASCII.GetString(trayBytesResult.Content); //_log.Info("RFID读数" + traycode); //byte[] prodBytes = pordBytesResult.Content; //string[] prodcode = new string[6]; ////分割转换产品码 //for (int i = 0; i < 6; i++) //{ // prodcode[i] = Encoding.ASCII.GetString(AscIIReverseTostring(prodBytes[(i * 20)..(i * 20 + 20)])); // _log.Info($"扫码枪读数{i + 1}是{prodcode[i]}"); //} } catch (Exception ex) { _log.Error("隧道炉温度读取失败", ex); } } public byte[] AscIIReverseTostring(byte[] bytes) { if (bytes.Length % 2 != 0) { return new byte[0]; } for (int i = 0; i < bytes.Length / 2; i++) { byte temp = bytes[i * 2]; bytes[i * 2] = bytes[i * 2 + 1]; bytes[i * 2 + 1] = temp; } return bytes; } } }