/// <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); }
// 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); }
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); }