diff --git a/Aucam.Core.PerfusionService/Business/PerfusionCollection.cs b/Aucam.Core.PerfusionService/Business/PerfusionCollection.cs
deleted file mode 100644
index 1443c31f..00000000
--- a/Aucam.Core.PerfusionService/Business/PerfusionCollection.cs
+++ /dev/null
@@ -1,247 +0,0 @@
-using Admin.Core.Common.Helper;
-using Admin.Core.IRepository;
-using Admin.Core.IService;
-using Admin.Core.Model;
-using Admin.Core.Model.Model_New;
-using Admin.Core.Repository;
-using Admin.Core.Service;
-using Aucma.Core.HwPLc;
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Aucam.Core.PerfusionService.Business
-{
- ///
- /// 采集灌注数据
- ///
- public class PerfusionCollection
- {
- Semaphore semaphore = new Semaphore(1, 1);
- protected readonly IPerfusionRecordServices? _perfusionRecordServices ;
- protected readonly IPerfusionAlarmServices ?_perfusionAlarmServices;
- protected readonly IPerfusionDeviceStatusServices? _perfusionDeviceStatusServices;
-
-
- private static System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
- private Perfusion_Record record = new Perfusion_Record();
- private Perfusion_Record temprRecord;
-
- private Perfusion_DeviceStatus perfusion_DeviceStatus = new Perfusion_DeviceStatus();
- private Perfusion_Alarm perfusion_Alarm = new Perfusion_Alarm();
- public PerfusionCollection(PerfusionRecordServices perfusionRecordServices, IPerfusionAlarmServices perfusionAlarmServices, IPerfusionDeviceStatusServices perfusionDeviceStatusServices)
- {
- _perfusionRecordServices = perfusionRecordServices;
- _perfusionAlarmServices = perfusionAlarmServices;
- _perfusionDeviceStatusServices = perfusionDeviceStatusServices;
- startCollect();
- }
-
-
- public void startCollect()
- {
- Task.Run(() =>
- {
- while (true)
- {
- semaphore.WaitOne();
- try
- {
- Thread.Sleep(3000);
- var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("PerfusionPlc"));
- if (obj != null && obj.plc.IsConnected)
- {
- //采集数据
- ReadEquipSystem(obj,record, perfusion_DeviceStatus, perfusion_Alarm);
- //更新设备状态
- // _perfusionDeviceStatusServices.UpdateAsync;
- // 更新报警信息
-
- //充注结束
- if (record.PerfusionFinishStatus == "1")
- {
- //缓存没数据查数据库
- if(temprRecord == null)
- {
- Perfusion_Record lastRecord = _perfusionRecordServices.Query(d => d.PerfusionBoxCode.Equals(record.PerfusionBoxCode)).FirstOrDefault();
- // 数据库没有数据
- if (lastRecord == null)
- {
- _= _perfusionRecordServices.AddAsync(record).Result;
- return;
- }
- }
- // 箱体码和上次不一样,或者箱体码一样但是充铸结果不一样
- else if(temprRecord.PerfusionBoxCode!=record.PerfusionBoxCode || (temprRecord.PerfusionBoxCode == record.PerfusionBoxCode && temprRecord.PerfusionResult!=record.PerfusionResult) )
- {
- _ = _perfusionRecordServices.AddAsync(record).Result;
- }
- }
-
- }
-
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex);
- }
- finally
- {
-
- temprRecord = record;
- semaphore.Release();
- }
- }
-
- });
- }
-
- ///
- /// 采集灌注参数
- ///
- ///
- static void ReadEquipSystem(Aucma.Core.HwPLc.PlcModel obj, Perfusion_Record record, Perfusion_DeviceStatus deviceStatus, Perfusion_Alarm alarmInfo)
- {
- byte[] info = obj.plc.Read("DB55.0", 84);
- if (info == null) return;
- #region 灌注记录赋值
- record.PerfusionActualVolume=byteToDouble(info.Skip(0).Take(8).ToArray()).ToString();
- record.PerfusionR = byteToDouble(info.Skip(8).Take(4).ToArray()).ToString().ToString();
- record.PerfusionL = byteToFloat(info.Skip(55).Take(4).ToArray()).ToString();
- record.PerfusionDuration = int.Parse(StringChange.bytesToHexStr(info.Skip(12).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber).ToString();
- record.Yield = int.Parse(StringChange.bytesToHexStr(info.Skip(16).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber).ToString();
- record.PerfusionBoxCode = asciiEncoding.GetString(info.Skip(20).Take(24).ToArray()).Replace("\0", "").Trim('\n');
- record.PerfusionRefrigerantTypeLeft = asciiEncoding.GetString(info.Skip(58).Take(7).ToArray()).Trim('\n');
- record.PerfusionRefrigerantTypeRight = asciiEncoding.GetString(info.Skip(68).Take(7).ToArray()).Trim('\n');
- record.PerfusionSetVolume = byteToFloat(info.Skip(78).Take(4).ToArray()).ToString();
- record.PerfusionSystem =short.Parse(StringChange.bytesToHexStr(info.Skip(82).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber).ToString();
- ///灌注完成状态字
- record.PerfusionFinishStatus = short.Parse(StringChange.bytesToHexStr(info.Skip(46).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber).ToString();
- record.PerfusionResult = short.Parse(StringChange.bytesToHexStr(info.Skip(48).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber);
- record.CreatedBy = "equip";
- record.CreatedTime = DateTime.Now;
- record.UpdatedBy = "equip";
- record.UpdatedTime = DateTime.Now;
- #endregion
-
- #region 设备状态赋值
- deviceStatus.PerfusionDevicetype = "灌注";
- deviceStatus.PerfusionStatus = short.Parse(StringChange.bytesToHexStr(info.Skip(50).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber);
- deviceStatus.CreatedBy = "equip";
- deviceStatus.CreatedTime = DateTime.Now;
- deviceStatus.UpdatedBy = "equip";
- deviceStatus.UpdatedTime = DateTime.Now;
- #endregion
-
- #region 设备报警赋值
- alarmInfo.PerfusionBoxcode = record.PerfusionBoxCode;
- alarmInfo.PerfusionStatus = short.Parse(StringChange.bytesToHexStr(info.Skip(52).Take(2).ToArray(), 2), System.Globalization.NumberStyles.HexNumber);
- alarmInfo.PerfusionAlarm = AlarmTrans(alarmInfo.PerfusionStatus);
- alarmInfo.PerfusionCompleted = "1";
- alarmInfo.CreatedBy = "equip";
- alarmInfo.CreatedTime = DateTime.Now;
- alarmInfo.UpdatedBy = "equip";
- alarmInfo.UpdatedTime = DateTime.Now;
- #endregion
- }
- static string AlarmTrans(short code)
- {
- string result = "";
- switch (code)
- {
- case 2: result = "充注枪真空不合格"; break;
- case 4: result = "充注故障"; break;
- case 8: result = "充注时真空度超限定"; break;
- case 16: result = "回升检测不合格"; break;
- case 32: result = "工件真空不合格"; break;
- case 64: result = "平衡缸接近开关异常"; break;
- case 128: result = "增压超时"; break;
- case 256: result = "风压不足"; break;
- }
- return result;
- }
-
-
- #region 字符工具转换方法
- /// byte[]转十进制ascii码
- ///
- ///
- static string ByteArrayToString(byte[] bytes)
- {
- string result = string.Empty;
- foreach (byte b in bytes)
- {
- int decimalValue = Convert.ToInt32(b); // 将字节转换为十进制值
- result += decimalValue;
- }
- 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;
- }
-
-
- ///
- /// byte数组转换为float
- ///
- static float byteToFloat(byte[] list)
- {
- float result = 0.00f;
- Array.Reverse(list);
- result = BitConverter.ToSingle(list, 0);
- return result;
-
- }
-
- ///
- /// byte数组转换为float
- ///
- static double byteToDouble(byte[] list)
- {
- double result = 0;
- Array.Reverse(list);
- result = BitConverter.ToDouble(list, 0);
- return result;
-
- }
-
- #endregion
- }
-}
diff --git a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
index 3b8c0389..d8b0e915 100644
--- a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
+++ b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs
@@ -20,6 +20,8 @@ namespace Aucma.Core.BoxFoam.ViewModels
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(MainWindowViewModel));
private IndexPageView firstPage = new IndexPageView();//首页
CollectionFoamLine line=new CollectionFoamLine();
+ CollectionFoamMachine machine = new CollectionFoamMachine();
+
public MainWindowViewModel()
{
UserContent = firstPage;
diff --git a/Aucma.Core.BoxFoam/Views/FoamMachinesPageView.xaml b/Aucma.Core.BoxFoam/Views/FoamMachinesPageView.xaml
index 682ea649..b8f45f81 100644
--- a/Aucma.Core.BoxFoam/Views/FoamMachinesPageView.xaml
+++ b/Aucma.Core.BoxFoam/Views/FoamMachinesPageView.xaml
@@ -44,7 +44,7 @@
-
+
@@ -54,7 +54,7 @@
-
+
@@ -147,7 +147,7 @@
-
+
@@ -233,7 +233,7 @@
-
+
@@ -246,11 +246,11 @@
-
+
-
+
@@ -258,11 +258,11 @@
-
+
-
+
@@ -270,27 +270,27 @@
-
+
-
+
-
+
-
+
-
+
@@ -429,7 +429,7 @@
-
+
@@ -441,16 +441,16 @@
-
+
-
+
-
+
@@ -458,11 +458,11 @@
-
+
-
+
@@ -470,11 +470,11 @@
-
+
-
+
@@ -482,11 +482,11 @@
-
+
-
+
diff --git a/Aucma.Core.BoxFoam/appsettings.json b/Aucma.Core.BoxFoam/appsettings.json
index 5e0df1b6..b50af66b 100644
--- a/Aucma.Core.BoxFoam/appsettings.json
+++ b/Aucma.Core.BoxFoam/appsettings.json
@@ -218,7 +218,7 @@
"EquipName": "foamMachinePlc",
"PlcType": "Siemens",
"Enabled": true,
- "IP": "127.0.0.1",
+ "IP": "10.10.93.180",
"Port": 102
}
],
diff --git a/Aucma.Core.Tasks/Business/PerfusionCollection.cs b/Aucma.Core.Tasks/Business/PerfusionCollection.cs
index 9d331e68..355e4d9e 100644
--- a/Aucma.Core.Tasks/Business/PerfusionCollection.cs
+++ b/Aucma.Core.Tasks/Business/PerfusionCollection.cs
@@ -46,7 +46,6 @@ namespace Aucma.Core.Tasks.Business
{
while (true)
{
- semaphore.WaitOne();
try
{
Thread.Sleep(3000);
@@ -56,9 +55,24 @@ namespace Aucma.Core.Tasks.Business
//采集数据
ReadEquipSystem(obj,record, perfusion_DeviceStatus, perfusion_Alarm);
//更新设备状态
- // _perfusionDeviceStatusServices.UpdateAsync;
- // 更新报警信息
+ Perfusion_DeviceStatus device = _perfusionDeviceStatusServices.FirstAsync().Result;
+ if (device == null)
+ {
+ _ = _perfusionDeviceStatusServices.AddAsync(perfusion_DeviceStatus).Result;
+ }
+ else
+ {
+ _perfusionDeviceStatusServices.UpdateAsync(perfusion_DeviceStatus);
+ }
+ //// 更新报警信息
+ _perfusionAlarmServices.AddAsync(perfusion_Alarm);
+ //Perfusion_Alarm alarmRecord = _perfusionAlarmServices.FirstAsync(x=>x.PerfusionBoxcode==perfusion_Alarm.PerfusionBoxcode).Result;
+ //if (alarmRecord == null)
+ //{
+
+ //}
+
//充注结束
if (record.PerfusionFinishStatus == "1")
{
@@ -81,7 +95,6 @@ namespace Aucma.Core.Tasks.Business
}
}
-
}
catch (Exception ex)
{
@@ -89,9 +102,7 @@ namespace Aucma.Core.Tasks.Business
}
finally
{
-
temprRecord = record;
- semaphore.Release();
}
}