Skip to main content

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

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

 


Back to the top