diff --git a/Admin.Core.Api/Admin.Core.Model.xml b/Admin.Core.Api/Admin.Core.Model.xml
index 9c1d5724..3542a5fc 100644
--- a/Admin.Core.Api/Admin.Core.Model.xml
+++ b/Admin.Core.Api/Admin.Core.Model.xml
@@ -1231,6 +1231,81 @@
更新时间
+
+
+ 夹具实时数据
+
+
+
+
+ 主键
+
+
+
+
+ 夹具序号
+
+
+
+
+ 产线编码
+
+
+
+
+ 夹具箱型
+
+
+
+
+ 夹具状态
+
+
+
+
+ 夹具产量
+
+
+
+
+ 夹具固化时间设定值
+
+
+
+
+ 夹具固化时间显示值
+
+
+
+
+ 模具内温度
+
+
+
+
+ 模具外温度
+
+
+
+
+ 创建人
+
+
+
+
+ 创建时间
+
+
+
+
+ 更新人
+
+
+
+
+ 更新时间
+
+
每日发泡信息数据记录表
diff --git a/Admin.Core.IRepository/IRepository_New/IBoxFoamDataRealTimeRepository.cs b/Admin.Core.IRepository/IRepository_New/IBoxFoamDataRealTimeRepository.cs
new file mode 100644
index 00000000..56d59f86
--- /dev/null
+++ b/Admin.Core.IRepository/IRepository_New/IBoxFoamDataRealTimeRepository.cs
@@ -0,0 +1,14 @@
+using Admin.Core.Model;
+using Admin.Core.Model.Model_New;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Admin.Core.IRepository
+{
+ ///
+ /// IBoxFoamDataRealTimeRepository
+ ///
+ public interface IBoxFoamDataRealTimeRepository : IBaseRepository
+ {
+ }
+}
\ No newline at end of file
diff --git a/Admin.Core.IService/IService_New/BoxDeviceInfoServices.cs b/Admin.Core.IService/IService_New/IBoxDeviceInfoServices.cs
similarity index 100%
rename from Admin.Core.IService/IService_New/BoxDeviceInfoServices.cs
rename to Admin.Core.IService/IService_New/IBoxDeviceInfoServices.cs
diff --git a/Admin.Core.IService/IService_New/IBoxFoamDataRealTimeServices.cs b/Admin.Core.IService/IService_New/IBoxFoamDataRealTimeServices.cs
new file mode 100644
index 00000000..dae46dbb
--- /dev/null
+++ b/Admin.Core.IService/IService_New/IBoxFoamDataRealTimeServices.cs
@@ -0,0 +1,16 @@
+using Admin.Core.IService;
+using Admin.Core.Model;
+using Admin.Core.Model.ViewModels;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Admin.Core.IService
+{
+ ///
+ /// IBoxFoamDataRealTimeServices
+ ///
+ public interface IBoxFoamDataRealTimeServices : IBaseServices
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Admin.Core.Model/Model_New/BoxFoamDataRealTime.cs b/Admin.Core.Model/Model_New/BoxFoamDataRealTime.cs
new file mode 100644
index 00000000..f9aa3f40
--- /dev/null
+++ b/Admin.Core.Model/Model_New/BoxFoamDataRealTime.cs
@@ -0,0 +1,99 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.Core.Model
+{
+ ///
+ /// 夹具实时数据
+ ///
+ [SugarTable("BOX_FOAMDATAREALTIME", "AUCMA_SCADA")]
+ public class BoxFoamDataRealTime
+ {
+ ///
+ /// 主键
+ ///
+ [SugarColumn(ColumnName = "OBJ_ID", IsPrimaryKey = true, IsIdentity = true)]
+ public int ObjId { get; set; }
+ ///
+ /// 夹具序号
+ ///
+ [SugarColumn(ColumnName = "SERIALNUMBER")]
+ public int SerialNumber { get; set; }
+ ///
+ /// 产线编码
+ ///
+ [SugarColumn(ColumnName = "PRODUCTLINE_CODE")]
+ public string ProductlineCode { get; set; }
+
+ ///
+ /// 夹具箱型
+ ///
+ [SugarColumn(ColumnName = "FIXTURE_BOXTYPE")]
+ public string FixtureBoxtype { get; set; }
+
+ ///
+ /// 夹具状态
+ ///
+ [SugarColumn(ColumnName = "FIXTURE_STATUS")]
+ public string FixtureStatus { get; set; }
+
+ ///
+ /// 夹具产量
+ ///
+ [SugarColumn(ColumnName = "FIXTURE_PRODUCTIONCAPACITY")]
+ public int FixtureProductioncapacity { get; set; }
+
+ ///
+ /// 夹具固化时间设定值
+ ///
+ [SugarColumn(ColumnName = "FIXTURE_CURINGTIMESETTINGVALUE")]
+ public string FixtureCuringtimesettingvalue { get; set; }
+
+ ///
+ /// 夹具固化时间显示值
+ ///
+ [SugarColumn(ColumnName = "FIXTURE_ACTUALTIME")]
+ public string FixtureActualtime { get; set; }
+
+ ///
+ /// 模具内温度
+ ///
+ [SugarColumn(ColumnName = "MODE_INTERNALTEMPERATURE")]
+ public string ModeInternaltemperature { get; set; }
+
+ ///
+ /// 模具外温度
+ ///
+ [SugarColumn(ColumnName = "MODE_OUTSIDETEMPERATURE")]
+ public string ModeOutsidetemperature { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ [SugarColumn(ColumnName = "CREATED_BY")]
+ public string CreatedBy { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [SugarColumn(ColumnName = "CREATED_TIME")]
+ public DateTime CreatedTime { get; set; }
+
+ ///
+ /// 更新人
+ ///
+ [SugarColumn(ColumnName = "UPDATED_BY")]
+ public string UpdatedBy { get; set; }
+
+ ///
+ /// 更新时间
+ ///
+ [SugarColumn(ColumnName = "UPDATED_TIME")]
+ public DateTime UpdatedTime { get; set; }
+
+ }
+}
diff --git a/Admin.Core.Repository/Repository_New/BoxFoamDataRealTimeRepositor.cs b/Admin.Core.Repository/Repository_New/BoxFoamDataRealTimeRepositor.cs
new file mode 100644
index 00000000..93e4a105
--- /dev/null
+++ b/Admin.Core.Repository/Repository_New/BoxFoamDataRealTimeRepositor.cs
@@ -0,0 +1,19 @@
+using Admin.Core.IRepository;
+using Admin.Core.Model;
+using Admin.Core.Model.Model_New;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Admin.Core.Repository
+{
+ ///
+ /// BaseBomInfoRepository
+ ///
+ public class BoxFoamDataRealTimeRepository : BaseRepository, IBoxFoamDataRealTimeRepository
+ {
+ public BoxFoamDataRealTimeRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
+ {
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Admin.Core.Service/Service_New/BoxFoamDataRealTimeServices.cs b/Admin.Core.Service/Service_New/BoxFoamDataRealTimeServices.cs
new file mode 100644
index 00000000..49b1a487
--- /dev/null
+++ b/Admin.Core.Service/Service_New/BoxFoamDataRealTimeServices.cs
@@ -0,0 +1,28 @@
+using Admin.Core.IRepository;
+using Admin.Core.IService;
+using Admin.Core.Model;
+using Admin.Core.Model.Model_New;
+using Admin.Core.Model.ViewModels;
+using log4net;
+using Microsoft.AspNetCore.Razor.TagHelpers;
+using Microsoft.IdentityModel.Logging;
+using NPOI.XSSF.UserModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace Admin.Core.Service
+{
+ public class BoxFoamDataRealTimeServices : BaseServices, IBoxFoamDataRealTimeServices
+ {
+ private readonly IBaseRepository _dal;
+
+ public BoxFoamDataRealTimeServices(IBaseRepository dal)
+ {
+ this._dal = dal;
+ base.BaseDal = dal;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs b/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs
index 711fcba8..54557acd 100644
--- a/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs
+++ b/Aucma.Core.BoxFoam/Business/CollectionFoamLine.cs
@@ -1,10 +1,12 @@
using Admin.Core.Common.Helper;
+using Aucma.Core.BoxFoam.Models;
using Aucma.Core.HwPLc;
using NetTaste;
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;
@@ -17,58 +19,157 @@ 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 listFixtureStatus = new List();
+
+ public static List BoxTypeList = new List();
+ public static List HolderStatusList = new List();
+ public static List HolderOutPutList = new List();
+ public static List SolidifyTimeList = new List();
+ public static List ActualTimeList = new List();
+ public static List MoldTemperatureList = new List();
+ Semaphore semaphore = new Semaphore(1, 1);
public CollectionFoamLine()
{
+ startCollect();
}
- public async void startCollect()
+
+ public void startCollect()
{
Task.Run(() =>
{
- Thread.Sleep(6000);
- var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));
- ReadBoxType(obj); // ok
- // ReadFixtureStatus(obj); //ok
- // ReadFixtureProduction(obj); //ok
- // ReadPlanCuringTime(obj); //ok
- // ReadDisplayCuringTime(obj); //ok
- // ReadMoldTemperature(obj);
- // ReadLineStatus(obj); //ok
+ while (true)
+ {
+ semaphore.WaitOne();
+ try
+ {
+ Thread.Sleep(3000);
+
+
+ var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));
+
+ if (obj != null)
+ {
+ BoxTypeList.Clear();
+ HolderStatusList.Clear();
+ HolderOutPutList.Clear();
+ SolidifyTimeList.Clear();
+ ActualTimeList.Clear();
+ listFixtureStatus.Clear();
+ ReadBoxType(obj, BoxTypeList); // ok
+ ReadFixtureStatus(obj, HolderStatusList); //ok
+ ReadFixtureProduction(obj, HolderOutPutList); //ok
+ ReadPlanCuringTime(obj, SolidifyTimeList); //ok
+ ReadDisplayCuringTime(obj, ActualTimeList); //ok
+ //ReadMoldTemperature(obj,MoldTemperatureList);
+ //ReadLineStatus(obj); //ok
+ // });
+
+ for (int i = 0; i < 12; i++)
+ {
+ FixtureStatus model = new FixtureStatus();
+ model.ObjId = i + 1;
+ if (BoxTypeList.Count > 0 && BoxTypeList != null)
+ {
+ model.FixtureBoxType = BoxTypeList[i].ToString();
+ }
+ else
+ {
+ model.FixtureBoxType = "";
+ }
+ if (HolderStatusList.Count > 0 && HolderStatusList != null)
+ {
+ model.Status = HolderStatusList[i];
+ }
+ else
+ {
+ model.Status = HolderStatusList[i];
+ }
+ if (HolderOutPutList.Count > 0 && HolderOutPutList != null)
+ {
+ model.Yield = HolderOutPutList[i];
+ }
+ else
+ {
+ model.Yield = 0;
+ }
+ if (SolidifyTimeList.Count > 0 && HolderOutPutList != null)
+ {
+ model.PlanCuringTime = SolidifyTimeList[i];
+ }
+ else
+ {
+ model.PlanCuringTime = 0;
+ }
+ listFixtureStatus.Add(model);
+ }
+ RefreshBoxFoamDataDelegateEvent?.Invoke(listFixtureStatus);
+ }
+ }
+ catch (Exception)
+ {
+
+ throw;
+ }
+ finally
+ {
+ semaphore.Release();
+ }
+ }
});
}
///
/// 读取夹具箱型
///
- static void ReadBoxType(HwPLc.PlcModel obj)
+ static void ReadBoxType(HwPLc.PlcModel obj, List boxTypeList)
{
if (obj == null) return;
- if (obj.plc.IsConnected)
+ else
{
- byte[] result = obj.plc.Read("DB8.0", 124);
- byte[] info = result;
-
- if (result == null) return;
- int str0 = int.Parse(StringChange.bytesToHexStr(info.Skip(0).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber);
- string str1 = asciiEncoding.GetString(result.Skip(4).Take(10).ToArray()).Trim('\n');
- string str2 = asciiEncoding.GetString(result.Skip(14).Take(10).ToArray()).Trim('\n');
- string str3 = asciiEncoding.GetString(result.Skip(24).Take(10).ToArray()).Trim('\n');
- string str4 = asciiEncoding.GetString(result.Skip(34).Take(10).ToArray()).Trim('\n');
- string str5 = asciiEncoding.GetString(result.Skip(44).Take(10).ToArray()).Trim('\n');
- string str6 = asciiEncoding.GetString(result.Skip(54).Take(10).ToArray()).Trim('\n');
- string str7 = asciiEncoding.GetString(result.Skip(64).Take(10).ToArray()).Trim('\n');
- string str8 = asciiEncoding.GetString(result.Skip(74).Take(10).ToArray()).Trim('\n');
- string str9 = asciiEncoding.GetString(result.Skip(84).Take(10).ToArray()).Trim('\n');
- string str10 = asciiEncoding.GetString(result.Skip(94).Take(10).ToArray()).Trim('\n');
- string str11 = asciiEncoding.GetString(result.Skip(104).Take(10).ToArray()).Trim('\n');
- string str12 = asciiEncoding.GetString(result.Skip(114).Take(10).ToArray()).Trim('\n');
-
+ if (obj.plc.IsConnected)
+ {
+ byte[] result = obj.plc.Read("DB8.0", 124);
+ byte[] info = result;
+
+ if (result == null) return;
+ int str0 = int.Parse(StringChange.bytesToHexStr(info.Skip(0).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber);
+ string str1 = asciiEncoding.GetString(result.Skip(4).Take(10).ToArray()).Trim('\n');
+ string str2 = asciiEncoding.GetString(result.Skip(14).Take(10).ToArray()).Trim('\n');
+ string str3 = asciiEncoding.GetString(result.Skip(24).Take(10).ToArray()).Trim('\n');
+ string str4 = asciiEncoding.GetString(result.Skip(34).Take(10).ToArray()).Trim('\n');
+ string str5 = asciiEncoding.GetString(result.Skip(44).Take(10).ToArray()).Trim('\n');
+ string str6 = asciiEncoding.GetString(result.Skip(54).Take(10).ToArray()).Trim('\n');
+ string str7 = asciiEncoding.GetString(result.Skip(64).Take(10).ToArray()).Trim('\n');
+ string str8 = asciiEncoding.GetString(result.Skip(74).Take(10).ToArray()).Trim('\n');
+ string str9 = asciiEncoding.GetString(result.Skip(84).Take(10).ToArray()).Trim('\n');
+ string str10 = asciiEncoding.GetString(result.Skip(94).Take(10).ToArray()).Trim('\n');
+ string str11 = asciiEncoding.GetString(result.Skip(104).Take(10).ToArray()).Trim('\n');
+ string str12 = asciiEncoding.GetString(result.Skip(114).Take(10).ToArray()).Trim('\n');
+ boxTypeList.Add(str1);
+ boxTypeList.Add(str2);
+ boxTypeList.Add(str3);
+ boxTypeList.Add(str4);
+ boxTypeList.Add(str5);
+ boxTypeList.Add(str6);
+ boxTypeList.Add(str7);
+ boxTypeList.Add(str8);
+ boxTypeList.Add(str9);
+ boxTypeList.Add(str10);
+ boxTypeList.Add(str11);
+ boxTypeList.Add(str12);
+ }
}
+
}
-
+
///
/// 读取夹具状态
///
- static void ReadFixtureStatus(HwPLc.PlcModel obj)
+ static void ReadFixtureStatus(HwPLc.PlcModel obj, List HolderStatusList)
{
byte[] result = obj.plc.Read("DB8.122", 23);
byte[] info = result;
@@ -84,6 +185,19 @@ namespace Aucma.Core.BoxFoam.Business
int temp10 = judgeStatus(ByteArrayToBinary(info.Skip(18).Take(1).ToArray()));
int temp11 = judgeStatus(ByteArrayToBinary(info.Skip(20).Take(1).ToArray()));
int temp12 = judgeStatus(ByteArrayToBinary(info.Skip(22).Take(1).ToArray()));
+
+ HolderStatusList.Add(temp1);
+ HolderStatusList.Add(temp2);
+ HolderStatusList.Add(temp3);
+ HolderStatusList.Add(temp4);
+ HolderStatusList.Add(temp5);
+ HolderStatusList.Add(temp6);
+ HolderStatusList.Add(temp7);
+ HolderStatusList.Add(temp8);
+ HolderStatusList.Add(temp9);
+ HolderStatusList.Add(temp10);
+ HolderStatusList.Add(temp11);
+ HolderStatusList.Add(temp11);
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}");
@@ -92,7 +206,7 @@ namespace Aucma.Core.BoxFoam.Business
///
/// 读取夹具产量
///
- static void ReadFixtureProduction(HwPLc.PlcModel obj)
+ static void ReadFixtureProduction(HwPLc.PlcModel obj, List HolderOutPutList)
{
if (obj == null) return;
if (obj.plc.IsConnected)
@@ -111,6 +225,19 @@ namespace Aucma.Core.BoxFoam.Business
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);
+
+ HolderOutPutList.Add(temp1);
+ HolderOutPutList.Add(temp2);
+ HolderOutPutList.Add(temp3);
+ HolderOutPutList.Add(temp4);
+ HolderOutPutList.Add(temp5);
+ HolderOutPutList.Add(temp6);
+ HolderOutPutList.Add(temp7);
+ HolderOutPutList.Add(temp8);
+ HolderOutPutList.Add(temp9);
+ HolderOutPutList.Add(temp10);
+ HolderOutPutList.Add(temp11);
+ HolderOutPutList.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}");
}
@@ -119,7 +246,7 @@ namespace Aucma.Core.BoxFoam.Business
///
/// 固化时间设定值
///
- static void ReadPlanCuringTime(HwPLc.PlcModel obj)
+ static void ReadPlanCuringTime(HwPLc.PlcModel obj, List SolidifyTimeList)
{
if (obj == null) return;
if (obj.plc.IsConnected)
@@ -138,6 +265,20 @@ namespace Aucma.Core.BoxFoam.Business
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);
+
+
+ SolidifyTimeList.Add(temp1);
+ SolidifyTimeList.Add(temp2);
+ SolidifyTimeList.Add(temp3);
+ SolidifyTimeList.Add(temp4);
+ SolidifyTimeList.Add(temp5);
+ SolidifyTimeList.Add(temp6);
+ SolidifyTimeList.Add(temp7);
+ SolidifyTimeList.Add(temp8);
+ SolidifyTimeList.Add(temp9);
+ SolidifyTimeList.Add(temp10);
+ SolidifyTimeList.Add(temp11);
+ SolidifyTimeList.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}");
}
@@ -146,7 +287,7 @@ namespace Aucma.Core.BoxFoam.Business
///
/// 固化时间显示值
///
- static void ReadDisplayCuringTime(HwPLc.PlcModel obj)
+ static void ReadDisplayCuringTime(HwPLc.PlcModel obj, List ActualTimeList)
{
if (obj == null) return;
if (obj.plc.IsConnected)
@@ -165,6 +306,20 @@ namespace Aucma.Core.BoxFoam.Business
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}");
}
@@ -174,7 +329,7 @@ namespace Aucma.Core.BoxFoam.Business
///
/// 模具内外温度
///
- static void ReadMoldTemperature(HwPLc.PlcModel obj)
+ static void ReadMoldTemperature(HwPLc.PlcModel obj, List MoldTemperatureList)
{
if (obj == null) return;
if (obj.plc.IsConnected)
@@ -201,6 +356,20 @@ namespace Aucma.Core.BoxFoam.Business
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);
+
+ MoldTemperatureList.Add(temp1);
+ MoldTemperatureList.Add(temp2);
+ MoldTemperatureList.Add(temp3);
+ MoldTemperatureList.Add(temp4);
+ MoldTemperatureList.Add(temp5);
+ MoldTemperatureList.Add(temp6);
+ MoldTemperatureList.Add(temp7);
+ MoldTemperatureList.Add(temp8);
+ MoldTemperatureList.Add(temp9);
+ MoldTemperatureList.Add(temp10);
+ MoldTemperatureList.Add(temp11);
+ MoldTemperatureList.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}");
}
diff --git a/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs b/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs
index d82cf3b4..455e8f1f 100644
--- a/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs
+++ b/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs
@@ -107,10 +107,10 @@ namespace Aucma.Core.BoxFoam.Business
private List spaceAddresses = new List();
private SemaphoreSlim _lock = new SemaphoreSlim(1);
private static int AAA = 1;
- public CollectionFoamLine coll = new CollectionFoamLine();
+ //public CollectionFoamLine coll = new CollectionFoamLine();
public void init()
{
- coll.startCollect();
+ //coll.startCollect();
allSpaces = _baseSpaceInfoServices.Query(x => x.StoreCode == storeCode);
foreach (var space in allSpaces)
{
diff --git a/Aucma.Core.BoxFoam/Models/FixtureStatus.cs b/Aucma.Core.BoxFoam/Models/FixtureStatus.cs
new file mode 100644
index 00000000..caacab4c
--- /dev/null
+++ b/Aucma.Core.BoxFoam/Models/FixtureStatus.cs
@@ -0,0 +1,50 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Aucma.Core.BoxFoam.Models
+{
+ ///
+ /// plc夹具状态
+ ///
+ public class FixtureStatus
+ {
+ public int ObjId { get; set; }
+ ///
+ /// 夹具箱型
+ ///
+ public string FixtureBoxType { get; set; }
+ ///
+ /// 夹具状态
+ ///
+ public int Status { get; set; }
+ ///
+ /// 夹具产量
+ ///
+ public int Yield { get; set; }
+ ///
+ /// 固化时间设定值
+ ///
+ public int PlanCuringTime { get; set; }
+
+ ///
+ /// 固化时间显示值
+ ///
+ public int RealCuringTime { get; set; }
+ ///
+ /// 内模温度
+ ///
+ public string InternalTemperature { get; set; }
+ ///
+ /// 外膜温度
+ ///
+ public string OutsideTemperature { get; set; }
+ /////
+ ///// 生产节拍
+ /////
+ public int ProductionCycle { get; set; }
+ }
+}
diff --git a/Aucma.Core.BoxFoam/ViewModels/FoamMonitorPageViewModel.cs b/Aucma.Core.BoxFoam/ViewModels/FoamMonitorPageViewModel.cs
index 81b9bb85..13d4b476 100644
--- a/Aucma.Core.BoxFoam/ViewModels/FoamMonitorPageViewModel.cs
+++ b/Aucma.Core.BoxFoam/ViewModels/FoamMonitorPageViewModel.cs
@@ -14,20 +14,48 @@ using Admin.Core.Service;
using Microsoft.Extensions.DependencyInjection;
using Admin.Core.Common;
using Admin.Core.Tasks;
+using Aucma.Core.BoxFoam.Business;
+using System.Windows.Shapes;
+using System.Timers;
+using Aucma.Core.BoxFoam.Models;
+using Admin.Core.Model;
+using Admin.Core.Model.Model_New;
+using Admin.Core.Model.ViewModels;
+using System.Threading;
+using Aucma.Core.HwPLc;
namespace Aucma.Core.BoxFoam.ViewModels
{
public partial class FoamMonitorPageViewModel : ObservableObject
{
private readonly IBoxFoamDataServices _boxFoamDataServices;
+ private readonly ICurrentTeamTimeServices _currentTeamTimeServices;
+ private readonly IBoxFoamDataServices? _oldBoxFoamDataServices;
+ private readonly IBoxFoamPlanServices _boxFoamPlanServices;
+ private readonly ISysUserInfoServices _sysUserInfoServices;
+ private readonly IBoxFoamDataRecordServices _boxFoamDataRecordServices;
+ private readonly IBoxFoamDataRealTimeServices? _boxFoamDataRealTimeServices;
+ System.Timers.Timer timer2 = new System.Timers.Timer(1000);
+
+ int totalAmount = 0;
+
public FoamMonitorPageViewModel()
{
+ _boxFoamDataRealTimeServices = App.ServiceProvider.GetService();
+ _boxFoamDataRecordServices = App.ServiceProvider.GetService();
+ _currentTeamTimeServices = App.ServiceProvider.GetService();
_boxFoamDataServices = App.ServiceProvider.GetService();
- Job_BoxFoamData_Quartz.RefreshBoxFoamDataDelegateEvent += InitData;
+ CollectionFoamLine.RefreshBoxFoamDataDelegateEvent += InitData;
+
+ timer2.Elapsed += new System.Timers.ElapsedEventHandler(RealTimeFoamingTask); //到达时间的时候执行事件;
+ timer2.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
+ timer2.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它,
+ timer2.Start();//timer.Start()的内部原理还是设置timer.Enabled = true
- Task.WaitAll(InitEveryDayMethod(), InitData());
+ //Task.WaitAll(InitData());
}
+
#region 日产量
///
/// 每日生产
@@ -171,7 +199,7 @@ namespace Aucma.Core.BoxFoam.ViewModels
#endregion
#region 总计
- private int _totle = 0;
+ private int _totle;
public int Totle
{
get => _totle;
@@ -254,37 +282,127 @@ namespace Aucma.Core.BoxFoam.ViewModels
/// 初始化发泡数据
///
///
- public async Task InitData()
+ public async Task InitData(List list)
{
try
{
int total = 0;
- var list = await _boxFoamDataServices.QueryAsync();
+
if (list == null) return;
+ FixtureName.Clear();
+ Production.Clear();
+ Beat.Clear();
+ InternalTemperature.Clear();
+ OutsideTemperature.Clear();
foreach (var item in list)
{
- if (item.Fixturestatus == 1) StatusColor.Add("Green");
- if (item.Fixturestatus == 0) StatusColor.Add("Red");
-
+ if (item.Status == 1) StatusColor.Add("Green");
+ if (item.Status == 0) StatusColor.Add("Red");
- FixtureName.Add(item.Fixtureboxtype);
- Production.Add(item.Production.ToString());
- //FoamVolume.Add(item.v);
+ FixtureName.Add(item.FixtureBoxType);
+ Production.Add(item.Yield.ToString());
//InternalTemperature.Add(item.BoxClosebetatemperature.ToString());
//OutsideTemperature.Add(item.BoxFixturesideplate.ToString());
- Beat.Add(item.BoxBeat);
+ Beat.Add(item.ProductionCycle);
- total += item.Production;
+ totalAmount = totalAmount + item.Yield;
}
- Totle = total;
+ Totle = totalAmount;
}
- catch
+ catch(Exception ex)
{
+ Console.WriteLine(ex.Message.ToString());
+ }
+ }
+ #endregion
+ Semaphore semaphore = new Semaphore(1, 1);
+ ///
+ /// 将采集到的数据保存
+ ///
+ ///
+
+ public async void RealTimeFoamingTask(object? sender, ElapsedEventArgs e)
+ {
+ semaphore.WaitOne();
+ try
+ {
+ List bLis = CollectionFoamLine.listFixtureStatus;
+ if (bLis.Count == 0) return;
+
+ List bfds = await _boxFoamDataRealTimeServices.QueryAsync();
+ for (int j = 0; j < bLis.Count; j++)
+ {
+ try
+ {
+ BoxFoamDataRealTime bfd = bfds.SingleOrDefault(d => d.FixtureBoxtype == bLis[j].FixtureBoxType && d.SerialNumber == bLis[j].ObjId);
+ if (bfd!=null)
+ {
+ UpdateClampData(bLis[j], bfd);
+ }
+ else
+ {
+ FixtureStatus fixtureStatus = bLis[j];
+ SaveClampData(fixtureStatus);
+ }
+ }
+ catch { }
+ }
}
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
+ finally
+ {
+ semaphore.Release();
+ }
+ }
+
+ #region 更新夹具型号
+ ///
+ /// 更新夹具型号
+ ///
+ public async void UpdateClampData(FixtureStatus fixtureStatus, BoxFoamDataRealTime bfd)
+ {
+ bfd.FixtureBoxtype = fixtureStatus.FixtureBoxType;
+ bfd.ProductlineCode = Appsettings.app("StoreInfo", "ProductlineCode");
+ bfd.FixtureStatus = fixtureStatus.Status.ToString();
+ bfd.FixtureProductioncapacity = fixtureStatus.Yield;
+ bfd.FixtureCuringtimesettingvalue = fixtureStatus.PlanCuringTime.ToString();
+ bfd.FixtureActualtime = fixtureStatus.RealCuringTime.ToString();
+ bfd.ModeInternaltemperature = fixtureStatus.InternalTemperature;
+ bfd.ModeOutsidetemperature = fixtureStatus.InternalTemperature;
+ bfd.UpdatedTime = DateTime.Now;
+
+ await _boxFoamDataRealTimeServices.UpdateAsync(bfd);
+ }
+ #endregion
- }
+ #region 新增夹具型号
+ ///
+ /// 更新夹具型号
+ ///
+ public async void SaveClampData(FixtureStatus fixtureStatus)
+ {
+ BoxFoamDataRealTime bfd=new BoxFoamDataRealTime();
+
+ bfd.ProductlineCode = Appsettings.app("StoreInfo", "ProductlineCode");
+ bfd.SerialNumber = fixtureStatus.ObjId;
+ bfd.FixtureBoxtype = fixtureStatus.FixtureBoxType;
+ bfd.FixtureStatus = fixtureStatus.Status.ToString();
+ bfd.FixtureProductioncapacity = fixtureStatus.Yield;
+ bfd.FixtureCuringtimesettingvalue = fixtureStatus.PlanCuringTime.ToString();
+ bfd.FixtureActualtime = fixtureStatus.RealCuringTime.ToString();
+ bfd.ModeInternaltemperature = fixtureStatus.InternalTemperature;
+ bfd.ModeOutsidetemperature = fixtureStatus.InternalTemperature;
+ bfd.CreatedTime = DateTime.Now;
+ bfd.UpdatedTime = DateTime.Now;
+
+ await _boxFoamDataRealTimeServices.AddAsync(bfd);
+ }
#endregion
+
}
}
diff --git a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
index 347ea329..3b8c0389 100644
--- a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
+++ b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
@@ -11,6 +11,7 @@ using Aucma.Core.PLc;
using Aucma.Core.Scanner;
using System.Linq;
using System.Threading.Tasks;
+using Aucma.Core.BoxFoam.Business;
namespace Aucma.Core.BoxFoam.ViewModels
{
@@ -18,11 +19,10 @@ namespace Aucma.Core.BoxFoam.ViewModels
{
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(MainWindowViewModel));
private IndexPageView firstPage = new IndexPageView();//首页
-
+ CollectionFoamLine line=new CollectionFoamLine();
public MainWindowViewModel()
{
UserContent = firstPage;
-
Task.Run(() =>
{
init();
diff --git a/Aucma.Core.BoxFoam/appsettings.json b/Aucma.Core.BoxFoam/appsettings.json
index e097f518..06d8764a 100644
--- a/Aucma.Core.BoxFoam/appsettings.json
+++ b/Aucma.Core.BoxFoam/appsettings.json
@@ -218,7 +218,8 @@
"ShellInventoryStoreCode": "XKJCK-001",
"LinerInventory": "NDJCK-001",
"AfterStoreCode": "FPJCK-001",
- "BeforeStoreCode": "PBSCK-001"
+ "BeforeStoreCode": "PBSCK-001",
+ "ProductlineCode": "CX_02"
},
"IpRateLimiting": {
"EnableEndpointRateLimiting": false, //False: globally executed, true: executed for each
diff --git a/Aucma.Core.HwPLc/Impl/SiemensPlc.cs b/Aucma.Core.HwPLc/Impl/SiemensPlc.cs
index f805ec39..2dfc82cd 100644
--- a/Aucma.Core.HwPLc/Impl/SiemensPlc.cs
+++ b/Aucma.Core.HwPLc/Impl/SiemensPlc.cs
@@ -75,7 +75,7 @@ namespace Aucma.Core.HwPLc
///
public bool Connect(string iP, int port)
{
- siemensS7Net.IpAddress = iP;//正式环境开启
+ //siemensS7Net.IpAddress = iP;//正式环境开启
siemensS7Net.Port = port;
try
{
diff --git a/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs b/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs
index 17db22a0..1cd0d112 100644
--- a/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs
+++ b/Aucma.Core.OldBoxFoam/ViewModels/OldBoxFoamPageViewModel.cs
@@ -33,17 +33,16 @@ namespace Aucma.Core.OldBoxFoam.ViewModels
{
IBoxFoamDataServices? _oldBoxFoamDataServices;
IOldBoxFoamTypeServices _oldBoxFoamTypeServices;
- public static System.Threading.Timer GetStoreTimer;
private readonly IBoxFoamPlanServices _boxFoamPlanServices;
private readonly ISysUserInfoServices _sysUserInfoServices;
private readonly ICurrentTeamTimeServices _currentTeamTimeServices;
private readonly IBoxFoamDataRecordServices _boxFoamDataRecordServices;
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(OldBoxFoamPageViewModel));
Collection collection = new Collection();
- System.Timers.Timer timer1 = new System.Timers.Timer(5000);
System.Timers.Timer timer2 = new System.Timers.Timer(3000);
int totalAmount = 0;
bool flag = true;
+
public OldBoxFoamPageViewModel() {
_oldBoxFoamDataServices = App.ServiceProvider.GetService();
_oldBoxFoamTypeServices = App.ServiceProvider.GetService();
@@ -104,14 +103,6 @@ namespace Aucma.Core.OldBoxFoam.ViewModels
{
log.Error("获取库存接口数据异常." + ex.Message);
}
- finally
- {
-
- if (GetStoreTimer != null)
- {
- GetStoreTimer.Change(20000, Timeout.Infinite);
- }
- }
}
public async Task OldBoxFoamOnLoad3()
{
@@ -148,14 +139,6 @@ namespace Aucma.Core.OldBoxFoam.ViewModels
{
log.Error("获取库存接口数据异常." + ex.Message);
}
- finally
- {
-
- if (GetStoreTimer != null)
- {
- GetStoreTimer.Change(20000, Timeout.Infinite);
- }
- }
}
public async Task OldBoxFoamTypeOnLoad()
{
diff --git a/Aucma.Core.OldBoxFoam/appsettings.json b/Aucma.Core.OldBoxFoam/appsettings.json
index 4d987628..a26d0c96 100644
--- a/Aucma.Core.OldBoxFoam/appsettings.json
+++ b/Aucma.Core.OldBoxFoam/appsettings.json
@@ -198,16 +198,16 @@
"PLCServer": [
{
"Id": 1,
- "PlcType": "Melsec",
+ "PlcType": "Siemens",
"Enabled": true,
- "EquipName": "OldMelsecPlc1",
+ "EquipName": "foamLine1Plc",
"IP": "10.10.93.151",
- "Port": 5002
+ "Port": 102
},
{
"Id": 2,
"PlcType": "Melsec",
- "Enabled": true,
+ "Enabled": false,
"EquipName": "OldMelsecPlc2",
"IP": "10.10.93.152",
"Port": 5002
@@ -215,7 +215,7 @@
{
"Id": 3,
"PlcType": "Melsec",
- "Enabled": true,
+ "Enabled": false,
"EquipName": "OldMelsecPlc3",
"IP": "10.10.93.153",
"Port": 5002
@@ -223,7 +223,7 @@
{
"Id": 4,
"PlcType": "Melsec",
- "Enabled": true,
+ "Enabled": false,
"EquipName": "OldMelsecPlc4",
"IP": "10.10.93.154",
"Port": 5002
diff --git a/Aucma.Core.SheetMetal/ViewModels/QuantityIssuedViewModel.cs b/Aucma.Core.SheetMetal/ViewModels/QuantityIssuedViewModel.cs
index b52b6cad..128c0a86 100644
--- a/Aucma.Core.SheetMetal/ViewModels/QuantityIssuedViewModel.cs
+++ b/Aucma.Core.SheetMetal/ViewModels/QuantityIssuedViewModel.cs
@@ -64,14 +64,9 @@ namespace Aucma.Core.SheetMetal.ViewModels
var productPlanInfo = _PlanInfo;
if (productPlanInfo != null)
{
- //下传到PLC
string stationCode = Appsettings.app("StoreInfo", "StationCode");
var list = await _executePlanInfoServices.QueryAsync(d => d.ProductLineCode.Equals(stationCode));
- if (list==null)
- {
- MessageBox.Show("未查询到计划!", "系统提醒");
- return;
- }
+
ExecutePlanInfo task = new ExecutePlanInfo();
task.ExecutePlanCode = Guid.NewGuid().ToString();
task.ProductPlanCode = PlanInfo.PlanCode;
@@ -79,6 +74,7 @@ namespace Aucma.Core.SheetMetal.ViewModels
task.MaterialCode = PlanInfo.MaterialCode;
task.MaterialName = PlanInfo.MaterialName;
task.ProductLineCode = stationCode;//计划工位
+
if (list.Count == 0)
task.ExecuteOrder = 1;
if (list.Count != 0)