diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs
index 3d96e5e..02631d8 100644
--- a/src/Khd.Core.Plc/StaticPlcHelper.cs
+++ b/src/Khd.Core.Plc/StaticPlcHelper.cs
@@ -27,6 +27,38 @@ namespace Khd.Core.Plc
plc.Write(address, GetValue(len, valueString));
}
+ ///
+ /// 写入RFID
+ ///
+ /// plc
+ /// 读取地址
+ /// 长度
+ /// 读取到的RFID
+ public static void WriteRFID(this Plc.S7.Plc plc, string address, string value,int len = 15)
+ {
+ string[] adds = address.Split(".");
+ int db = int.Parse(adds[0].Replace("DB", ""));
+ int startByteAdr = int.Parse(adds[1].Replace("DBX", ""));
+
+ // 将 value 转换为字节数组,确保其长度符合要求
+ byte[] byteArray = Encoding.ASCII.GetBytes(value);
+ if (byteArray.Length > len)
+ {
+ throw new ArgumentException($"Value length exceeds the specified length of {len} bytes.");
+ }
+
+ // 填充字节数组到指定长度
+ byte[] dataToWrite = new byte[len];
+ Array.Copy(byteArray, dataToWrite, byteArray.Length);
+
+
+
+ plc.Write(S7.DataType.DataBlock, db, startByteAdr, dataToWrite);
+
+ }
+
+
+
///
/// 读取RFID
///
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index e1d0f64..7f9d73f 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -1,4 +1,5 @@
-using Khd.Core.EntityFramework;
+using Khd.Core.Domain.Models;
+using Khd.Core.EntityFramework;
using Khd.Core.Library;
using Khd.Core.Wcs.Global;
using Khd.Core.Wcs.Wcs;
@@ -61,6 +62,7 @@ namespace Khd.Core.Wcs
StaticData.PlcDic.TryAdd(plcConfig.Code, plc);
}
}
+
//创建定时器
SystemTimer systemTimer = new SystemTimer(_host);
systemTimer.Start();
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
index 20321c1..3a526c0 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
@@ -579,6 +579,7 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
+
}
else if (item.taskStatus == 7)
{
@@ -590,6 +591,14 @@ namespace Khd.Core.Wcs.Wcs
}
if (item.taskType == StaticTaskType.SecondSmallPackageToStorage)
{
+
+ //取托盘确认信号DB4.DBX310.1写true
+ BasePlcpoint SecondOutGetOverPoint = StaticData.BasePlcpointList.First(t => t.id == 71);
+ StaticData.PlcDic[2].WriteToPoint(SecondOutGetOverPoint.plcpointAddress, true, SecondOutGetOverPoint.plcpointLength.ToString());
+ // 清空小包出口RFID
+ BasePlcpoint RFID2001Point = StaticData.BasePlcpointList.First(t => t.id == 52);
+ StaticData.PlcDic[2].WriteRFID(RFID2001Point.plcpointAddress,"", 12);//小包出口的RFID
+
//WmsProductInstock? wmsProductInstock = dbContext.WmsProductInstock.FirstOrDefault(t => t.productInstockId == item.orderId);
//if (wmsProductInstock != null)
//{
@@ -709,6 +718,10 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == StaticTaskType.SecondLineToSmallPackage)//输送线到小包入口
{
+ // 小包入口确认信号
+
+
+
BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
startEquip.equipStatus = 0;
dbContext.Update(startEquip);
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
index 2dd563d..196d75d 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs
@@ -56,11 +56,14 @@ namespace Khd.Core.Wcs.Wcs
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);//小包入口叫料
var agvGetValue = StaticData.PlcDic[2].Read(agvGetPoint.plcpointAddress);//小包出口的到位
- var rfidValue = StaticData.PlcDic[2].ReadRFID(rfidPoint.plcpointAddress);//小包出口的RFID
+ var rfidValue = StaticData.PlcDic[2].ReadRFID(rfidPoint.plcpointAddress,15);//小包出口的RFID
if (agvGetValue != null && agvPutValue != null && rfidValue != null)//读Plc
{
+ //待删除
+ agvPutValue = 1;
if (Convert.ToInt32(agvPutValue) == 0)//小包入口叫料
{
+
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 8 || t.endPointId == endEquip.objid).Any();//有没有生成任务
//36 是小包入口的设备信息,8是二楼Agv设备
if (!canCreate)//没有任务