// 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 CreateStackerTask(int taskIndex, CtlDBAccess.Model.MainControlTaskModel mainTask, string stackerNodeID, TransDevModel.NodeTransStation portNode, 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 = stackerNodeID; nextCtlTask.DeviceCata = "堆垛机"; if (mainTask.TaskType == "上架") { nextCtlTask.StDevice = portNode.NodeID; nextCtlTask.StDeviceCata = portNode.DevCata; nextCtlTask.StDeviceParam = ""; nextCtlTask.EndDevice = stackerNodeID; nextCtlTask.EndDeviceCata = "货位"; nextCtlTask.EndDeviceParam = mainTask.EndDeviceParam; nextCtlTask.TaskType = (int)SysCfg.EnumAsrsTaskType.产品入库; } else if (mainTask.TaskType == "下架") { nextCtlTask.StDevice = stackerNodeID; nextCtlTask.StDeviceCata = "货位"; nextCtlTask.StDeviceParam = mainTask.StDeviceParam; nextCtlTask.EndDevice = portNode.NodeID; nextCtlTask.EndDeviceCata = portNode.DevCata; nextCtlTask.EndDeviceParam = ""; nextCtlTask.TaskType = (int)SysCfg.EnumAsrsTaskType.产品出库; } else { throw new NotImplementedException(); } nextCtlTask.MainTaskID = mainTask.MainTaskID; nextCtlTask.PalletCode = palletID; nextCtlTask.ControlID = nextCtlID; nextCtlTask.TaskIndex = taskIndex; nextCtlTask.TaskParam = ""; nextCtlTask.TaskStatus = "待执行"; nextCtlTask.TaskPhase = 0; nextCtlTask.CreateTime = System.DateTime.Now; nextCtlTask.CreateMode = "自动"; return(nextCtlTask); }
/// <summary> /// 系统控制初始化 /// </summary> /// <returns></returns> public bool SysCtlInit() { try { mesAcc = new PrcsCtlModelsAoyou.MesAccAoyou(); ctlNodeManager.DevCommManager = devCommManager; // 1加载配置文件 string reStr = ""; XElement root = null; SysCfg.SysCfgModel.cfgFilefullPath = AppDomain.CurrentDomain.BaseDirectory + @"\data\AoyouWCSCfg.xml"; if (!SysCfg.SysCfgModel.LoadCfg(ref root, ref reStr)) { Console.WriteLine("系统配置解析错误,{0}", reStr); return(false); } if (root.Element("sysSet").Element("ExtLogSrc") != null) { string logSrcStr = root.Element("sysSet").Element("ExtLogSrc").Value.ToString(); ExtLogSrc = logSrcStr.Split(new string[] { ",", ";" }, StringSplitOptions.RemoveEmptyEntries); } //2 初始化通信模块 XElement commDevXERoot = root.Element("CommDevCfg"); if (!devCommManager.ParseCommdev(commDevXERoot, ref reStr)) { Console.WriteLine("通信设备配置参数解析设备:" + reStr); return(false); } devCommManager.CommDevConnect(); //3 初始化立库控制系统 XElement asrsRoot = root.Element("AsrsNodes"); if (!asrsPresenter.CtlInit(asrsRoot, ref reStr)) { Console.WriteLine("立库控制系统初始化失败:" + reStr); return(false); } foreach (AsrsControl.AsrsCtlModel asrsCtl in asrsPresenter.AsrsCtls) { asrsCtl.dlgtAsrsOutportBusiness = AsrsOutportBusiness; asrsCtl.dlgtGetLogicArea = AsrsAreaToCheckin; } //4 初始化流水线控制系统 XElement prcsNodeRoot = root.Element("CtlNodes"); if (!prsNodeManager.CtlInit(prcsNodeRoot, ref reStr)) { Console.WriteLine("流水线系统初始化失败:" + reStr); return(false); } //5 注册控制节点 ctlNodeManager.AddCtlNodeRange(prsNodeManager.GetAllCtlNodes()); ctlNodeManager.AddCtlNodeRange(asrsPresenter.GetAllCtlNodes()); foreach (FlowCtlBaseModel.CtlNodeBaseModel node in ctlNodeManager.MonitorNodeList) { node.MesAcc = mesAcc; } foreach (AsrsControl.AsrsCtlModel asrsCtl in asrsPresenter.AsrsCtls) { asrsCtl.MesAcc = mesAcc; } taskRunCtl = new PrcsCtlModelsAoyou.CtlTaskManage(); taskRunCtl.WmsSvc = WmsSvc; taskRunCtl.NodeManager = ctlNodeManager; if (!taskRunCtl.Init()) { Console.WriteLine("任务控制管理初始化失败"); return(false); } XElement wcsPathRoot = root.Element("WCSPath"); if (!taskRunCtl.BuildFlowPath(wcsPathRoot, ref reStr)) { Console.WriteLine("WCS路径配置错误,{0}", reStr); return(false); } //注册限高检测委托 List <string> heightCheckStations = new List <string>(); heightCheckStations.AddRange(new string[] { "12112" }); foreach (string devID in heightCheckStations) { TransDevModel.NodeTransStation transDev = ctlNodeManager.GetNodeByID(devID) as TransDevModel.NodeTransStation; if (transDev == null) { continue; } transDev.dlgtHeightChecked = AsrsHeightChecked; } //6 通信设备分配 ctlNodeManager.AllocateCommdev(); asrsPresenter.DevStatusRestore(); prsNodeManager.DevStatusRestore(); //建立节点路径 // ctlNodeManager.BuildNodePath(); //7 线程分配 XElement threadRoot = root.Element("ThreadAlloc"); if (!ctlNodeManager.ParseTheadNodes(threadRoot, ref reStr)) { Console.WriteLine("分配线程时出现错误"); return(false); } return(true); } catch (Exception ex) { Console.WriteLine("控制系统初始化错误:" + ex.ToString()); return(false); } }
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); }