zxx
2025-05-30 547a82102720f191119c75d6c4820c66262eecb0
HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs
@@ -26,6 +26,7 @@
using System.ComponentModel;
using Newtonsoft.Json.Linq;
using S7.Net;
using System.Threading.Tasks;
namespace HH.WCS.JuShi.process
{
@@ -823,6 +824,23 @@
                    {
                        list.RemoveAll(s => loca.Contains(s.S_CODE));
                    }
                    //过滤一下 允许进入的才分配
                    var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "立库入库区").FirstOrDefault();
                    if (reservoirs.areaCode.Equals(area))
                    {
                        var plcDeviceTable = S7Helper.plcDeviceTables;
                        foreach (var l in list)
                        {
                            var safeInteraction = Settings.SafeInteractions.Where(s => s.location == l.S_CODE).FirstOrDefault();
                            var res = int.Parse(plcDeviceTable.RGVAllowUnload[safeInteraction.code].ToString().Substring(1, 1));
                            if (res!=1)
                            {
                                list.Remove(l);
                            }
                        }
                    }
                    //符合条件的排序选第一个  先找第一个
                    if (list.Count > 0)
                    {
@@ -1779,7 +1797,20 @@
                        else if (model.APPLY_CODE.Equals("8"))
                        {
                            //发送卸货完成、复位信号
                            safeAssistant(reservoirs.code, res);
                            //卸货完成信号
                            S7Helper.WriteInt(50, reservoirs.code * 2 - 2, (short)(reservoirs.code * 10 + 1));
                            // 启动后台任务处理延迟复位
                            Task.Run(async () =>
                            {
                                //10秒后复位
                                await Task.Delay(10000);
                                S7Helper.WriteInt(50, reservoirs.code * 2 - 2, (short)(reservoirs.code * 10));
                                LogHelper.Info($"RGV安全交互 复位完成");
                            });
                            //10秒后复位
                            //S7Helper.WriteInt(50, reservoirs.code * 2 - 2, (short)(reservoirs.code * 10));
                            //safeAssistant(reservoirs.code, res);
                            LogHelper.Info($"RGV安全交互 卸货完成");
                            return new safeResult() { code = "0", msg = "success" };
                        }
@@ -1864,18 +1895,21 @@
        //循环发送信号
        private static void safeAssistant(int code, int res)
        {
            //2卸货完成确认
            if (res != 2)
            {
                //卸货完成信号
                S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10 + 1));
                Thread.Sleep(3000);
                safeAssistant(code, res);
            }
            else
            {
                S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10));
            }
            Thread.Sleep(10000);
            S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10));
            LogHelper.Info($"RGV安全交互 复位完成");
            ////2卸货完成确认
            //if (res != 2)
            //{
            //    //卸货完成信号
            //    S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10 + 1));
            //    Thread.Sleep(3000);
            //    safeAssistant(code, res);
            //}
            //else
            //{
            //    S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10));
            //}
        }