using Admin.Core.Common.Helper; using Admin.Core.IService.IService_New; using Admin.Core.Model.Model_New; using Aucma.Core.BoxFoam.Models; using Aucma.Core.HwPLc; using Aucma.Core.Tasks.Models; using Microsoft.Extensions.DependencyInjection; using NetTaste; using NPOI.HPSF; using NPOI.Util; using System; using System.Collections.Generic; using System.Linq; using System.Security.RightsManagement; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Documents; using Array = System.Array; namespace Aucma.Core.BoxFoam.Business { /// /// 采集发泡线数据 /// public class CollectionFoamLine { public delegate Task RefreshBoxFoamDataDelegate(List list); public static event RefreshBoxFoamDataDelegate RefreshBoxFoamDataDelegateEvent; private static System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); public static List spaceDetailModel = new List(); public static List listFixtureStatus = new List(); private readonly IRecordBoxFoamFixtureComplateServices _fixtureComplateServices; Semaphore semaphore = new Semaphore(1, 1); public CollectionFoamLine() { _fixtureComplateServices = App.ServiceProvider.GetService(); startCollect(); } public void startCollect() { Task.Run(() => { Thread.Sleep(3000); while (true) { try { // 1-6夹具 var plc1 = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc")); //7-12夹具 var plc2 = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine2Plc")); // 泡前库箱型和数量 var plc3 = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("泡前库Plc")); spaceDetailModel = ReadStoreTypeAndCount(plc3); //RefreshSpaceEvent?.Invoke(spaceDetailModel); List boxTypeList = ReadBoxType(plc1, plc2); List holderStatusList = ReadFixtureStatus(plc1, plc2); List holderOutPutList = ReadFixtureProduction(plc1, plc2); List planCuringTimeList = ReadPlanCuringTime(plc1, plc2); var mergedCollection = from boxType in boxTypeList join holderStatus in holderStatusList on new { boxType.ObjId } equals new { holderStatus.ObjId } join holderOutPut in holderOutPutList on new { boxType.ObjId } equals new { holderOutPut.ObjId } join planCuringTime in planCuringTimeList on new { boxType.ObjId } equals new { planCuringTime.ObjId } select new FixtureStatus { ObjId = boxType.ObjId, FixtureBoxType = boxType.FixtureBoxType, Status = holderStatus.Status, Yield = holderOutPut.Yield, PlanCuringTime = planCuringTime.PlanCuringTime }; listFixtureStatus = mergedCollection.ToList(); if (listFixtureStatus != null) { RefreshBoxFoamDataDelegateEvent?.Invoke(listFixtureStatus); List fixtureComplates = new List(); listFixtureStatus.ForEach(x => { fixtureComplates.Add(new RecordBoxFoamFixtureComplate() { ProductionLine = "CX_02", StationCode = "1005", FixtureCode = x.ObjId, FixtureBoxType = x.FixtureBoxType, FixtureStatus = x.Status, FixtureOutPut = x.Yield, PlanCuringTime = x.PlanCuringTime, RealCuringTime = x.RealCuringTime, RecordTime = DateTime.Now, }); }); var info = _fixtureComplateServices.SaveFixtureComplate(fixtureComplates, "CX_02", "1005"); } } catch (Exception ex) { Console.WriteLine($"箱体发泡线数据采集异常:{ex.Message}"); } Thread.Sleep(2000); } }); } /// /// 读取泡前库箱型和数量 /// static List ReadStoreTypeAndCount(HwPLc.PlcModel obj) { List spaceDetailModels = new List(); if (obj != null && obj.plc.IsConnected) { byte[] info = obj.plc.Read("DB200.0", 100); string str1 = asciiEncoding.GetString(info.Skip(6).Take(10).ToArray()).Replace("\0","").Trim('\n'); string str2 = asciiEncoding.GetString(info.Skip(18).Take(10).ToArray()).Replace("\0", "").Trim('\n'); string str3 = asciiEncoding.GetString(info.Skip(30).Take(10).ToArray()).Replace("\0", "").Trim('\n'); string str4 = asciiEncoding.GetString(info.Skip(42).Take(10).ToArray()).Replace("\0", "").Trim('\n'); string str5 = asciiEncoding.GetString(info.Skip(54).Take(10).ToArray()).Replace("\0", "").Trim('\n'); string str6 = asciiEncoding.GetString(info.Skip(66).Take(10).ToArray()).Replace("\0", "").Trim('\n'); Console.WriteLine($"读取泡前库箱型,1#:{str1};2#{str2};3#:{str3};4#:{str4};5#:{str5};6#:{str6}"); short temp1 = short.Parse(StringChange.bytesToHexStr(info.Skip(88).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp2 = short.Parse(StringChange.bytesToHexStr(info.Skip(90).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp3 = short.Parse(StringChange.bytesToHexStr(info.Skip(92).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp4 = short.Parse(StringChange.bytesToHexStr(info.Skip(94).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp5 = short.Parse(StringChange.bytesToHexStr(info.Skip(96).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp6 = short.Parse(StringChange.bytesToHexStr(info.Skip(98).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); Console.WriteLine($"读取泡前库数量,1#:{temp1};2#{temp2};3#:{temp3};4#:{temp4};5#:{temp5};6#:{temp6}"); spaceDetailModels.Add(new SpaceDetailModel() { ObjId = 1, StoreType = str1.ToString(), StoreAmount = temp1 }); spaceDetailModels.Add(new SpaceDetailModel() { ObjId = 2, StoreType = str2.ToString(), StoreAmount = temp2 }); spaceDetailModels.Add(new SpaceDetailModel() { ObjId = 3, StoreType = str3.ToString(), StoreAmount = temp3 }); spaceDetailModels.Add(new SpaceDetailModel() { ObjId = 4, StoreType = str4.ToString(), StoreAmount = temp4 }); spaceDetailModels.Add(new SpaceDetailModel() { ObjId = 5, StoreType = str5.ToString(), StoreAmount = temp5 }); spaceDetailModels.Add(new SpaceDetailModel() { ObjId = 6, StoreType = str6.ToString(), StoreAmount = temp6 }); } return spaceDetailModels; } /// /// 读取夹具箱型 /// static List ReadBoxType(HwPLc.PlcModel obj, HwPLc.PlcModel obj2) { List fixtureStatuses = new List(); #region 1-6夹具 if (obj != null && obj.plc.IsConnected) { byte[] result = obj.plc.Read("DB8.0", 12); if (result != null) { short str1 = short.Parse(StringChange.bytesToHexStr(result.Skip(0).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 1, FixtureBoxType = str1.ToString() }); short str2 = short.Parse(StringChange.bytesToHexStr(result.Skip(2).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 2, FixtureBoxType = str2.ToString() }); short str3 = short.Parse(StringChange.bytesToHexStr(result.Skip(4).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 3, FixtureBoxType = str3.ToString() }); short str4 = short.Parse(StringChange.bytesToHexStr(result.Skip(6).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 4, FixtureBoxType = str4.ToString() }); short str5 = short.Parse(StringChange.bytesToHexStr(result.Skip(8).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 5, FixtureBoxType = str5.ToString() }); short str6= short.Parse(StringChange.bytesToHexStr(result.Skip(10).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 6, FixtureBoxType = str6.ToString() }); Console.WriteLine($"读取夹具箱型,1#:{str1};2#{str2};3#:{str3};4#:{str4};5#:{str5};6#:{str6}"); } } #endregion #region 7-12夹具 if (obj2 != null && obj2.plc.IsConnected) { byte[] result = obj2.plc.Read("DB8.0",12 ); if (result != null) { short str1 = short.Parse(StringChange.bytesToHexStr(result.Skip(0).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 7, FixtureBoxType = str1.ToString() }); short str2 = short.Parse(StringChange.bytesToHexStr(result.Skip(2).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 8, FixtureBoxType = str2.ToString() }); short str3 = short.Parse(StringChange.bytesToHexStr(result.Skip(4).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId =9, FixtureBoxType = str3.ToString() }); short str4 = short.Parse(StringChange.bytesToHexStr(result.Skip(6).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 10, FixtureBoxType = str4.ToString() }); short str5 = short.Parse(StringChange.bytesToHexStr(result.Skip(8).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 11, FixtureBoxType = str5.ToString() }); short str6 = short.Parse(StringChange.bytesToHexStr(result.Skip(10).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); fixtureStatuses.Add(new FixtureStatus() { ObjId = 12, FixtureBoxType = str6.ToString() }); Console.WriteLine($"读取夹具箱型,1#:{str1};2#{str2};3#:{str3};4#:{str4};5#:{str5};6#:{str6}"); } } #endregion return fixtureStatuses; } /// /// 读取夹具状态 /// static List ReadFixtureStatus(HwPLc.PlcModel obj, HwPLc.PlcModel obj2) { List fixtureStatuses = new List(); #region 1-6夹具 if (obj != null && obj.plc.IsConnected) { byte[] info = obj.plc.Read("DB8.12", 13); if (info != null) { int temp1 = judgeStatus(ByteArrayToBinary(info.Skip(0).Take(1).ToArray())); int temp2 = judgeStatus(ByteArrayToBinary(info.Skip(2).Take(1).ToArray())); int temp3 = judgeStatus(ByteArrayToBinary(info.Skip(4).Take(1).ToArray())); int temp4 = judgeStatus(ByteArrayToBinary(info.Skip(6).Take(1).ToArray())); int temp5 = judgeStatus(ByteArrayToBinary(info.Skip(8).Take(1).ToArray())); int temp6 = judgeStatus(ByteArrayToBinary(info.Skip(10).Take(1).ToArray())); Console.WriteLine($"读取夹具状态,1#:{temp1};2#:{temp2};3#:{temp3};4#:{temp4};5#:{temp5};6#:{temp6}"); fixtureStatuses.Add(new FixtureStatus() { ObjId = 1, Status = temp1, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 2, Status = temp2, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 3, Status = temp3, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 4, Status = temp4, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 5, Status = temp5, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 6, Status = temp6, }); } } #endregion #region 7-12夹具 if (obj2 != null && obj2.plc.IsConnected) { byte[] info2 = obj2.plc.Read("DB8.12", 13); if (info2 != null) { int temp7 = judgeStatus(ByteArrayToBinary(info2.Skip(0).Take(1).ToArray())); int temp8 = judgeStatus(ByteArrayToBinary(info2.Skip(2).Take(1).ToArray())); int temp9 = judgeStatus(ByteArrayToBinary(info2.Skip(4).Take(1).ToArray())); int temp10 = judgeStatus(ByteArrayToBinary(info2.Skip(6).Take(1).ToArray())); int temp11 = judgeStatus(ByteArrayToBinary(info2.Skip(8).Take(1).ToArray())); int temp12 = judgeStatus(ByteArrayToBinary(info2.Skip(10).Take(1).ToArray())); Console.WriteLine($"读取夹具状态,7#:{temp7};8#:{temp8};9#:{temp9};10#:{temp10};11#:{temp11};12#:{temp12}"); fixtureStatuses.Add(new FixtureStatus() { ObjId = 7, Status = temp7, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 8, Status = temp8, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 9, Status = temp9, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 10, Status = temp10, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 11, Status = temp11, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 12, Status = temp12, }); } } #endregion return fixtureStatuses; } /// /// 读取夹具产量 /// static List ReadFixtureProduction(HwPLc.PlcModel obj, HwPLc.PlcModel obj2) { List fixtureStatuses = new List(); #region 1-6夹具产量 if (obj != null && obj.plc.IsConnected) { byte[] info = obj.plc.Read("DB8.24", 48); if (info != null) { int temp1 = int.Parse(StringChange.bytesToHexStr(info.Skip(0).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp2 = int.Parse(StringChange.bytesToHexStr(info.Skip(4).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp3 = int.Parse(StringChange.bytesToHexStr(info.Skip(8).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp4 = int.Parse(StringChange.bytesToHexStr(info.Skip(12).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp5 = int.Parse(StringChange.bytesToHexStr(info.Skip(16).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp6 = int.Parse(StringChange.bytesToHexStr(info.Skip(20).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); Console.WriteLine($"读取夹具产量,1#:{temp1};2#:{temp2};3#:{temp3};4#:{temp4};5#:{temp5};6#:{temp6}"); fixtureStatuses.Add(new FixtureStatus() { ObjId = 1, Yield = temp1, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 2, Yield = temp2, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 3, Yield = temp3, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 4, Yield = temp4, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 5, Yield = temp5, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 6, Yield = temp6, }); } } #endregion #region 7-12夹具产量 if (obj2 != null && obj2.plc.IsConnected) { byte[] info = obj2.plc.Read("DB8.24", 48); if (info != null) { int temp1 = int.Parse(StringChange.bytesToHexStr(info.Skip(0).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp2 = int.Parse(StringChange.bytesToHexStr(info.Skip(4).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp3 = int.Parse(StringChange.bytesToHexStr(info.Skip(8).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp4 = int.Parse(StringChange.bytesToHexStr(info.Skip(12).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp5 = int.Parse(StringChange.bytesToHexStr(info.Skip(16).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); int temp6 = int.Parse(StringChange.bytesToHexStr(info.Skip(20).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); Console.WriteLine($"读取夹具产量,1#:{temp1};2#:{temp2};3#:{temp3};4#:{temp4};5#:{temp5};6#:{temp6}"); fixtureStatuses.Add(new FixtureStatus() { ObjId = 7, Yield = temp1, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 8, Yield = temp2, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 9, Yield = temp3, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 10, Yield = temp4, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 11, Yield = temp5, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 12, Yield = temp6, }); } } #endregion return fixtureStatuses; } /// /// 固化时间设定值 /// static List ReadPlanCuringTime(HwPLc.PlcModel obj, HwPLc.PlcModel obj2) { List fixtureStatuses = new List(); #region 1-6夹具 if (obj != null && obj.plc.IsConnected) { byte[] info = obj.plc.Read("DB8.48", 12); if (info != null) { short temp1 = short.Parse(StringChange.bytesToHexStr(info.Skip(0).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp2 = short.Parse(StringChange.bytesToHexStr(info.Skip(2).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp3 = short.Parse(StringChange.bytesToHexStr(info.Skip(4).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp4 = short.Parse(StringChange.bytesToHexStr(info.Skip(6).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp5 = short.Parse(StringChange.bytesToHexStr(info.Skip(8).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp6 = short.Parse(StringChange.bytesToHexStr(info.Skip(10).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); Console.WriteLine($"读取固化时间,1#:{temp1};2#{temp2};3#:{temp3};4#:{temp4};5#:{temp5};6#:{temp6}"); fixtureStatuses.Add(new FixtureStatus() { ObjId = 1, PlanCuringTime = temp1, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 2, PlanCuringTime = temp2, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 3, PlanCuringTime = temp3, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 4, PlanCuringTime = temp4, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 5, PlanCuringTime = temp5, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 6, PlanCuringTime = temp6, }); } } #endregion #region 7-12夹具 if (obj2 != null && obj2.plc.IsConnected) { byte[] info = obj2.plc.Read("DB8.48", 12); if (info != null) { short temp1 = short.Parse(StringChange.bytesToHexStr(info.Skip(0).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp2 = short.Parse(StringChange.bytesToHexStr(info.Skip(2).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp3 = short.Parse(StringChange.bytesToHexStr(info.Skip(4).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp4 = short.Parse(StringChange.bytesToHexStr(info.Skip(6).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp5 = short.Parse(StringChange.bytesToHexStr(info.Skip(8).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); short temp6 = short.Parse(StringChange.bytesToHexStr(info.Skip(10).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber); Console.WriteLine($"读取固化时间,1#:{temp1};2#{temp2};3#:{temp3};4#:{temp4};5#:{temp5};6#:{temp6}"); fixtureStatuses.Add(new FixtureStatus() { ObjId = 7, PlanCuringTime = temp1, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 8, PlanCuringTime = temp2, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 9, PlanCuringTime = temp3, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 10, PlanCuringTime = temp4, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 11, PlanCuringTime = temp5, }); fixtureStatuses.Add(new FixtureStatus() { ObjId = 12, PlanCuringTime = temp6, }); } } #endregion return fixtureStatuses; } /// /// 发泡线状态 /// static void ReadLineStatus(HwPLc.PlcModel obj) { byte[] result = obj.plc.Read("DB8.630", 1); byte[] info = result; int temp1 = judgeStatus(ByteArrayToBinary(info.Skip(0).Take(1).ToArray())); Console.WriteLine($"发泡线状态:{temp1}"); } #region 字符工具转换方法 /// /// byte数组转换为float /// static float byteToFloat(byte[] list) { float result = 0.00f; Array.Reverse(list); result = BitConverter.ToSingle(list, 0); return result; } /// /// byte[]转二进制 /// /// static string ByteArrayToBinary(byte[] bytes) { StringBuilder binaryString = new StringBuilder(); foreach (byte b in bytes) { binaryString.Append(Convert.ToString(b, 2).PadLeft(8, '0')); } // Console.WriteLine(binaryString); string reversedStr = new string(binaryString.ToString().Reverse().ToArray()); // Console.WriteLine(reversedStr); return reversedStr; } /// /// 根据二进制字符串确定夹具状态 1正常生产 2暂停生产 /// static int judgeStatus(string str1) { int item1 = 0; if (str1.Substring(0, 1) == "1") { item1 = 1; // } else if (str1.Substring(1, 1) == "1") { item1 = 2; // } return item1; } } #endregion #region 注释方法 ///// ///// 固化时间显示值 ///// //static void ReadDisplayCuringTime(HwPLc.PlcModel obj, List ActualTimeList) //{ // if (obj == null) return; // if (obj.plc.IsConnected) // { // byte[] result = obj.plc.Read("DB8.242", 48); // byte[] info = result; // int temp1 = int.Parse(StringChange.bytesToHexStr(info.Skip(0).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp2 = int.Parse(StringChange.bytesToHexStr(info.Skip(4).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp3 = int.Parse(StringChange.bytesToHexStr(info.Skip(8).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp4 = int.Parse(StringChange.bytesToHexStr(info.Skip(12).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp5 = int.Parse(StringChange.bytesToHexStr(info.Skip(16).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp6 = int.Parse(StringChange.bytesToHexStr(info.Skip(20).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp7 = int.Parse(StringChange.bytesToHexStr(info.Skip(24).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp8 = int.Parse(StringChange.bytesToHexStr(info.Skip(28).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp9 = int.Parse(StringChange.bytesToHexStr(info.Skip(32).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp10 = int.Parse(StringChange.bytesToHexStr(info.Skip(36).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp11 = int.Parse(StringChange.bytesToHexStr(info.Skip(40).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // int temp12 = int.Parse(StringChange.bytesToHexStr(info.Skip(44).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber); // ActualTimeList.Add(temp1); // ActualTimeList.Add(temp2); // ActualTimeList.Add(temp3); // ActualTimeList.Add(temp4); // ActualTimeList.Add(temp5); // ActualTimeList.Add(temp6); // ActualTimeList.Add(temp7); // ActualTimeList.Add(temp8); // ActualTimeList.Add(temp9); // ActualTimeList.Add(temp10); // ActualTimeList.Add(temp11); // ActualTimeList.Add(temp12); // Console.WriteLine($"读取固化时间显示值,1#:{temp1};2#:{temp2};3#:{temp3};4#:{temp4};5#:{temp5};6#:{temp6}"); // Console.WriteLine($"读取固化时间显示值,7#:{temp7};8#:{temp8};9#:{temp9};10#:{temp10};11#:{temp11};12#:{temp12}"); // } //} ///// ///// 模具内外温度 ///// //static void ReadMoldTemperature(HwPLc.PlcModel obj, List MoldTemperatureList) //{ // if (obj == null) return; // if (obj.plc.IsConnected) // { // byte[] info = obj.plc.Read("DB8.294", 284); // float temp1 = byteToFloat(info.Skip(0).Take(4).ToArray()); // float temp2 = byteToFloat(info.Skip(16).Take(4).ToArray()); // float temp3 = byteToFloat(info.Skip(24).Take(4).ToArray()); // float temp4 = byteToFloat(info.Skip(40).Take(4).ToArray()); // float temp5 = byteToFloat(info.Skip(48).Take(4).ToArray()); // float temp6 = byteToFloat(info.Skip(64).Take(4).ToArray()); // float temp7 = byteToFloat(info.Skip(72).Take(4).ToArray()); // float temp8 = byteToFloat(info.Skip(88).Take(4).ToArray()); // float temp9 = byteToFloat(info.Skip(96).Take(4).ToArray()); // float temp10 = byteToFloat(info.Skip(112).Take(4).ToArray()); // float temp11 = byteToFloat(info.Skip(120).Take(4).ToArray()); // float temp12 = byteToFloat(info.Skip(136).Take(4).ToArray()); // float temp13 = byteToFloat(info.Skip(144).Take(4).ToArray()); // float temp14 = byteToFloat(info.Skip(160).Take(4).ToArray()); // float temp15 = byteToFloat(info.Skip(168).Take(4).ToArray()); // float temp16 = byteToFloat(info.Skip(184).Take(4).ToArray()); // float temp17 = byteToFloat(info.Skip(192).Take(4).ToArray()); // float temp18 = byteToFloat(info.Skip(208).Take(4).ToArray()); // float temp19 = byteToFloat(info.Skip(216).Take(4).ToArray()); // float temp20 = byteToFloat(info.Skip(232).Take(4).ToArray()); // float temp21 = byteToFloat(info.Skip(240).Take(4).ToArray()); // float temp22 = byteToFloat(info.Skip(256).Take(4).ToArray()); // float temp23 = byteToFloat(info.Skip(264).Take(4).ToArray()); // float temp24 = byteToFloat(info.Skip(280).Take(4).ToArray()); // MoldTemperatureList.Add(temp1); // MoldTemperatureList.Add(temp3); // MoldTemperatureList.Add(temp5); // MoldTemperatureList.Add(temp7); // MoldTemperatureList.Add(temp9); // MoldTemperatureList.Add(temp11); // MoldTemperatureList.Add(temp13); // MoldTemperatureList.Add(temp15); // MoldTemperatureList.Add(temp17); // MoldTemperatureList.Add(temp19); // MoldTemperatureList.Add(temp21); // MoldTemperatureList.Add(temp23); // MoldTemperatureList.Add(temp2); // MoldTemperatureList.Add(temp4); // MoldTemperatureList.Add(temp6); // MoldTemperatureList.Add(temp8); // MoldTemperatureList.Add(temp10); // MoldTemperatureList.Add(temp12); // MoldTemperatureList.Add(temp14); // MoldTemperatureList.Add(temp16); // MoldTemperatureList.Add(temp18); // MoldTemperatureList.Add(temp20); // MoldTemperatureList.Add(temp22); // MoldTemperatureList.Add(temp24); // } //} ///// ///// 生产节拍 ///// //static void ReadProductionCycle(HwPLc.PlcModel obj, List ProductionCycleList) //{ // if (obj == null) return; // if (obj.plc.IsConnected) // { // byte[] info = obj.plc.Read("DB8.578", 52); // float temp1 = byteToFloat(info.Skip(0).Take(4).ToArray()); // float temp2 = byteToFloat(info.Skip(4).Take(4).ToArray()); // float temp3 = byteToFloat(info.Skip(8).Take(4).ToArray()); // float temp4 = byteToFloat(info.Skip(12).Take(4).ToArray()); // float temp5 = byteToFloat(info.Skip(16).Take(4).ToArray()); // float temp6 = byteToFloat(info.Skip(20).Take(4).ToArray()); // float temp7 = byteToFloat(info.Skip(24).Take(4).ToArray()); // float temp8 = byteToFloat(info.Skip(28).Take(4).ToArray()); // float temp9 = byteToFloat(info.Skip(32).Take(4).ToArray()); // float temp10 = byteToFloat(info.Skip(36).Take(4).ToArray()); // float temp11 = byteToFloat(info.Skip(40).Take(4).ToArray()); // float temp12 = byteToFloat(info.Skip(44).Take(4).ToArray()); // // 平均节拍 // float temp13 = byteToFloat(info.Skip(48).Take(4).ToArray()); // ProductionCycleList.Add(temp1); // ProductionCycleList.Add(temp2); // ProductionCycleList.Add(temp3); // ProductionCycleList.Add(temp4); // ProductionCycleList.Add(temp5); // ProductionCycleList.Add(temp6); // ProductionCycleList.Add(temp7); // ProductionCycleList.Add(temp8); // ProductionCycleList.Add(temp9); // ProductionCycleList.Add(temp10); // ProductionCycleList.Add(temp11); // ProductionCycleList.Add(temp12); // } //} #endregion }