node-opcua-address-space 2.76.1 → 2.76.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/source/address_space_ts.d.ts +118 -118
- package/dist/source/address_space_ts.js +17 -17
- package/dist/source/continuation_points/continuation_point_manager.d.ts +32 -32
- package/dist/source/continuation_points/continuation_point_manager.js +195 -195
- package/dist/source/helpers/adjust_browse_direction.d.ts +5 -5
- package/dist/source/helpers/adjust_browse_direction.js +11 -11
- package/dist/source/helpers/argument_list.d.ts +33 -33
- package/dist/source/helpers/argument_list.js +258 -258
- package/dist/source/helpers/call_helpers.d.ts +6 -6
- package/dist/source/helpers/call_helpers.js +70 -70
- package/dist/source/helpers/check_event_clause.d.ts +17 -0
- package/dist/source/helpers/check_event_clause.js +53 -0
- package/dist/source/helpers/check_event_clause.js.map +1 -0
- package/dist/source/helpers/coerce_enum_value.d.ts +6 -6
- package/dist/source/helpers/coerce_enum_value.js +33 -33
- package/dist/source/helpers/dump_tools.d.ts +14 -14
- package/dist/source/helpers/dump_tools.js +78 -78
- package/dist/source/helpers/ensure_secure_access.d.ts +9 -9
- package/dist/source/helpers/ensure_secure_access.js +76 -76
- package/dist/source/helpers/make_optionals_map.d.ts +21 -21
- package/dist/source/helpers/make_optionals_map.js +29 -29
- package/dist/source/helpers/multiform_func.d.ts +11 -11
- package/dist/source/helpers/multiform_func.js +75 -75
- package/dist/source/helpers/resolve_opaque_on_address_space.d.ts +3 -3
- package/dist/source/helpers/resolve_opaque_on_address_space.js +36 -36
- package/dist/source/index.d.ts +56 -56
- package/dist/source/index.js +83 -83
- package/dist/source/interfaces/alarms_and_conditions/condition_info_i.d.ts +19 -19
- package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.d.ts +193 -193
- package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.d.ts +12 -12
- package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.d.ts +10 -10
- package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.d.ts +7 -7
- package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.d.ts +7 -7
- package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.d.ts +9 -9
- package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.d.ts +4 -4
- package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.d.ts +20 -20
- package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.d.ts +23 -23
- package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.d.ts +32 -32
- package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.d.ts +19 -19
- package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.d.ts +42 -42
- package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.d.ts +7 -7
- package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.js +25 -25
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.d.ts +5 -5
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.d.ts +20 -20
- package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.d.ts +26 -26
- package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.d.ts +8 -8
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.js +2 -2
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.d.ts +10 -10
- package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -21
- package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -24
- package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -12
- package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +2 -2
- package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -8
- package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +2 -2
- package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -12
- package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +2 -2
- package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -49
- package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +2 -2
- package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -11
- package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +2 -2
- package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.d.ts +30 -30
- package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.js +2 -2
- package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +222 -222
- package/dist/source/interfaces/state_machine/ua_state_machine_type.js +2 -2
- package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -6
- package/dist/source/interfaces/state_machine/ua_transition_ex.js +2 -2
- package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -8
- package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +2 -2
- package/dist/source/loader/decode_xml_extension_object.d.ts +6 -6
- package/dist/source/loader/decode_xml_extension_object.js +71 -71
- package/dist/source/loader/ensure_datatype_extracted.d.ts +5 -5
- package/dist/source/loader/ensure_datatype_extracted.js +45 -45
- package/dist/source/loader/generateAddressSpaceRaw.d.ts +10 -10
- package/dist/source/loader/generateAddressSpaceRaw.js +45 -45
- package/dist/source/loader/load_nodeset2.d.ts +16 -16
- package/dist/source/loader/load_nodeset2.js +1461 -1461
- package/dist/source/loader/make_semver_compatible.d.ts +6 -6
- package/dist/source/loader/make_semver_compatible.js +25 -25
- package/dist/source/loader/make_xml_extension_object_parser.d.ts +28 -28
- package/dist/source/loader/make_xml_extension_object_parser.js +325 -325
- package/dist/source/loader/namespace_post_step.d.ts +10 -10
- package/dist/source/loader/namespace_post_step.js +61 -61
- package/dist/source/loader/register_node_promoter.d.ts +2 -2
- package/dist/source/loader/register_node_promoter.js +9 -9
- package/dist/source/namespace.d.ts +6 -6
- package/dist/source/namespace.js +2 -2
- package/dist/source/namespace_alarm_and_condition.d.ts +32 -32
- package/dist/source/namespace_alarm_and_condition.js +2 -2
- package/dist/source/namespace_data_access.d.ts +42 -42
- package/dist/source/namespace_data_access.js +2 -2
- package/dist/source/namespace_machine_state.d.ts +7 -7
- package/dist/source/namespace_machine_state.js +2 -2
- package/dist/source/pseudo_session.d.ts +55 -55
- package/dist/source/pseudo_session.js +203 -203
- package/dist/source/session_context.d.ts +111 -111
- package/dist/source/session_context.js +265 -265
- package/dist/source/set_namespace_meta_data.d.ts +2 -2
- package/dist/source/set_namespace_meta_data.js +59 -59
- package/dist/source/ua_root_folder.d.ts +9 -9
- package/dist/source/ua_root_folder.js +2 -2
- package/dist/source/ua_two_state_variable_ex.d.ts +23 -23
- package/dist/source/ua_two_state_variable_ex.js +2 -2
- package/dist/source/xml_writer.d.ts +9 -9
- package/dist/source/xml_writer.js +2 -2
- package/dist/src/address_space.d.ts +392 -392
- package/dist/src/address_space.js +1392 -1392
- package/dist/src/address_space_change_event_tools.d.ts +6 -6
- package/dist/src/address_space_change_event_tools.js +149 -149
- package/dist/src/address_space_private.d.ts +43 -43
- package/dist/src/address_space_private.js +2 -2
- package/dist/src/alarms_and_conditions/check_where_clause.d.ts +4 -0
- package/dist/src/alarms_and_conditions/check_where_clause.js +110 -0
- package/dist/src/alarms_and_conditions/check_where_clause.js.map +1 -0
- package/dist/src/alarms_and_conditions/condition.d.ts +5 -5
- package/dist/src/alarms_and_conditions/condition.js +78 -78
- package/dist/src/alarms_and_conditions/condition_info.d.ts +27 -0
- package/dist/src/alarms_and_conditions/condition_info.js +55 -0
- package/dist/src/alarms_and_conditions/condition_info.js.map +1 -0
- package/dist/src/alarms_and_conditions/condition_info_impl.d.ts +26 -26
- package/dist/src/alarms_and_conditions/condition_info_impl.js +54 -54
- package/dist/src/alarms_and_conditions/condition_snapshot.d.ts +233 -0
- package/dist/src/alarms_and_conditions/condition_snapshot.js +667 -0
- package/dist/src/alarms_and_conditions/condition_snapshot.js.map +1 -0
- package/dist/src/alarms_and_conditions/condition_snapshot_impl.d.ts +222 -222
- package/dist/src/alarms_and_conditions/condition_snapshot_impl.js +657 -657
- package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +9 -9
- package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +61 -61
- package/dist/src/alarms_and_conditions/extract_event_fields.d.ts +10 -0
- package/dist/src/alarms_and_conditions/extract_event_fields.js +90 -0
- package/dist/src/alarms_and_conditions/extract_event_fields.js.map +1 -0
- package/dist/src/alarms_and_conditions/index.d.ts +16 -16
- package/dist/src/alarms_and_conditions/index.js +32 -32
- package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +44 -44
- package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -244
- package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +93 -93
- package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +419 -419
- package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +26 -26
- package/dist/src/alarms_and_conditions/ua_base_event_impl.js +38 -38
- package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +44 -44
- package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +183 -183
- package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +153 -153
- package/dist/src/alarms_and_conditions/ua_condition_impl.js +1028 -1028
- package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +14 -14
- package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +34 -34
- package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +24 -24
- package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +56 -56
- package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +11 -11
- package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +11 -11
- package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +23 -23
- package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +86 -86
- package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +11 -11
- package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +7 -7
- package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +79 -79
- package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +250 -250
- package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +24 -24
- package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +50 -50
- package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +19 -19
- package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +162 -162
- package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +46 -46
- package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +166 -166
- package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +18 -18
- package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +17 -17
- package/dist/src/apply_condition_refresh.d.ts +6 -6
- package/dist/src/apply_condition_refresh.js +27 -27
- package/dist/src/base_node_impl.d.ts +281 -281
- package/dist/src/base_node_impl.js +1395 -1395
- package/dist/src/base_node_private.d.ts +61 -61
- package/dist/src/base_node_private.js +705 -705
- package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -11
- package/dist/src/data_access/add_dataItem_stuff.js +61 -61
- package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -1
- package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +34 -34
- package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -32
- package/dist/src/data_access/ua_multistate_discrete_impl.js +130 -130
- package/dist/src/data_access/ua_multistate_value_discrete.d.ts +51 -0
- package/dist/src/data_access/ua_multistate_value_discrete.js +250 -0
- package/dist/src/data_access/ua_multistate_value_discrete.js.map +1 -0
- package/dist/src/data_access/ua_multistate_value_discrete_impl.d.ts +51 -51
- package/dist/src/data_access/ua_multistate_value_discrete_impl.js +249 -249
- package/dist/src/data_access/ua_two_state_discrete.d.ts +25 -0
- package/dist/src/data_access/ua_two_state_discrete.js +154 -0
- package/dist/src/data_access/ua_two_state_discrete.js.map +1 -0
- package/dist/src/data_access/ua_two_state_discrete_impl.d.ts +25 -25
- package/dist/src/data_access/ua_two_state_discrete_impl.js +153 -153
- package/dist/src/event_data.d.ts +34 -34
- package/dist/src/event_data.js +64 -64
- package/dist/src/extension_object_array_node.d.ts +61 -61
- package/dist/src/extension_object_array_node.js +276 -276
- package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -26
- package/dist/src/historical_access/address_space_historical_data_node.js +630 -630
- package/dist/src/index_current.d.ts +43 -43
- package/dist/src/index_current.js +74 -74
- package/dist/src/namespace_impl.d.ts +461 -461
- package/dist/src/namespace_impl.js +1732 -1732
- package/dist/src/namespace_private.d.ts +21 -21
- package/dist/src/namespace_private.js +32 -32
- package/dist/src/nodeid_manager.d.ts +36 -36
- package/dist/src/nodeid_manager.js +197 -197
- package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -2
- package/dist/src/nodeset_tools/adjust_namespace_array.js +13 -13
- package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +2 -2
- package/dist/src/nodeset_tools/construct_namespace_dependency.js +83 -83
- package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +2 -2
- package/dist/src/nodeset_tools/nodeset_to_xml.js +1155 -1155
- package/dist/src/nodeset_tools/typedictionary_to_xml.d.ts +2 -2
- package/dist/src/nodeset_tools/typedictionary_to_xml.js +154 -154
- package/dist/src/reference_impl.d.ts +43 -43
- package/dist/src/reference_impl.js +139 -139
- package/dist/src/role_permissions.d.ts +2 -2
- package/dist/src/role_permissions.js +10 -10
- package/dist/src/state_machine/finite_state_machine.d.ts +67 -67
- package/dist/src/state_machine/finite_state_machine.js +353 -353
- package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +38 -38
- package/dist/src/state_machine/ua_shelving_state_machine_ex.js +250 -250
- package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -61
- package/dist/src/state_machine/ua_two_state_variable.js +331 -331
- package/dist/src/tool_isSupertypeOf.d.ts +17 -17
- package/dist/src/tool_isSupertypeOf.js +108 -108
- package/dist/src/ua_condition_type.d.ts +8 -8
- package/dist/src/ua_condition_type.js +2 -2
- package/dist/src/ua_data_type_impl.d.ts +93 -93
- package/dist/src/ua_data_type_impl.js +371 -371
- package/dist/src/ua_method_impl.d.ts +41 -41
- package/dist/src/ua_method_impl.js +208 -208
- package/dist/src/ua_object_impl.d.ts +35 -35
- package/dist/src/ua_object_impl.js +161 -161
- package/dist/src/ua_object_type_impl.d.ts +48 -48
- package/dist/src/ua_object_type_impl.js +124 -124
- package/dist/src/ua_reference_type_impl.d.ts +43 -43
- package/dist/src/ua_reference_type_impl.js +139 -139
- package/dist/src/ua_variable_impl.d.ts +351 -351
- package/dist/src/ua_variable_impl.js +1604 -1604
- package/dist/src/ua_variable_impl_ext_obj.d.ts +17 -17
- package/dist/src/ua_variable_impl_ext_obj.js +437 -437
- package/dist/src/ua_variable_type_impl.d.ts +62 -62
- package/dist/src/ua_variable_type_impl.js +570 -570
- package/dist/src/ua_view_impl.d.ts +19 -19
- package/dist/src/ua_view_impl.js +43 -43
- package/distHelpers/add_event_generator_object.d.ts +3 -3
- package/distHelpers/add_event_generator_object.js +64 -64
- package/distHelpers/alarms_and_conditions_demo.d.ts +9 -9
- package/distHelpers/alarms_and_conditions_demo.js +115 -115
- package/distHelpers/assertHasMatchingReference.d.ts +19 -19
- package/distHelpers/assertHasMatchingReference.js +40 -40
- package/distHelpers/boiler_system.d.ts +113 -113
- package/distHelpers/boiler_system.js +395 -395
- package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -5
- package/distHelpers/create_minimalist_address_space_nodeset.js +171 -171
- package/distHelpers/date_utils.d.ts +3 -3
- package/distHelpers/date_utils.js +9 -9
- package/distHelpers/dump_statemachine.js +127 -127
- package/distHelpers/get_address_space_fixture.d.ts +1 -1
- package/distHelpers/get_address_space_fixture.js +30 -30
- package/distHelpers/get_mini_address_space.d.ts +7 -7
- package/distHelpers/get_mini_address_space.js +36 -36
- package/distHelpers/index.d.ts +12 -12
- package/distHelpers/index.js +28 -28
- package/distHelpers/mock_session.d.ts +14 -14
- package/distHelpers/mock_session.js +25 -25
- package/distNodeJS/generate_address_space.d.ts +4 -4
- package/distNodeJS/generate_address_space.js +41 -41
- package/distNodeJS/index.d.ts +1 -1
- package/distNodeJS/index.js +17 -17
- package/package.json +36 -35
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module node-opcua-address-space.AlarmsAndConditions
|
|
3
|
-
*/
|
|
4
|
-
import { UAEventType } from "node-opcua-address-space-base";
|
|
5
|
-
import { DataValue } from "node-opcua-data-value";
|
|
6
|
-
import { NodeId } from "node-opcua-nodeid";
|
|
7
|
-
import { VariantOptions } from "node-opcua-variant";
|
|
8
|
-
import { UAShelvedStateMachineEx } from "../../source";
|
|
9
|
-
import { InstantiateLimitAlarmOptions } from "../../source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options";
|
|
10
|
-
import { UALimitAlarmEx } from "../../source/interfaces/alarms_and_conditions/ua_limit_alarm_ex";
|
|
11
|
-
import { NamespacePrivate } from "../namespace_private";
|
|
12
|
-
import { UAAlarmConditionImpl } from "./ua_alarm_condition_impl";
|
|
13
|
-
export declare interface UALimitAlarmImpl extends UALimitAlarmEx, UAAlarmConditionImpl {
|
|
14
|
-
on(eventName: string, eventHandler: any): this;
|
|
15
|
-
}
|
|
16
|
-
export interface UALimitAlarmImpl extends UALimitAlarmEx {
|
|
17
|
-
shelvingState?: UAShelvedStateMachineEx;
|
|
18
|
-
}
|
|
19
|
-
export declare class UALimitAlarmImpl extends UAAlarmConditionImpl implements UALimitAlarmEx {
|
|
20
|
-
/**
|
|
21
|
-
* @method (static)UALimitAlarm.instantiate
|
|
22
|
-
* @param namespace {INamespace}
|
|
23
|
-
* @param limitAlarmTypeId
|
|
24
|
-
* @param options
|
|
25
|
-
* @param options.inputNode
|
|
26
|
-
* @param options.optionals
|
|
27
|
-
* @param options.highHighLimit {Double}
|
|
28
|
-
* @param options.highLimit {Double}
|
|
29
|
-
* @param options.lowLimit {Double}
|
|
30
|
-
* @param options.lowLowLimit {Double}
|
|
31
|
-
* @param data
|
|
32
|
-
* @return {UALimitAlarm}
|
|
33
|
-
*/
|
|
34
|
-
static instantiate(namespace: NamespacePrivate, limitAlarmTypeId: UAEventType | NodeId | string, options: InstantiateLimitAlarmOptions, data?: Record<string, VariantOptions>): UALimitAlarmImpl;
|
|
35
|
-
/**
|
|
36
|
-
* @method getHighHighLimit
|
|
37
|
-
* @return {Number}
|
|
38
|
-
*/
|
|
39
|
-
getHighHighLimit(): number;
|
|
40
|
-
/**
|
|
41
|
-
* @method getHighLimit
|
|
42
|
-
* @return {Number}
|
|
43
|
-
*/
|
|
44
|
-
getHighLimit(): number;
|
|
45
|
-
/**
|
|
46
|
-
* @method getLowLimit
|
|
47
|
-
* @return {Float}
|
|
48
|
-
*/
|
|
49
|
-
getLowLimit(): number;
|
|
50
|
-
/**
|
|
51
|
-
* @method getLowLowLimit
|
|
52
|
-
* @return {Float}
|
|
53
|
-
*/
|
|
54
|
-
getLowLowLimit(): number;
|
|
55
|
-
/**
|
|
56
|
-
* @method setHighHighLimit
|
|
57
|
-
* @param value {Float}
|
|
58
|
-
*/
|
|
59
|
-
setHighHighLimit(value: number): void;
|
|
60
|
-
/**
|
|
61
|
-
* @method setHighLimit
|
|
62
|
-
* @param value {Float}
|
|
63
|
-
*/
|
|
64
|
-
setHighLimit(value: number): void;
|
|
65
|
-
/**
|
|
66
|
-
* @method setLowLimit
|
|
67
|
-
* @param value {Float}
|
|
68
|
-
*/
|
|
69
|
-
setLowLimit(value: number): void;
|
|
70
|
-
/**
|
|
71
|
-
* @method setLowLowLimit
|
|
72
|
-
* @param value {Float}
|
|
73
|
-
*/
|
|
74
|
-
setLowLowLimit(value: number): void;
|
|
75
|
-
protected _onInputDataValueChange(dataValue: DataValue): void;
|
|
76
|
-
protected _setStateBasedOnInputValue(value: number): void;
|
|
77
|
-
protected _watchLimits(): void;
|
|
78
|
-
protected evaluateConditionsAfterEnabled(): void;
|
|
79
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @module node-opcua-address-space.AlarmsAndConditions
|
|
3
|
+
*/
|
|
4
|
+
import { UAEventType } from "node-opcua-address-space-base";
|
|
5
|
+
import { DataValue } from "node-opcua-data-value";
|
|
6
|
+
import { NodeId } from "node-opcua-nodeid";
|
|
7
|
+
import { VariantOptions } from "node-opcua-variant";
|
|
8
|
+
import { UAShelvedStateMachineEx } from "../../source";
|
|
9
|
+
import { InstantiateLimitAlarmOptions } from "../../source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options";
|
|
10
|
+
import { UALimitAlarmEx } from "../../source/interfaces/alarms_and_conditions/ua_limit_alarm_ex";
|
|
11
|
+
import { NamespacePrivate } from "../namespace_private";
|
|
12
|
+
import { UAAlarmConditionImpl } from "./ua_alarm_condition_impl";
|
|
13
|
+
export declare interface UALimitAlarmImpl extends UALimitAlarmEx, UAAlarmConditionImpl {
|
|
14
|
+
on(eventName: string, eventHandler: any): this;
|
|
15
|
+
}
|
|
16
|
+
export interface UALimitAlarmImpl extends UALimitAlarmEx {
|
|
17
|
+
shelvingState?: UAShelvedStateMachineEx;
|
|
18
|
+
}
|
|
19
|
+
export declare class UALimitAlarmImpl extends UAAlarmConditionImpl implements UALimitAlarmEx {
|
|
20
|
+
/**
|
|
21
|
+
* @method (static)UALimitAlarm.instantiate
|
|
22
|
+
* @param namespace {INamespace}
|
|
23
|
+
* @param limitAlarmTypeId
|
|
24
|
+
* @param options
|
|
25
|
+
* @param options.inputNode
|
|
26
|
+
* @param options.optionals
|
|
27
|
+
* @param options.highHighLimit {Double}
|
|
28
|
+
* @param options.highLimit {Double}
|
|
29
|
+
* @param options.lowLimit {Double}
|
|
30
|
+
* @param options.lowLowLimit {Double}
|
|
31
|
+
* @param data
|
|
32
|
+
* @return {UALimitAlarm}
|
|
33
|
+
*/
|
|
34
|
+
static instantiate(namespace: NamespacePrivate, limitAlarmTypeId: UAEventType | NodeId | string, options: InstantiateLimitAlarmOptions, data?: Record<string, VariantOptions>): UALimitAlarmImpl;
|
|
35
|
+
/**
|
|
36
|
+
* @method getHighHighLimit
|
|
37
|
+
* @return {Number}
|
|
38
|
+
*/
|
|
39
|
+
getHighHighLimit(): number;
|
|
40
|
+
/**
|
|
41
|
+
* @method getHighLimit
|
|
42
|
+
* @return {Number}
|
|
43
|
+
*/
|
|
44
|
+
getHighLimit(): number;
|
|
45
|
+
/**
|
|
46
|
+
* @method getLowLimit
|
|
47
|
+
* @return {Float}
|
|
48
|
+
*/
|
|
49
|
+
getLowLimit(): number;
|
|
50
|
+
/**
|
|
51
|
+
* @method getLowLowLimit
|
|
52
|
+
* @return {Float}
|
|
53
|
+
*/
|
|
54
|
+
getLowLowLimit(): number;
|
|
55
|
+
/**
|
|
56
|
+
* @method setHighHighLimit
|
|
57
|
+
* @param value {Float}
|
|
58
|
+
*/
|
|
59
|
+
setHighHighLimit(value: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* @method setHighLimit
|
|
62
|
+
* @param value {Float}
|
|
63
|
+
*/
|
|
64
|
+
setHighLimit(value: number): void;
|
|
65
|
+
/**
|
|
66
|
+
* @method setLowLimit
|
|
67
|
+
* @param value {Float}
|
|
68
|
+
*/
|
|
69
|
+
setLowLimit(value: number): void;
|
|
70
|
+
/**
|
|
71
|
+
* @method setLowLowLimit
|
|
72
|
+
* @param value {Float}
|
|
73
|
+
*/
|
|
74
|
+
setLowLowLimit(value: number): void;
|
|
75
|
+
protected _onInputDataValueChange(dataValue: DataValue): void;
|
|
76
|
+
protected _setStateBasedOnInputValue(value: number): void;
|
|
77
|
+
protected _watchLimits(): void;
|
|
78
|
+
protected evaluateConditionsAfterEnabled(): void;
|
|
79
|
+
}
|
|
@@ -1,251 +1,251 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UALimitAlarmImpl = void 0;
|
|
4
|
-
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
5
|
-
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
6
|
-
const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
7
|
-
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
8
|
-
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
9
|
-
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
10
|
-
const ua_alarm_condition_impl_1 = require("./ua_alarm_condition_impl");
|
|
11
|
-
const warningLog = (0, node_opcua_debug_1.make_warningLog)("AlarmsAndConditions");
|
|
12
|
-
const uaLimitAlarmInputSupportedDataType = [
|
|
13
|
-
node_opcua_variant_1.DataType.Double,
|
|
14
|
-
node_opcua_variant_1.DataType.Float,
|
|
15
|
-
node_opcua_variant_1.DataType.Byte,
|
|
16
|
-
node_opcua_variant_1.DataType.SByte,
|
|
17
|
-
node_opcua_variant_1.DataType.Int16,
|
|
18
|
-
node_opcua_variant_1.DataType.Int32,
|
|
19
|
-
node_opcua_variant_1.DataType.UInt16,
|
|
20
|
-
node_opcua_variant_1.DataType.UInt32
|
|
21
|
-
];
|
|
22
|
-
class UALimitAlarmImpl extends ua_alarm_condition_impl_1.UAAlarmConditionImpl {
|
|
23
|
-
/**
|
|
24
|
-
* @method (static)UALimitAlarm.instantiate
|
|
25
|
-
* @param namespace {INamespace}
|
|
26
|
-
* @param limitAlarmTypeId
|
|
27
|
-
* @param options
|
|
28
|
-
* @param options.inputNode
|
|
29
|
-
* @param options.optionals
|
|
30
|
-
* @param options.highHighLimit {Double}
|
|
31
|
-
* @param options.highLimit {Double}
|
|
32
|
-
* @param options.lowLimit {Double}
|
|
33
|
-
* @param options.lowLowLimit {Double}
|
|
34
|
-
* @param data
|
|
35
|
-
* @return {UALimitAlarm}
|
|
36
|
-
*/
|
|
37
|
-
static instantiate(namespace, limitAlarmTypeId, options, data) {
|
|
38
|
-
const addressSpace = namespace.addressSpace;
|
|
39
|
-
// must provide a inputNode
|
|
40
|
-
// xx assert(Object.prototype.hasOwnProperty.call(options,"conditionOf")); // must provide a conditionOf
|
|
41
|
-
(0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(options, "inputNode"), "UALimitAlarm.instantiate: options must provide the inputNode");
|
|
42
|
-
options.optionals = options.optionals || [];
|
|
43
|
-
let count = 0;
|
|
44
|
-
if (Object.prototype.hasOwnProperty.call(options, "highHighLimit")) {
|
|
45
|
-
options.optionals.push("HighHighLimit");
|
|
46
|
-
options.optionals.push("HighHighState");
|
|
47
|
-
count++;
|
|
48
|
-
}
|
|
49
|
-
if (Object.prototype.hasOwnProperty.call(options, "highLimit")) {
|
|
50
|
-
options.optionals.push("HighLimit");
|
|
51
|
-
options.optionals.push("HighState");
|
|
52
|
-
count++;
|
|
53
|
-
}
|
|
54
|
-
if (Object.prototype.hasOwnProperty.call(options, "lowLimit")) {
|
|
55
|
-
options.optionals.push("LowLimit");
|
|
56
|
-
options.optionals.push("LowState");
|
|
57
|
-
count++;
|
|
58
|
-
}
|
|
59
|
-
if (Object.prototype.hasOwnProperty.call(options, "lowLowLimit")) {
|
|
60
|
-
options.optionals.push("LowLowLimit");
|
|
61
|
-
options.optionals.push("LowLowState");
|
|
62
|
-
count++;
|
|
63
|
-
}
|
|
64
|
-
// xx assert(options.optionals,"must provide an optionals");
|
|
65
|
-
const alarmNode = ua_alarm_condition_impl_1.UAAlarmConditionImpl.instantiate(namespace, limitAlarmTypeId, options, data);
|
|
66
|
-
Object.setPrototypeOf(alarmNode, UALimitAlarmImpl.prototype);
|
|
67
|
-
(0, node_opcua_assert_1.assert)(alarmNode.conditionOfNode() !== null);
|
|
68
|
-
const inputNode = addressSpace._coerceNode(options.inputNode);
|
|
69
|
-
if (!inputNode) {
|
|
70
|
-
throw new Error("Expecting a valid input node");
|
|
71
|
-
}
|
|
72
|
-
(0, node_opcua_assert_1.assert)(inputNode.nodeClass === node_opcua_data_model_1.NodeClass.Variable);
|
|
73
|
-
// ----------------------- Install Limit Alarm specifics
|
|
74
|
-
// from spec 1.03:
|
|
75
|
-
// Four optional limits are defined that configure the states of the derived limit Alarm Types.
|
|
76
|
-
// These Properties shall be set for any Alarm limits that are exposed by the derived limit Alarm
|
|
77
|
-
// Types. These Properties are listed as optional but at least one is required. For cases where
|
|
78
|
-
// an underlying system cannot provide the actual value of a limit, the limit Property shall still be
|
|
79
|
-
// provided, but will have its AccessLevel set to not readable. It is assumed that the limits are
|
|
80
|
-
// described using the same Engineering Unit that is assigned to the variable that is the source
|
|
81
|
-
// of the alarm. For Rate of change limit alarms, it is assumed this rate is units per second
|
|
82
|
-
// unless otherwise specified.
|
|
83
|
-
if (count === 0) {
|
|
84
|
-
throw new Error("at least one limit is required");
|
|
85
|
-
}
|
|
86
|
-
const dataType = addressSpace.findCorrespondingBasicDataType(options.inputNode.dataType);
|
|
87
|
-
if (-1 === uaLimitAlarmInputSupportedDataType.indexOf(dataType)) {
|
|
88
|
-
const message = `UALimitAlarm.instantiate: inputNode must be of type ${uaLimitAlarmInputSupportedDataType
|
|
89
|
-
.map((a) => node_opcua_variant_1.DataType[a])
|
|
90
|
-
.join("|")}, got ${node_opcua_variant_1.DataType[dataType]}`;
|
|
91
|
-
warningLog(message);
|
|
92
|
-
throw new Error(message);
|
|
93
|
-
}
|
|
94
|
-
if (Object.prototype.hasOwnProperty.call(options, "highHighLimit") && options.highHighLimit !== undefined) {
|
|
95
|
-
alarmNode.setHighHighLimit(options.highHighLimit);
|
|
96
|
-
}
|
|
97
|
-
if (Object.prototype.hasOwnProperty.call(options, "highLimit")) {
|
|
98
|
-
alarmNode.setHighLimit(options.highLimit);
|
|
99
|
-
}
|
|
100
|
-
if (Object.prototype.hasOwnProperty.call(options, "lowLimit")) {
|
|
101
|
-
alarmNode.setLowLimit(options.lowLimit);
|
|
102
|
-
}
|
|
103
|
-
if (Object.prototype.hasOwnProperty.call(options, "lowLowLimit") && options.lowLowLimit != undefined) {
|
|
104
|
-
alarmNode.setLowLowLimit(options.lowLowLimit);
|
|
105
|
-
}
|
|
106
|
-
/*
|
|
107
|
-
* The InputNode Property provides the NodeId of the Variable the Value of which is used as
|
|
108
|
-
* primary input in the calculation of the Alarm state. If this Variable is not in the AddressSpace,
|
|
109
|
-
* a Null NodeId shall be provided. In some systems, an Alarm may be calculated based on
|
|
110
|
-
* multiple Variables Values; it is up to the system to determine which Variable’s NodeId is used.
|
|
111
|
-
*/
|
|
112
|
-
(0, node_opcua_assert_1.assert)(alarmNode.inputNode.nodeClass === node_opcua_data_model_1.NodeClass.Variable);
|
|
113
|
-
alarmNode.inputNode.setValueFromSource({ dataType: "NodeId", value: inputNode.nodeId });
|
|
114
|
-
// install inputNode monitoring for change
|
|
115
|
-
alarmNode.installInputNodeMonitoring(options.inputNode);
|
|
116
|
-
alarmNode._watchLimits();
|
|
117
|
-
return alarmNode;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* @method getHighHighLimit
|
|
121
|
-
* @return {Number}
|
|
122
|
-
*/
|
|
123
|
-
getHighHighLimit() {
|
|
124
|
-
if (!this.highHighLimit) {
|
|
125
|
-
throw new Error("Alarm do not expose highHighLimit");
|
|
126
|
-
}
|
|
127
|
-
return this.highHighLimit.readValue().value.value;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* @method getHighLimit
|
|
131
|
-
* @return {Number}
|
|
132
|
-
*/
|
|
133
|
-
getHighLimit() {
|
|
134
|
-
if (!this.highLimit) {
|
|
135
|
-
throw new Error("Alarm do not expose highLimit");
|
|
136
|
-
}
|
|
137
|
-
return this.highLimit.readValue().value.value;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* @method getLowLimit
|
|
141
|
-
* @return {Float}
|
|
142
|
-
*/
|
|
143
|
-
getLowLimit() {
|
|
144
|
-
if (!this.lowLimit) {
|
|
145
|
-
throw new Error("Alarm do not expose lowLimit");
|
|
146
|
-
}
|
|
147
|
-
return this.lowLimit.readValue().value.value;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* @method getLowLowLimit
|
|
151
|
-
* @return {Float}
|
|
152
|
-
*/
|
|
153
|
-
getLowLowLimit() {
|
|
154
|
-
if (!this.lowLowLimit) {
|
|
155
|
-
throw new Error("Alarm do not expose lowLowLimit");
|
|
156
|
-
}
|
|
157
|
-
return this.lowLowLimit.readValue().value.value;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* @method setHighHighLimit
|
|
161
|
-
* @param value {Float}
|
|
162
|
-
*/
|
|
163
|
-
setHighHighLimit(value) {
|
|
164
|
-
if (!this.highHighLimit) {
|
|
165
|
-
throw new Error("LimitAlarm instance must expose the optional HighHighLimit property");
|
|
166
|
-
}
|
|
167
|
-
this.highHighLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* @method setHighLimit
|
|
171
|
-
* @param value {Float}
|
|
172
|
-
*/
|
|
173
|
-
setHighLimit(value) {
|
|
174
|
-
if (!this.highLimit) {
|
|
175
|
-
throw new Error("LimitAlarm instance must expose the optional HighLimit property");
|
|
176
|
-
}
|
|
177
|
-
this.highLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* @method setLowLimit
|
|
181
|
-
* @param value {Float}
|
|
182
|
-
*/
|
|
183
|
-
setLowLimit(value) {
|
|
184
|
-
if (!this.lowLimit) {
|
|
185
|
-
throw new Error("LimitAlarm instance must expose the optional LowLimit property");
|
|
186
|
-
}
|
|
187
|
-
this.lowLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* @method setLowLowLimit
|
|
191
|
-
* @param value {Float}
|
|
192
|
-
*/
|
|
193
|
-
setLowLowLimit(value) {
|
|
194
|
-
if (!this.lowLowLimit) {
|
|
195
|
-
throw new Error("LimitAlarm instance must expose the optional LowLowLimit property");
|
|
196
|
-
}
|
|
197
|
-
this.lowLowLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
198
|
-
}
|
|
199
|
-
_onInputDataValueChange(dataValue) {
|
|
200
|
-
(0, node_opcua_assert_1.assert)(dataValue instanceof node_opcua_data_value_1.DataValue);
|
|
201
|
-
if (dataValue.statusCode === node_opcua_status_code_1.StatusCodes.BadWaitingForInitialData &&
|
|
202
|
-
dataValue.statusCode === node_opcua_status_code_1.StatusCodes.UncertainInitialValue) {
|
|
203
|
-
// we are not ready yet to use the input node value
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
if (dataValue.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
|
|
207
|
-
// what shall we do ?
|
|
208
|
-
this._signalNewCondition(null);
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (dataValue.value.dataType === node_opcua_variant_1.DataType.Null) {
|
|
212
|
-
// what shall we do ?
|
|
213
|
-
this._signalNewCondition(null);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
const value = dataValue.value.value;
|
|
217
|
-
this._setStateBasedOnInputValue(value);
|
|
218
|
-
}
|
|
219
|
-
_setStateBasedOnInputValue(value) {
|
|
220
|
-
throw new Error("_setStateBasedOnInputValue must be overriden");
|
|
221
|
-
}
|
|
222
|
-
_watchLimits() {
|
|
223
|
-
/// ----------------------------------------------------------------------
|
|
224
|
-
/// Installing Limits monitored
|
|
225
|
-
const _updateState = () => this.updateState();
|
|
226
|
-
if (this.highHighLimit) {
|
|
227
|
-
this.highHighLimit.on("value_changed", _updateState);
|
|
228
|
-
}
|
|
229
|
-
if (this.highLimit) {
|
|
230
|
-
this.highLimit.on("value_changed", _updateState);
|
|
231
|
-
}
|
|
232
|
-
if (this.lowLimit) {
|
|
233
|
-
this.lowLimit.on("value_changed", _updateState);
|
|
234
|
-
}
|
|
235
|
-
if (this.lowLowLimit) {
|
|
236
|
-
this.lowLowLimit.on("value_changed", _updateState);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
evaluateConditionsAfterEnabled() {
|
|
240
|
-
(0, node_opcua_assert_1.assert)(this.getEnabledState() === true);
|
|
241
|
-
// simulate input value event
|
|
242
|
-
const input = this.getInputNodeNode();
|
|
243
|
-
if (!input) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
const dataValue = input.readValue();
|
|
247
|
-
this._onInputDataValueChange(dataValue);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
exports.UALimitAlarmImpl = UALimitAlarmImpl;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UALimitAlarmImpl = void 0;
|
|
4
|
+
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
5
|
+
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
6
|
+
const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
7
|
+
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
8
|
+
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
9
|
+
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
10
|
+
const ua_alarm_condition_impl_1 = require("./ua_alarm_condition_impl");
|
|
11
|
+
const warningLog = (0, node_opcua_debug_1.make_warningLog)("AlarmsAndConditions");
|
|
12
|
+
const uaLimitAlarmInputSupportedDataType = [
|
|
13
|
+
node_opcua_variant_1.DataType.Double,
|
|
14
|
+
node_opcua_variant_1.DataType.Float,
|
|
15
|
+
node_opcua_variant_1.DataType.Byte,
|
|
16
|
+
node_opcua_variant_1.DataType.SByte,
|
|
17
|
+
node_opcua_variant_1.DataType.Int16,
|
|
18
|
+
node_opcua_variant_1.DataType.Int32,
|
|
19
|
+
node_opcua_variant_1.DataType.UInt16,
|
|
20
|
+
node_opcua_variant_1.DataType.UInt32
|
|
21
|
+
];
|
|
22
|
+
class UALimitAlarmImpl extends ua_alarm_condition_impl_1.UAAlarmConditionImpl {
|
|
23
|
+
/**
|
|
24
|
+
* @method (static)UALimitAlarm.instantiate
|
|
25
|
+
* @param namespace {INamespace}
|
|
26
|
+
* @param limitAlarmTypeId
|
|
27
|
+
* @param options
|
|
28
|
+
* @param options.inputNode
|
|
29
|
+
* @param options.optionals
|
|
30
|
+
* @param options.highHighLimit {Double}
|
|
31
|
+
* @param options.highLimit {Double}
|
|
32
|
+
* @param options.lowLimit {Double}
|
|
33
|
+
* @param options.lowLowLimit {Double}
|
|
34
|
+
* @param data
|
|
35
|
+
* @return {UALimitAlarm}
|
|
36
|
+
*/
|
|
37
|
+
static instantiate(namespace, limitAlarmTypeId, options, data) {
|
|
38
|
+
const addressSpace = namespace.addressSpace;
|
|
39
|
+
// must provide a inputNode
|
|
40
|
+
// xx assert(Object.prototype.hasOwnProperty.call(options,"conditionOf")); // must provide a conditionOf
|
|
41
|
+
(0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(options, "inputNode"), "UALimitAlarm.instantiate: options must provide the inputNode");
|
|
42
|
+
options.optionals = options.optionals || [];
|
|
43
|
+
let count = 0;
|
|
44
|
+
if (Object.prototype.hasOwnProperty.call(options, "highHighLimit")) {
|
|
45
|
+
options.optionals.push("HighHighLimit");
|
|
46
|
+
options.optionals.push("HighHighState");
|
|
47
|
+
count++;
|
|
48
|
+
}
|
|
49
|
+
if (Object.prototype.hasOwnProperty.call(options, "highLimit")) {
|
|
50
|
+
options.optionals.push("HighLimit");
|
|
51
|
+
options.optionals.push("HighState");
|
|
52
|
+
count++;
|
|
53
|
+
}
|
|
54
|
+
if (Object.prototype.hasOwnProperty.call(options, "lowLimit")) {
|
|
55
|
+
options.optionals.push("LowLimit");
|
|
56
|
+
options.optionals.push("LowState");
|
|
57
|
+
count++;
|
|
58
|
+
}
|
|
59
|
+
if (Object.prototype.hasOwnProperty.call(options, "lowLowLimit")) {
|
|
60
|
+
options.optionals.push("LowLowLimit");
|
|
61
|
+
options.optionals.push("LowLowState");
|
|
62
|
+
count++;
|
|
63
|
+
}
|
|
64
|
+
// xx assert(options.optionals,"must provide an optionals");
|
|
65
|
+
const alarmNode = ua_alarm_condition_impl_1.UAAlarmConditionImpl.instantiate(namespace, limitAlarmTypeId, options, data);
|
|
66
|
+
Object.setPrototypeOf(alarmNode, UALimitAlarmImpl.prototype);
|
|
67
|
+
(0, node_opcua_assert_1.assert)(alarmNode.conditionOfNode() !== null);
|
|
68
|
+
const inputNode = addressSpace._coerceNode(options.inputNode);
|
|
69
|
+
if (!inputNode) {
|
|
70
|
+
throw new Error("Expecting a valid input node");
|
|
71
|
+
}
|
|
72
|
+
(0, node_opcua_assert_1.assert)(inputNode.nodeClass === node_opcua_data_model_1.NodeClass.Variable);
|
|
73
|
+
// ----------------------- Install Limit Alarm specifics
|
|
74
|
+
// from spec 1.03:
|
|
75
|
+
// Four optional limits are defined that configure the states of the derived limit Alarm Types.
|
|
76
|
+
// These Properties shall be set for any Alarm limits that are exposed by the derived limit Alarm
|
|
77
|
+
// Types. These Properties are listed as optional but at least one is required. For cases where
|
|
78
|
+
// an underlying system cannot provide the actual value of a limit, the limit Property shall still be
|
|
79
|
+
// provided, but will have its AccessLevel set to not readable. It is assumed that the limits are
|
|
80
|
+
// described using the same Engineering Unit that is assigned to the variable that is the source
|
|
81
|
+
// of the alarm. For Rate of change limit alarms, it is assumed this rate is units per second
|
|
82
|
+
// unless otherwise specified.
|
|
83
|
+
if (count === 0) {
|
|
84
|
+
throw new Error("at least one limit is required");
|
|
85
|
+
}
|
|
86
|
+
const dataType = addressSpace.findCorrespondingBasicDataType(options.inputNode.dataType);
|
|
87
|
+
if (-1 === uaLimitAlarmInputSupportedDataType.indexOf(dataType)) {
|
|
88
|
+
const message = `UALimitAlarm.instantiate: inputNode must be of type ${uaLimitAlarmInputSupportedDataType
|
|
89
|
+
.map((a) => node_opcua_variant_1.DataType[a])
|
|
90
|
+
.join("|")}, got ${node_opcua_variant_1.DataType[dataType]}`;
|
|
91
|
+
warningLog(message);
|
|
92
|
+
throw new Error(message);
|
|
93
|
+
}
|
|
94
|
+
if (Object.prototype.hasOwnProperty.call(options, "highHighLimit") && options.highHighLimit !== undefined) {
|
|
95
|
+
alarmNode.setHighHighLimit(options.highHighLimit);
|
|
96
|
+
}
|
|
97
|
+
if (Object.prototype.hasOwnProperty.call(options, "highLimit")) {
|
|
98
|
+
alarmNode.setHighLimit(options.highLimit);
|
|
99
|
+
}
|
|
100
|
+
if (Object.prototype.hasOwnProperty.call(options, "lowLimit")) {
|
|
101
|
+
alarmNode.setLowLimit(options.lowLimit);
|
|
102
|
+
}
|
|
103
|
+
if (Object.prototype.hasOwnProperty.call(options, "lowLowLimit") && options.lowLowLimit != undefined) {
|
|
104
|
+
alarmNode.setLowLowLimit(options.lowLowLimit);
|
|
105
|
+
}
|
|
106
|
+
/*
|
|
107
|
+
* The InputNode Property provides the NodeId of the Variable the Value of which is used as
|
|
108
|
+
* primary input in the calculation of the Alarm state. If this Variable is not in the AddressSpace,
|
|
109
|
+
* a Null NodeId shall be provided. In some systems, an Alarm may be calculated based on
|
|
110
|
+
* multiple Variables Values; it is up to the system to determine which Variable’s NodeId is used.
|
|
111
|
+
*/
|
|
112
|
+
(0, node_opcua_assert_1.assert)(alarmNode.inputNode.nodeClass === node_opcua_data_model_1.NodeClass.Variable);
|
|
113
|
+
alarmNode.inputNode.setValueFromSource({ dataType: "NodeId", value: inputNode.nodeId });
|
|
114
|
+
// install inputNode monitoring for change
|
|
115
|
+
alarmNode.installInputNodeMonitoring(options.inputNode);
|
|
116
|
+
alarmNode._watchLimits();
|
|
117
|
+
return alarmNode;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @method getHighHighLimit
|
|
121
|
+
* @return {Number}
|
|
122
|
+
*/
|
|
123
|
+
getHighHighLimit() {
|
|
124
|
+
if (!this.highHighLimit) {
|
|
125
|
+
throw new Error("Alarm do not expose highHighLimit");
|
|
126
|
+
}
|
|
127
|
+
return this.highHighLimit.readValue().value.value;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* @method getHighLimit
|
|
131
|
+
* @return {Number}
|
|
132
|
+
*/
|
|
133
|
+
getHighLimit() {
|
|
134
|
+
if (!this.highLimit) {
|
|
135
|
+
throw new Error("Alarm do not expose highLimit");
|
|
136
|
+
}
|
|
137
|
+
return this.highLimit.readValue().value.value;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @method getLowLimit
|
|
141
|
+
* @return {Float}
|
|
142
|
+
*/
|
|
143
|
+
getLowLimit() {
|
|
144
|
+
if (!this.lowLimit) {
|
|
145
|
+
throw new Error("Alarm do not expose lowLimit");
|
|
146
|
+
}
|
|
147
|
+
return this.lowLimit.readValue().value.value;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* @method getLowLowLimit
|
|
151
|
+
* @return {Float}
|
|
152
|
+
*/
|
|
153
|
+
getLowLowLimit() {
|
|
154
|
+
if (!this.lowLowLimit) {
|
|
155
|
+
throw new Error("Alarm do not expose lowLowLimit");
|
|
156
|
+
}
|
|
157
|
+
return this.lowLowLimit.readValue().value.value;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* @method setHighHighLimit
|
|
161
|
+
* @param value {Float}
|
|
162
|
+
*/
|
|
163
|
+
setHighHighLimit(value) {
|
|
164
|
+
if (!this.highHighLimit) {
|
|
165
|
+
throw new Error("LimitAlarm instance must expose the optional HighHighLimit property");
|
|
166
|
+
}
|
|
167
|
+
this.highHighLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* @method setHighLimit
|
|
171
|
+
* @param value {Float}
|
|
172
|
+
*/
|
|
173
|
+
setHighLimit(value) {
|
|
174
|
+
if (!this.highLimit) {
|
|
175
|
+
throw new Error("LimitAlarm instance must expose the optional HighLimit property");
|
|
176
|
+
}
|
|
177
|
+
this.highLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* @method setLowLimit
|
|
181
|
+
* @param value {Float}
|
|
182
|
+
*/
|
|
183
|
+
setLowLimit(value) {
|
|
184
|
+
if (!this.lowLimit) {
|
|
185
|
+
throw new Error("LimitAlarm instance must expose the optional LowLimit property");
|
|
186
|
+
}
|
|
187
|
+
this.lowLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* @method setLowLowLimit
|
|
191
|
+
* @param value {Float}
|
|
192
|
+
*/
|
|
193
|
+
setLowLowLimit(value) {
|
|
194
|
+
if (!this.lowLowLimit) {
|
|
195
|
+
throw new Error("LimitAlarm instance must expose the optional LowLowLimit property");
|
|
196
|
+
}
|
|
197
|
+
this.lowLowLimit.setValueFromSource({ dataType: node_opcua_variant_1.DataType.Double, value });
|
|
198
|
+
}
|
|
199
|
+
_onInputDataValueChange(dataValue) {
|
|
200
|
+
(0, node_opcua_assert_1.assert)(dataValue instanceof node_opcua_data_value_1.DataValue);
|
|
201
|
+
if (dataValue.statusCode === node_opcua_status_code_1.StatusCodes.BadWaitingForInitialData &&
|
|
202
|
+
dataValue.statusCode === node_opcua_status_code_1.StatusCodes.UncertainInitialValue) {
|
|
203
|
+
// we are not ready yet to use the input node value
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (dataValue.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
|
|
207
|
+
// what shall we do ?
|
|
208
|
+
this._signalNewCondition(null);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (dataValue.value.dataType === node_opcua_variant_1.DataType.Null) {
|
|
212
|
+
// what shall we do ?
|
|
213
|
+
this._signalNewCondition(null);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const value = dataValue.value.value;
|
|
217
|
+
this._setStateBasedOnInputValue(value);
|
|
218
|
+
}
|
|
219
|
+
_setStateBasedOnInputValue(value) {
|
|
220
|
+
throw new Error("_setStateBasedOnInputValue must be overriden");
|
|
221
|
+
}
|
|
222
|
+
_watchLimits() {
|
|
223
|
+
/// ----------------------------------------------------------------------
|
|
224
|
+
/// Installing Limits monitored
|
|
225
|
+
const _updateState = () => this.updateState();
|
|
226
|
+
if (this.highHighLimit) {
|
|
227
|
+
this.highHighLimit.on("value_changed", _updateState);
|
|
228
|
+
}
|
|
229
|
+
if (this.highLimit) {
|
|
230
|
+
this.highLimit.on("value_changed", _updateState);
|
|
231
|
+
}
|
|
232
|
+
if (this.lowLimit) {
|
|
233
|
+
this.lowLimit.on("value_changed", _updateState);
|
|
234
|
+
}
|
|
235
|
+
if (this.lowLowLimit) {
|
|
236
|
+
this.lowLowLimit.on("value_changed", _updateState);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
evaluateConditionsAfterEnabled() {
|
|
240
|
+
(0, node_opcua_assert_1.assert)(this.getEnabledState() === true);
|
|
241
|
+
// simulate input value event
|
|
242
|
+
const input = this.getInputNodeNode();
|
|
243
|
+
if (!input) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const dataValue = input.readValue();
|
|
247
|
+
this._onInputDataValueChange(dataValue);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
exports.UALimitAlarmImpl = UALimitAlarmImpl;
|
|
251
251
|
//# sourceMappingURL=ua_limit_alarm_impl.js.map
|