111
cjs
2025-06-18 d1d953d574cdeaf1c582c99e85a16c9b903392c1
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs
@@ -96,25 +96,25 @@
        internal static void recordInfo(string taskName,string errMsg)
        {
            //var errInfo = MongoDBSingleton.Instance.FindOne<errInfoTable>(Query.EQ("taskName", taskName), "errInfoTable");
            //if(errInfo != null)
            //{
            //    MongoDBSingleton.Instance.Update<errInfoTable>(Query.EQ("_id", errInfo._id), Update.Set("errMsg", errMsg).Set("dateTime", DateTime.Now), UpdateFlags.None);
            //}
            //else
            //{
            //    MongoDBSingleton.Instance.Insert<errInfoTable>(new errInfoTable
            //    {
            //        taskName = taskName,
            //        errMsg = errMsg,
            //        dateTime = DateTime.Now
            //    });
            //}
            var errInfo = MongoDBSingleton.Instance.FindOne<errInfoTable>(Query.EQ("taskName", taskName), "errInfoTable");
            if(errInfo != null)
            {
                MongoDBSingleton.Instance.Update<errInfoTable>(Query.EQ("_id", errInfo._id), Update.Set("errMsg", errMsg).Set("dateTime", DateTime.Now), UpdateFlags.None);
            }
            else
            {
                MongoDBSingleton.Instance.Insert<errInfoTable>(new errInfoTable
                {
                    taskName = taskName,
                    errMsg = errMsg,
                    dateTime = DateTime.Now
                });
            }
        }
        internal static void deleteInfo(string taskName)
        {
            //MongoDBSingleton.Instance.Remove<errInfoTable>(Query.EQ("taskName", taskName), RemoveFlags.None);
            MongoDBSingleton.Instance.Remove<errInfoTable>(Query.EQ("taskName", taskName), RemoveFlags.None);
        }
@@ -303,8 +303,9 @@
                    if (mst.CN_S_BUSS_TYPE == "3楼缓存架入叠托") PLCControl.CacheStackingMouth1013(plc.deviceType, mst.CN_S_TASK_NO, mst.CN_S_END_BIT);
                    if (mst.CN_S_BUSS_TYPE == "3楼拆盘补空") PLCControl.DiscRemoverReqUnload(plc.deviceType, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "包装线补空") PLCControl.PackingLine(plc.ip, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼打包下线") PLCControl.outWare(mst.CN_S_TASK_NO, true);
                    if (mst.CN_S_BUSS_TYPE == "3楼打包下线" || mst.CN_S_BUSS_TYPE == "PDA打包下线") PLCControl.outWare(mst.CN_S_TASK_NO, true);
                    if (mst.CN_S_BUSS_TYPE == "3楼成品出库") PLCControl.productOutWare(mst.CN_S_END_BIT, mst.CN_S_TASK_NO, true);
                    if (mst.CN_S_BUSS_TYPE == "烘干机空托上线" || mst.CN_S_BUSS_TYPE == "剪切机满托上线") PLCControl.DGMachineTwo(plc, mst.CN_S_TASK_NO, true);
                }
                if (code == 6)
                {
@@ -315,9 +316,10 @@
                    if (mst.CN_S_BUSS_TYPE == "3楼缓存架入叠托") PLCControl.writeStackingMouth6(mst.CN_S_END_BIT, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼拆盘补空") PLCControl.DiscRemoverUnloadComplete(plc.deviceType, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼打包下线") PLCControl.outWare(mst.CN_S_TASK_NO, false);
                    if (mst.CN_S_BUSS_TYPE == "3楼打包下线" || mst.CN_S_BUSS_TYPE == "PDA打包下线") PLCControl.outWare(mst.CN_S_TASK_NO, false);
                    if (mst.CN_S_BUSS_TYPE == "包装线补空") PLCControl.PackingLineComplete(plc.ip);
                    if (mst.CN_S_BUSS_TYPE == "3楼成品出库") PLCControl.productOutWare(mst.CN_S_END_BIT, mst.CN_S_TASK_NO, false);
                    if (mst.CN_S_BUSS_TYPE == "烘干机空托上线" || mst.CN_S_BUSS_TYPE == "剪切机满托上线") PLCControl.DGMachineTwo(plc, mst.CN_S_TASK_NO, true);
                }
            }
            else CMMLog.Info($"PlcInfo中未找到该点位,点位:{mst.CN_S_END_BIT}");
@@ -362,22 +364,25 @@
                if (code == 1012)
                {
                    //卸货申请,先判断设备是否允许进料,如果是直接改参数,并通知设备
                    if (mst.CN_S_BUSS_TYPE == "3楼包装取料") PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO);//进入3楼包装取料流程1012,ip:{plc.ip},task:{mst.CN_S_TASK_NO}
                    if (mst.CN_S_BUSS_TYPE == "3楼包装取料" || mst.CN_S_BUSS_TYPE == "PDA打包下线") PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO);//进入3楼包装取料流程1012,ip:{plc.ip},task:{mst.CN_S_TASK_NO}
                    if (mst.CN_S_BUSS_TYPE == "3楼复称入缓存架" || mst.CN_S_BUSS_TYPE == "3楼复称入缓存架NG") PLCControl.SecondWeightInCache1012(plc.ip, mst.CN_S_TASK_NO);//二期:直接改参数
                    if (mst.CN_S_BUSS_TYPE == "3楼缓存架入叠托") TSHelper.GoToAGV(mst.CN_S_TASK_NO, 10, 1);
                    if (mst.CN_S_BUSS_TYPE == "3楼叠盘下线") PLCControl.StackingReqUnload(plc.deviceType, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼打包下线") PLCControl.PackingLineUnload1012(plc.ip, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "烘干机满托下线" || mst.CN_S_BUSS_TYPE == "剪切机空托下线" || mst.CN_S_BUSS_TYPE == "包装机满托下线") PLCControl.DGMachine(plc,mst.CN_S_TASK_NO,true);
                }
                if (code == 4)
                {
                    //卸货完成申请,判断设备那边进料完成,改参数通知agv离开
                    if (mst.CN_S_BUSS_TYPE == "3楼包装取料") PLCControl.PickUpFullDoorComplete(plc.ip, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼包装取料" || mst.CN_S_BUSS_TYPE == "PDA打包下线") PLCControl.PickUpFullDoorComplete(plc.ip, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼复称入缓存架" || mst.CN_S_BUSS_TYPE == "3楼复称入缓存架NG") PLCControl.SecondWeightInCache4(plc.deviceType, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼叠盘下线") PLCControl.StackingComplete(plc.deviceType, mst.CN_S_TASK_NO);
                    if (mst.CN_S_BUSS_TYPE == "3楼打包下线") PLCControl.PackingLineComplete4(plc.ip, mst.CN_S_SOURCE_NO);
                    if (mst.CN_S_BUSS_TYPE != "3楼包装取料") WMSHelper.ExecuteState(mst.CN_S_SOURCE_NO, 4);
                    if (mst.CN_S_BUSS_TYPE == "3楼缓存架入叠托NG") PLCControl.CacheStackingMouth6(plc);
                    if (mst.CN_S_BUSS_TYPE == "辅材入库") PLCControl.fcrk(plc);
                    if (mst.CN_S_BUSS_TYPE == "烘干机满托下线" || mst.CN_S_BUSS_TYPE == "剪切机空托下线" || mst.CN_S_BUSS_TYPE == "包装机满托下线") PLCControl.DGMachine(plc, mst.CN_S_TASK_NO, false);
                }
            }
            else CMMLog.Info($"点位{mst.CN_S_START_BIT}未配置");
@@ -692,62 +697,61 @@
                if (plc.Count > 0)
                {
                    #region 判断输送线模式 变更注释
                    //bool action = true;
                    //foreach(var a in plc)
                    //{
                    //    var modeResult = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                    //    {
                    //        dataNum = 1,
                    //        addr = a.readAddr + 3,
                    //        host = a.ip,
                    //        port = a.port
                    //    });
                    //    if (modeResult != null && modeResult.errCode == 0)
                    //    {
                    //        CMMLog.Debug($"OutWareTask:读取滚筒机{a.ip}通道号为:{a.readAddr + 3}的值为:{modeResult.result[0]}");
                    //        if (modeResult.result[0] == 2)
                    //        {
                    //            action = false;
                    //            CMMLog.Debug($"OutWareTask:输送线为 入库模式,输送线点位:{a.location}");
                    //            break;
                    //        }
                    //        else
                    //        {
                    //            //读取中间表模式
                    //            var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList");
                    //            if (modelInfo != null)
                    //            {
                    //                if (modelInfo.Mode == "入库模式")
                    //                {
                    //                    action = false;
                    //                    CMMLog.Debug($"OutWareTask:中间表 ModeList为 入库模式");
                    //                    break;
                    //                }
                    //            }
                    //            else
                    //            {
                    //                action = false;
                    //                CMMLog.Debug("OutWareTask:中间表 ModeList 为空");
                    //                break;
                    //            }
                    //        }
                    //    }
                    //};
                    //if (!action)
                    //{
                    //    return false;
                    //}
                    foreach(var a in plc)
                    {
                        bool action = false;
                        var modeResult = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                        {
                            dataNum = 1,
                            addr = a.readAddr + 3,
                            host = a.ip,
                            port = a.port
                        });
                        if (modeResult != null && modeResult.errCode == 0)
                        {
                            CMMLog.Debug($"OutWareTask:读取滚筒机{a.ip}通道号为:{a.readAddr + 3}的值为:{modeResult.result[0]}");
                            if (modeResult.result[0] == 2)
                            {
                                CMMLog.Debug($"OutWareTask:输送线为 入库模式,输送线点位:{a.location}");
                                break;
                            }
                            else
                            {
                                //读取中间表模式
                                var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList");
                                if (modelInfo != null)
                                {
                                    if (modelInfo.Mode == "入库模式")
                                    {
                                        CMMLog.Debug($"OutWareTask:中间表 ModeList为 入库模式");
                                    }
                                    else
                                    {
                                        action = true;
                                    }
                                }
                                else
                                {
                                    CMMLog.Debug("OutWareTask:中间表 ModeList 为空");
                                }
                            }
                        }
                        if (!action)
                        {
                            return false;
                        }
                    };
                    #endregion
                    CMMLog.Info($"OutWareTask 11111");
                    string ssx01 = plc[0].location;
                    string ssx02 = plc[1].location;
                    //CMMLog.Info($"查询输送线当前点位:{a.location}");
                    var slptInfo1 = MongoDBSingleton.Instance.FindOne<SLPTLoc>(Query.EQ("locCode", ssx01), "SLPTLoc");
                    if (slptInfo1 == null)
                    {
                        CMMLog.Info($"OutWareTask 222222");
                        endMachLoc = ssx01;
                        slptInfo1 = new SLPTLoc
                        {
@@ -758,7 +762,6 @@
                    }
                    else
                    {
                        CMMLog.Info($"OutWareTask 3333333");
                        var slptInfo2 = MongoDBSingleton.Instance.FindOne<SLPTLoc>(Query.EQ("locCode", ssx02), "SLPTLoc");
                        if (slptInfo2 == null)
                        {
@@ -772,7 +775,6 @@
                        }
                        else
                        {
                            CMMLog.Info($"OutWareTask 44444444444");
                            var loc = slptInfo1.taskNum <= slptInfo2.taskNum ? slptInfo1 : slptInfo2;
                            CMMLog.Info("OutWareTask :" + JsonConvert.SerializeObject(loc));
                            if (loc.taskNum < 2)