|
|
|
|
@ -4,6 +4,7 @@ using Khd.Core.Library;
|
|
|
|
|
using Khd.Core.Library.Mapper;
|
|
|
|
|
using Khd.Core.Plc.S7;
|
|
|
|
|
using Khd.Core.Wcs.Global;
|
|
|
|
|
using Masuit.Tools;
|
|
|
|
|
using Masuit.Tools.Logging;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
|
@ -507,6 +508,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var currentfloor06Value = StaticData.PlcDic[0].Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
|
|
|
|
|
var targetfloor06Value = StaticData.PlcDic[0].Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
|
|
|
|
|
var reserialno06 = StaticData.PlcDic[0].Read(this.reserialno06.plcpointAddress); //反馈流水号
|
|
|
|
|
_logger.Info($"MES开启?{mesCloseValue},提升机流水号?{serialno06Value},提升机状态?{equipstate06Value},提升机货物到位状态?{hoisterTrayIn06Value},提升机当前楼层?{currentfloor06Value},提升机目的楼层?{targetfloor06Value},反馈流水号?{reserialno06}");
|
|
|
|
|
if (mesCloseValue != null && Convert.ToInt32(mesCloseValue) == 0)
|
|
|
|
|
{
|
|
|
|
|
//正常读到plc值
|
|
|
|
|
@ -519,6 +521,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList();
|
|
|
|
|
foreach (var wcsTask in wcsTasks)
|
|
|
|
|
{
|
|
|
|
|
_logger.Info($"当前任务?{wcsTask.ToJsonString()}");
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == wcsTask.endPointId && t.objid != wcsTask.objid).Any();
|
|
|
|
|
if (!hasTask)
|
|
|
|
|
{
|
|
|
|
|
@ -538,7 +541,9 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
string? rfid = StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress);
|
|
|
|
|
_logger.Info($"{wcsTask.fromFloorNo}楼RFID?{rfid},任务RFID{wcsTask.containerNo}");
|
|
|
|
|
if (wcsTask.containerNo == rfid || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//当前楼层和起始楼层一致
|
|
|
|
|
{
|
|
|
|
|
@ -580,7 +585,9 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
|
|
|
|
|
if (wcsTask.containerNo == StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress) || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
string? rfid = StaticData.PlcDic[0].ReadRFID(floorPoint.plcpointAddress);
|
|
|
|
|
_logger.Info($"{wcsTask.fromFloorNo}楼RFID?{rfid},任务RFID{wcsTask.containerNo}");
|
|
|
|
|
if (wcsTask.containerNo == rfid || (string.IsNullOrEmpty(wcsTask.containerNo) && wcsTask.qty > 1))
|
|
|
|
|
{
|
|
|
|
|
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
|
|
|
|
|
{
|
|
|
|
|
@ -621,9 +628,12 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
if (wcsTask.floorNo == 1)//目的楼层是1
|
|
|
|
|
{
|
|
|
|
|
if (ReadEmptyLocation())//托盘库是否有任务,没有任务返回true
|
|
|
|
|
bool emptyStatus = ReadEmptyLocation();
|
|
|
|
|
_logger.Info($"一楼托盘库是否有任务?{emptyStatus}");
|
|
|
|
|
if (emptyStatus)//托盘库是否有任务,没有任务返回true
|
|
|
|
|
{
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
_logger.Info($"一楼接驳位外侧是否有东西?{linesignal}");
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)//接驳位外侧没有东西
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}");
|
|
|
|
|
@ -666,6 +676,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress);
|
|
|
|
|
_logger.Info($"{wcsTask.floorNo}楼接驳位外侧是否有东西?{linesignal}");
|
|
|
|
|
if (linesignal != null && Convert.ToInt32(linesignal) == 0)
|
|
|
|
|
{
|
|
|
|
|
wcsTask.taskStatus = 4;
|
|
|
|
|
@ -692,6 +703,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && t.plcpointNo.Contains("wcsrun"));
|
|
|
|
|
var wcsRun = StaticData.PlcDic[0].Read(basePlcpoint.plcpointAddress);
|
|
|
|
|
_logger.Info($"{wcsTask.floorNo}楼接驳位任务状态{wcsRun}");
|
|
|
|
|
if (wcsRun != null && Convert.ToInt32(wcsRun) == 0)//判断当前接驳位的任务状态,wcsrrun如果是1代表入库,2是出库,0是空闲
|
|
|
|
|
{
|
|
|
|
|
BaseEquip floorEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
|
|
|
|
|
|