| namespace | http://opcfoundation.org/UA/ |
| nodeClass | ObjectType |
| typedDefinition | LimitAlarmType i=2955 |
| isAbstract | false |
OptionalaudibleOptionalaudibleOptionalbaseOptionalbaseOptionalbaseOptionalbaseOptionalbaseReadonlybrowseOptionalconditionOptionalconditionOptionalconfirmOptionalconfirmedOptionaldeclaredthe AccessRestrictions the nodeset declared, verbatim, whether or not this loader was asked
to apply them. accessRestrictions above is what is enforced and is gated by the loader's
option; this is what the document said, and is documentation only. Without it a document
loaded with the default policy cannot be written back out as the document it was.
Optionaldesignthe nodeset's DesignToolOnly="true": the node is there for design tools only (a name to
reuse, such as OPC 10000-100 DI's Configuration, Tuning, ... FunctionalGroups), so nothing is
expected to reference it. Documentation only, kept so the node is written back out as declared.
ReadonlyeventOptionalfirstOptionalfirstOptionalgetReadonlyhasOptionalhighOptionalhighOptionalhighOptionalhighOptionallatchedOptionallocalOptionallowOptionallowOptionallowOptionallowOptionalmaxReadonlynodeReadonlynodeOptionalnodesetthe <Category> elements of the nodeset, in order: the conformance units or facets the
working group filed this node under. Kept, and named, for the same reasons as
nodesetDocumentation: I4AAS has types with a Category property.
Optionalnodesetthe <Documentation> element of the nodeset: a link into the specification text that
defines this node (https://reference.opcfoundation.org/...), at most one. It is not the
Description attribute and no service exposes it; it is kept so that a tool can show where a
node comes from, and so that the node can be written back out as the document that created it.
Named after the element, not documentation: the children of a node are reachable as
properties under their browse name, and DI's ISupportInfoType has a Documentation folder.
OptionaloffOptionalonOptionalonOptionaloutOptionalplaceOptionalplaceOptionalreOptionalreOptionalreleasethe maturity a nodeset declares for this node: "Draft" or "Deprecated", or undefined for the default, "Released". It is documentation rather than behaviour -- nothing in the address space acts on it -- but a NodeSet2 document states it, and a node that has forgotten it cannot be written back out as the document that created it.
OptionalremoveOptionalremoveOptionalresetOptionalreset2OptionalsetpointOptionalseverityOptionalseverityOptionalseverityOptionalseverityOptionalshelvingOptionalsilenceOptionalsilenceOptionalsuppressOptionalsuppress2OptionalsuppressedOptionalunsuppressOptionalunsuppress2assign DeviationStuff.onSetpointDataValueChange instead; this delegates to it.
browse the node to extract information requested in browseDescription
Optionalsession: ISessionContextWhat the alarm reports when its state changes. Assign to it to give an alarm a message and a severity of its own:
alarm.calculateConditionInfo = (state, isActive, value, oldConditionInfo) =>
new ConditionInfo({
message: `Tank is almost ${Math.ceil(Number(value) * 100)}% full`,
severity: 100,
quality: StatusCodes.Good,
retain: true
});
The default returns the previous ConditionInfo unchanged, so an alarm that does not assign one reports nothing new.
This has been the documented way to give an alarm its own message for years, but under
the name _calculateConditionInfo and only on the implementation class, so following
the documentation meant importing from inside the package. That name still works and is
deprecated.
OptionaloptionalFilter: CloneFilterOptionalextraInfo: CloneExtraInfoOptionalretain: booleanfind the the references that are strictly of type reference.
The isForward boolean flag specifies the direction of the references to be looked for.
Forward direction is implied if omitted.
OptionalisForward: booleanfind all the references that are strictly of type reference.
The isForward boolean flag specifies the direction of the references to be looked for.
Forward direction is implied if omitted.
OptionalisForward: booleanfind all the nodes that are referenced by references strictly of type reference.
The isForward boolean flag specifies the direction of the references to be looked for.
Forward direction is implied if omitted.
OptionalisForward: booleanfind all the references that are of type reference or a sub type of reference, in the
direction specified by browseDirection
OptionalbrowseDirection: BrowseDirectionfind all the nodes that are referenced by references of type reference or a
sub type of reference, in the direction specified by browseDirection
OptionalbrowseDirection: BrowseDirectionreturn a complete name of this object by pre-pending name of its parent(s) to its own name
get effective accessRestrictions if (inherited is true) and node has no accessRestrictions, then default accessRestriction from namespace is returned if (inherited is false) and node has no accessRestrictions, then AccessRestrictionsFlag.None is returned
Get the Child by name, if browseName is string and namespaceIndex undefined then the search doesn't care about namespace matching
OptionalnamespaceIndex: numberOptionalnamespaceIndex: numberOptionallocale: string
the locale of the text to return (e.g. en-EN)
return a array of the objects for which this node is an EventSource nodes = HasEventSource => self
return a array with the event source of this object. self = HasEventSource => nodes
OptionalnamespaceIndex: numberOptionalnamespaceIndex: numberreturn the versioning node
OptionalnamespaceIndex: numberprivate
What the alarm does when the value of its input node changes. Assign to it to give an alarm a behaviour of its own, without deriving from an implementation class:
alarm.onInputDataValueChange = (newValue) => {
const tooHot = newValue.value.value > 80;
if (tooHot !== alarm.activeState.getValue()) {
alarm.signalNewCondition(tooHot ? "Active" : "Inactive", tooHot, `${newValue.value.value}`);
}
};
The default does nothing: a plain AlarmConditionType cannot know what its input means. Alarm types that do know (limit alarms, off-normal alarms) already define it, so assigning to one of those replaces the behaviour it came with.
The old name _onInputDataValueChange still works and is deprecated.
What the alarm does when the value of its setpoint node changes. A deviation alarm watches two nodes, not one, and this is the setpoint half: assign to it to decide what moving the setpoint means, without deriving from an implementation class:
alarm.onSetpointDataValueChange = (dataValue) => {
// a setpoint the operator is still dialling in should not trip the alarm
if (dataValue.statusCode.isGood()) {
alarm.setStateBasedOnInputValue(alarm.getInputNodeValue()!);
}
};
The default re-evaluates the alarm state against the new setpoint, which is what a deviation alarm means; assigning to it replaces that.
The old name _onSetpointDataValueChange still works and is deprecated.
OptionalindexRange: NumericRangeOptionaldataEncoding: QualifiedNameLike | nullOptionaloptions: ISetStateOptionsHow the alarm turns the value of its input node into limit states. Assign to it to give a limit alarm a rule of its own:
alarm.setStateBasedOnInputValue = (value) => {
const isActive = value > alarm.getHighLimit();
alarm.signalNewCondition(isActive ? "High" : null, isActive, value.toFixed(3));
};
Every concrete limit alarm type already defines this, so assigning to one replaces the rule it came with; the base LimitAlarmType has no limit states of its own and throws.
The old name _setStateBasedOnInputValue still works and is deprecated.
Raise a new condition event for this alarm, moving it to the given state.
Call this only when the condition has actually changed: it throws when the ConditionInfo it computes is equal to the current one, because an event that reports nothing new is a bug in the caller rather than a state the alarm can represent.
The old name _signalNewCondition still works and is deprecated.