logo-opclabs-new

Professional OPC Development Tools and Services

opc logo

About Developer Blog

This section of our site contains blog articles from our developers. The articles topics may vary, but many relate to the underlying technologies we use, or to specific aspects of our products that may be of interest but miss a more formal description yet. We expect this section to get filled slowly but perpetually and to evolve into a useful resource not only for users of our products, but to general developers' community as well.

A (Partial) Story of OPC URLs

Have you ever seen something like this, when connecting to an OPC server?

opcda://TEST-OPC/Kepware.KEPServerEX.V5/{B3AF0BF6-4C0C-4804-A122-6F3B160F4397}

It looks like an URL. But, is it an URL? In this case, you might guess that it refers to an OPC Data Access server, and that the TEST-OPC is the name of the computer, "KEPServerEX.V5" is the OPC server's ProgID, and {B3AF0BF6-4C0C-4804-A122-6F3B160F4397} is its CLSID.

For OPC "Classic" servers, the OPC specification actually do not have a mention of such syntax at all. Yet it seems to be used by various products. The first time I remember seeing this syntax was when playing with the Softing OPC Toolbox Demo Client:

 Over the time, I spotted its usage at some other places as well. What's more, people who were not expert in OPC area started to consider such URL-like syntax like a part of the OPC specification, and posted forums questions mentioning the syntax etc. And, customers even used that form when they tried to work with our own products, which did not have a support for it at the time (when specifically dealing with COM servers, we prefer to identify the server directly by the computer name, and the server's ProgID or CLSID).

 As it turned out, the probable cause of the proliferation was the OPC NET API, basically a sample code from the OPC Foundation (available to its members) which demonstrates how to create basic OPC servers and clients in .NET. The OPC NET API has a code that displays this syntax at various places to the user, and is able to recognize it as an input to some of its methods. Also, Kepware ClientAce product uses a variant of this syntax.

Things start becoming even more interesting when we put the Internet-based OPC specifications into the mix, because they use the true URLs for connection to the servers. First of them was the OPC XML-DA spec, but now we have OPC-UA with its various transport mechanisms; also, the OPC Xi specifications are based on Web services and thus need URLs.

Below is a short summary of what we could find about the "OPC URL" syntax used in various OPC products.

Add comment


Security code
Refresh