public void BrowsingAnOpcDaServerLocally() { Uri url = UrlBuilder.Build("Matrikon.OPC.Simulation.1"); using (var server = new OpcDaServer(url)) { // Connect to the server first. server.Connect(); // Browse elements. var browser = new OpcDaBrowserAuto(server); BrowseChildren(browser); // The output should be like the following: // #MonitorACLFile (ItemId: #MonitorACLFile, IsHint: False, IsItem: True, HasChildren: False) // @Clients (ItemId: @Clients, IsHint: False, IsItem: True, HasChildren: False) // Configured Aliases (ItemId: Configured Aliases, IsHint: False, IsItem: False, HasChildren: True) // Simulation Items (ItemId: Simulation Items, IsHint: False, IsItem: False, HasChildren: True) // Bucket Brigade (ItemId: Bucket Brigade, IsHint: False, IsItem: False, HasChildren: True) // ArrayOfReal8 (ItemId: Bucket Brigade.ArrayOfReal8, IsHint: False, IsItem: True, HasChildren: False) // ArrayOfString (ItemId: Bucket Brigade.ArrayOfString, IsHint: False, IsItem: True, HasChildren: False) // Boolean (ItemId: Bucket Brigade.Boolean, IsHint: False, IsItem: True, HasChildren: False) // Int1 (ItemId: Bucket Brigade.Int1, IsHint: False, IsItem: True, HasChildren: False) // Int2 (ItemId: Bucket Brigade.Int2, IsHint: False, IsItem: True, HasChildren: False) // Int4 (ItemId: Bucket Brigade.Int4, IsHint: False, IsItem: True, HasChildren: False) // ... } }
public List <string> getAllTags() { Console.Write("this.server.ComObject"); Console.Write(this.server.ComObject); // Connect to the this.server first. this.server.Connect(); var browser = new OpcDaBrowserAuto(this.server); //busca tags presentes e adiciona a lista return(this.BrowseChildren(browser)); }
//Reads Data from OPC. Fills the Nodelist from PLC internal IEnumerable <OpcDaBrowseElement> ReadDataToNodeList(string _subStringFromTagName) //e.g. "_CAP - for Capacity tag" { //Читаем список переменных из OCP-сервера. Фильтруем переменные-ветви и отбираем те, в именах которых содержится _subStringFromTagName (например "_CAP") var opcDaElementFilter = new OpcDaElementFilter() { ElementType = OpcDaBrowseFilter.Branches }; var browser = new OpcDaBrowserAuto(_opcServer); var items = from s in browser.GetElements(_parentNodeDescriptor, opcDaElementFilter) where s.Name.Contains(_subStringFromTagName) select s; return(items); }
public static OpcInitialData GetInitialData(string opcServerUrl, bool valuesOnly) { lock (GetLockObject(opcServerUrl)) { OpcDaServer server = GetOrCreateServer(opcServerUrl); var browser = new OpcDaBrowserAuto(server); OpcDaGroup group = server.AddGroup("DecisionsDataTypeGroup"); OpcNode[] nodes = GetNodesRecursive(browser, group, null); //now that group has all tags, read all initial values at once: OpcDaItemValue[] values = group.Read(group.Items, OpcDaDataSource.Device); server.RemoveGroup(group); return(new OpcInitialData { Nodes = valuesOnly ? null : nodes, Values = ConvertToBaseTagValues(values) }); } }
private static OpcNode[] GetNodesRecursive(OpcDaBrowserAuto browser, OpcDaGroup group, OpcNode parentNode) { OpcDaBrowseElement[] elements = browser.GetElements(parentNode?.FullPath); // fetches from root if null OpcNode[] results = elements.Select(x => new OpcNode { Name = x.Name, FullPath = x.ItemId, ItemId = x.IsItem ? x.ItemId : null }).ToArray(); foreach (OpcNode node in results) { GetNodesRecursive(browser, group, node); } if (parentNode != null) { parentNode.Children = results; if (!string.IsNullOrEmpty(parentNode.ItemId)) // fetch data types for tags { var def = new OpcDaItemDefinition { ItemId = parentNode.ItemId }; OpcDaItemResult[] groupAddResults = group.AddItems(new OpcDaItemDefinition[] { def }); foreach (OpcDaItemResult addResult in groupAddResults) { if (addResult.Error.Failed) { throw new Exception($"Could not fetch type data for {parentNode.ItemId}"); } } OpcDaItem item = group.Items.FirstOrDefault(x => x.ItemId == parentNode.ItemId); if (item != null) { parentNode.TypeName = item.CanonicalDataType.FullName; } } } return(results); }
public static TreeNode GetTreeNodes(OpcDaService server) { TreeNode hostNode = GetNode(Key(opcdaNode.FullPath + "/" + server.Host)); TreeNode serviceNode = GetNode(Key(hostNode.FullPath + "/" + server.ServiceId)); try { OpcDaBrowserAuto browserAuto = new OpcDaBrowserAuto(server.Service); BrowseChildren(browserAuto, serviceNode); } catch (Exception) { return(serviceNode); } return(serviceNode); }