Professional OPC
Development Tools

logos

Online Forums

Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.

Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.

Do not use the Contact page for technical issues.

How do you read/query vendor specific properties

More
16 Apr 2016 10:00 - 16 Apr 2016 10:01 #3994 by Rich
Thanks Guys :)
Last edit: 16 Apr 2016 10:01 by Rich.

Please Log in or Create an account to join the conversation.

More
16 Apr 2016 09:53 #3993 by support
Also, here is an example showing the use OPC event attributes - one of the examples that come with the product:
class AttributeValues
        {
            public static void Main()
            {
                var easyAEClient = new EasyAEClient();
                var easyDAClient = new EasyDAClient();
 
                var eventHandler = new EasyAENotificationEventHandler(easyAEClient_Notification);
                easyAEClient.Notification += eventHandler;
 
                // Inactivate the event condition (we will later activate it and receive the notification)
                easyDAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState1.Inactivate", true);
 
                var subscriptionFilter = new AESubscriptionFilter
                {
                    Sources = new AENodeDescriptor[] {"Simulation.ConditionState1"}
                };
 
                // Prepare a dictionary holding requested event attributes for each event category
                // The event category IDs and event attribute IDs are hard-coded here, but can be obtained from the OPC 
                // server by querying as well.
                var returnedAttributesByCategory = new AEAttributeSetDictionary();
                returnedAttributesByCategory[0x00ECFF02] = new long[] {0x00EB0003, 0x00EB0008};
 
                Console.WriteLine("Subscribing to events...");
                int handle = easyAEClient.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000, null, subscriptionFilter, 
                    returnedAttributesByCategory);
 
                // Give the refresh operation time to complete
                Thread.Sleep(5 * 1000);
 
                // Trigger an event carrying specified attributes (activate the condition)
                easyDAClient.WriteItemValue("", "OPCLabs.KitServer.2",
                    "SimulateEvents.ConditionState1.AttributeValues.15400963", 123456);
                easyDAClient.WriteItemValue("", "OPCLabs.KitServer.2", 
                    "SimulateEvents.ConditionState1.AttributeValues.15400968", "Some string value");
                easyDAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState1.Activate", true);
 
                Console.WriteLine("Processing event notifications for 10 seconds...");
                Thread.Sleep(10 * 1000);
 
                easyAEClient.UnsubscribeEvents(handle);
            }
 
            // Notification event handler
            static void easyAEClient_Notification([NotNull] object sender, [NotNull] EasyAENotificationEventArgs e)
            {
                if (!e.Refresh && (e.EventData != null))
                {
                    // Display all received event attribute IDs and their corresponding values
                    Console.WriteLine("Event attribute count: {0}", e.EventData.AttributeValues.Count);
                    foreach (KeyValuePair<long, object> pair in e.EventData.AttributeValues)
                        Console.WriteLine("    {0}: {1}", pair.Key, pair.Value);
                }
            }

I hope this helps
The following user(s) said Thank You: Rich

Please Log in or Create an account to join the conversation.

More
16 Apr 2016 07:04 #3992 by support
A standard way for carrying vendor/event specific information in OPC Alarms&Events is through the Event Attributes. They have numeric identifiers.

You can specify that you want to receive the additional attributes in several ways. The most generic is as follows: When calling EasyAEClient.SubscribeEvents (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...00a-14f9-ad64-f326c97e97d3.htm ), you pass it a AESubscriptionParamters object (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...633-73b5-5793-e3a67047b84f.htm). In its ReturnedAttributesByCategory property, there is a set of attribute IDs you want to receive, for each event category. This is initially, empty, but you can your attributes there.

Wheny you then receive an event notification (EasyAEClient.Notification, www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...a06-6a4e-2b1b-3b110a3f5c1d.htm) and it is not a notification that indicates an error (.Exception != null), it will have a non-null EventData property (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...681-a764-ca93-526ca66ed5a4.htm ) which in turn contain an object (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...991-c90b-1811-3b67202c122c.htm) with AttributeValues dictionary, from which you can extract the actual values of the attributes that cam with the event.

Where do you get the numbers (attribute IDs) from? If the server is well documented, they should be in its documentation. You can also query the server itself, using the EasyAEClient.QueryEventCategories method (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...54a-6155-664b-83de2ba30b12.htm). The returned AECategoryElement-s (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...db7-3ace-0fa0-7509c83a67c6.htm) contain AttributeElement collection with information about each attribute.

QuickOPC also contains UI dialogs for Windows Forms which allow the user to browse for the categories and attributes interactively. See e.g. AEAttributeDialog (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...d66-5dee-48ce-026543b8de53.htm) or OpcBrowseDialog (www.opclabs.com/files/onlinedocs/QuickOpc/Latest/Reference/Q...082-da7f-ecec-cf348de9a5a5.htm).

Best regards
The following user(s) said Thank You: Rich

Please Log in or Create an account to join the conversation.

More
15 Apr 2016 15:18 - 16 Apr 2016 09:58 #3991 by Rich
Hi,

WE are currently subscribing to an OPC A&E server, and appear to be unable to retrieve some of the verdor specific properties (Alarm/Event Description, Node, Event Type etc)... Anyone got any ideas on how to query this information?

Rich
Last edit: 16 Apr 2016 09:58 by Rich.

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.057 seconds