liuwf 1 year ago
commit eaf3f789b4

@ -1231,6 +1231,81 @@
更新时间
</summary>
</member>
<member name="T:Admin.Core.Model.BoxFoamDataRealTime">
<summary>
夹具实时数据
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.ObjId">
<summary>
主键
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.SerialNumber">
<summary>
夹具序号
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.ProductlineCode">
<summary>
产线编码
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.FixtureBoxtype">
<summary>
夹具箱型
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.FixtureStatus">
<summary>
夹具状态
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.FixtureProductioncapacity">
<summary>
夹具产量
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.FixtureCuringtimesettingvalue">
<summary>
夹具固化时间设定值
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.FixtureActualtime">
<summary>
夹具固化时间显示值
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.ModeInternaltemperature">
<summary>
模具内温度
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.ModeOutsidetemperature">
<summary>
模具外温度
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.CreatedBy">
<summary>
创建人
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.CreatedTime">
<summary>
创建时间
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.UpdatedBy">
<summary>
更新人
</summary>
</member>
<member name="P:Admin.Core.Model.BoxFoamDataRealTime.UpdatedTime">
<summary>
更新时间
</summary>
</member>
<member name="T:Admin.Core.Model.BoxFoamDataRecord">
<summary>
每日发泡信息数据记录表

@ -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
{
/// <summary>
/// IBoxFoamDataRealTimeRepository
/// </summary>
public interface IBoxFoamDataRealTimeRepository : IBaseRepository<BoxFoamDataRealTime>
{
}
}

@ -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
{
/// <summary>
/// IBoxFoamDataRealTimeServices
/// </summary>
public interface IBoxFoamDataRealTimeServices : IBaseServices<BoxFoamDataRealTime>
{
}
}

@ -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
{
/// <summary>
/// 夹具实时数据
/// </summary>
[SugarTable("BOX_FOAMDATAREALTIME", "AUCMA_SCADA")]
public class BoxFoamDataRealTime
{
/// <summary>
/// 主键
/// </summary>
[SugarColumn(ColumnName = "OBJ_ID", IsPrimaryKey = true, IsIdentity = true)]
public int ObjId { get; set; }
/// <summary>
/// 夹具序号
/// </summary>
[SugarColumn(ColumnName = "SERIALNUMBER")]
public int SerialNumber { get; set; }
/// <summary>
/// 产线编码
/// </summary>
[SugarColumn(ColumnName = "PRODUCTLINE_CODE")]
public string ProductlineCode { get; set; }
/// <summary>
/// 夹具箱型
/// </summary>
[SugarColumn(ColumnName = "FIXTURE_BOXTYPE")]
public string FixtureBoxtype { get; set; }
/// <summary>
/// 夹具状态
/// </summary>
[SugarColumn(ColumnName = "FIXTURE_STATUS")]
public string FixtureStatus { get; set; }
/// <summary>
/// 夹具产量
/// </summary>
[SugarColumn(ColumnName = "FIXTURE_PRODUCTIONCAPACITY")]
public int FixtureProductioncapacity { get; set; }
/// <summary>
/// 夹具固化时间设定值
/// </summary>
[SugarColumn(ColumnName = "FIXTURE_CURINGTIMESETTINGVALUE")]
public string FixtureCuringtimesettingvalue { get; set; }
/// <summary>
/// 夹具固化时间显示值
/// </summary>
[SugarColumn(ColumnName = "FIXTURE_ACTUALTIME")]
public string FixtureActualtime { get; set; }
/// <summary>
/// 模具内温度
/// </summary>
[SugarColumn(ColumnName = "MODE_INTERNALTEMPERATURE")]
public string ModeInternaltemperature { get; set; }
/// <summary>
/// 模具外温度
/// </summary>
[SugarColumn(ColumnName = "MODE_OUTSIDETEMPERATURE")]
public string ModeOutsidetemperature { get; set; }
/// <summary>
/// 创建人
/// </summary>
[SugarColumn(ColumnName = "CREATED_BY")]
public string CreatedBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[SugarColumn(ColumnName = "CREATED_TIME")]
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[SugarColumn(ColumnName = "UPDATED_BY")]
public string UpdatedBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[SugarColumn(ColumnName = "UPDATED_TIME")]
public DateTime UpdatedTime { get; set; }
}
}

@ -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
{
/// <summary>
/// BaseBomInfoRepository
/// </summary>
public class BoxFoamDataRealTimeRepository : BaseRepository<BoxFoamDataRealTime>, IBoxFoamDataRealTimeRepository
{
public BoxFoamDataRealTimeRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
{
}
}
}

@ -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<BoxFoamDataRealTime>, IBoxFoamDataRealTimeServices
{
private readonly IBaseRepository<BoxFoamDataRealTime> _dal;
public BoxFoamDataRealTimeServices(IBaseRepository<BoxFoamDataRealTime> dal)
{
this._dal = dal;
base.BaseDal = dal;
}
}
}

@ -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
/// </summary>
public class CollectionFoamLine
{
public delegate Task RefreshBoxFoamDataDelegate(List<FixtureStatus> list);
public static event RefreshBoxFoamDataDelegate RefreshBoxFoamDataDelegateEvent;
private static System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
public static List<FixtureStatus> listFixtureStatus = new List<FixtureStatus>();
public static List<string> BoxTypeList = new List<string>();
public static List<int> HolderStatusList = new List<int>();
public static List<int> HolderOutPutList = new List<int>();
public static List<int> SolidifyTimeList = new List<int>();
public static List<int> ActualTimeList = new List<int>();
public static List<double> MoldTemperatureList = new List<double>();
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();
}
}
});
}
/// <summary>
/// 读取夹具箱型
/// </summary>
static void ReadBoxType(HwPLc.PlcModel obj)
static void ReadBoxType(HwPLc.PlcModel obj, List<string> 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);
}
}
}
/// <summary>
/// 读取夹具状态
/// </summary>
static void ReadFixtureStatus(HwPLc.PlcModel obj)
static void ReadFixtureStatus(HwPLc.PlcModel obj, List<int> 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
/// <summary>
/// 读取夹具产量
/// </summary>
static void ReadFixtureProduction(HwPLc.PlcModel obj)
static void ReadFixtureProduction(HwPLc.PlcModel obj, List<int> 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
/// <summary>
/// 固化时间设定值
/// </summary>
static void ReadPlanCuringTime(HwPLc.PlcModel obj)
static void ReadPlanCuringTime(HwPLc.PlcModel obj, List<int> 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
/// <summary>
/// 固化时间显示值
/// </summary>
static void ReadDisplayCuringTime(HwPLc.PlcModel obj)
static void ReadDisplayCuringTime(HwPLc.PlcModel obj, List<int> 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
/// <summary>
/// 模具内外温度
/// </summary>
static void ReadMoldTemperature(HwPLc.PlcModel obj)
static void ReadMoldTemperature(HwPLc.PlcModel obj, List<double> 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}");
}

@ -107,10 +107,10 @@ namespace Aucma.Core.BoxFoam.Business
private List<SpaceAddress> spaceAddresses = new List<SpaceAddress>();
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)
{

@ -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
{
/// <summary>
/// plc夹具状态
/// </summary>
public class FixtureStatus
{
public int ObjId { get; set; }
/// <summary>
/// 夹具箱型
/// </summary>
public string FixtureBoxType { get; set; }
/// <summary>
/// 夹具状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 夹具产量
/// </summary>
public int Yield { get; set; }
/// <summary>
/// 固化时间设定值
/// </summary>
public int PlanCuringTime { get; set; }
/// <summary>
/// 固化时间显示值
/// </summary>
public int RealCuringTime { get; set; }
/// <summary>
/// 内模温度
/// </summary>
public string InternalTemperature { get; set; }
/// <summary>
/// 外膜温度
/// </summary>
public string OutsideTemperature { get; set; }
///// <summary>
///// 生产节拍
///// </summary>
public int ProductionCycle { get; set; }
}
}

@ -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<IBoxFoamDataRealTimeServices>();
_boxFoamDataRecordServices = App.ServiceProvider.GetService<IBoxFoamDataRecordServices>();
_currentTeamTimeServices = App.ServiceProvider.GetService<ICurrentTeamTimeServices>();
_boxFoamDataServices = App.ServiceProvider.GetService<IBoxFoamDataServices>();
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 日产量
/// <summary>
/// 每日生产
@ -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
/// 初始化发泡数据
/// </summary>
/// <returns></returns>
public async Task InitData()
public async Task InitData(List<FixtureStatus> 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);
/// <summary>
/// 将采集到的数据保存
/// </summary>
/// <param name="mode"></param>
public async void RealTimeFoamingTask(object? sender, ElapsedEventArgs e)
{
semaphore.WaitOne();
try
{
List<FixtureStatus> bLis = CollectionFoamLine.listFixtureStatus;
if (bLis.Count == 0) return;
List<BoxFoamDataRealTime> 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 更新夹具型号
/// <summary>
/// 更新夹具型号
/// </summary>
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 新增夹具型号
/// <summary>
/// 更新夹具型号
/// </summary>
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
}
}

@ -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();

@ -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

@ -75,7 +75,7 @@ namespace Aucma.Core.HwPLc
/// <returns></returns>
public bool Connect(string iP, int port)
{
siemensS7Net.IpAddress = iP;//正式环境开启
//siemensS7Net.IpAddress = iP;//正式环境开启
siemensS7Net.Port = port;
try
{

@ -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<IBoxFoamDataServices>();
_oldBoxFoamTypeServices = App.ServiceProvider.GetService<IOldBoxFoamTypeServices>();
@ -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()
{

@ -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

@ -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)

Loading…
Cancel
Save