All Methods defined for AnalyserDeviceType and its state machines are grouped under the MethodSet component inherited from DeviceType [OPC 10000-100].
AnalyserDeviceType defines a Method called GetConfiguration, which is used to read the complete configuration of the AnalyserDevice and all of its components (AnalyserChannel, Accessory, AccessorySlot etc.) from the Analyser Server. The configuration is a proprietary structure defined by the analyser vendor, and is represented as a ByteString.
AnalyserDeviceType defines a Method called SetConfiguration, which is used to write the complete configuration of the AnalyserDevice and all of its components to the Analyser Server. This Method can be executed only when all of the AnalyserChannels are in a Stopped state or in a Maintenance state (see 5.3.4.3). An attempt to call it while in any other state results in a failure of the Method call.
When the SetConfiguration Method is executed, it automatically causes a transition of all AnalyserChannels in a Stopped state to the Resetting state and the new configuration becomes active. The configuration is a structure provided by the analyser vendor, and represented as a ByteString.
Even if the ADI Client verifies the configuration before calling the SetConfiguration Method, the Analyser Server has the ultimate responsibility to verify the configuration (Parameter ranges, Parameter values relating to each other, Parameter values in regard to installed hardware) before applying the requested changes. If any Parameter value is invalid, the whole configuration shall be rejected.
If an error occurs during a method call, the analyser state should be returned the same as before the call or at least a stable state.
Table 6 – GetConfiguration Method
Method |
Description |
|||
GetConfiguration |
Read the complete configuration of the AnalyserDevice and all of its components to the Analyser Server. |
|||
|
InputArguments |
|||
|
Name |
DataType |
ValueRank / arrayDimension |
Description |
|
|
N/A |
N/A |
|
|
OutputArguments |
|||
|
||||
|
ConfigData |
ByteString |
-1/[0] |
Configuration structure represented as a single dimensional array of Bytes. Length of an array is provided by the Server at runtime. If the size of ConfigData parameter is larger than a single OPC UA message, the AnalyserDevice.ConfigData object shall be used. |
Table 7 – SetConfiguration Method
Method |
Description |
|||
SetConfiguration |
Write the complete configuration of the AnalyserDevice and all of its components to the Analyser Server and make the new configuration active. |
|||
|
InputArguments |
|||
|
Name |
DataType |
ValueRank / arrayDimension |
Description |
|
ConfigData |
ByteString |
-1/[0] |
Configuration structure represented as a single dimensional array of Bytes. Length of an array is provided by the Client at runtime. If the size of ConfigData parameter is larger than a single OPC UA message, the AnalyserDevice.ConfigData object shall be used. |
|
OutputArguments |
|||
|
||||
|
ConfigDataDigest |
String |
-1/[0] |
Vendor specific digest (like SHA1) of the ConfigData. It is calculated, by the Server, after ConfigData is received and before any change has been made. It is used as the reference to know if the configuration has been altered after the SetConfiguration call. This string is intended to be human readable for example the hexadecimal or Base64 representation of the SHA1. |
AnalyserDevice defines a Method called GetConfigDataDigest, which is used to read the digest (e.g. SHA1 hash) of the complete analyser configuration. The digest is returned in a Method argument called ConfigDataDigest. It represents the same data which is calculated by the Server, when SetConfiguration Method is called. The value returned in ConfigDataDigest will change when the configuration of the analyser is changed in a way that may alter the results it produces. Examples of analyser changes that may affect the value of ConfigDataDigest are:
- A configuration Parameter of the analyser or any of its components is modified. There are rare cases where a change of a Parameter does not affect the analyser results like setting an acquisition trigger. In these cases the ConfigDataDigest shall not be recomputed. The vendor shall clearly specify which Parameters do not affect ConfigDataDigest.
- A Method call which does not update Parameters but alters behaviour of the analyser (e.g. firmware update) is called. The vendor shall clearly specify which Methods affect the returned value from ConfigDataDigest
- An accessory is added or removed
- Analyser is configured locally via built-in panel.
By comparing the ConfigDataDigest output argument from the SetConfiguration Method with the current value returned in the ConfigDataDigest argument of the GetConfigDataDigest Method, a Client shall be able to determine if the analyser configuration has been modified in such a way that the results produced by the analyser may be different than expected.
Table 8 – GetConfigDataDigest Method
Method |
Description |
|||
GetConfigDataDigest |
Read the digest of the complete analyser configuration as computed by the Server. |
|||
|
InputArguments |
|||
|
Name |
DataType |
ValueRank / arrayDimension |
Description |
|
None |
N/A |
N/A |
|
|
OutputArguments |
|||
|
||||
|
ConfigDataDigest |
String |
-1/[0] |
Vendor specific digest (like SHA1) of the complete analyser configuration. It is used as the reference to know if the configuration has been altered after the last SetConfiguration call. This string is intended to be human readable for example the hexadecimal or Base64 representation of the SHA1. |
A Method called CompareConfigDataDigest can be used to ask the AnalyserDevice if the ConfigDataDigest held by the Client reflects the current configuration of the analyser. This approach relieves the client from the responsibility for comparing the configuration digests.
Table 9 – CompareConfigDataDigest Method
Method |
Description |
|||
CompareConfigDataDigest |
Compare the provided ConfigDataDigest with the actual one of the analyser. |
|||
|
InputArguments |
|||
|
Name |
DataType |
ValueRank / arrayDimension |
Description |
|
ConfigDataDigest |
String |
-1/[0] |
Vendor specific digest (like SHA1) of the complete analyser configuration as returned by SetConfiguration and GetConfigurationDataDigest. This string is intended to be human readable for example the hexadecimal or Base64 representation of the SHA1. |
|
OutputArguments |
|||
|
||||
|
IsEqual |
Boolean |
-1/[0] |
True if the input ConfigDataDigest is equal to the actual digest of the analyser configuration. |
AnalyserDeviceType defines several Methods used for simultaneous control of analyser channels. Those Methods are defined in the following tables.
Table 10 – ResetAllChannels Method
Method |
Description |
ResetAllChannels |
Reset all AnalyserChannels belonging to this AnalyserDevice. |
|
InputArguments: NONE |
|
OutputArguments: NONE |
Table 11 – StartAllChannels Method
Method |
Description |
StartAllChannels |
Start all AnalyserChannels belonging to this AnalyserDevice. |
|
InputArguments: NONE |
|
OutputArguments: NONE |
Table 12 – StopAllChannels Method
Method |
Description |
StopAllChannels |
Stop all AnalyserChannels belonging to this AnalyserDevice. |
|
InputArguments: NONE |
|
OutputArguments: NONE |
Table 13 – AbortAllChannels Method
Method |
Description |
AbortAllChannels |
Abort all AnalyserChannels belonging to this AnalyserDevice. |
|
InputArguments: NONE |
|
OutputArguments: NONE |
Methods described in Table 10, Table 11, Table 12, Table 13 operate on all AnalyserChannels that are in the Operating state and their Configuration.IsEnabled Parameter is set to True. These Methods are not guaranteed to be atomic and their effect on each AnalyserChannel is not necessarily simultaneous. For example, the following implementation is perfectly legal:
For each AnalyserChannel If AnalyserChannel.IsInOperatingState AND AnalyserChannel.Configuration.IsEnabled == TRUE AnalyserChannel.Reset ()
|
Table 14 - GotoOperating Method
Method |
Description |
GotoOperating |
Causes the AnalyserDeviceStateMachine to go to Operating state, forcing all AnalyserChannels to leave the SlaveMode state and go to the Operating state. |
|
InputArguments: NONE |
|
OutputArguments: NONE |
Table 15 - GotoMaintenance Method
Method |
Description |
GotoMaintenance |
Causes the AnalyserDeviceStateMachine to go to Maintenance state, forcing all AnalyserChannels to SlaveMode state.. |
|
InputArguments: NONE |
|
OutputArguments: NONE |
Table 16 – Method result codes for AnalyserDeviceType methods
Result code |
Description |
Bad_InvalidArgument |
One or more argument re invalid. |
Bad_InvalidState |
Method called when the analyser is not in the appropriate state. |
Bad_RequestTooLarge |
The request message size exceeds limits set by the server. |
Bad_ResponseTooLarge |
The response message size exceeds limits set by the client. |
Bad_ServiceUnsupported |
The analyser does not support the requested service. |
Bad_UnexpectedError |
An unexpected error occurred. |