11
cjs
昨天 124c6bef95aa767f62ac245a883179ff5baca206
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs
@@ -596,11 +596,15 @@
        /// 小车到达包装机安全门口请求进入
        /// </summary>
        /// <param name="ips"></param>
        internal static void PickUpFullDoorUnload(string ip, string taskNo)
        internal static void PickUpFullDoorUnload(string ip, string taskNo, string type)
        {
            var plc = Settings.GetPlcInfo().Where(a => a.ip == ip).FirstOrDefault();
            //ASM写入通道0小车动作,1-取料
            int[] num = new int[2] { 1, 1 };
            if(type == "PDA打包下线")
            {
                num[0] = 4;
            }
            var writeRes0 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
            {
                host = ip,
@@ -1436,13 +1440,24 @@
                            {
                                //可以生成任务,调WMS接口获取任务信息
                                bool req = WMSHelper.WMSOut(pmInfo.location, "", trayType);
                                if (req) CMMLog.Debug($"调用WMS获取碟盘出库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                                else CMMLog.Debug($"调用WMS获取碟盘出库生成任务失败!");
                                if (req)
                                {
                                    CMMLog.Debug($"调用WMS获取叠盘出库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                                    ProcessHelper.deleteInfo(pmInfo.location + "-叠盘上线");
                                }
                                else CMMLog.Debug($"调用WMS获取叠盘出库生成任务失败!");
                            }
                            else CMMLog.Debug($"CacheStackingMouth: 托盘类型不正确,托盘类型:{result.result[2]}");
                            else
                            {
                                CMMLog.Debug($"叠盘机: 托盘类型不正确,托盘类型:{result.result[2]}");
                                ProcessHelper.recordInfo(pmInfo.location + "-叠盘上线", $"托盘类型不正确,托盘类型:{result.result[2]}");
                            }
                        }
                        else CMMLog.Debug($"检查当前叠托点是否有任务占用,或者MST主表中有缓存架入叠盘机的任务!");
                        else
                        {
                            CMMLog.Debug($"检查当前叠托点是否有任务占用,或者MST主表中有缓存架入叠盘机的任务!");
                            ProcessHelper.recordInfo(pmInfo.location + "-叠盘上线", "叠盘机当前有任务");
                        }
                    }
                }
                else CMMLog.Debug($"缓存入叠盘机,创建任务,result={result.errMsg}");
@@ -1645,7 +1660,12 @@
                                            if (amsResult.success)
                                            {
                                                CMMLog.Info($"包装线补空任务生成成功");
                                                ProcessHelper.deleteInfo(pmInfo.location + "-包装机空托上线");
                                                break;
                                            }
                                            else
                                            {
                                                ProcessHelper.recordInfo(pmInfo.location + "-包装机空托上线", $"{amsResult.errMsg}");
                                            }
                                        }
                                    }
@@ -3930,8 +3950,8 @@
                    if (locInfo.state == "1")
                    {
                        //变更注释
                        //if (string.IsNullOrEmpty(locInfo.END_LOC))
                        //{
                        if (string.IsNullOrEmpty(locInfo.END_LOC))
                        {
                            CMMLog.Info("InWarehouse:" + JsonConvert.SerializeObject(locInfo));
                            string wmstaskno = "";
                            string trayCode = locInfo.timeCuo;
@@ -3956,19 +3976,16 @@
                                }
                            }
                            else CMMLog.Info($"接驳位入立库流程:WMS生成任务失败!");
                        //}
                        //else
                        //{
                        //    //防止辅材回库的终点货位数据没删,导致入库任务计算成了辅材任务,这里需要二次判断
                        //    if(locInfo.trayCode.Substring(0,3) == "SWT")
                        //    {
                        //        HHAmsExecuteResult req = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), locCode, locInfo.END_LOC, "辅材转运", 0, locInfo.trayCode);
                        //    }
                        //    else
                        //    {
                        //        MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("_id", locInfo._id), Update.Set("END_LOC", ""), UpdateFlags.None);
                        //    }
                        //}
                        }
                        else
                        {
                            //防止辅材出库的终点货位数据没删,导致入库任务计算成了辅材任务,这里需要二次判断
                            HHAmsExecuteResult req = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), locCode, locInfo.END_LOC, "辅材出库(二段)", 0, locInfo.trayCode);
                            if (req.success)
                            {
                                MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", locCode), Update.Set("state", "2"), "ConnectingBits", UpdateFlags.None);
                            }
                        }
                    }
                }
            }
@@ -3992,15 +4009,27 @@
                    if (locInfo.state == "1")
                    {
                        CMMLog.Info("DGInWarehouse:" + JsonConvert.SerializeObject(locInfo));
                        string wmstaskno = "";
                        string trayCode = locInfo.trayCode;
                        bool req = WMSHelper.WMSIn(locCode, "电钴打包下线", ref wmstaskno, ref trayCode, "", "DGCK");
                        if (req)
                        if (!string.IsNullOrEmpty(locInfo.END_LOC))
                        {
                            CMMLog.Info($"电钴接驳位入立库流程:WMS生成任务成功!");
                            MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", locCode), Update.Set("state", "2"), "DGConnectingBits", UpdateFlags.None);
                            var amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), locInfo.Bit, locInfo.END_LOC, "电钴生产退库(二段)", 0, locInfo.trayCode);
                            if(amsResult.success)
                            {
                                CMMLog.Info($"电钴生产退库(二段)流程:WMS生成任务成功!");
                                MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", locCode), Update.Set("state", "2"), "DGConnectingBits", UpdateFlags.None);
                            }
                        }
                        else CMMLog.Info($"电钴接驳位入立库流程:WMS生成任务失败!");
                        else
                        {
                            string wmstaskno = "";
                            string trayCode = locInfo.trayCode;
                            bool req = WMSHelper.WMSIn(locCode, "电钴打包下线", ref wmstaskno, ref trayCode, "", "DGCK");
                            if (req)
                            {
                                CMMLog.Info($"电钴接驳位入立库流程:WMS生成任务成功!");
                                MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", locCode), Update.Set("state", "2"), "DGConnectingBits", UpdateFlags.None);
                            }
                            else CMMLog.Info($"电钴接驳位入立库流程:WMS生成任务失败!");
                        }
                    }
                }
            }
@@ -4511,17 +4540,48 @@
            else CMMLog.Info("立库通道未配置");
        }
        internal static void fcrk(Settings.PlcInfo plc)
        internal static void fcrk(Settings.PlcInfo plc,bool action, string taskNo = "")
        {
            int[] num = new int[1] { 2 };
            var wirte1 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
            if (action)
            {
                addr = plc.writeAddr + 2,
                host = plc.ip,
                port = plc.port,
                data = num
            });
            CMMLog.Info($"在通道{plc.writeAddr + 2}中写入{JsonConvert.SerializeObject(num)},ip:{plc.ip},端口:{plc.port}");
                var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                {
                    host = plc.ip,
                    addr = plc.writeAddr,
                    data = 1,
                    port = plc.port
                });
                CMMLog.Debug($"写入设备{plc.location}通道{plc.writeAddr}里面数据为1.");
                var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                {
                    dataNum = 2,
                    addr = plc.readAddr,
                    host = plc.ip,
                    port = plc.port
                });
                CMMLog.Debug($"查询设备{plc.location}通道{plc.readAddr}里面数据为{result.result[0]}、{result.result[1]}.");
                if (result != null && result.errCode == 0)
                {
                    if (result.result[0] == 1 && result.result[1] == 2)
                    {
                        //推送小车进入
                        TSHelper.GoToAGV(taskNo, 10, 1);
                    }
                }
            }
            else
            {
                int[] num = new int[1] { 2 };
                var wirte1 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                {
                    addr = plc.writeAddr + 2,
                    host = plc.ip,
                    port = plc.port,
                    data = num
                });
                CMMLog.Info($"在通道{plc.writeAddr + 2}中写入{JsonConvert.SerializeObject(num)},ip:{plc.ip},端口:{plc.port}");
            }
        }
        /// <summary>