- Posts: 6
- Thank you received: 0
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.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- OPC Alarms&Events
- How do you read/query vendor specific properties
How do you read/query vendor specific properties
Please Log in or Create an account to join the conversation.
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
Please Log in or Create an account to join the conversation.
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
Please Log in or Create an account to join the conversation.
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
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- OPC Alarms&Events
- How do you read/query vendor specific properties