Esempio n. 1
0
        /// <summary>
        /// RGV任务调度
        /// </summary>
        /// <param name="ctlTaskList"></param>
        /// <param name="reStr"></param>
        /// <returns></returns>
        private CtlDBAccess.Model.ControlTaskModel RgvTasksndAllocate(TransDevModel.NodeRGV rgv, ref string reStr)
        {
            CtlDBAccess.Model.ControlTaskModel        ctlTask  = null;
            List <CtlDBAccess.Model.ControlTaskModel> taskList = ctlTaskBll.GetTaskToRunList((int)SysCfg.EnumAsrsTaskType.RGV上下料, SysCfg.EnumTaskStatus.待执行.ToString(), rgv.NodeID, true);

            foreach (CtlDBAccess.Model.ControlTaskModel taskModel in taskList)
            {
                if (0 != TaskLockCheck(rgv, taskModel, ref reStr))
                {
                    continue;
                }
                string devSt     = taskModel.StDevice;
                string devTarget = taskModel.EndDevice;
                FlowCtlBaseModel.CtlNodeBaseModel stNode     = NodeManager.GetNodeByID(devSt);
                FlowCtlBaseModel.CtlNodeBaseModel targetNode = NodeManager.GetNodeByID(devTarget);
                if (stNode == null || stNode.DevCata != "站台")
                {
                    continue;
                }
                if (targetNode == null || targetNode.DevCata != "站台")
                {
                    continue;
                }
                //起点有板,终点空闲,无板
                if (stNode.Db2Vals[0] == 2 && targetNode.Db2Vals[0] == 1)
                {
                    ctlTask = taskModel;
                    break;
                }
            }
            return(ctlTask);
        }
Esempio n. 2
0
        //   public CtlManage.CommDevManage DevCommManager { get; set; }
        public bool CtlInit(XElement CtlnodeRoot, ref string reStr)
        {
            monitorNodeList = new List <CtlNodeBaseModel>();
            if (CtlnodeRoot == null)
            {
                reStr = "系统配置文件错误,不存在CtlNodes节点";
                return(false);
            }
            try
            {
                IEnumerable <XElement> nodeXEList =
                    from el in CtlnodeRoot.Elements()
                    where el.Name == "Node"
                    select el;
                foreach (XElement el in nodeXEList)
                {
                    string           className = (string)el.Attribute("className");
                    CtlNodeBaseModel ctlNode   = null;
                    switch (className)
                    {
                    case "TransDevModel.NodeTransStation":
                    {
                        ctlNode = new TransDevModel.NodeTransStation();
                        break;
                    }

                    case "TransDevModel.NodeRGV":
                    {
                        ctlNode = new TransDevModel.NodeRGV();
                        break;
                    }

                    default:
                        break;
                    }
                    if (ctlNode != null)
                    {
                        if (!ctlNode.BuildCfg(el, ref reStr))
                        {
                            return(false);
                        }

                        this.monitorNodeList.Add(ctlNode);
                    }
                }
            }
            catch (Exception ex)
            {
                reStr = ex.ToString();
                return(false);
            }

            return(true);
        }
Esempio n. 3
0
        private CtlDBAccess.Model.ControlTaskModel CreateRGVTask(int taskIndex, string mainTaskID, TransDevModel.NodeRGV rgv, TransDevModel.NodeTransStation stNode, TransDevModel.NodeTransStation targetNode, string palletID, ref string reStr)
        {
            CtlDBAccess.Model.ControlTaskModel nextCtlTask = new CtlDBAccess.Model.ControlTaskModel();
            short nextCtlID = (short)ctlTaskBll.GetUnusedControlID();

            if (nextCtlID == 0)
            {
                reStr = "没有可用的控制ID";
                return(null);
            }
            nextCtlTask.TaskID         = System.Guid.NewGuid().ToString();
            nextCtlTask.DeviceID       = rgv.NodeID;
            nextCtlTask.DeviceCata     = rgv.DevCata;
            nextCtlTask.StDevice       = stNode.NodeID;
            nextCtlTask.StDeviceCata   = stNode.DevCata;
            nextCtlTask.StDeviceParam  = "";
            nextCtlTask.EndDevice      = targetNode.NodeID;
            nextCtlTask.EndDeviceCata  = targetNode.DevCata;
            nextCtlTask.EndDeviceParam = "";
            nextCtlTask.MainTaskID     = mainTaskID;
            nextCtlTask.PalletCode     = palletID;
            nextCtlTask.ControlID      = nextCtlID;
            nextCtlTask.TaskIndex      = taskIndex;
            nextCtlTask.TaskType       = 13;
            nextCtlTask.TaskParam      = "";
            nextCtlTask.TaskStatus     = "待执行";
            nextCtlTask.TaskPhase      = 0;
            nextCtlTask.CreateTime     = System.DateTime.Now;
            nextCtlTask.CreateMode     = "自动";
            return(nextCtlTask);
        }