|
|
using Custom.Communication.Framework.MyPlc;
|
|
|
using Newtonsoft.Json;
|
|
|
using Production_Oil.DbModel;
|
|
|
using Production_Oil.Services;
|
|
|
using Production_Oil.ViewModel;
|
|
|
using ProductionSystem_Log;
|
|
|
using System.Linq;
|
|
|
using System.Threading;
|
|
|
|
|
|
namespace Production_Oil
|
|
|
{
|
|
|
public class DoSomething
|
|
|
{
|
|
|
private readonly OilService _oilService = new OilService();
|
|
|
|
|
|
public void ReadPlc(Station station)
|
|
|
{
|
|
|
//PLC请求数据点位
|
|
|
var M0 = station.Points.FirstOrDefault(m => m.PointCode == "M0");
|
|
|
//产品条码点位
|
|
|
var M1 = station.Points.FirstOrDefault(m => m.PointCode == "M1");
|
|
|
//压缩机空重点位
|
|
|
var M2 = station.Points.FirstOrDefault(m => m.PointCode == "M2");
|
|
|
//压缩机空重反馈点位地址
|
|
|
var M3 = station.Points.FirstOrDefault(m => m.PointCode == "M3");
|
|
|
while (true)
|
|
|
{
|
|
|
Thread.Sleep(200);
|
|
|
switch (station.StationCode)
|
|
|
{
|
|
|
case "Oiling"://注油工位
|
|
|
var oilingM0Read = OmronHelper.GetPlcVal(M0.DataType, M0.PointAddress);
|
|
|
//PLC请求数据上传
|
|
|
if (oilingM0Read.ok && oilingM0Read.val == "1")
|
|
|
{
|
|
|
T_Oil t_Oil = new T_Oil();
|
|
|
var productCode = OmronHelper.GetPlcVal(M1.DataType, M1.PointAddress).val.TrimEnd('\r');
|
|
|
var emptyWeight = OmronHelper.GetPlcVal(M2.DataType, M2.PointAddress).val;
|
|
|
decimal.TryParse(emptyWeight, out var weight);
|
|
|
t_Oil.ProductCode = productCode;
|
|
|
t_Oil.Weight = weight;
|
|
|
var addRow = _oilService.AddOil(t_Oil);
|
|
|
if (addRow <= 0)
|
|
|
{
|
|
|
LogHelper.Error(null, $"条码:【{productCode}】新增空重数据失败:{JsonConvert.SerializeObject(t_Oil)}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
LogHelper.Info(null, $"条码:【{productCode}】新增空重数据成功!");
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case "RepairOil"://补油工位
|
|
|
var repairOilM0Read = OmronHelper.GetPlcVal(M0.DataType, M0.PointAddress);
|
|
|
//PLC请求空重数据
|
|
|
if (repairOilM0Read.ok && repairOilM0Read.val == "1")
|
|
|
{
|
|
|
var productCode = OmronHelper.GetPlcVal(M1.DataType, M1.PointAddress).val.TrimEnd('\r');
|
|
|
var data = _oilService.QueryOilByProductCode(productCode);
|
|
|
if (data == null)
|
|
|
{
|
|
|
LogHelper.Error(null, $"根据条码:【{productCode}】,未查询到空重数据!");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var writeResult = OmronHelper.WriteToPlc(M3.DataType, M3.PointAddress, data.Weight.ToString());
|
|
|
if (writeResult.ok)
|
|
|
{
|
|
|
LogHelper.Info(null, $"条码:【{productCode}】的空重数据反馈点位【{M3.PointAddress}】写入成功,值={data.Weight}!");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
LogHelper.Error(null, $"条码:【{productCode}】的空重数据反馈点位【{M3.PointAddress}】写入失败!");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|