|
@@ -1,4 +1,4 @@
|
|
|
-using ServiceCenter;
|
|
|
+using PlcSiemens.Core.Extension;
|
|
|
using ServiceCenter.Extensions;
|
|
|
using ServiceCenter.SqlSugars;
|
|
|
using System.ComponentModel;
|
|
@@ -35,19 +35,18 @@ namespace WCS.WorkEngineering.Systems
|
|
|
|
|
|
public SrmSystems()
|
|
|
{
|
|
|
- var devices = Device.All.Where(v => v.HasFlag(DeviceFlags.巷道口));
|
|
|
- PickUpDevices = devices.Where(v => v.HasFlag(DeviceFlags.入库)).Select(v => new Station(v, this.World)).ToList();
|
|
|
//获取所有的巷道集合
|
|
|
+ var devices = Device.All.Where(v => v.HasFlag(DeviceFlags.巷道));
|
|
|
|
|
|
//开始分配
|
|
|
foreach (var item in devices)
|
|
|
{
|
|
|
//取货设备
|
|
|
- var deviceCode = item;
|
|
|
- PickUpDevices.Add(item.NextRoutes.First().DeviceCode, Device.All.Where(v => deviceCode.Contains(v.Code)).Select(v => new Station(v, this.World)).ToList());
|
|
|
+ var srm = item.Targets.Where(v => v.HasFlag(DeviceFlags.堆垛机)).FirstOrDefault();
|
|
|
+ PickUpDevices.Add(srm.Code, item.Targets.Where(v => v.HasFlag(DeviceFlags.输送机)).Select(v => new Station(v, this.World)).ToList());
|
|
|
//放货设备
|
|
|
- deviceCode = ServiceHub.deviceInfos.First(x => item.NextRoutes.First().DeviceCode == x.Code).NextRoutes.Select(v => v.NextCode).ToList();
|
|
|
- PutDevices.Add(item.NextRoutes.First().DeviceCode, Device.All.Where(v => deviceCode.Contains(v.Code)).Select(v => new Station(v, this.World)).ToList());
|
|
|
+ srm = item.Sources.Where(v => v.HasFlag(DeviceFlags.堆垛机)).FirstOrDefault();
|
|
|
+ PutDevices.Add(srm.Code, item.Sources.Where(v => v.HasFlag(DeviceFlags.堆垛机)).Select(v => new Station(v, this.World)).ToList());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -181,16 +180,16 @@ namespace WCS.WorkEngineering.Systems
|
|
|
#region 出入库
|
|
|
|
|
|
//上一个周期是不是出库任务 第一次获取返回结果会是false
|
|
|
- var lastIsOut = obj.Entity.GetFlag("LastIsOut").ToInt();
|
|
|
- obj.Entity.Set("LastIsOut", !lastIsOut);
|
|
|
+ var lastIsOut = obj.Entity.GetFlag<bool>("LastIsOut");
|
|
|
+ obj.Entity.SetFlag("LastIsOut", !lastIsOut);
|
|
|
|
|
|
//入库任务优先 或 上一个周期是出库任务并且出库任务无优先
|
|
|
if (enterOrOut == 2 || (lastIsOut && enterOrOut == 1)) //入库任务
|
|
|
{
|
|
|
//判断本次优先执行楼层,并设置下次执行时优先楼层
|
|
|
- var floor = obj.Entity.Get<int>("FloorIn");
|
|
|
+ var floor = obj.Entity.GetFlag<int>("FloorIn");
|
|
|
floor = floor % 2 + 1;
|
|
|
- obj.Entity.Set("FloorIn", floor);
|
|
|
+ obj.Entity.SetFlag("FloorIn", floor);
|
|
|
|
|
|
//获取当前堆垛机所有的取货站台
|
|
|
var arrIn = PickUpDevices.First(v => v.Key == obj.Entity.Code).Value;
|
|
@@ -234,9 +233,9 @@ namespace WCS.WorkEngineering.Systems
|
|
|
else if (enterOrOut == 3 || !lastIsOut) //出库任务
|
|
|
{
|
|
|
//判断本次优先执行楼层,并设置下次执行时优先楼层
|
|
|
- var floor = obj.Entity.Get<int>("FloorOut");
|
|
|
+ var floor = obj.Entity.GetFlag<int>("FloorOut");
|
|
|
floor = floor % 2 + 1;
|
|
|
- obj.Entity.Set("FloorOut", floor);
|
|
|
+ obj.Entity.SetFlag("FloorOut", floor);
|
|
|
|
|
|
//获取当前堆垛机所有的取货站台
|
|
|
var arrOut = PickUpDevices.First(v => v.Key == obj.Entity.Code).Value;
|
|
@@ -289,4 +288,54 @@ namespace WCS.WorkEngineering.Systems
|
|
|
return dev.Code.Contains("SRM");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ ///// <summary>
|
|
|
+
|
|
|
+ ///// 用于检查IP地址或域名是否可以使用TCP/IP协议访问(使用Ping命令),true表示Ping成功,false表示Ping失败
|
|
|
+
|
|
|
+ ///// </summary>
|
|
|
+
|
|
|
+ ///// <param name="strIpOrDName">输入参数,表示IP地址或域名</param>
|
|
|
+
|
|
|
+ ///// <returns></returns>
|
|
|
+
|
|
|
+ //public static bool PingIpOrDomainName(string strIpOrDName)
|
|
|
+
|
|
|
+ //{
|
|
|
+ // try
|
|
|
+
|
|
|
+ // {
|
|
|
+ // Ping objPingSender = new Ping();
|
|
|
+
|
|
|
+ // PingOptions objPinOptions = new PingOptions();
|
|
|
+
|
|
|
+ // objPinOptions.DontFragment = true;
|
|
|
+
|
|
|
+ // string data = "";
|
|
|
+
|
|
|
+ // byte[] buffer = Encoding.UTF8.GetBytes(data);
|
|
|
+
|
|
|
+ // int intTimeout = 120;
|
|
|
+
|
|
|
+ // PingReply objPinReply = objPingSender.Send(strIpOrDName, intTimeout, buffer, objPinOptions);
|
|
|
+
|
|
|
+ // string strInfo = objPinReply.Status.ToString();
|
|
|
+
|
|
|
+ // if (strInfo == "Success")
|
|
|
+
|
|
|
+ // {
|
|
|
+ // return true;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+
|
|
|
+ // {
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // catch (Exception)
|
|
|
+
|
|
|
+ // {
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+ //}
|
|
|
}
|