|
|
|
@ -6,7 +6,6 @@ using Khd.Core.Library.Mapper;
|
|
|
|
using Khd.Core.Plc.S7;
|
|
|
|
using Khd.Core.Plc.S7;
|
|
|
|
using Khd.Core.Wcs.Global;
|
|
|
|
using Khd.Core.Wcs.Global;
|
|
|
|
using Masuit.Tools;
|
|
|
|
using Masuit.Tools;
|
|
|
|
using Microsoft.AspNetCore.Hosting.Server;
|
|
|
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
@ -289,7 +288,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray");
|
|
|
|
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "putTray");
|
|
|
|
int errorCount = 0;
|
|
|
|
int errorCount = 0;
|
|
|
|
bool isOver = false;
|
|
|
|
|
|
|
|
while (true)
|
|
|
|
while (true)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
@ -345,12 +343,10 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
StaticData.PlcDic[2] = new Plc.S7.Plc(StaticData.PlcDic[2].CPU, StaticData.PlcDic[2].IP, StaticData.PlcDic[2].Port, StaticData.PlcDic[2].Rack, StaticData.PlcDic[2].Slot);
|
|
|
|
StaticData.PlcDic[2] = new Plc.S7.Plc(StaticData.PlcDic[2].CPU, StaticData.PlcDic[2].IP, StaticData.PlcDic[2].Port, StaticData.PlcDic[2].Rack, StaticData.PlcDic[2].Slot);
|
|
|
|
StaticData.PlcDic[2].Open();
|
|
|
|
StaticData.PlcDic[2].Open();
|
|
|
|
isOver = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex2)
|
|
|
|
catch (Exception ex2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
errorCount++;
|
|
|
|
errorCount++;
|
|
|
|
isOver = false;
|
|
|
|
|
|
|
|
_logger.Error("Plc短线重连失败" + ex2.Message);
|
|
|
|
_logger.Error("Plc短线重连失败" + ex2.Message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -368,7 +364,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat30");
|
|
|
|
BasePlcpoint HeartBeat30 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat30");
|
|
|
|
bool heartBeatCount = false;
|
|
|
|
bool heartBeatCount = false;
|
|
|
|
int errorCount = 0;
|
|
|
|
int errorCount = 0;
|
|
|
|
bool isOver = false;
|
|
|
|
|
|
|
|
while (true)
|
|
|
|
while (true)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
@ -401,7 +396,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(HeartBeat30.plcpointAddress, heartBeatCount, HeartBeat30.plcpointLength?.ToString());
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(HeartBeat30.plcpointAddress, heartBeatCount, HeartBeat30.plcpointLength?.ToString());
|
|
|
|
if (errorCount > 0 && isOver)
|
|
|
|
if (errorCount > 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault();
|
|
|
|
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 13).FirstOrDefault();
|
|
|
|
@ -426,12 +421,10 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
StaticData.PlcDic[0] = new Plc.S7.Plc(StaticData.PlcDic[0].CPU, StaticData.PlcDic[0].IP, StaticData.PlcDic[0].Port, StaticData.PlcDic[0].Rack, StaticData.PlcDic[0].Slot);
|
|
|
|
StaticData.PlcDic[0] = new Plc.S7.Plc(StaticData.PlcDic[0].CPU, StaticData.PlcDic[0].IP, StaticData.PlcDic[0].Port, StaticData.PlcDic[0].Rack, StaticData.PlcDic[0].Slot);
|
|
|
|
StaticData.PlcDic[0].Open();
|
|
|
|
StaticData.PlcDic[0].Open();
|
|
|
|
isOver = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex2)
|
|
|
|
catch (Exception ex2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
errorCount++;
|
|
|
|
errorCount++;
|
|
|
|
isOver = false;
|
|
|
|
|
|
|
|
_logger.Error("Plc短线重连失败" + ex2.Message);
|
|
|
|
_logger.Error("Plc短线重连失败" + ex2.Message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -449,7 +442,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart");
|
|
|
|
BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart");
|
|
|
|
bool heartBeatCount = false;
|
|
|
|
bool heartBeatCount = false;
|
|
|
|
int errorCount = 0;
|
|
|
|
int errorCount = 0;
|
|
|
|
bool isOver = false;
|
|
|
|
|
|
|
|
while (true)
|
|
|
|
while (true)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
@ -481,7 +473,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
heartBeatCount = !heartBeatCount;
|
|
|
|
StaticData.PlcDic[1].WriteToPoint(HeartBeat31.plcpointAddress, heartBeatCount, HeartBeat31.plcpointLength?.ToString());
|
|
|
|
StaticData.PlcDic[1].WriteToPoint(HeartBeat31.plcpointAddress, heartBeatCount, HeartBeat31.plcpointLength?.ToString());
|
|
|
|
if (errorCount > 0 && isOver)
|
|
|
|
if (errorCount > 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault();
|
|
|
|
var dmsRecordAlarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.CreateBy == "WCS" && t.DeviceId == 14).FirstOrDefault();
|
|
|
|
@ -508,12 +500,10 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot);
|
|
|
|
StaticData.PlcDic[1] = new Plc.S7.Plc(StaticData.PlcDic[1].CPU, StaticData.PlcDic[1].IP, StaticData.PlcDic[1].Port, StaticData.PlcDic[1].Rack, StaticData.PlcDic[1].Slot);
|
|
|
|
StaticData.PlcDic[1].Open();
|
|
|
|
StaticData.PlcDic[1].Open();
|
|
|
|
isOver = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex2)
|
|
|
|
catch (Exception ex2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
errorCount++;
|
|
|
|
errorCount++;
|
|
|
|
isOver = false;
|
|
|
|
|
|
|
|
_logger.Error("Plc短线重连失败" + ex2.Message);
|
|
|
|
_logger.Error("Plc短线重连失败" + ex2.Message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -750,14 +740,22 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
|
|
|
|
StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
|
|
|
|
|
|
|
|
|
|
|
|
#region 经过走廊区域报警
|
|
|
|
#region 经过走廊区域报警
|
|
|
|
if (int.Parse(cardStatus.PosX) >= 53040 && int.Parse(cardStatus.PosX) <= 58090 && (int.Parse(cardStatus.PosY) >= 53520 && int.Parse(cardStatus.PosY) <= 64590))
|
|
|
|
var Agv3FLED = StaticData.BasePlcpointList.First(t => t.id == 76);
|
|
|
|
|
|
|
|
if(Agv3FLED != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Console.WriteLine("=======>3F走廊区域预警");
|
|
|
|
if (int.Parse(cardStatus.PosX) >= 53040 && int.Parse(cardStatus.PosX) <= 58090 && (int.Parse(cardStatus.PosY) >= 53520 && int.Parse(cardStatus.PosY) <= 64590))
|
|
|
|
}
|
|
|
|
{
|
|
|
|
else
|
|
|
|
// Console.WriteLine("=======>3F走廊区域预警");
|
|
|
|
{
|
|
|
|
|
|
|
|
// Console.WriteLine("3F走廊区域正常");
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(Agv3FLED.plcpointAddress, true, Agv3FLED.plcpointLength.ToString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Console.WriteLine("3F走廊区域正常");
|
|
|
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(Agv3FLED.plcpointAddress, false, Agv3FLED.plcpointLength.ToString());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -800,14 +798,22 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
|
|
|
|
StaticData.PlcDic[2].WriteToPoint(Ylc.Address, cardStatus.PosY.ToString(), Ylc.type);
|
|
|
|
|
|
|
|
|
|
|
|
#region 经过走廊区域报警
|
|
|
|
#region 经过走廊区域报警
|
|
|
|
if (int.Parse(cardStatus.PosX) >= 119000 && int.Parse(cardStatus.PosX) <= 122800 && (int.Parse(cardStatus.PosY) >= 124100 && int.Parse(cardStatus.PosY) <= 134435))
|
|
|
|
var Agv2FLED = StaticData.BasePlcpointList.First(t => t.id == 75);
|
|
|
|
|
|
|
|
if (Agv2FLED != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Console.WriteLine("=======>2F走廊区域预警");
|
|
|
|
if (int.Parse(cardStatus.PosX) >= 119000 && int.Parse(cardStatus.PosX) <= 122800 && (int.Parse(cardStatus.PosY) >= 124100 && int.Parse(cardStatus.PosY) <= 134435))
|
|
|
|
}
|
|
|
|
{
|
|
|
|
else
|
|
|
|
// Console.WriteLine("=======>2F走廊区域预警");
|
|
|
|
{
|
|
|
|
|
|
|
|
// Console.WriteLine("2F走廊区域正常");
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(Agv2FLED.plcpointAddress, true, Agv2FLED.plcpointLength.ToString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Console.WriteLine("2F走廊区域正常");
|
|
|
|
|
|
|
|
StaticData.PlcDic[0].WriteToPoint(Agv2FLED.plcpointAddress, false, Agv2FLED.plcpointLength.ToString());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|