MatrikonOPC OPC Exchange


Differences between DA 2.05 and DA 3.00?

Posted on July 13th, 2007 by Eric Murphy

When someone says “I’m using OPC”, invariably they mean they are using OPC DA 2.05.  It’s far and away the front runner of existing OPC installations.  There are quite a few architectures using OPC HDA and A&E, far fewer using Batch, XML DA or DX.  Somewhat of a mixed bag, would be those using OPC DA 3.00, which was released in early 2003.  Most major OPC vendors have since upgraded their products to support OPC DA 3.00, but how many out there are using the new features?  A better question is what ARE the ‘new’ features.  In fact that topic recently surfaced again recently on the OPC Forum.  If you read the introduction of the OPC DA 3.00 specification, you see the main changes were:

  • Added new interfaces  (IOPCBrowse, IOPCItemDeadbandMgt, IOPCItemSamplingMgt, IOPCItemIO, IOPCSyncIO2, IOPCAsyncIO3, IOPCGroupStateMgt2)
  • Clarified startup issues and add WAITING_FOR_INITIAL_DATA quality status mask.
  • Added Item Property #7, #8 for EUTYPE
  • Clarify SetActiveState to indicate that an item transition from inactive to active will ultimately result in a quality change, triggering a callback.
  • Add new server status enumeration (OPC_STATUS_COMM_FAULT)
  • Removed Legacy Interfaces from this version of the specification (IOPCServerPublicGroups, IOPCBrowseServerAddressSpace, IOPCPublicGroupStateMgt, IOPCAsyncIO, IOPCItemProperties)
  • Added Item Properties section
  • Clarify RemoveGroup
  • Added CATIDs to idl
  • Provided the ability to read and write the quality and timestamp
  • KeepAlive mechanism was added to confirm the callback connection health

Fine and dandy.  What exactly does that mean to the end user in terms of functionality?  Let’s paraphrase things, shall we?

New Browsing:  v3.00 replaced the way server browsing was performed, and was very similar to the way XML DA provided browsing.  First key item is browsing is no longer optional.  A server must return something when a client browses.  From the perspective of the user,  browsing behaves much as it did before.  The new interface greatly simplified the recursive work OPC clients sometime had to do when using the now deprecated IOPCBrowseServerAddressSpace.  It also streamlined how Item properties were accessed, as well as provided better handling for very large address spaces.   This same thinking has been carried over into the OPC UA specifications.

Better Deadband Handling:  Deadband was handled as a percentage of span of an OPC Group.  The deadband can be still be set on the at the group level, but DA 3.0, also allows the deadband to be on a per item basis. This means that each item can potentially override the deadband set for the group it resides within.

Single Item Data Access:  In OPC DA 2.05 the only way to read/write data was for an item to first be added to a group.  An interface was added so that it would be function as if a group was created, items added, a single read or write was performed and the group deleted.  

Writing VQT:  Interfaces were added/enhanced to allow for a DA write to set the value, quality and timestamp.  The DA 2.05 interface only allowed for the value to be set on a write.  Before the release of DA 3.0 people would use OPC HDA to do this.  In DA 3.0 the WriteVQT functionality applies to single item access, synchronous and asynchronous interfaces.

Maximum Age of Data:  Interfaces were added/enhanced to allow passing of an array of “staleness” for each item. The server calculates, for each requested item, the number of milliseconds between “now” and the timestamp on each item. For each item that has not been updated within the last MaxAge milliseconds, then data must be obtained from the underlying device.  This functionality applies to single item access, synchronous and asynchronous reads and refreshes.

Item Sampling:   An optional interface was added that allowed the client to manipulate the rate at which individual items within a group are obtained from the underlying device. It did not affect the group update rate of the data change callbacks.  This is sort of a poor man’s buffering solution.  In a nutshell, an server could scan data at a rate faster than the group update rate, so on an update multiple values could be returned for a single item.  This is useful for protocols like DNP 3.0 where a device could send multiple values in a single scan, which a DA 2.05 client would miss, even on an extremely fast update, but a DA 3.0 client would catch.

KeepAlive Message:  Added a specific KeepAlive message so clients could tell a server was still around even if no data was updating. 

Removed Public Groups:  Not practical. Not necessary. Not used. Not around anymore.

…and a bunch of clarifications to clear up some of the grey areas of the specification.

So, all and all some good stuff.  Conscientious vendors upgraded their servers to support DA 3.0, and clients were updated as the functionality was needed for particular applications.  The good news is it all got rolled into OPC UA as well.   It won’t be too long before you start seeing those too.

4 Responses to “Differences between DA 2.05 and DA 3.00?”

  1. Josh Salmond Says:

    How do you get a supplier to upgrade? My Windows HMI vendor’s OPC interface is still at 1.0A. My PLC vendor is claiming 2.0 compliant.

  2. ben serran Says:

    If a device using OPC sends its data (DA) to a PC , the PC with the OPC acts as a server, For someone to access the data as a client, what software and or devices will they need to have.

    thank you for your help

  3. Eric Murphy Says:

    Josh - on the question “How do you get a supplier to upgrade?”, I guess your choices are ask, beg, threaten or bribe :) Seriously though a question to ask is “If my HMI supplier is not keeping pace with standards within at least of 5 year time frame, is it the right supplier?”. Of course, I don’t have the full picture, and it can be difficult and expensive to switch vendors.

    One thing you can do is evaluate what features of DA 2.0 or DA 3.0 you require and if an intermediate product can help you. Often a poorly designed OPC client forces the OPC server to access the underlying system in less optimal ways (i.e. continual polling or no browse access). A product like the MatrikonOPC Funnel can compensate for some things. It has helped customers in the past who were stuck with a 1.0a or poorly written client for whatever reason.

  4. Eric Murphy Says:

    ben serran - OPC is a Client/Server model. So any OPC connection requires the OPC Server to collect the DA data from the underlying system, and make it available to any and all OPC client applications. To answer your question you would need an OPC client application to make use of the data.

    My question to you would be, what do you want to do with your data? Move it to another system? (maybe another OPC server), historize it? perform calculations? Move it into Excel? Whatever you want to do with your data, chances are there is an OPC Client available, such as some of these OPC applications. If you are using an HMI, historian or web reporting tool they most likely also support the OPC client interfaces, since many major vendors already do.

    For more information on the basics of OPC check out these OPC tutorials

Leave a Reply

For spam filtering purposes, please copy the number 2354 to the field below: