Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [milo-dev] Howto get a Condition's instance NodeId?

I wouldn't expect the instance to be in the address space so I'm not sure what UaExpert is doing in this case.

UA Part 9 says this:

> ConditionName identifies the Condition instance that the Event originated from. It can be used together with the SourceName in a user display to distinguish between different Conditioninstances. If a ConditionSource has only one instance of a ConditionType, and the Server has no instance name, the Server shall supply the ConditionType browse name.

> BranchId is Null for all Event Notifications that relate to the current state of the Conditioninstance.

It sounds like you can assume the second Event you receive is related to the first because the ConditionName + ConditionSource match and BranchId is Null?

Sorry, I'm not actually that familiar with the Alarms and Conditions spec.


On Tue, Nov 27, 2018 at 2:01 AM Garcia Saez, Ignacio <ignacio.garcia@xxxxxxxxxxxx> wrote:

Hi all,

 

I’m trying to get the active alarms of a Siemens Sinumerik OPC-UA Server with Milo, by subscribing to the events delivered by its “Sinumerik” object. This far:

  • I’ve followed the ProsysEventSubscriptionExample and I’m receiving the events fired in my EventConsumer
  • The CNC and PLC alarms activation and deactivation come as events of type “CncAlarmType”, which is a Siemens specific type derived from standard “DiscreteAlarmType”.
  • The activation of an alarm can be detected because it’s “ConditionType/Retain” becomes True. The deactivation happens when it becomes False.

But I need some way to match the “alarm deactivation” event with the “alarm activation” event, so I began browsing the SimpleAttributeOperands without a complete success:

  • The EventId can’t be used, because they are different events so their id are different
  • The OPC Server doesn’t create a branch, because the BranchId property is null.
  • The Siemens alarm number, which is property “AlarmIdentifier” from “CncAlarmType” could be a good choice, but in a Siemens CNC several alarms with the same number can happen at the same time (e.g 2 or more axis are in alarm because of the same reason), and in that case I can’t use that number to differentiate them.

I used UaExpert client to monitor the alarms and I saw that the matching activation and deactivation events share a unique identifier that UaExpert calls “ConditionId”, which is a NodeId and is shown first, and which differs with every other alarm. But that “ConditionId” is not a property of the event. Looking at their forums I’ve seen it’s not a property, but the ConditionType object/instance NodeId. It makes sense to me that when an alarm happens, the OPC Server creates a CncAlarmType object instance for it (I don’t know if in the address space or out of it), and keeps it until the alarm disappears, when it fires the deactivation event and destroys the instance.

 

So finally the questions:

May my assumption of an instance living during the alarm be right?

Can I get the CncAlarmType instance NodeId with Milo? If so, how?

 

Best regards

 

Iñaki García

Instrumentation & Smart Systems Area

 

División de Industria y Transporte /

Industry & Transport Division

 

TECNALIA

Parque Tecnológico de Álava

Leonardo Da Vinci 11

E-01510 Miñano – Araba (Spain)

T 902 760 009

T +34 946 430 850 (International calls)

T +34 664 119 494

ignacio.garcia@xxxxxxxxxxxx

www.tecnalia.com

 

_______________________________________________
milo-dev mailing list
milo-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/milo-dev

Back to the top