|
IResourceDiscovery Contract
This interface is composed of methods used to:
- initiate a context with the server,
- read the server's MIB,
- discover objects, alarms, and events supported by the server,
- create lists within the server of selected objects, alarms, or events, and
- create read and write endpoints and add one or more lists to them.
Context Management
|
Initiate
|
This method is used to establish a context between the client and
the server. The server must authenticate the client when this method
is called.
Once created, the context is capable of multiplexing concurrent WCF
connections to Xi endpoints. In some cases, there may be more than
one instance of the Read or Write endpoints (see the
CreateEndpoint() method for more information about endpoints.
If the WCF connection to the Resource Discovery Endpoint is
inadvertently disconnected, the client can prevent the context from
timing-out and automatically closing by calling the
ReInitiateContext() method.
Heritage: This method corresponds to the Initiate service defined by
the ISO 9506 Manufacturing Messaging Specification (MMS) that is
used to open an MMS environment between the client and server.
The term "context" is taken from IEC 61158 IEC 61158-5-9: Digital
data communications for measurement and control -- Fieldbus for use
in industrial control systems -- Part 5-9: Application layer service
definition -- Type 9 elements. This specification derives its
context object from the MMS Environment.
|
|
ReInitiate
|
This method is used to reinitate an existing context after a
failure of the underlying WCF connection. The server must
reauthenticate the client when this method is called.
|
|
Conclude
|
This method is used to close a context. When the context is
closed, all resources/endpoints associated with the context are
released.
Heritage: This method corresponds to the Conclude service defined by
the ISO 9506 Manufacturing Messaging Specification (MMS) that is
used to close the MMS environment between the client and server.
|
|
ClientKeepAlive
|
To prevent a client - server context from timing out it is
necessary to invoke a method that requires a Context Id within the
timeout interval. This method provides a very low overhead method to
keep a context alive when a client has no other actions to perform.
A common situation may be where the client has setup ICallback to
monitor data values.
|
Discovery
|
Identify
|
This method is used to get the description of the server. This
method can be called before a context has been established with the
server.
Heritage: This method corresponds to the Identify service defined by
the ISO 9506 Manufacturing Messaging Specification (MMS).
|
|
Status
|
This method is used to get the state of the server. The client
can also register for changes in the ServerState by adding it to a
data object list. See the ServerStateId class for the definition of
the Object Id of the ServerState object.
Heritage: This method corresponds to the Status service defined by
the ISO 9506 Manufacturing Messaging Specification (MMS).
|
|
LookupResultCodes
|
This method returns text descriptions of error codes.
Heritage: This method corresponds to the Microsoft errlook.exe
utility.
|
|
FindObjects
|
This method is used to find objects in the server. The client
uses the findCriteria parameter to identify a starting branch and a
set of filter criteria. It also specifies the maximum number of
objects to return.
The server examines the objects that are children of the specified
branch and selects those that match the filter criteria. Note that
"children" are objects whose root paths can be created by appending
their names to the path used to identify the starting branch.
The base object attributes of the selected objects are returned to
the client. The number returned is limited by the number specified
in the numberToReturn parameter. If the number returned is less than
than that number, then the client can safely assume that the server
has no more to return.
However, if the number returned is equal to that number, then the
client can retrieve the next set of results by issuing another
FindObjects() call with the findCriteria parameter set to null. A
null findCriteria indicates to the server to continue returning
results from those remaining in the list. The client eventually
detects the end of the list by receiving a response that returns
less than specified by the numberToReturn parameter.
Heritage: This method is based on the List service of the ISO 9594-1
Information technology -- Open Systems Interconnection -- The
Directory: Overview of concepts, models and services. ISO 9594 also
defines the object hierarchy model that is used by the server.
|
|
FindTypes |
This method is used to find type definitions in the server. The
client uses the findCriteria parameter to identify a starting branch
and a set of filter criteria. It also specifies the maximum number
of types to return.
|
|
FindRootPaths
|
Each discoverable object in the server has at least one path to
the root (called the root path). A root path is represented by an
ordered list of object names beginning with "Root" and ending with
the name of the object.
This method identifies an object by one of its root paths and
requests the server to return any additional root paths that exist.
If there are no other root paths that can be used to reach the
object, then null is returned.
|
|
GetTypeAttributes
|
This method is used to get the description of a data type or an
object type. This description is intended to be used by the client
to understand the semantics and composition of the data type or
object type. It cannot be used for standard data types.
Heritage: This method is derived from the GetNamedTypeAttributes
service defined by the ISO 9506 Manufacturing Messaging
Specification (MMS). It has been adapted to also apply to Object
Types.
|
|
GetStandardMib
|
This method is used to read the standard MIB.
Heritage: This method corresponds to the IETF RFC 1157 Simple
Network Management Protocol Get-Request PDU, with the exception that
there is only one standard MIB object, so a list of MIB Object Ids
is not required.
|
|
GetVendorMib
|
This method is used to read the vendor-specific MIB objects.
Heritage: This method corresponds to the IETF RFC 1157 Simple
Network Management Protocol Get-Request PDU.
|
Endpoint Management
|
AddListToEndpoint
|
This method adds one or more lists to an endpoint.
|
|
RemoveListsFromEndpoint
|
This method removes one or more lists from an endpoint.
|
List Management
|
DefineList
|
This method is used to create a list of data objects or
alarms/events within the context.
Heritage: Data object lists correspond to Named Variable Lists as
defined by the ISO 9506 Manufacturing Message Specification (MMS),
with the exception that the server provides the name of the list as
an alias.
Alarms/events correspond to Alarm Lists described in EEMUA
Publication 191 "Alarm Systems: A Guide to Design, Management and
Procurement". See
http://www.eemua.org
They are implemented by the Microsoft .NET Framework List class.
|
|
DeleteLists
|
This method deletes a list. It does not, however, delete the
elements of the list from the server.
Heritage: This method is adapted from the DeleteNamedVariableList
service defined by the ISO 9506 Manufacturing Messaging
Specification (MMS). It has been adapted to also apply to Event
Lists.
|
|
GetListAttributes
|
This method gets the attributes of a list.
Heritage: This method is adapted from the
GetNamedVariableListAttributes service defined by the ISO 9506
Manufacturing Messaging Specification (MMS). It has been adapted to
also apply to Event Lists.
|
|
ModifyListAttributes
|
This method is used to change the filters and attributes of a list. The new
filters replace the old filters if they exist.
|
|
AddDataObjectsToList
|
This method is used to add objects to a list. Objects are added
with updating of their values by the server disabled. Updating of
values by the server can be enabled using the EnableListUpdating()
method.
Heritage: This method is derived from the Add method of the more
generic List class defined by the Microsoft .NET Framework.
|
|
RemoveDataObjectsFromList
|
This method is used to remove members from a list. It does not,
however, delete the corresponding data object from the server.
Heritage: This method is derived from the Remove method of the more
generic List class defined by the Microsoft .NET Framework.
|
|
AddEventMessageFields
|
This method is used to request that category-specific fields be
included in event messages generated for alarms and events of the
category for the specified Event/Alarm List.
|
|
EnableListUpdating
|
This method can be used to enable or disable updating of an
entire list. When this method is called, the enabled state of the
list is changed, but the enabled state of the individual elements of
the list is unchanged.
|
|
EnableListElementUpdating
|
This method can be used to enable or disable updating of
individual elements of a list. If the server aliases parameter is
null, then all elements of the list are enabled/disabled. This call
does not change the enabled state of the list itself.
|
|
TouchDataObjects
|
This method is used to cause one or more data objects of a list
to be "touched". This method cannot be used with event lists.
Touching a data object causes the server to update the data object,
mark it as changed independent of the deadband, and then return it
to the client in the next callback.
When wrapping an OPC DA Server the touch results in an Async Read to
the OPC DA Server the On Read Complete then results in an On Data
Change callback to the XI Client.
Touching a Data Object applies for both Poll Reads and On Data
Change callbacks.
Heritage: The concept of touch is derived from the POSIX (IEEE Std
1003.1-2008) touch utility that causes file access and modification
times to be changed, thus forcing them to be included in the next
compile.
|
|
TouchList
|
This method is used to cause a list to be "touched".
For lists that contain data objects, this method causes the server
to update all data objects in the list, mark them as changed, and
then return them all to the client in the next callback.
For lists that contain events, this method causes the server to mark
all alarms/event in the list as changed, and and then return them
all to the client in the next callback.
When wrapping an OPC DA Server the touch results in an Asych Refresh
to the OPC DA Server the resulting On Data Change then results in a
On Data Change to the XI Client.
Touching applies to both Poll Read and On Data Change callbacks.
Heritage: The concept of touch is derived from the POSIX (IEEE Std
1003.1-2008) touch utility that causes file access and modification
times to be changed, thus forcing them to be included in the next
compile.
|
Alarm and Events
|
GetAlarmSummary
|
This method is used to request summary information for the alarms
that can be generated for a given event source.
Heritage: This method is adapted from the GetAlarmSummary service
defined by ISO 9506 Manufacturing Message Specification.
|
|
|
|