如何使用c#从Bacnet获取警报

本文关键字:获取 Bacnet 何使用 | 更新日期: 2023-09-27 18:23:48

我正试图从运行在Bacnet协议上的PLC访问警报。我使用的是Windows 10物联网平台(在RPI上运行)。我可以读取所有Bacnet对象的"属性",如事件状态、警报等,但我需要获取所有对象的所有警报。

我知道GetAlarmSummary和GetEnrollmentSummary已被弃用,我应该使用GetEventInformation服务,但当我浏览对象时,我可以找到通知类对象,但我不知道它们是如何与二进制或模拟对象连接的。

我也知道类似Bacnet对象(二进制、模拟、multistateValue)的通知类编号表示连接到该对象的通知类的数量,但我真的不知道它们是如何相互反应的,也不知道错误消息是如何生成的。我注意到有错误的对象的事件状态设置为报警,但我不知道它们是如何与通知类协作的,因为当我尝试浏览通知类时,我只得到类型和优先级,而没有得到有关连接对象的任何信息。有人能提供一些我可以使用的代码示例吗?或者给我一些要点来完成这个问题?

感谢

如何使用c#从Bacnet获取警报

是否有帮助;以下是"获取警报摘要"输出的示例:

    Items - Count = '5' -
            Idx = '0' -
                    Obj Id = '12582946' ('0xC00022')
                            - T  = 'BINARY_INPUT' ('3' / '0x3')
                            - I# = '34' ('0x22')
                            - N  = 'diagVasUnableToDriveMax|VAHU-01 VAS-2'
                    Alarm State = 'OFFNORMAL' ('2')
                    Ack Transitions = '111' ( 'To Off-Normal'; 'To Fault'; 'To Normal' )
            Idx = '1' -
                    Obj Id = '12582947' ('0xC00023')
                            - T  = 'BINARY_INPUT' ('3' / '0x3')
                            - I# = '35' ('0x23')
                            - N  = 'diagVasSourceTempFailure|VAHU-01 VAS-2'
                    Alarm State = 'OFFNORMAL' ('2')
                    Ack Transitions = '111' ( 'To Off-Normal'; 'To Fault'; 'To Normal' )
            Idx = '2' -
                    Obj Id = '12582948' ('0xC00024')
                            - T  = 'BINARY_INPUT' ('3' / '0x3')
                            - I# = '36' ('0x24')
                            - N  = 'diagVasSystemFailure|VAHU-01 VAS-2'
                    Alarm State = 'OFFNORMAL' ('2')
                    Ack Transitions = '111' ( 'To Off-Normal'; 'To Fault'; 'To Normal' )
            Idx = '3' -
                    Obj Id = '54525954' ('0x3400002')
                            - T  = 'MULTI_STATE_INPUT' ('13' / '0xD')
                            - I# = '2' ('0x2')
                            - N  = 'Communication Status|generic-2'
                    Alarm State = 'OFFNORMAL' ('2')
                    Ack Transitions = '111' ( 'To Off-Normal'; 'To Fault'; 'To Normal' )
            Idx = '4' -
                    Obj Id = '54526017' ('0x3400041')
                            - T  = 'MULTI_STATE_INPUT' ('13' / '0xD')
                            - I# = '65' ('0x41')
                            - N  = 'Communication Status|vav-28'
                    Alarm State = 'OFFNORMAL' ('2')
                    Ack Transitions = '111' ( 'To Off-Normal'; 'To Fault'; 'To Normal' )