SCADA system can use
PingURL operation to verify that NMS is operational.
SCADA system can use
GetMethods operation to determine operations supported by NMS.
SCADAAnalogChangedNotification
SCADA system can use this operation to report that analog or digital measurement(s) has changed. The message consists of an array of
scadaAnalog objects.
The following
scadaAnalog fields should be used (XPath notation is used):
•
|
@objectID or objectName - SCADA point ID;
|
•
|
measurementTypeID - measurement type (used to determine NMS attribute);
|
•
|
value - measurement value and units;
|
•
|
quality - quality code associated with the measurement;
|
•
|
timeStamp - measurement timestamp.
|
Note: If SCADA point ID uniquely identifies the measurement then the
measurementTypeID field can be omitted.
Possible error conditions:
•
|
Unable to map measurement to NMS attribute;
|
SCADAAnalogChangedNotification Example
•
|
Sets Amps attribute to 260.78 and turns off faultIndicator for device BR_R-2241.
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ver="http://www.multispeak.org/Version_4.1_Release" xmlns:cpsm="cpsm">
<ver:MultiSpeakMsgHeader UserID="nms" Pwd="test"/>
<ver:SCADAAnalogChangedNotification>
<ver:objectName>BR_R-2241</ver:objectName>
<ver:value units="Amps">260.78</ver:value>
<ver:quality>Measured</ver:quality>
<ver:timeStamp>2010-06-27T14:41:15-05:00</ver:timeStamp>
<ver:measurementTypeID>Amps</ver:measurementTypeID>
<ver:objectName>BR_R-2241</ver:objectName>
<ver:quality>Measured</ver:quality>
<ver:timeStamp>2010-06-27T14:41:15-05:00</ver:timeStamp>
<ver:measurementTypeID>faultIndicator</ver:measurementTypeID>
</ver:SCADAAnalogChangedNotification>
SCADAAnalogChangedNotificationByPointID
The SCADA system can use this operation to report that an analog or digital measurement has changed. The message consists of a single
scadaAnalog object.
The following
scadaAnalog fields should be used:
•
|
@objectID or objectName - SCADA point ID;
|
•
|
measurementTypeID - measurement type (used to determine NMS attribute);
|
•
|
value - measurement value and units;
|
•
|
quality - quality code associated with the measurement;
|
•
|
timeStamp - measurement timestamp.
|
Possible error conditions:
•
|
Unable to map measurement to NMS attribute;
|
AnalogChangedNotificationByPointID
This operation is used by SCADA system to respond to the InitiateAnalogReadByPointID request made by NMS.
•
|
The message format is the same as SCADAAnalogChangedNotification with one additional field ' transactionID'.
|
•
|
Its value has to match the value of the ' transactionID' field in the InitiateAnalogReadByPointID message the SCADA system is responding to.
|
SCADAStatusChangedNotification
The SCADA system will use this operation to report that one or more devices have changed status. The message consists of an array of
scadaStatus objects.
The following
scadaStatus fields should be used:
•
|
@objectID or objectName - SCADA point ID;
|
•
|
status - SCADA device status (Open/Closed);
|
•
|
quality - quality code associated with the status update;
|
•
|
changeCounter - number of device status changes since the last report;
|
•
|
timeStamp - device operation timestamp.
|
Possible error conditions:
SCADAStatusChangedNotification examples
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ver="http://www.multispeak.org/Version_4.1_Release" xmlns:cpsm="cpsm">
<ver:MultiSpeakMsgHeader UserID="nms" Pwd="test"/>
<ver:SCADAStatusChangedNotification>
<ver:objectName>BR_R-2241</ver:objectName>
<ver:quality>Measured</ver:quality>
<ver:status>Open</ver:status>
<ver:changeCounter>1</ver:changeCounter>
<ver:timeStamp>2011-03-04T11:44:10</ver:timeStamp>
</ver:SCADAStatusChangedNotification>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ver="http://www.multispeak.org/Version_4.1_Release" xmlns:cpsm="cpsm">
<ver:MultiSpeakMsgHeader UserID="nms" Pwd="test"/>
<ver:SCADAStatusChangedNotification>
<ver:objectName>BR_R-2241</ver:objectName>
<ver:quality>Measured</ver:quality>
<ver:status>Closed</ver:status>
<ver:changeCounter>1</ver:changeCounter>
<ver:timeStamp>2011-03-04T11:44:10</ver:timeStamp>
</ver:SCADAStatusChangedNotification>
SCADAStatusChangedNotificationByPointID
The SCADA system can use this operation to report that the status of a device has changed. The message consists of a single
scadaStatus object.
The following
scadaStatus fields should be used:
•
|
@objectID or objectName - SCADA point ID;
|
•
|
status - SCADA device status (Open/Closed);
|
•
|
quality - quality code associated with the status update;
|
•
|
changeCounter - number of device status changes since the last report;
|
•
|
timeStamp - device operation timestamp.
|
Possible error conditions:
StatusChangedNotificationByPointID
This operation is used by the SCADA system to respond to the
InitiateStatusReadByPointID request made by NMS.
•
|
Message format is the same as SCADAStatusChangedNotification with one additional field ' transactionID'.
|
•
|
Its value has to match value of the ' transactionID' field in the InitiateStatusReadByPointID message the SCADA system is responding to.
|
SCADATagChangedNotification
The SCADA system can use this operation to report that there has been a change in tag(s) placed on devices in the SCADA system. The message consists of an array of
scadaTag objects.
The following
scadaTag fields should be used:
•
|
@objectID - SCADA tag identifier;
|
•
|
scadaPointID - SCADA point id;
|
•
|
@verb - action (New/Change/Delete);
|
•
|
tagType - SCADA tag type;
|
•
|
username - SCADA operator's user name;
|
•
|
comment - tag comments, notes;
|
•
|
timeStamp - tag operation timestamp.
|
Possible error conditions:
This operation does not exist in MultiSpeak 4.1 specification.
SCADATagChangedNotification examples
1.
|
Place HOLD tag on device BR2422
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ver="http://www.multispeak.org/Version_4.1_Release" xmlns:cpsm="cpsm">
<ver:MultiSpeakMsgHeader UserID="nms" Pwd="test"/>
<ver:SCADATagChangedNotification>
<ver:scadaTag objectID="scada-tag-1" verb="New">
<ver:tagType>Hold</ver:tagType>
<ver:scadaPointID>BR2422</ver:scadaPointID>
<ver:username>scada</ver:username>
<ver:comment>test tag</ver:comment>
<ver:timeStamp>2011-07-19T14:12:31.859-05:00</ver:timeStamp>
</ver:SCADATagChangedNotification>
2.
|
Update HOLD tag on device BR2422
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ver="http://www.multispeak.org/Version_4.1_Release" xmlns:cpsm="cpsm">
<ver:MultiSpeakMsgHeader UserID="nms" Pwd="test"/>
<ver:SCADATagChangedNotification>
<ver:scadaTag objectID="scada-tag-1" verb="Change">
<ver:tagType>Hold</ver:tagType>
<ver:scadaPointID>BR2422</ver:scadaPointID>
<ver:username>scada2</ver:username>
<ver:comment>updated test tag</ver:comment>
<ver:timeStamp>2011-07-19T14:13:31.859-05:00</ver:timeStamp>
</ver:SCADATagChangedNotification>
3.
|
Remove HOLD tag from device BR2422
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ver="http://www.multispeak.org/Version_4.1_Release" xmlns:cpsm="cpsm">
<ver:MultiSpeakMsgHeader UserID="nms" Pwd="test"/>
<ver:SCADATagChangedNotification>
<ver:scadaTag objectID="scada-tag-1" verb="Delete">
<ver:tagType>Hold</ver:tagType>
<ver:scadaPointID>BR2422</ver:scadaPointID>
<ver:username>scada</ver:username>
<ver:comment>updated test tag</ver:comment>
<ver:timeStamp>2011-07-19T14:14:31.859-05:00</ver:timeStamp>
</ver:SCADATagChangedNotification>
TagChangedNotificationByPointID
This operation is used by the SCADA system to respond to the
InitiateTagReadByPointID request made by NMS.
•
|
The message format is the same as SCADATagChangedNotification with one additional field ' transactionID'.
|
•
|
Its value has to match value of the ' transactionID' field in the InitiateTagReadByPointID message SCADA system is responding to.
|
•
|
This operation does not exist in MultiSpeak 4.1 specification.
|
The SCADA system can use this operation to report to NMS the outcome of a control action requested by the
InitiateControl operation. The message consists of a single of
scadaControl object. In case of successful control action field, the
controlStatus should contain value "Control accepted." Any other value is interpreted as control failure.
ControlActionCompleted example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://www.multispeak.org/Version_4.1_Release">
<ver:MultiSpeakMsgHeader UserID="scada" Pwd="test"/>
<ver:ControlActionCompleted>
<ver:scadaPointID>BR2422</ver:scadaPointID>
<ver:function>Direct operate</ver:function>
<ver:relayType>Normal</ver:relayType>
<ver:controlStatus>Control accepted</ver:controlStatus>
<ver:transactionID>12345</ver:transactionID>
</ver:ControlActionCompleted>
The SCADA system can use this operation to report alarms to NMS. The message consists of an array of voltageA-larm objects.
The following
voltageAlarm fields should be used:
•
|
@objectID - SCADA alarm identifier;
|
•
|
sourceIdentifier - SCADA point id;
|
•
|
sourceIdentifier/@name - attribute name;
|
•
|
@verb - action (only New is allowed);
|
•
|
@errorString - alarm description;
|
•
|
comments - alarm description;
|
•
|
eventTime - SCADA alarm timestamp;
|
•
|
voltageAlarmList/voltageAlarmItem[1]/voltageValue - SCADA measurement value, which caused the alarm;
|
•
|
voltageAlarmList/voltageAlarmItem[1]/quality - SCADA quality code;
|
•
|
voltageAlarmList/voltageAlarmItem[1]/analogCondition - SCADA limit violation;
|
•
|
voltageAlarmList/voltageAlarmItem[1]/phaseCode - SCADA alarm phases.
|
For alarms SCADA quality code is passed "as-is." Configured quality code mapping rules are not applied in this case.
Possible error conditions:
VoltageAlarmNotification example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://www.multispeak.org/Version_4.1_Release" xmlns:cpsm="cpsm">
<ver:MultiSpeakMsgHeader UserID="nms1" Pwd="systems"/>
<ver:VoltageAlarmNotification>
<ver:voltageAlarm objectID="alarm-1" verb="New" errorString="alarm test">
<ver:comments>comment</ver:comments>
<ver:sourceIdentifier name="Volts">BR2422</ver:sourceIdentifier>
<ver:eventTime>2011-05-11T10:05:25.484-05:00</ver:eventTime>
<ver:voltageValue units="V">100</ver:voltageValue>
<ver:quality>Measured</ver:quality>
<ver:analogCondition>H1</ver:analogCondition>
<ver:phaseCode>BC</ver:phaseCode>
</ver:VoltageAlarmNotification>
InitiateStatusReadByPointID
Initiates process of sending device status information for non-SCADA devices from NMS to SCADA as series of
StatusChangedNotificationByPointID messages.
Causes NMS viewer to focus on given SCADA point. Viewer window has to be open (this message does not open viewer window).
MultiSpeak Message Header
The attributes
UserID and
Pwd in the MultiSpeak message header are used for authentication unless Basic HTTP Authentication is used. When used for authentication, these attributes should be populated with valid NMS credentials for all messages coming to NMS with exception of
PingURL and
GetMethods. When Basic HTTP Authentication is used, the attribute
Pwd should be either empty or omitted.
The attribute
UserID is also used to determine the SCADA system the message originated from. It is checked against the names of the known SCADA systems in the SCADA_IDS database table. If the adapter is configured to communicate with a single SCADA system and the configuration parameter
config.strict_scada_name_check is set to
false, then SCADA name check is skipped.