1 Scope

This document defines the OPC UA MDIS companion specification. This standard is an Oil and Gas standard for interfacing the Subsea Production Control System (SPCS), with a Master Control Station (MCS) or a Subsea Gateway, to the Distributed Control System (DCS). This specification includes:

A description of common terms,

Supported architectures,

Information models representing the data that is shared between the systems,

Methods used in the flow of information,

Profile & ConformanceUnits describing the grouping of functionality,

Recommended Practices for the use of MDIS.

MDIS was created to define a standard object model that is transported on a common high performance efficient interface between topside and subsea systems in Oil and Gas installations. The selected protocol (OPC UA) includes independent third-party certification.

2 Concepts / Definitions

2.1 Introduction

This document makes use of a number of terms and concepts that are described in this section. OPC defined terms or terms defined in this document are in italics and camel case.

2.2 API Standard 17F concepts

DCS (Distributed Control System) is the production facility control system provides a centralised control system for the facility for the operators and is used to monitor and control the subsea production system. The DCS system will normally host the OPC UA Client.

MCS (Master Control Station) is the central control node containing application software required to control and monitor the subsea production system.

Subsea Gateway provides a communications interface on the surface to the subsea control equipment over the subsea vendor’s communication system. The Subsea Gateway may form part of the overall MCS. The MCS or Subsea Gateway will normally host the OPC UA Server.

SCV (Subsea Controls Vendor) equipment refers to the subsea vendor supplied equipment and principally includes the subsea gateway in “Integrated” architecture or the subsea gateway and MCS in “Interfaced” architecture (see section 5.1 for additional details). It is intended to classify the functionality that is delivered by the subsea vendor whether it is implemented in the MCS or subsea gateway.

Note: The MCS may be supplied by a vendor other than the subsea or DCS vendor.

HPU (Hydraulic Power Unit) is the unit which provides low pressure and high-pressure hydraulic supplies for the control of subsea wells.

EPU (Electrical Power Unit) is the unit which provides power to the subsea system.

Interlocks (Permissive Logic) is permissive logic that needs to be satisfied before the action can initiate

The Customer is the end user, typically the “Operating Company”.

The Operator is the human being executing an operation, not to be confused with the “Operating Company”.

2.3 MDIS Mandatory & Optional Items / Objects

MDIS has standardised on the following definitions for Mandatory and Optional items. In all cases (Mandatory or Optional), if the item is available, the functionality described by the definition of the item must be correct and verifiable.

Mandatory

Objects specified as Mandatory will be required in all Objects and cannot be deleted. In OPC terms, a Mandatory item must exist on every Node of the NodeClass, for example if an MDISValveObjectType defines a Mandatory item Position then every instance of the MDISValveObjectType must have an item Position available.

Optional

Objects have functionality that may or may not be included; if they are included the OPC Client will know how to handle them. In OPC terms, an Optional item may or may not exist on every Node of the NodeClass, for example if an MDISValveObjectType defines an Optional item OpenTimeDuration then some instances of the MDISValveObjectType may contain an item OpenTimeDuration, but other instances may not. Clients are required to be able to handle the case where the item does not exist.

2.4 OPC Compliance & Certification

In regard to OPC Testing for Compliance and Certification the following concepts apply. The actual requirements for certification are defined on a project basis, but the standard third-party certification provided by the OPC Foundation provides the following:

Compliance - Assurance that the OPC UA Server or Client fulfils all functionality that it claims to support in terms of Profiles and that of all exposed interfaces function as defined in the specifications.

Interoperability - Testing of products against other products, this includes all functionality, data types and access rights.

Robustness - The testing of failure cases including handling of lost communication, communication recovery. All problems must not affect other connections, quality information must be correctly reported and audit entries are generated as needed. In short, end users are aware of any problem and problems are resolved automatically where possible.

Efficiency - The testing of products under load, forcing of noisy / bad communications and ensuring that products continue to work. Measuring CPU, RAM, threads, handles etc. and ensuring that even under the poor communications, heavily loaded Servers and Clients continue to function and not leak resources.

Usability - Verify that products are delivered with some level of documentation and that the documentation that is provided is accurate and understandable. Verify that the product functions as advertised and an end user would understand what is being provided.

Certification - Validation of Server or Client products. Certification includes compliance, interoperability, robustness, efficiency and usability testing and results in a seal of approval from an OPC Foundation test lab upon meeting or exceeding defined acceptance criteria.

3 Normative references

The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments and errata) applies.

OPC 10000-1, OPC Unified Architecture - Part 1: Overview and Concepts
OPC 10000-2, OPC Unified Architecture - Part 2: Security Model
OPC 10000-3, OPC Unified Architecture V1.05 - Part 3: Address Space Model
OPC 10000-4, OPC Unified Architecture V1.05 - Part 4: Services
OPC 10000-5, OPC Unified Architecture V1.05 - Part 5: Information Model
OPC 10000-6, OPC Unified Architecture V1.05 - Part 6: Mappings
OPC 10000-7, OPC Unified Architecture - Part 7: Profiles
OPC 10000-8, OPC Unified Architecture - Part 8: Data Access
OPC 10000-9, OPC Unified Architecture - Part 9: Alarms and Conditions
OPC 10000-10, OPC Unified Architecture - Part 10: Programs
OPC 10000-11, OPC Unified Architecture - Part 11: Historical Access
OPC 10000-13, OPC Unified Architecture - Part 13: Aggregates
OPC 10000-20, OPC Unified Architecture - Part 20: File Transfer

4 Terms, abbreviated terms and conventions

It is assumed that basic concepts of OPC UA information modelling are understood in this document. This document will use these concepts to describe the MDIS Information Model.

4.1 MDIS definitions

Table 1 lists OPC UA definitions which are used in this document, they are included here as a reference. Additional information can be found in the reference documents listed in section 3.

Table 1 – OPC UA Terms and Definitions
Term Definition
AddressSpaceThe collection of information that an OPC UA Server makes visible to its Clients. See OPC 10000-3 for a description of the contents and structure of the Server AddressSpace.
AttributeA primitive characteristic of a Node. All Attributes are defined by OPC UA and may not be defined by Clients or Servers. Attributes are the only elements in the AddressSpace permitted to have data values. See OPC 10000-3 for additional details.
ConformanceUnitAs defined by the OPC Foundation: a specific set of OPC UA features that can be tested as a single entity. As it applies to MDIS a ConformanceUnit may describe a specific Object or part of a specific Object. It may also describe general functionality such as redundancy or performance. For each ConformanceUnit one or more test cases will exist to ensure that the defined functionality is provided. The test cases may be automatically executed in a Compliance Test Tool (CTT) or they may require some level of manual interaction. See OPC 10000-7 for additional details.
FacetA Profile that describes a subset of functionality. This functionality must be paired with other Facets or Profiles to provide an operating Server or Client. See OPC 10000-7 for additional details.
InformationModelAn organisational framework that defines, characterises and relates information resources of a given system or set of systems. The core address space model supports the representation of InformationModels in the AddressSpace. See OPC 10000-5 for a description of the base OPC UA Information Model.
MethodA callable software function that is a component of an Object. See OPC 10000-4 for a basic definition.
NodeThe fundamental component of an AddressSpace. See OPC 10000-3 for additional details.
NodeClassThe class of a Node in an AddressSpace. NodeClasses define the metadata for the components of the OPC UA Object Model. They also define constructs, such as Views, that are used to organise the AddressSpace. See OPC 10000-3 for additional details.
Object

Objects from an object-oriented technology point of view would have the following definition. Objects share two characteristics: They have state (Attribute) and behaviour (Method). A bicycle has states (current gear, current pedal cadence, current speed) and behaviour (changing gear, changing pedal cadence, applying brakes). An object stores its state in fields (Variables) and exposes its behaviour through functions (Methods). Functions operate on an object's internal state and serve as the primary mechanism for object-to-object communication. Hiding internal state and requiring all interaction to be performed through an object's functions is known as data encapsulation, a fundamental principle of object-oriented programming. In programming languages this object will have a third characteristic: The identity, which will help to find and use the object.

From an OPC UA point of view the following definition is used:

A Node that represents a physical or abstract element of a system. Objects are modelled using the OPC UA Object Model. Systems, subsystems and devices are examples of Objects. An Object is defined as an instance of an ObjectType. See OPC 10000-3 for additional details.

Object InstanceA synonym for Object. See OPC 10000-3 and OPC 10000-5 for additional details.
ObjectTypeA Node that represents the TypeDefinition for an Object. See OPC 10000-3 and OPC 10000-5 for additional details.
Profile

A specific set of capabilities, to which a Server or Client may claim conformance. The capabilities are defined by a set of ConformanceUnits. Each Server or Client may claim conformance to more than one Profile. The OPC Foundation provides a base list of Server and Client Profiles and Facets in an online database which is also documented in an OPC UA specification, OPC 10000-7. The online database can be found here:

(http://opcf.org/profilereporting/index.htm?All=true),

PropertyA Variable that is a leaf and cannot have any children. See OPC 10000-3 and OPC 10000-5 for additional details.
ReferenceAn explicit relationship (a named pointer) from one Node to another. The Node that contains the Reference is the source Node and the referenced Node is the target Node. All References are defined by ReferenceTypes. See OPC 10000-3 and OPC 10000-5 for additional details.
ReferenceTypeA Node that represents the TypeDefinition of a Reference. The ReferenceType specifies the semantics of a Reference. The name of a ReferenceType identifies how source Nodes are related to TargetNodes and generally reflects an operation between the two, such as “A contains B”. See OPC 10000-3 and OPC 10000-5 for additional details.
UANodeSetThe root of the AddressSpace defined in an XML document. It defines a set of Nodes, their Attributes and References. See OPC 10000-5 for additional details.
Variable Variable is a Node that contains a value and can have children. See OPC 10000-3 and OPC 10000-5 for additional details.
VariableTypeA Node that represents the TypeDefinition for a Variable. See OPC 10000-3 and OPC 10000-5 for additional details.

4.2 Abbreviated terms

The abbreviations, acronyms and definitions listed in Table 2 are typical and primarily focused on Subsea projects although some Topsides specific terms are also included.

Table 2 – Abbreviations, Acronyms and Definitions
Abbreviations, Acronyms & Definitions
APIAmerican Petroleum Institute
CIMVChemical Injection Metering Valves
CSVComma Separated Values
DCSDistributed Control System
EPUElectrical Power Unit (Part of PCU)
ERPEnterprise Resource Planning
EUEngineering Units
FEED Front End Engineering Design
HMIHuman Machine Interface
HTTPHypertext Transfer Protocol
IECInternational Electrotechnical Commission
JIPJoint Industry Project
LVDTLinear Variable Displacement (Differential) Transmitter
MCSMaster Control Station (Subsea Process Control System)
MDISMCS-DCS Interface Standardisation (Industry JIP)
MPFMMultiphase Flow Meters
NTPNetwork Time Protocol
OLEObject Linking & Embedding
OPCOpen Process Control (original Classic was OLE for Process Control)
OPC UAOPC Unified Architecture
ROVRemotely Operated Vehicle
SCADASupervisory Control And Data Acquisition
SCVSubsea Controls Vendor
SEMSubsea Electronics Module
SISSafety Instrumented System
SPCSSubsea Production Control System
TCP/IPTransmission Control Protocol / Internet Protocol
UMLUnified Modelling Language
URLUniform Resource Locator
XMLExtensible Mark-up Language

The OPC UA Specifications are also available from the IEC as IEC 62541

4.3 OPC UA Overview

4.3.1 Introduction

For the MDIS user who may not be familiar with OPC UA, the following section provides a brief overview of key features. It does not describe how MDIS makes use of these features it only describes the features available in OPC UA. MDIS specific functionality is specified in other sections of this document.

4.3.2 What is OPC UA?

OPC UA is an open and royalty free standard designed as a universal communications protocol. It is also available as IEC 62541.

OPC UA has a broad scope which delivers economies of scale for application developers. When combined with powerful semantic models, OPC UA makes it easier for end users to access data via generic commercial application. It provides an information modelling framework that allows application developers to represent their data in a way that makes sense to them.

The OPC UA model is scalable from small devices to Enterprise Resource Planning (ERP) systems. OPC UA devices process information locally and then provides that data in a consistent format to any application requesting data. For a more complete overview see OPC 10000-1.

4.3.3 Basics of OPC UA

As an Open Standard, OPC UA is based on standard Internet technologies, such as TCP/IP, HTTP, Ethernet and XML. OPC UA provides a set of services (see OPC 10000-4) and a basic information model framework.

As an Extensible Standard, OPC UA provides an information model framework which can expose vendor defined information in a standard way. More importantly all OPC UA Clients are expected to be able to discover and use vendor defined information. This means OPC UA users can benefit from the economies of scale that come with generic visualisation and interface applications. This specification is an example of an OPC UA InformationModel designed to meet the needs of developers and users in the offshore oil and gas industry.

OPC UA Clients can be any consumer of data, from devices / controllers on the network; browser based thin clients and higher level ERP systems. OPC UA applications are platform and development language dependant. The full scope of OPC UA applications are illustrated in Figure 1. For this companion specification the typical communication would be device to device or device to SCADA type communications.

Figure 1 – The of OPC UA within an Enterprise

OPC UA provides a robust and reliable communication infrastructure having mechanisms for handling lost messages, recovering from network interruptions, etc. With its binary encoded data it offers a high-performance data exchange solution. Security is built into OPC UA, security requirements are becoming more and more important as, increasingly, environments are connected to the office network or the internet and attackers are starting to focus on automation systems

4.3.4 Information Modelling in OPC UA

4.3.4.1 Concepts

OPC UA provides a framework that can be used to represent complex information as Objects in an AddressSpace which can be accessed with standard web services. These consist of Nodes connected by References. Different classes of Nodes convey different semantics. For example, a Variable Node represents a value that can be read or written. The Variable Node has an associated DataType that can define the actual value, such as a string, float, structure etc. It can also describe the Variable value as a variant. A Method Node represents a function that can be called. Every Node has a number of Attributes including a unique identifier called a NodeId and non-localised name called a BrowseName. An Object representing a Heater is shown in Figure 2.

Figure 2 – A Basic Object in an OPC UA Address Space

Object and Variable Nodes are called Instance Nodes and they always reference a TypeDefinition (ObjectType or VariableType) Node which describes their semantics and structure. Figure 3 illustrates the relationship between an instance and its TypeDefinition.

Type Nodes are templates that define all of the children that can be present in an instance of the type. In the example in Figure 3 the BoilerType ObjectType defines two sensors: Pressure and Temperature. All instances of BoilerType are expected to have the same children with the same BrowseNames. Within a type the BrowseNames uniquely identify the child. This means Client applications can be designed to search for children based on the BrowseNames from the type instead of NodeIds. This eliminates the need for manual reconfiguration of systems if a Client uses types that multiple devices implement.

OPC UA also supports the concept of subtyping. This allows a modeller to take an existing type and extend it. There are rules regarding subtyping defined in OPC 10000-3, but in general they allow the extension of a given type or the restriction of a DataType. For example, the modeller may decide that the existing ObjectType in some cases needs an additional Variable. The modeller can create a subtype of the Object and add the Variable. A Client that is expecting the parent type can treat the new type as if it was of the parent type. With regard to DataTypes, if a Variable is defined to have a numeric value, a subtype could restrict the value to a float. This standard adds additional rules for extensions.

Figure 3 – The Relationship between Type Definitions and Instances

References allow Nodes to be connected together in ways that describe their relationships. All References have a ReferenceType that specifies the semantics of the relationship. References can be hierarchical or non-hierarchical. Hierarchical References are used to create the structure of Objects and Variables. Non-hierarchical References are used to create arbitrary associations. Applications can define their own ReferenceType by creating subtypes of the existing ReferenceType. Subtypes inherit the semantics of the parent but may add additional restrictions. Figure 4 depicts several References connecting different Objects.

Figure 4 – Examples of References between Objects

The figures above use a notation that was developed for the OPC UA specification. The notation is summarised in Figure 5. UML representations can also be used; however, the OPC UA notation is less ambiguous because there is a direct mapping from the elements in the figures to Nodes in the AddressSpace of an OPC UA Server.

Figure 5 – The OPC UA Information Model Notation

A complete description of the different types of Nodes and References can be found in OPC 10000-3 and the base OPC UA AddressSpace is described in OPC 10000-5.

The OPC UA specification defines a very wide range of functionality in its basic information model. It is not expected that all Clients or Servers support all functionality in the OPC UA specifications. OPC UA includes the concept of Profiles, which segment the functionality into testable certifiable units. This allows the development of companion specifications (such as OPC UA MDIS) that can describe the subset of functionality that is expected to be implemented. The Profiles do not restrict functionality but generate requirements for a minimum set of functionality (see OPC 10000-7).

The OPC Foundation also defines a set of InformationModels that provide a basic set of functionalities. The Data Access specification (see OPC 10000-8) provides a basic InformationModel for typical process or measured data. The Alarm and Condition specification (see OPC 10000-9) defines a standard InformationModel for Alarms and Conditions. The Programs specification (see OPC 10000-10) defines a standard InformationModel for extending the functionality available via Method calls and state machines. The Historical Access specification (see OPC 10000-11) defines the InformationModel associated with Historical Data and Historical Events. The aggregates specification (see OPC 10000-13) defines a series of standard aggregate functions that allow a Client to request summary data. Examples of aggregates include averages, minimums, time in state, standard deviation, etc.

4.3.4.2 Namespaces

OPC UA allows information from many different sources to be combined into a single coherent AddressSpace. Namespaces are used to make this possible by eliminating naming and id conflicts between information from different sources. Namespaces in OPC UA have a globally unique string called a NamespaceUri and a locally unique integer called a NamespaceIndex. The NamespaceIndex is only unique within the context of a Session between an OPC UA Client and an OPC UA Server. All of the web services defined for OPC UA use the NamespaceIndex to specify the Namespace for qualified values.

There are two types of values in OPC UA that are qualified with Namespaces: NodeIds and QualifiedNames. NodeIds are globally unique identifiers for Nodes. This means the same Node with the same NodeId can appear in many Servers. This, in turn, means Clients can have built in knowledge of some Nodes. OPC UA InformationModels generally define globally unique NodeIds for the TypeDefinitions defined by the InformationModel.

QualifiedNames are non-localised names qualified with a Namespace. They are used for the BrowseNames of Nodes and allow the same names to be used by different InformationModels without conflict. The BrowseName is used to identify the children within a TypeDefinition. Instances of a TypeDefinition are expected to have children with the same BrowseNames. TypeDefinitions are not allowed to have children with duplicate BrowseNames; however, instances do not have that restriction.

4.3.4.3 Companion Specifications

An OPC UA companion specification for an industry specific vertical market describes an InformationModel by defining ObjectTypes, VariableTypes, DataTypes and ReferenceTypes that represent the concepts used in the vertical market. Table 3 contains an example of an ObjectType definition.

Table 3 – Example ObjectType Definition
Attribute Value
BrowseNameBoilerType
IsAbstractFalse
Reference NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the BaseObjectType from OPC 10000-3.
0:HasPropertyVariablePressureDouble0:PropertyTypeMandatory
0:HasPropertyVariableTemperatureFloat0:PropertyTypeMandatory
0:HasPropertyVariableFlowDouble0:PropertyTypeOptional

The BrowseName is a non-localised name for an ObjectType.

IsAbstract is a flag indicating whether instances of the ObjectType can be created. If IsAbstract is FALSE then instances of this ObjectType may be created. If IsAbstract is TRUE then instances of the ObjectType cannot be created, the ObjectType must be subtyped.

The bottom of the table lists the child Nodes for the type. The Reference column is the type of Reference between the Object instance and the child Node. The NodeClass is the class of Node. The BrowseName is the non-localised name for the child. The DataType is the structure of the Value accessible via the Node (only used for Variable NodeClass Nodes) and the TypeDefinition is the ObjectType or VariableType for the child.

The ModellingRule indicates whether a child is Mandatory or Optional. It can also indicate cardinality. Note that the BrowseName is not defined if the cardinality is greater than 1. Error! Reference source not found. visually depicts the ObjectType defined in Table 3 along with two instances of the ObjectType. The first instance includes the Optional Property while the second does not.

Figure 6 - A Visual Representation of the Sample ObjectType

5 Architectures

5.1 Overview

The following section describes the two architectures that are defined by this specification. The Object models defined in other sections of this specification are affected by these architectures (see Figure 7.)

Figure 7 – Architecture Overview

This narrative and associated architecture drawing are intended to identify and represent this interface in the majority of typical system implementations. It is not intended to mandate the detailed architecture of a DCS vendor or SPCS vendor’s control system, nor is it intended to suggest or exclude a particular contracting / commercial strategy. This simplified version of the MDIS interface was used to facilitate development of the data objects and to define the data content between the DCS and SPCS vendor’s system.

Two major architectures, “Integrated” or “Interfaced”, are typically used throughout the industry and the choice will typically be decided by the Operating Company. Since the control aspects of the subsea system can be accomplished by both the DCS system or by the subsea system, the actual interface between the two systems may be different. In the Integrated architecture (Case 1), the controls system is an integrated system where all control is performed by the DCS vendor’s hardware and the standard needs to support communication of all information between the subsea gateway and the DCS control system. This enables a single HMI (or set of HMIs) to control and monitor platform and subsea operations. In the Interfaced architecture (Case 2), the SPCS vendor provides the controls for the subsea aspects of the system and the DCS system is used for monitoring and set point control purposes of the subsea system, along with topside controls. The MDIS InformationModel is able to adapt to both of these architectures.

Figure 8 – Data Arbitration Example

5.2 DCS Implemented Functions

5.2.1 Main Process Responsibility

The DCS is the primary user interface to the overall facility process including the subsea system. Process data management is handled by the DCS as well as all process alarming, alarm management and event / data archiving. Although an MCS may have an alarm or event queue, the primary facility alarm management occurs at the DCS level. Access, to the various subsea control functions, are managed by the DCS user access level rather than in the subsea system. The DCS also serves as the master for time synchronisation (for addition details see section 11).

5.2.2 Control and Monitoring of Subsea Equipment

Normal control and monitoring of the subsea production system is conducted at the DCS HMI. There may be a separate maintenance or configuration workstation used by the SCV, but it is not within the scope of the MDIS interface.

5.2.3 Subscriptions

OPC UA supports Subscription and polling (Read) manners of obtaining data. The Subscription based manner of obtaining data should be used by default. Subscription, which is exception reporting, typically provides improved performance over the polling interface.

5.3 DCS or SCV Implemented Functions

5.3.1 Introduction

The functional elements of the system either reside in the DCS or SPCS depending on a particular vendor’s solution or customer’s requirements. The “Operating Company” should specify where each of these optional functions should reside. See Figure 8 for an illustration.

5.3.2 Data Arbitration

Data Arbitration is the system function that manages the reception and transmission of dual / redundant SPCS data.

If the Subsea system performs this function, only a single process value or operator command is typically passed between the SPCS and DCS system. If the DCS performs this function, both the A and B data values would typically be passed across the interface.

There are multiple types of data that could require arbitration. Instruments can be redundant; SEMs can be redundant and it is possible that the different types of data maybe arbitrated in different locations. I.e., in some projects, sensor data may be arbitrated by the DCS while the SEM may be arbitrated by the SPCS. Data Arbitration choices can also affect redundancy.

5.3.3 SEM Control Selection

Certain subsea instruments may only be powered by one SEM at a time, selectable by the operator. Also, a SEM may have various modes, such as ROV mode or maintenance mode, which can be selected.

5.3.4 Interlocks

5.3.4.1 Introduction

An Interlock is a control permissive that exists to prevent or warn an operator against potentially undesired operator commands being issued to the subsea system. Depending on an operator’s access level, he / she may be able to override the interlock in order to perform the desired operation. Interlocks can be categorised into two types: process interlocks and product / system interlocks, though not all customers or SCV’s make this distinction.

5.3.4.2 Process Interlocks

Process interlocks are interlocks which are specific to a particular project dependent on field layout, tree functionality, etc. These are often defined by the customer’s process requirements or by regulatory agencies; e.g., prevention of opening the tree crossover valve if the production master valve and annulus master valve are open.

5.3.4.3 Product or System Interlocks

Interlocks defined by the SCV for the protection of the subsea system; for example, low hydraulic pressure inhibiting opening (pressurising) of a tree valve. These interlocks are typically not able to be overridden by an operator.

5.3.5 Shutdown Sequences

These are defined subsea valve operation sequences that take the subsea system to a safe state. They are initiated either by subsea process conditions, operator intervention or emergency conditions triggered from external interfaces such as the facility Safety Instrumented System (SIS).

5.3.6 Automated Control Sequences

These are multi-step control sequences triggered by the issuance of a single operator command, such as smart well (interval control valve) controls, hydrate prevention or preparation of a tree for start-up.

5.3.7 Determining Valve Statuses

This refers to determination of the status of a subsea valve by evaluating some or all of the following: hydraulic output function line pressure, hydraulic flow and last command received.

5.3.8 Determining / Updating Choke Calculated Position

This refers to the calculation of the assumed choke position based upon the number of step commands issued to the subsea choke. It may be maintained in percentage open or step position and is compared to the position transducer on the choke for calibration.

5.3.9 HPU Interface

The HPU interface may include HPU control capability, data monitoring and configuration such as Motor control setpoint changes.

5.3.10 EPU Interface

The interface to the EPU may include monitoring of the power supply to the subsea equipment including input voltage / current, umbilical voltage(s) / current(s), line insulation monitoring data and power alarm statuses (over-voltage and over-current).

5.3.11 Valve Profile / Signature Validation

A valve profile, or signature, is a representation of the performance of a subsea valve in terms of its hydraulic fluid pressure and flow characteristics as measured at the subsea control module. Valve Profile / Signature Validation is a software function that compares a current valve profile/signature to a baseline or template signature recorded previously, typically at subsea system commissioning. Not all systems have this functionality.

5.3.12 Topsides Chemical Injection System Interface

The chemical injection interface may include control and monitoring capability. Typically, the interface includes verification to the subsea system of chemical delivery (flow rate and / or pressure) from the topsides chemical injection system.

5.4 Subsea Controls Vendor-Implemented Functions

5.4.1 Introduction

These functions are assumed to be always implemented in the SPCS vendor’s equipment. In the case that the MCS is provided by a third-party supplier, the references below to the DCS may also pertain to the MCS.

5.4.2 Managing Subsea Communications

The SCV’s system will manage data traffic to and from the subsea system and issue device control commands. The protocol is typically proprietary for a particular SCV and the medium and redundancy requirements are dependent upon customer requirements. The interface from the subsea gateway to the subsea system is not within the scope of the MDIS interface.

5.4.3 Operation of Subsea Devices

Ultimate operation or actuation of a subsea device is executed by the SCV’s system, whether requested locally, such as from an SCV engineering workstation, or remotely from the DCS.

5.4.4 Handing off Process Sensor Data to DCS

The SCV’s system will provide current process data (e.g., pressures, temperatures, flow rates) and statuses (e.g., valve positions) to the DCS.

5.4.5 Configuration of Operational Parameters

This includes settings for low-level subsea system functionality, such as solenoid pulse timers, pressure check settings for evaluating valve position or unintended movement, timer setpoints for determining valve failure, etc.

5.4.6 Handing off Valve Profiles / Signatures

Valve Profiles are made available for transmission from the SCV system. The output format may vary among vendors and the data may be transmitted according to customer requirements, but MDIS provides a recommended format (see Annex E).

5.4.7 Calculation of Engineering Values

The SCV system typically calculates process engineering values if raw data is received from subsea devices, though there may be exceptions where raw data transmission is required.

5.4.8 Handing off Product Statuses

This refers to any available data in the subsea system not included within the definition of other objects that may be transmitted via a “generic” discrete or analogue object. This includes data that may have been considered “alarms” in legacy subsea systems, but are simply data points that are available to the DCS to manage as alarms, events or to be logged as desired. The SCV may also implement “roll-up” statuses that condense numerous statuses into fewer bits / words in order to optimise data transfer.

5.4.9 Handing Off Diagnostic Information

Diagnostic information in regard to the health of the subsea system is managed in the SCV’s system. This data would typically not be transmitted to the DCS except for summary product status data as defined above. It would be transmitted via a “generic” discrete or analogue object as desired.

5.4.10 EPU Interface

The interface to the EPU may include monitoring of the power supply to the subsea equipment including input voltage / current, umbilical voltage(s) / current(s), line insulation monitoring data and power alarm statuses (over-voltage and over-current).

5.4.11 Subsea Control Paths / Network Routing

The SCV defines the subsea communications system architecture. Communications link control and monitoring is also performed by the SCV. Variable scan configurations (e.g., fast scan, normal scan, slow scan) may be implemented and configured by the SCV as required.

6 MDIS ObjectTypes

6.1 Overview

The following sections define the basic OPC UA Objects defined by MDIS. This includes Method definition as needed. The use cases / object interactions for each Object are defined in a separate section.

6.1.1 MDISBaseObjectType

The MDISBaseObjectType (see 6.2) is a base object that all other MDIS objects are constructed from. It is an abstract ObjectType and instances of it shall not exist. This Object will be used to create subtypes.

6.1.2 MDISDiscreteInstrumentObjectType

The MDISDiscreteInstrumentObjectType (see 6.3) is a base type and can be subtyped or instances of it can be directly created. The Object can be used with multi-state type of data (stopped, moving, faulted). It could also be used for instruments that report integer values. For a limit switch or on / off switch the MDISDigitalInstrumentObjectType should be used.

6.1.3 MDISDiscreteOutObjectType

The MDISDiscreteOutObjectType (see 6.3.4) is a subtype of MDISDiscreteInstrumentObjectType and can be subtyped or instance of it can be directly created. The Object can be used for Tristate or Multistate switches.

6.1.4 MDISDiscreteArbitrationObjectType

The MDISDiscreteArbitrationObjectType (see 6.3.6) is a subtype of MDISDiscreteInstrumentObjectType and can be subtyped or instance of it can be directly created. It adds inputs that can be selected according to the arbitration mode.

6.1.5 MDISDigitalInstrumentObjectType

The MDISDigitalInstrumentObjectType (see 6.4) is a base type and can be subtyped or instance of it can be directly created. The Object can be used to represent on / off type of functions.

6.1.6 MDISDigitalOutObjectType

The MDISDigitalOutObjectType (see 6.4.4) is a subtype of MDISDigitalInstrumentObjectType and can be subtyped or instance of it can be directly created. The Object can be used for switching on / off types.

6.1.7 MDISDigitalArbitrationObjectType

The MDISDigitalArbitrationObjectType (see 6.4.6) is a subtype of MDISDigitalInstrumentObjectType and can be subtyped or instance of it can be directly created. It adds inputs that can be selected according to the arbitration mode.

6.1.8 MDISInstrumentObjectType

The MDISInstrumentObjectType (see 6.5.3) is a base type and can be subtyped or instances of it can be directly created. The Object can be used for various types of analogues, e.g. pressure, temperatures, tank levels etc.

6.1.9 MDISInstrumentOutObjectType

The MDISInstrumentOutObjectType (see 6.5.4) is a subtype of MDISInstrumentObjectType and can be subtyped or instance of it can be directly created. The Object can be used for writing floating point values.

6.1.10 MDISInstrumentArbitrationObjectType

The MDISInstrumentArbitrationObjectType (see 6.5.6) is a subtype of MDISInstrumentObjectType and can be subtyped or instance of it can be directly created. It adds inputs that can be selected according to the arbitration mode.

6.1.11 MDISChokeObjectType

The MDISChokeObjectType (see 6.6.3) is a base type and can be subtyped or an instance of it can be directly created. A choke is a device that restricts the flow of a fluid (gases, liquids, fluidised solids, or slurries).

6.1.12 MDISElectricChokeObjectType

The MDISElectricChokeObjectType (see 6.7.3) is a base type and can be subtyped or an instance of it can be directly created. An electric choke is a device that restricts the flow of a fluid (gases, liquids, fluidised solids, or slurries) and can be positioned more precisely than a standard Choke.

6.1.13 MDISValveObjectType

The MDISValveObjectType (see 6.8.3) is a base type and can be subtyped or an instance of it can be directly created. A valve is a device that directs or controls the flow of a fluid (gases, liquids, fluidised solids, or slurries). The MDISValveObjectType represents a two-state valve type.

6.1.14 MDISCIMVObjectType

The MDISCIMVObjectType (see 6.9.3) is a base type and can be subtyped or an instance of it can be directly created. The CIMV (Chemical Injection Metering Valve) is used to regulate the flow of chemicals to a well. It can report optional housekeeping data.

6.1.15 MDISMotorObjectType

The MDISMotorObjectType (see 6.11.3) is a base type and can be subtyped or an instance of it can be directly created. A motor is a device that is used to power pump

6.1.16 MDISAggregateObjectType

The MDISAggregateObjectType (see 6.12.2) is an abstract type that all aggregate ObjectTypes shall be derived from. This ObjectType allows Clients to easily identify aggregate Objects. For more information about aggregation see 10.5

6.1.17 MDISCounterObjectType

The MDISCounterObjectType (see 6.10.3) is a base type, it is not envisioned that this object will be subtyped, but rather that this object is used as part of other aggregate objects. It provides the capability of resetting counters to some initial value.

6.1.18 MDISTimeSyncObjectType

The MDISTimeSyncObjectType (see 6.13.3) is a base ObjectType. An instance of this ObjectType shall be exposed as part of the MDISInformationObjectType, if the MDISTimeSyncObjectType is supported.

6.1.19 MDISInformationObjectType

The MDISInformationObjectType (see 6.14) is a base ObjectType. An instance of this ObjectType shall be exposed under the Objects folder. It provides information about the MDIS Information model that is supported by the Server. It can also expose additional information related to MDIS.

6.2 MDISBaseObjectType

6.2.1 Overview

The following section details the MDIS generic properties for the MDISBaseObjectType. Implementations shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 9 provides an overview of the MDISBaseObjectType as defined by MDIS. This Object is intended to be the base object for all other MDIS ObjectTypes (see Figure 10 for an overview of inherited types)

Figure 9 – MDISBaseObjectType
Figure 10 – Base Object Hierarchy

6.2.2 MDISBaseObjectType Definition

The Table 4 defines the structure of an MDISBaseObjectType.

Table 4 – MDISBaseObjectType Definition
Attribute Value
BrowseNameMDISBaseObjectType
IsAbstractTrue
References Node Class BrowseName Data Type TypeDefinition Other
Subtype of the 0:BaseObjectType defined in OPC 10000-5
0:HasComponentVariableFault0:Boolean0:BaseDataVariableTypeM, RO
0:HasComponentVariableWarning0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableEnabled0:Boolean0:BaseDataVariableTypeO, RO
0:HasPropertyVariableTagId0:String0:PropertyTypeO, RO
0:HasComponentMethodEnableDisableSee 6.2.3O
0:HasComponentVariableFaultCode0:UInt320:BaseDataVariableTypeO, RO
0:HasComponentVariableWarningCode0:UInt320:BaseDataVariableTypeO, RO
0:HasSubtypeObjectTypeMDISDigitalInstrumentObjectType
0:HasSubtypeObjectTypeMDISDiscreteInstrumentObjectType
0:HasSubtypeObjectTypeMDISChokeObjectType
0:HasSubtypeObjectTypeMDISElectricChokeObjectType
0:HasSubtypeObjectTypeMDISInstrumentObjectType
0:HasSubtypeObjectTypeMDISValveObjectType
0:HasSubtypeObjectTypeMDISCIMVObjectType
0:HasSubtypeObjectTypeMDISMotorObjectType
0:HasSubtypeObjectTypeMDISAggregateObjectType
ConformanceUnits
MDIS Base Fault

The RW column indicates if a Node of Variable NodeClass is readable, writeable or both readable and writeable. Other NodeClasses (Object, Method) do not support reading or writing and do not fill in this column.

By definition a Profile can require that an Optional item be provided, it cannot change the behaviour of an Object from what is described in this specification, which includes support for any Mandatory items. Profiles are described in section 14.3.

Fault – The status of the object, true if any fault exists.

Warning – The status of the object, true if any warnings exist. A warning does not require immediate operator action.

Enabled – This Variable is set as enabled (true) by default. When disabled the Object will not report any dynamic information other than a bad status code (Bad_InvalidState). It will still report configuration related information. It will disable execution of any method that might be defined as part of the Object. For the MDISBaseObjectType the default is that only the Enabled flag, TagId and EnableDisable Method report values or perform functions. Subtypes of this ObjectType may describe additional requirements for disabled Objects.

TagId – The TagId is a unique equipment identifier. This is additional information that can be used to help identify the Variable associated with the instance of this type. This field is intended to be used to store the tag id from the P&ID.

EnableDisable – This Method allows a Client to disable or enable the Object.

FaultCode – An unsigned integer that describes a fault code(s), zero indicates no fault. The FaultCode is a 32 bit mask, with 16 bits for standard defined codes and 16 bits for vendor defined codes. Each of the Subtypes of this ObjectType defined in this specification shall define a set standard FaultCodes that apply to that ObjectType (bits 0-15). In addition, the SPCS vendor may provide vendor specific bits (bits 16-31). Once a Bit is defined (given a name), then in all Objects that use that same named fault, the same bit number is used.

WarningCode – An unsigned integer that describes a warning code(s), zero indicates no warning. The SPCS vendor will provide a definition of what the number means The WarningCode is a 32 bit mask, with 16 bits for standard defined codes and 16 bits for vendor defined codes. Each of the subtypes of this ObjectType defined in this specification shall define a set standard WarningCodes that apply to that ObjectType (bits 0-15). In addition, the SPCS vendor may provide vendor specific bits (bits 16-31). Once a Bit is defined (given a name), then in all Objects that use that same named warning, the same bit number is used.

6.2.3 EnableDisable Method

EnableDisable is used to disable or enable an Object. The enable / disable operation applies to the Object in the UA Server. The call completes when the enable / disable operation is complete. The Server may or may not pass the enable / disable down to lower levels. This is Server specific behaviour.

Signature

	EnableDisable (
		[in] 0:Boolean Enable );
	
Table 5 – EnableDisable Method parameters
Argument Description
EnableBoolean indicator of whether the Object is to be disabled or enabled. A true indicates that the Object is enabled.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The EnableDisable Method will disable or enable this Object. Once the state of an Object is changed by this Method (i.e., disabled) the state will be maintained until this Method is called again to change the state (i.e., enable). The Method will report if any error occurs while disabling or enabling the Object. Table 6 specifies the AddressSpace representation for the EnableDisable Method.

Table 6 – EnableDisable Method AddressSpace Definition
Attribute Value
BrowseNameEnableDisable
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Base Enabled

6.3 MDISDiscreteInstrumentObjectType

6.3.1 Introduction

The following section details the generic MDISDiscreteInstrumentObjectType structure and defines the properties associated with it. Additional sections define a subtype MDISDiscreteOutObjectType that allows updates to the discrete value. This is in general a vendor and operator independent description, but all users of the MDISDiscreteInstrumentObjectType or MDISDiscreteOutObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISDiscreteInstrumentObjectType or MDISDiscreteOutObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of the MDISDiscreteInstrumentObjectType or MDISDiscreteOutObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the instance of the MDISDiscreteInstrumentObjectType are initiated by the Client and are directed to the Server.

6.3.2 Overview

The following section details the MDIS generic properties for the MDISDiscreteInstrumentObjectType. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 11 provides an overview of the MDISDiscreteInstrumentObjectType as defined by MDIS, including some nested types. This figure includes all items that are inherited from the MDISBaseObjectType.

Figure 11 – MDISDiscreteInstrumentObjectType & MDISDiscreteOutObjectType & MDISDiscreteArbitrationObjectType

6.3.3 MDISDiscreteInstrumentObjectType Definition

Table 7 defines the structure of an MDISDiscreteInstrumentObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISDiscreteInstrumentObjectType.

Table 7 – MDISDiscreteInstrumentObjectType Definition
Attribute Value
BrowseNameMDISDiscreteInstrumentObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType (see section 6.1.1)
0:HasComponentVariableState0:UInt320:BaseDataVariableTypeM, RO
0:HasSubtypeObjectTypeMDISDiscreteOutObjectType
0:HasSubtypeObjectTypeMDISDiscreteArbitrationObjectType
ConformanceUnits
MDIS Discrete Instrument Base

State – The state of the instance of MDISDiscreteInstrumentObjectType. This state is represented as a UInt32.

The MDISDiscreteInstrumentObjectType is a subtype of MDISBaseObjectType and inherits the FaultCode Variable. The MDISDiscreteInstrumentObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 8. All subtypes of this the MDISDiscreteInstrumentObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 8 – MDISDiscreteInstrumentObjectType FaultCode Values
Value Bit no. Description
IOFault0Instrument has no usable value, there is an I/O fault.

The MDISDiscreteInstrumentObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 9. All subtypes of this the MDISDiscreteInstrumentObjectType will inherits all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 9 – MDISDiscreteInstrumentObjectType WarningCode Values
Value Bit no. Description
SideAProblem0There is an issue with the A side of this instrument [note this only applies to instrument that are arbitrated]
SideBProblem1There is an issue with the B side of this instrument [note this only applies to instrument that are arbitrated]
Discrepancy2The values differ by more than is acceptable

6.3.4 MDISDiscreteOutObjectType Definition

Table 10 defines the structure of an MDISDiscreteOutObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISDiscreteOutObjectType.

Table 10 – MDISDiscreteOutObjectType Definition
Attribute Value
BrowseNameMDISDiscreteOutObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISDiscreteInstrumentObjectType (see section 6.1.2)
0:HasComponentMethodWriteValueSee 6.3.5M
ConformanceUnits
MDIS Discrete Out Base

WriteValue – This Method allows a Client to change the value of State on an instance of MDISDiscreteOutObjectType. The Method will return any errors that occurred on setting the value. The Client shall verify that the State actually changed to confirm the update. If the instrument is disabled, an error Bad_InvalidState shall be returned.

6.3.5 WriteValue Method

WriteValue Method (defined in Table 11) is used to change the value of the State Variable in an instance of MDISDiscreteOutObjectType. The WriteValue operation applies to the object in the subsea system. The value of the State Variable shall only be updated once the subsea system has provided a new value. For Objects that are used as a command, the value of the State Variable shall be updated directly to the value provided by the State parameter of the Method. Some systems will be able to report any errors immediately others will only be able to report that the operation was not refused. Clients are expected to monitor the State and ensure that the operation completed. If an error occurs after the Method has returned, a Fault flag shall be set and an appropriate FaultCode will be returned. The Fault (and FaultCode) will reset on the next successful WriteValue Method invocation.

Signature:

	WriteValue (
		[in] 0:UInt32 State);
	
Table 11 – WriteValue Method parameters
Argument Description
StateUInt32 value Variable, that indicates the target state of the Variable

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The WriteValue Method will result in a change the value of the State Variable. The Method will report if any error occurs while writing the state of the Object. Table 12 specifies the AddressSpace representation for the WriteValue Method.

Table 12 – WriteValue Method AddressSpace Definition
Attribute Value
BrowseNameWriteValue
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariableInputArgumentsArgument[] 0:PropertyTypeM
ConformanceUnits
MDIS Discrete Out Base

6.3.6 MDISDiscreteArbitrationObjectType Definition

Table 13 defines the structure of an MDISDiscreteArbitrationObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISDiscreteArbitrationObjectType.

Table 13 – MDISDiscreteArbitrationObjectType Definition
Attribute Value
BrowseNameMDISDiscreteArbitrationObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISDiscreteInstrumentObjectType
0:HasComponentVariableSourceA0:UInt320:BaseDataVariableTypeM, RO
0:HasComponentVariableSourceB0:UInt320:BaseDataVariableTypeM, RO
0:HasComponentVariableArbitrationModeArbitrationModeEnum0:BaseDataVariableTypeM, RO
0:HasComponentMethodSetArbitrationModeDefined in section 6.3.7O
ConformanceUnits
MDIS Discrete Arbitration

The MDISDiscreteArbitrationObjectType will select which instrument is healthy and report it. The arbitration object selects between the two sources, SourceA and SourceB base on the source and the selected ArbitrationMode. The result of the arbitration is shown in the State. The result can be either a selection of one source as default or forcing of one source (see 8.1.10 for additional details).

SourceA – a Variable that represents the value of the first source of a MDISDiscreteArbitrationObjectType.

SourceB – a Variable that represents the value of the second source of a MDISDiscreteArbitrationObjectType

ArbitrationMode – This enumeration provides information about the ArbitrationMode that is currently used (see section 8.1.10). The Average enumeration value does not apply to this arbitration ObjectType.

The MDISDiscreteArbitrationObjectType is a subtype of MDISDiscreteInstrumentObjectType and inherit the FaultCode Variable. The MDISDiscreteArbitrationObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 14 (currently empty, no additional fault codes defined). All subtypes of this the MDISDiscreteArbitrationObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 14 – MDISDiscreteArbitrationObjectType FaultCode Values
Value Bit no. Description

The MDISDiscreteArbitrationObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 15 (currently empty, no additional warning codes defined). All subtypes of this the MDISDiscreteArbitrationObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 15 – MDISDiscreteArbitrationObjectType WarningCode Values
Value Bit no. Description

6.3.7 SetArbitrationMode Method

SetArbitrationMode Method is used to change the arbitration strategy of the arbitration Object. If the mode cannot be changed the method shall return an error. This description applies to the following arbitration objects (MDISDigitalArbitrationObjectType, MDISDiscreteArbitrationObjectType, MDISInstrumentArbitrationObjectType).

Signature:

	SetArbitrationMode (
		[in] ArbitrationModeEnum ArbitrationMode);
	
Table 16 – SetArbitrationMode Method parameters
Argument Description
ArbitrationModeArbitrationMode enumeration value Variable, that defines the new arbitration mode, see 8.1.10

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference. The following specific Method result codes are defined in Table 17.

Table 17 – SetArbitrationMode Method result codes
ResultCode Description
Bad_NotSupportedThe requested arbitration mode is not supported.

Comments

The SetArbitrationMode Method will change the arbitration strategy. The Method will report if any error which occur while writing the value of the Object. Table 18 specifies the AddressSpace representation for the SetArbitrationMode Method.

Table 18 – SetArbitrationMode Method AddressSpace Definition
Attribute Value
BrowseName SetArbitrationMode
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Discrete Arbitration
MDIS Digital Arbitration
MDIS Instrument Arbitration Base

6.4 MDISDigitalInstrumentObjectType

6.4.1 Introduction

The following section describes the generic MDISDigitalInstrumentObjectType structure and defines the properties associated with it. Additional sections define a subtype MDISDigitalOutObjectType that allows updates to the digital value. This is in general a vendor and operator independent description, but all users of the MDISDigitalInstrumentObjectType or MDISDigitalOutObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISDigitalInstrumentObjectType or MDISDigitalOutObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of MDISDigitalInstrumentObjectType or MDISDigitalOutObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the instance of the MDISDigitalInstrumentObjectType are initiated by the Client and are directed to the Server.

6.4.2 Overview

The following section details the MDIS generic properties for the MDISDigitalInstrumentObjectType; implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project.

Figure 12 provides an overview of the MDISDigitalInstrumentObjectType as defined by MDIS, including some nested types. This figure includes all items that are inherited from the MDISBaseObjectType.

Figure 12 – MDISDigitalInstrumentObjectType & MDISDigitalOutObjectType & MDISDigitalArbitrationObjectType

6.4.3 MDISDigitalInstrumentObjectType Definition

Table 19 defines the structure of an MDISDigitalInstrumentObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISDigitalInstrumentObjectType.

Table 19 – MDISDigitalInstrumentObjectType Definition
Attribute Value
BrowseNameMDISDigitalInstrumentObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType (see section 6.1.1)
0:HasComponentVariableState0:Boolean0:BaseDataVariableTypeM, RO
0:HasSubtypeObjectTypeMDISDigitalOutObjectType
0:HasSubtypeObjectTypeMDISDigitalArbitrationObjectType
ConformanceUnits
MDIS Digital Instrument Base

State – The state of the instance of MDISDigitalInstrumentObjectType. This state is represented as a Boolean, where true indicates on and false indicates off.

The MDISDigitalInstrumentObjectType is a subtype of MDISBaseObjectType and inherit the FaultCode Variable. The MDISDigitalInstrumentObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 8. All subtypes of this the MDISDigitalInstrumentObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 20 – MDISDigitalInstrumentObjectType FaultCode Values
Value Bit no. Description
IOFault0Instrument has no usable value, there is an I/O fault.

The MDISDigitalInstrumentObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 9. All subtypes of this the MDISDigitalInstrumentObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 21 – MDISDigitalInstrumentObjectType WarningCode Values
Value Bit no. Description
SideAProblem0There is an issue with the A side of this instrument [note this only applies to instrument that are arbitrated]
SideBProblem1There is an issue with the B side of this instrument [note this only applies to instrument that are arbitrated]
Discrepancy2The values differ [note this only applies to instrument that are arbitrated]

6.4.4 MDISDigitalOutObjectType

Table 22 defines the structure of an MDISDigitalOutObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISDigitalOutObjectType.

Table 22 – MDISDigitalOutObjectType Definition
Attribute Value
BrowseNameMDISDigitalOutObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISDigitalInstrumentObjectType
0:HasComponentMethodWriteStateSee 6.4.5M
ConformanceUnits
MDIS Digital Out Base

WriteState – This Method allows a Client to change the value of State on an instance of MDISDigitalOutObjectType. The Method will return any errors that occurred on setting the value. The Client shall verify that the State actually changed to confirm the update. If the instrument is disabled, an error Bad_InvalidState shall be returned.

6.4.5 WriteState Method

WriteState Method (defined in Table 23) is used to change the state of the State Variable in an instance of MDISDigitalOutObjectType. The WriteState operation applies to the object in the subsea system. The value of the State Variable shall only be updated once the subsea system has provided a new value. For Objects that are used as a command, the value of the State Variable shall be updated directly to the value provided by the State parameter of the Method. Some systems will be able to report any errors immediately others will only be able to report that the operation was not refused. Clients are expected to monitor the State and ensure that the operation completed. If an error occurs after the Method has returned, a Fault flag shall be set and an appropriate FaultCode will be returned. The Fault (and FaultCode) will reset on the next successful WriteState Method invocation.

Signature:

	WriteState (
		[in] 0:Boolean State);
	
Table 23 – WriteState Method parameters
Argument Description
StateBoolean indicator of the target state of the variable

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The WriteState Method will result in a change the state of the State Variable. The Method will report if any error occurs while writing the state of the Object. Table 24 specifies the AddressSpace representation for the WriteState Method.

Table 24 – WriteState Method AddressSpace Definition
Attribute Value
BrowseNameWriteState
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Digital Out Base

6.4.6 MDISDigitalArbitrationObjectType Definition

Table 25 defines the structure of an MDISDigitalArbitrationObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISDigitalArbitrationObjectType.

Table 25 – MDISDigitalArbitrationObjectType Definition
Attribute Value
BrowseNameMDISDigitalArbitrationObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISDigitalInstrumentObjectType
0:HasComponentVariableSourceA0:Boolean0:BaseDataVariableTypeM, RO
0:HasComponentVariableSourceB0:Boolean0:BaseDataVariableTypeM, RO
0:HasComponentVariableArbitrationModeArbitrationModeEnum0:BaseDataVariableTypeM, RO
0:HasComponentMethodSetArbitrationModeDefined in 6.3.7O
ConformanceUnits
MDIS Digital Arbitration

The MDISDigitalArbitrationObjectType handles the Selection of two analog sources, SourceA and SourceB. The result of the arbitration is shown in the State. The result can be either a selection of one source as default or forcing of one source (see ArbitrationModeEnum for additional details). The arbitration object will select which instrument is healthy and report it.

SourceA – a Variable that represents the value of the first source of a MDISDigitalArbitrationObjectType.

SourceB – a Variable that represents the value of the second source of a MDISDigitalArbitrationObjectType.

ArbitrationMode – This enumeration provides information about the arbitration mode that is currently used (see section 8.1.10). For a MDISDigitalArbitrationObjectType, the average value does not apply and the High value indicates an “Or” of the two values while a low value indicates an “And’ of the two values.

The MDISDigitalArbitrationObjectType is a subtype of MDISDigitalInstrumentObjectType and inherits the FaultCode Variable. The MDISDigitalArbitrationObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 26 (currently empty, no additional fault codes defined). All subtypes of this the MDISDigitalArbitrationObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 26 – MDISDigitalArbitrationObjectType FaultCode Values
Value Bit no. Description

The MDISDigitalArbitrationObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 27 (currently empty, no additional warning codes defined). All subtypes of this the MDISDigitalArbitrationObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 27 – MDISDigitalArbitrationObjectType WarningCode Values
Value Bit no. Description

6.5 MDISInstrumentObjectType

6.5.1 Introduction

The following section details the generic MDISInstrumentObjectType structure and defines the properties associated with it. Additional sections define a subtype MDISInstrumentOutObjectType that allows updates to the instrument value. This is in general a vendor and operator independent description, but all users of the MDISInstrumentObjectType or MDISInstrumentOutObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISInstrumentObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of the MDISInstrumentObjectType or MDISInstrumentOutObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the MDISInstrumentObjectType are initiated by the Client and are directed to the Server.

6.5.2 Overview

The following section details the MDIS generic properties for the MDISInstrumentObjectType. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 13 provides an overview of the MDISInstrumentObjectType as defined by MDIS, including some nested types. Figure 13 includes all of the items that are inherited from the MDISBaseObjectType.

Figure 13 – MDISInstrumentObjectType & MDISInstrumentOutObjectType & MDISInstrumentArbitrationObjectType

6.5.3 MDISInstrumentObjectType Definition

Table 28 defines the structure of an MDISInstrumentObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISInstrumentObjectType. If a MDISInstrumentObjectType instance is disabled, the MDISBaseObjectType defaults are followed and only the HHSetPoint, HSetPoint, LSetPoint and LLSetPoint object values will be available

Table 28 – MDISInstrumentObjectType Definition
Attribute Value
BrowseNameMDISInstrumentObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType (defined in 6.1.1)
0:HasComponentVariableProcessVariable0:Float0:AnalogItemType M, RO
0:HasComponentVariableHHlimit0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableHlimit0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableLlimit0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponent VariableLLlimit0:Boolean0:BaseDataVariableTypeO, RO
0:HasPropertyVariableHHSetPoint0:Float0:PropertyTypeO, RW
0:HasPropertyVariableHSetPoint0:Float0:PropertyTypeO, RW
0:HasPropertyVariableLSetPoint0:Float0:PropertyTypeO, RW
0:HasPropertyVariableLLSetPoint0:Float0:PropertyTypeO, RW
0:HasSubtypeObjectTypeMDISInstrumentOutObjectType
0:HasSubtypeObjectTypeMDISInstrumentArbitrationObjectType
ConformanceUnits
MDIS Instrument Base

ProcessVariable – a Variable in engineering units that represents the value of the instance of an MDISInstrumentObjectType. It includes properties that represent the engineering units; the engineering units range and optionally the instrument range, see OPC 10000-8. The components of the MDISInstrumentObjectType Type have additional subcomponents which are defined inTable 29.

Table 29 – MDISInstrumentObjectType Type Additional Subcomponents
BrowsePath References NodeClass BrowseName DataType TypeDefinition Other
ProcessVariable0:HasPropertyVariable0:InstrumentRange0:Range0:PropertyTypeO
ProcessVariable0:HasPropertyVariable0:EURange0:Range0:PropertyTypeM
ProcessVariable0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM

The EUInformation DataType is defined in OPC 10000-8.

HHlimit – The instrument HH state is active

Hlimit – The instrument H state is active

Llimit – The instrument L state is active

LLlimit – The instrument LL state is active

HHSetPoint – Configuration of HHSetPoint which will set HHlimit be TRUE when the ProcessVariable value is greater than “set point value”. If this limit Variable exists on an object, but has not been configured, the HHSetPoint shall have a status code of Bad_ConfigurationError and Clients shall ignore the value. When the HHSetPoint has a Status of Bad_ConfigurationError, if the HHlimit exists, it shall have a status code of Bad_ConfigurationError and the value is ignored.

HSetPoint – Configuration of HSetPoint which will set Hlimit be TRUE when the ProcessVariable value is greater than “set point value”. If this limit Variable exists on an object, but has not been configured, the HSetPoint shall have a status code of Bad_ConfigurationError and Clients shall ignore the value. When the HSetPoint is ignored, if the Hlimit exists, it shall have a status code of Bad_ConfigurationError and the value is ignored.

LSetPoint – Configuration of LSetPoint which will set Llimit be TRUE when the ProcessVariable value is less than “set point value”. If this limit Variable exists on an object, but has not been configured, the LSetPoint shall have a status code of Bad_ConfigurationError and Clients shall ignore the value. When the LSetPoint is ignored, if the Llimit exists, it shall have a status code of Bad_ConfigurationError and the value is ignored.

LLSetPoint – Configuration of LLSetPoint which will set LLlimit be TRUE when the ProcessVariable value is less than “set point value”. If this limit Variable exists on an object, but has not been configured, the LLSetPoint shall have a status code of Bad_ConfigurationError and Clients shall ignore the value. When the LLSetPoint is ignored, if the LLlimit exists, it shall have a status code of Bad_ConfigurationError and the value is ignored.

The MDISInstrumentObjectType is a subtype of MDISBaseObjectType and inherit the FaultCode Variable. The MDISInstrumentObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 8. All subtypes of this the MDISInstrumentObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 30 – MDISInstrumentObjectType FaultCode Values
Value Bit no. Description
IOFault0Instrument has no usable value, there is an I/O fault.

The MDISDigitalInstrumentObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 9. All subtypes of this the MDISDigitalInstrumentObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 31 – MDISInstrumentObjectType WarningCode Values
Value Bit No. Description
SideAProblem0There is an issue with the A side of this instrument [note this only applies to instrument that are arbitrated]
SideBProblem1There is an issue with the B side of this instrument [note this only applies to instrument that are arbitrated]
Discrepancy2The values differ by more than is acceptable
OutOfRange3The value of the instrument is Out of range

6.5.4 MDISInstrumentOutObjectType Definition

Table 32 defines the structure of an MDISInstrumentOutObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISInstrumentOutObjectType.

Table 32 – MDISInstrumentOutObjectType Definition
Attribute Value
BrowseNameMDISInstrumentOutObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISInstrumentObjectType
0:HasComponentMethodWriteValueSee 6.5.5M
ConformanceUnits
MDIS Instrument Out Base

WriteValue – This Method allows a Client to change the value of ProcessVariable on an instance of MDISInstrumentOutObjectType. The Method will return any errors that occurred on setting the value. If the Instrument is disabled, an error Bad_InvalidState shall be returned. The Client shall verify that the ProcessVariable actually changed to confirm the update.

6.5.5 Instrument WriteValue Method

Instrument WriteValue Method is used to change the value of the ProcessVariable in an instance of MDISInstrumentOutObjectType. The Instrument WriteValue Method operation applies to the object in the subsea system. The value of the ProcessVariable value will only update once the subsea system has provided a new value. Some systems will be able to report any errors immediately others will only be able to report that the operation was not refused. Clients are expected to monitor the ProcessVariable and ensure that the operation completed successfully. If an error occurs after the Method has returned, a Fault flag shall be set and an appropriate FaultCode will be returned. The Fault (and FaultCode) will reset on the next successful Instrument WriteValue Method invocation.

Signature:

	WriteValue (
		[in] 0:Float Value);
	
Table 33 – WriteValue Method parameters
Argument Description
ValueFloat value Variable, that indicates the target state of the Variable

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The WriteValue Method will result in a change the value of the ProcessVariable Variable. The Method will report if any error occurs while writing the value of the Object. Table 34 specifies the AddressSpace representation for the WriteValue

Table 34 – WriteValue Method AddressSpace Definition
Attribute Value
BrowseName WriteValue
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Instrument Out Base

6.5.6 MDISInstrumentArbitrationObjectType Definition

Table 35 defines the structure of an MDISInstrumentArbitrationObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISInstrumentArbitrationObjectType.

Table 35 – MDISInstrumentArbitrationObjectType Definition
Attribute Value
BrowseNameMDISInstrumentArbitrationObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISInstrumentObjectType
0:HasComponentVariableSourceA0:Float0:BaseDataVariableType M, RO
0:HasComponentVariableSourceB0:Float0:BaseDataVariableType M, RO
0:HasComponentVariableArbitrationModeArbitrationModeEnum0:BaseDataVariableTypeM, RO
0:HasPropertyVariableDiscrepancySetPoint0:Float0:PropertyTypeO, RW
0:HasComponentMethodSetArbitrationModeDefined in 6.3.7O
ConformanceUnits
MDIS Instrument Arbitration Base

The MDISInstrumentArbitrationObjectType provides for the selection between two analog sources, SourceA and SourceB. The result of the arbitration is shown in the ProcessVariable. The result can be either an average, a selection of one source as default or forcing of one source. See the ArbitrationModeEnum for a complete list of possible modes.

SourceA – a Variable in engineering units that represents the value of the first source of a MDISInstrumentArbitrationObjectType. The EngineeringUnits and Range of the ProcessVariable apply to this value.

SourceB – a Variable in engineering units that represents the value of the first source of a MDISInstrumentArbitrationObjectType. The EngineeringUnits and Range of the ProcessVariable apply to this value.

ArbitrationMode – this enumeration identifies the current arbitration mode. For the complete list of arbitration modes, see section 8.1.10. [note: the selected mode might be different than the current mode reflected in this parameter, for example in the case of a failure the current mode might indicate SourceA even if Average was selected, due to a SourceB failure]

DiscrepancySetPoint – the value represents the maximum allow difference between the SourceA and SourceB values expressed as a percentage based on the full range of the instrument. This value can only be between 0 and 100. For example, if SourceA was 10.0 and SourceB was 20.0 and the instrument range was 0 to 200, the percentage would be 5%.

The MDISInstrumentArbitrationObjectType is a subtype of MDISInstrumentObjectType and inherits the FaultCode Variable. The MDISInstrumentArbitrationObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 36 (currently empty, no additional fault codes defined). All subtypes of this the MDISInstrumentArbitrationObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 36 – MDISInstrumentArbitrationObjectType FaultCode Values
Value Bit no. Description

The MDISInstrumentArbitrationObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 37 (currently empty, no additional warning codes defined). All subtypes of this the MDISInstrumentArbitrationObjectType will inherits all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 37 – MDISInstrumentArbitrationObjectType WarningCode Values
Value Bit no. Description

6.6 MDISChokeObjectType

6.6.1 Introduction

The following section details the generic MDISChokeObjectType structure and defines the properties associated with it. This is in general a vendor and operator independent description, but all users of the MDISChokeObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISChokeObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of the MDISChokeObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the instance of the MDISChokeObjectType are initiated by the Client and are directed to the Server.

6.6.2 Overview

The MDISChokeObjectType is a basic component of any subsea control system. Subsea and surface trees have a choke valve and it is used for regulating the flow volume and with it the back pressure of liquids or gas. This document will address the hydraulic choke valve found in subsea production and water injection trees. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 14 provides an overview of the Choke Object as defined by MDIS. It includes all items that are defined by the MDISBaseObjectType. It illustrates that an interlock might have one or more <InterlockVariables> associated with it, or that they might not have an actual interlock associated.

Figure 14 – MDISChokeObjectType

6.6.3 MDISChokeObjectType Definition

Table 38 defines the structure of an MDISChokeObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISChokeObjectType. When an MDISChokeObjectType Instance is disabled the MDISBaseObjectType defaults are followed and only the StepDurationOpen, StepDurationClose and TotalSteps values will be available.

Table 38 – MDISChokeObjectType Definition
Attribute Value
BrowseNameMDISChokeObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType
0:HasComponentVariableCalculatedPosition0:Float0:BaseDataVariableTypeM, RO
0:HasComponentVariableSetCalculatedPositionStatusSetCalculatedPositionEnum0:BaseDataVariableTypeO, RO
0:HasComponentVariablePositionInSteps0:Int160:BaseDataVariableTypeO, RO
0:HasComponentVariableMovingChokeMoveEnum0:BaseDataVariableTypeM, RO
0:HasComponentVariableCommandRejected0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentMethodMoveSee 6.6.4M
0:HasComponentMethodStepSee 6.6.5O
0:HasComponentMethodAbort See 6.6.6M
0:HasComponentMethodSetCalculatedPositionSee 6.6.7M
0:HasComponentVariableNonDefeatableOpenInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableOpenInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableNonDefeatableCloseInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableCloseInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasPropertyVariableStepDurationOpen0:Duration0:PropertyTypeO, RO
0:HasPropertyVariableStepDurationClose0:Duration0:PropertyTypeO, RO
0:HasPropertyVariableTotalSteps0:UInt160:PropertyTypeO, RO
HasInterlockVariable<InterlockPlaceholder>0:BooleanInterlockVariableTypeOP
ConformanceUnits
MDIS Choke Base

CalculatedPosition – A floating point number that represents the estimated percent open of the choke. This value can be updated using the SetCalculatedPosition Method.

SetCalculatedPositionStatus – an enumeration that reflect the status of a SetCalculatedPosition Command. This variable is present if the SetCalculatedPosition command can return asynchronously.

PositionInSteps – An Int16 that represents position in steps for the choke.

CommandRejected –– A flag that, if set to True, indicates that the choke has rejected the last command issued to it. The command could be rejected for a number of reasons. Possible reasons for rejecting a command include:

Loss of subsea communication reported by the SPCS.

An active interlock.

The choke is in the disabled state

Enabled – This Boolean reflects if the choke is available for control. The behaviour follows the MDISBaseObjectType.

Moving – An enumeration indicating the confirmed operation of the choke, (confirmed by SPCS Vendor). Possible status for a choke is moving and stopped.

Move – This Method allows an operator to increase or decrease the size of the opening in the choke. This command moves the choke to the percent value provided as part of the command.

Step – This Method allows an operator to increase or decrease the size of the opening in the choke. This command moves the choke the number of steps provided as part of the command.

Abort – This Method allows an operator to cancel any currently active move or step command.

SetCalculatedPosition – This Method is used to calibrate the CalculatedPosition. It can only be called when the choke is not moving.

EnableDisable – The choke, when disabled, places a non-defeatable interlock set on Move and Step functionality, in addition to the functionality described in the MDISBaseObjectType.

StepDurationOpen – SPCS open step duration period. This is the time in milliseconds for the choke to open one step.

StepDurationClose – SPCS close step duration period. This is the time in milliseconds for the choke to close one step.

TotalSteps – Total number of steps is the max steps of a choke.

<InterlockPlaceholder> – The number of interlock Variables will change based on the project and even choke instance. The Variables shall be of InterlockVariableType or a subtype of it. They will be referenced by a HasInterlock Reference and will contain an InterlockFor Reference. Clients can use this information to categorise the interlocks appropriately.

The following Variables indicate that an interlock is set (TRUE) or is not set (FALSE). The Variable shall be the target of an InterlockFor Reference from an instance of an InterlockVariableType that describes the actual interlock.

NonDefeatableOpenInterlock – The open choke command is interlocked and cannot be overridden.

DefeatableOpenInterlock – The open choke command is interlocked and can be overridden.

NonDefeatableCloseInterlock – The close choke command is interlocked and cannot be overridden.

DefeatableCloseInterlock – The close choke command is interlocked and can be overridden.

The MDISChokeObjectType is a subtype of MDISBaseObjectType and inherit the FaultCode Variable. The MDISChokeObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 39. All subtypes of this the MDISChokeObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 39 – MDISChokeObjectType FaultCode Values
Value Bit no. Description
FailedToMove0The Choke failed to move in response to a command.
CommunicationFault1Not possible to operate the choke.

The MDISChokeObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2)in Table 40. All subtypes of this the MDISChokeObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 40 – MDISChokeObjectType WarningCode Values
Value Bit no. Description
SideAProblem0There is an issue with the A side of the choke.
SideBProblem1There is an issue with the B side of the choke.
Discrepancy2There is a discrepancy between the calculated position and the measured position.
UncommandedChange3The choke position changed without a command.

6.6.4 Choke Move Method

Move Method is used to adjust the opening size in a choke.

Signature:

	Move (
			[in] 0:Float		Position,
			[in] 0:Boolean	OverrideInterlocks,
			[in] SEMEnum		SEM);
	
Table 41 – Move Method Arguments( Choke)
Argument Description
PositionA number (in percent) indicating the percent open to be moved to when operated.
OverrideInterlocksBoolean indicating if the open or close command should override any defeatable interlocks
SEMThe selection of which SEM to send the command to.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments:

The Move Method initiates a move command. Parameters include the position value in percent, overriding of any interlocks and the SEM selection to use for the command. The Position Method argument value shall be between 0 and 100. The server shall return Bad_OutOfRange if the Position Method argument value is outside of this range. After receiving the new commanded position, the choke will start to move. The Method will complete when the command has been accepted. The move operation may or may not have completed when the Method returns. The Method returns errors only if the operation cannot be started. The Client must monitor the Moving Variable to determine when the move operation actually finishes.

If a Server does not support an Override of defeatable interlocks, then this parameter will be ignored by the Server. If any interlocks are active the appropriate error code is returned.

If a Server does not support the selection of SEM, this parameter is ignored.

Table 42 specifies the AddressSpace representation for the choke Move Method.

Table 42 – Move Method AddressSpace Definition (Choke)
Attribute Value
BrowseNameMove
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Choke Base
MDIS Electric Choke Base

6.6.5 Choke Step Method

Choke Step Method is used to adjust the opening size in a choke.

Signature

	Step (
			[in] ChokeCommandEnum		Direction,
			[in] 0:UInt16				Steps,
			[in] 0:Boolean			OverrideInterlocks,
			[in] SEMEnum				SEM);
	
Table 43 – Step Method Arguments (Choke)
Argument Description
DirectionEnumeration to indicate if an open request or close request is being initiated
StepsThe number of steps to either open or close the choke
OverrideInterlocksBoolean indicating if the open or close command should override any defeatable interlocks
SEMThe selection of which SEM to send the command to.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The choke Step Method initiates a move command. Parameters include the direction (open or close), the number of steps to step, overriding of any interlocks and the SEM selection to use for the command. After receiving the command, the choke will start to move. The Method will complete when the command has been accepted. The move operation may or may not have completed when the Method returns. The Method returns errors only if the operation cannot be started. The Client must monitor the Moving Variable to determine when the Step command actually finishes.

If a Server does not support an override of defeatable interlocks, then the OverrideInterlocks parameter will be ignored by the Server and if any interlocks are active the appropriate error code is returned.

If a Server does not support the selection of SEM, the SEM parameter is ignored.

Table 44 specifies the AddressSpace representation for the Choke Step Method.

Table 44 – Step Method AddressSpace Definition (Choke)
Attribute Value
BrowseName Step
References Node Class BrowseName DataType TypeDefinition Othrer
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Choke Step Method

6.6.6 Choke Abort Method

Choke Abort Method is used to cancel any active move command in the Choke.

Signature:

	Abort ();

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The choke Abort Method will try to cancel any active choke Move or Step commands. If no Move or Step command is in progress, the command will be ignored and return successful. The Method will complete when the command has been accepted. The abort operation may or may not have completed when the Method returns. The Method returns errors only if the operation cannot be started. The Client shall monitor the Moving and if provided the CommandRejected Variables to determine if the abort was successful or failed. Table 45 specifies the AddressSpace representation for the choke Abort Method.

Table 45 – Abort Method AddressSpace Definition (Choke)
Attribute Value
BrowseNameAbort
References Node Class BrowseName DataType TypeDefinition Other
ConformanceUnits
MDIS Choke Base

6.6.7 Choke SetCalculatedPosition Method

SetCalculatedPosition Method is used to synchronise the CalculatedPosition to the actual choke position.

Signature:

	SetCalculatedPosition (
			[in] 0:Float Position);
	
Table 46 – SetCalculatedPosition Method Arguments (Choke)
Argument Description
PositionA number (in percent)

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments:

The SetCalculatedPosition Method is used to set the CalculatedPosition. It can only be called when the choke is not moving. The parameter is the calculated position. This method may return when the CalculatedPosition has been updated or it may return a status of Completes_Asynchronously. If it returns Completes_Asynchronously the Client will have to monitor the SetCalculatedPositionStatus to determine if an error occurred or the command completed. The SetCalculatedPositionStatus will reset on the next successful SetCalculatedPosition Method invocation.

Table 47 specifies the AddressSpace representation for the SetCalculatedPosition Method.

Table 47 – SetCalculatedPosition Method AddressSpace Definition (Choke)
Attribute Value
BrowseNameSetCalculatedPosition
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Choke Base

6.7 MDISElectricChokeObjectType

6.7.1 Introduction

The following section details the generic MDISElectricChokeObjectType structure and defines the properties associated with it. This is in general a vendor and operator independent description, but all users of the MDISElectricChokeObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISElectricChokeObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of the MDISElectricChokeObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the instance of the MDISElectricChokeObjectType are initiated by the Client and are directed to the Server.

6.7.2 Overview

The MDISElectricChokeObjectType is a basic component of any subsea control system. Subsea and surface trees have a choke valve and it is used for regulating the flow volume and with it the back pressure of liquids or gas. This document will address the electric choke valve found in subsea production and water injection trees. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 14 provides an overview of the Choke Object as defined by MDIS. It includes all items that are defined by the MDISBaseObjectType. It illustrates that an interlock might have one or more Interlock variables associated with it, or that they might not have an actual interlock associated.

Figure 15 – MDISElectricChokeObjectType

6.7.3 MDISElectricChokeObjectType Definition

Table 38 defines the structure of an MDISElectricChokeObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISElectricChokeObjectType. When an MDISElectricChokeObjectType Instance is disabled the MDISBaseObjectType defaults are followed.

Table 48 – MDISElectricChokeObjectType Definition
Attribute Value
BrowseNameMDISElectricChokeObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType
0:HasComponentVariableActualPosition0:Float0:BaseDataVariableTypeM, RO
0:HasComponentVariableMovingChokeMoveEnum0:BaseDataVariableTypeM, RO
0:HasComponentVariableCommandRejected0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentMethodMoveSee 6.6.4M
0:HasComponentMethodAbort See 6.6.6M
0:HasComponentVariableNonDefeatableOpenInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableOpenInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableNonDefeatableCloseInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableCloseInterlock0:Boolean0:BaseDataVariableTypeO, RO
HasInterlockVariable<InterlockPlaceholder>0:BooleanInterlockVariableTypeOP
ConformanceUnits
MDIS Electric Choke Base

ActualPosition – A floating point number that represents the percent open of the choke.

CommandRejected – A flag that, if set to True, indicates that the choke has rejected the last command issued to it. The command could be rejected for a number of reasons. Possible reasons for rejecting a command include:

Loss of subsea communication reported by the SPCS.

An active interlock.

The choke is in the disabled state

Enabled – This Boolean reflects if the choke is available for control. The behaviour follows the MDISBaseObjectType.

Moving – An enumeration indicating the confirmed operation of the choke, (confirmed by SPCS Vendor). Possible status for a choke is moving and stopped.

Move – This Method allows an operator to increase or decrease the size of the opening in the choke. This command moves the choke to the percent value provided as part of the command.

Abort – This Method allows an operator to cancel any currently active move command.

EnableDisable – The choke, when disabled, places a non-defeatable interlock set on Move functionality, in addition to the functionality described in the MDISBaseObjectType.

<InterlockPlaceholder> – The number of interlock Variables will change based on the project and even choke instance. The Variables shall be of InterlockVariableType or a subtype of it. They will be referenced by a HasInterlock Reference and will contain an InterlockFor Reference. Clients can use this information to categorise the interlocks appropriately.

The following Variables indicate that an interlock is set (TRUE) or is not set (FALSE). The Variable shall be the target of an InterlockFor Reference from an instance of an InterlockVariableType that describes the actual interlock.

NonDefeatableOpenInterlock – The open choke command is interlocked and cannot be overridden.

DefeatableOpenInterlock – The open choke command is interlocked and can be overridden.

NonDefeatableCloseInterlock – The close choke command is interlocked and cannot be overridden.

DefeatableCloseInterlock – The close choke command is interlocked and can be overridden.

The MDISElectricChokeObjectType is a subtype of MDISBaseObjectType and inherit the FaultCode Variable. The MDISElectricChokeObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 49. All subtypes of this the MDISElectricChokeObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 49 – MDISElectricChokeObjectType FaultCode Values
Value Bit no. Description
FailedToMove0The Choke failed to move in response to a command.
CommunicationFault1Not possible to operate the choke.

The MDISElectricChokeObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 50. All subtypes of this the MDISElectricChokeObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 50 – MDISElectricChokeObjectType WarningCode Values
Value Bit no. Description
SideAProblem0There is an issue with the A side of the choke.
SideBProblem1There is an issue with the B side of the choke.
UncommandedChange3The choke position changed without a command.
CalibrationRequired4The choke requires calibration

6.8 MDISValveObjectType

6.8.1 Introduction

The following section details the generic MDISValveObjectType structure and defines the properties associated with it. This is in general a vendor and operator independent description, but all users of this MDISValveObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISValveObjectType defined in this document. It is required that the subsea system is the Server and host of the valve Object. The DCS based system is the Client in the system. It is required that all interaction with the valve Object is initiated by the Client and is directed to the Server.

6.8.2 Overview

The valve Object is a basic component of any subsea control system. Subsea and surface trees have a large variety of valve configurations and combinations of manual and / or actuated (hydraulic or pneumatic) valves. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 16 provides an overview of the MDISValveObjectType as defined by MDIS. The figure includes all items inherited from the MDISBaseObjectType. It illustrates that an interlock might have one or more Interlock variables associated with it, or that they might not have an actual interlock associated.

Figure 16 – Valve Object Overview

6.8.3 MDISValveObjectType Definition

Table 51 details the generic properties for the MDISValveObjectType. Any vendor specified properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISValveObjectType. When an MDISValveObjectType Instance is disabled the MDISBaseObjectType defaults are followed and only the OpenTimeDuration and CloseTimeDuration values will be available.

Table 51 – MDISValveObjectType Definition
Attribute Value
BrowseNameMDISValveObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType
0:HasComponentVariablePositionValvePositionEnum0:BaseDataVariableTypeM, R
0:HasComponentVariableCommandRejected0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableSignatureRequestStatusSignatureStatusEnum0:BaseDataVariableTypeO, RO
0:HasComponentVariableLastCommandCommandEnum0:BaseDataVariableTypeO, RO
0:HasComponentVariableNonDefeatableOpenInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableOpenInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableNonDefeatableCloseInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableCloseInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentMethodMoveSee 6.8.4M
HasInterlockVariable<InterlockPlaceholder>0:BooleanInterlockVariableTypeOP, RO
0:HasPropertyVariableOpenTimeDuration0:Duration0:PropertyTypeO, RO
0:HasPropertyVariableCloseTimeDuration 0:Duration0:PropertyTypeO, RO
HasSignatureObject<ValveSignature>FileTypeOP
ConformanceUnits
MDIS Valve Base

The following items describe status information from the valve:

SignatureRequestStatus – The collection of data required for a valve signature may take some time after the completion of a Move command. The SignatureRequestStatus Variable indicates the status of the current signature request (see 8.1.4 for a description of the possible enumerations).

LastCommand – The enumeration reflects the last command sent to the equipment by the SPCS (see 8.1.5 for a description of the possible enumerations).

Enabled – This Boolean reflects if the valve is available for control. The behaviour follows the MDISBaseObjectType.

Position – This enumeration provides information about the current position of the valve (see section 8.1.7 for additional details).

CommandRejected – A flag that, if set to True, indicates that the valve has rejected the last command issued to it. The command could be rejected for a number of reasons. Possible reasons for rejecting a command include:

Loss of subsea communication reported by the SPCS.

An active interlock.

The valve is in the disabled state.

For any of the following Variables, if they are true, there shall be at least one instance of an InterlockVariableType that describes the active interlock.

NonDefeatableOpenInterlock – The open valve command is interlocked and cannot be overridden.

DefeatableOpenInterlock – The open valve command is interlocked and can be overridden.

NonDefeatableCloseInterlock – The close valve command is interlocked and cannot be overridden.

DefeatableCloseInterlock – The close valve command is interlocked and can be overridden.

The following items are related to valve control: These items allow information to flow from the DCS to the SPCS. All commands from the DCS to SPCS may require access controls to ensure that only appropriate personnel initiate them.

Move – This Method causes the valve to open or close (see 6.8.4 for additional details).

<InterlockPlaceholder> – The number of interlock Variables will change based on the project and even valve instance. The Variables shall be of InterlockVariableType or a subtype of it. The interlock contains an InterlockFor Reference to one of the previously described flags. Clients can use this information to categorise the interlocks appropriately. Figure 17 provides an example of how this interlock Variable is used and could be deployed.

Figure 17 – Interlock example

Note: in OPC UA it is allowed to have a Node which is the target of multiple 0:HasComponent References, this allows a single interlock to be shared between multiple Objects; such as a low pressure interlock that maybe shared by all of the valves and chokes in a system.

The following items describe configuration related items:

OpenTimeDuration – Estimated max time to travel to open position, used for DCS systems to indicate a move fail condition if time is exceeded. Time is provided in milliseconds. The OpenTimeDuration can be used for any kind of valve (hydraulic, electric, etc.). [Note: this time is an estimate and Clients may need to allow for additional delays in transmitting and receiving any move commands].

CloseTimeDuration - Estimated max time to travel to close position, used for DCS systems to indicate a move fail condition if time is exceeded. Time is provided in milliseconds. The CloseTimeDuration can be used for any kind of valve (hydraulic, electric, etc.) [Note: this time is an estimate and Clients may need to allow for additional delays in transmitting and receiving any Move commands].

<ValveSignature> - The reference shall point to an instance of FileType, where the file contains valve signature information. The name of this object is project or vendor specific, but it should be related to the name of the instance of the MDISValveObjectType. The name shall include a timestamp. The FileType ObjectType (defined in OPC 10000-5 (older version), OPC 10000-20 (newer versions)) includes two properties (illustrated below), for all MDIS instances both of these properties shall have the value False. For additional detail see 6.14.3.

0:HasPropertyVariable0:Writable0:Boolean0:PropertyTypeMandatory
0:HasPropertyVariable0:UserWritable0:Boolean0:PropertyTypeMandatory

Vendor specific subtypes of this ObjectType are allowed. They may add additional vendor specific information or may change some Optional items to Mandatory. A standard file content is defined in Annex E.

The MDISValveObjectType is a subtype of MDISBaseObjectType and inherit the FaultCode Variable. The MDISValveObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 52. All subtypes of this the MDISValveObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 52 – MDISValveObjectType FaultCode Values
Value Bit no. Description
CommunicationFault1Not possible to operate the valve.
FailedToOpen2Device failed to move open
FailedToClose3Device failed to move close
PressureFeedbackFailure4Pressure check feedback verification failed
FlowFeedbackFailure5Flow check feedback verification failed

The MDISValveObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 53. All subtypes of this the MDISValveObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 53 – MDISValveObjectType WarningCode Values
Value Bit no. Description
SideAProblem0There is an issue with the A side of the valve
SideBProblem1There is an issue with the B side of the valve.
PositionDiscrepancy2The valve position has a discrepancy (Side A and Side B are different and neither is broken)
UncommandedChange3Position of valve changed without an authorized move
CalibrationRequired4The valve requires calibration

6.8.4 Valve Move Method

Move Method is used to open or close a valve.

Signature

	Move (
			[in] CommandEnum		Direction,
			[in] 0:Boolean		OverrideInterlock,
			[in] SEMEnum			SEM,
			[in] 0:Boolean		Signature,
			[in] 0:Boolean		ShutdownRequest);
Table 54 – Move Arguments (Valve)
Argument Description
DirectionThe enumeration indicates whether the command is to open the valve or to close the valve
OverrideInterlockBoolean indicating if the open or close command should override any defeatable interlocks
SEMThe enumeration indicates which SEM to send the command to.
SignatureBoolean indicating if a profile /signature should be generated by this move command request. If the optional Variable SignatureRequestStatus is not provided on the Object, this parameter is ignored by the Server.
ShutdownRequestBoolean indicates that this command is part of a shutdown sequence. It should be noted that the responsibility for the shutdown is on the DCS and operator side. All non defeatable interlocks of the subsea system will be overridden which can cause damage to the subsea system.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments:

The Move Method initiates a move operation. Parameters include opening or closing of the valve, overriding of any interlocks, the SEM selection to use for the command, if a profile / signature is being requested for this move operation or if a shutdown is being requested. The Method will complete when the command has been accepted. If the command has not been accepted by the Server, then the Method returns an error indicating the operation could not be performed. In the case when the Move command is accepted by the Server, the move operation may or may not be complete at the time the Method returns to the Client. Therefore, the Client must monitor the Position of the valve to determine when the Move command actually finishes.

The OverrideInterlocks, SEM, Signature and Shutdown are optional parameters, but OPC UA Methods do not allow for optional parameters. These parameters must always be provided. On a Server basis the parameter may be configured to not be utilised. If a Server is configured to not utilise a parameter, this is because the functionality is not required.

Table 55 specifies the AddressSpace representation for the Move Method.

Table 55 – Move Method AddressSpace Definition (Valve)
Attribute Value
BrowseNameMove
References Node Class BrowseName DataType TypeDefinition Other
0:HasProperty Variable 0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Valve Base

6.9 MDISCIMVObjectType

6.9.1 Introduction

The following section details the generic MDISCIMVObjectType and defines the properties associated with it. This is in general a vendor and operator independent description, but all users of the MDISCIMVObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISCIMVObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of the MDISCIMVObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the instance of the MDISCIMVObjectType are initiated by the Client and are directed to the Server.

6.9.2 Overview

The Chemical Injection Metering Valve (CIMV) is a basic component of any subsea control system. CIMVs regulate the flow of a chemical delivered to subsea production system. This document will address the CIMV found in subsea production trees. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 18 provides an overview of the CIMV Object as defined by MDIS and the MDISCIMVObjectType. It includes all items that are defined by the MDISBaseObjectType.

Figure 18 – MDISCIMVObjectType Overview

6.9.3 MDISCIMVObjectType Definition

Table 56 defines the structure of an MDISCIMVObjectType. Any vendor specified Properties that have been implemented within a project should be documented within a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISCIMVObjectType. When an MDISCIMVObjectType Instance is disabled the MDISBaseObjectType defaults are followed - no additional values will be available.

Table 56 – MDISCIMVObjectType Definition
Attribute Value
BrowseNameMDISCIMVObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType (define in 6.2.2)
0:HasComponentVariableOperationModeCIMVOperationModeEnum0:BaseDataVariableTypeM, RO
0:HasComponentVariableFlowRate0:Float0:AnalogItemType M, RO
0:HasComponentVariableTargetFlowRate0:Float0:AnalogItemType M, RO
0:HasComponentVariableTotalFlow0:Float0:AnalogItemType O, RO
0:HasComponentMethodResetTotalFlowSee 6.9.9O
0:HasComponentVariablePosition0:Float0:BaseDataVariableTypeM, RO
0:HasComponentVariableTargetPosition0:Float0:BaseDataVariableTypeM, RO
0:HasComponentVariableMovingCIMVMoveEnum0:BaseDataVariableTypeM, RO
0:HasComponentObjectTotalMotorRuntimeMDISCounterObjectTypeO, RO
0:HasComponentObjectMotorOperationsCountMDISCounterObjectTypeO, RO
0:HasComponentVariableDeviceCurrent0:Float0:AnalogItemType O, RO
0:HasComponentVariableInletPressure0:Float0:AnalogItemType O, RO
0:HasComponentVariableInternalPressure0:Float0:AnalogItemType O, RO
0:HasComponentVariableOutletPressure0:Float0:AnalogItemType O, RO
0:HasComponentVariableCommandRejected0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentMethodSetOperationModeSee 6.9.4M
0:HasComponentMethodSetFlowRateSee 6.9.5M
0:HasComponentMethodSetPositionSee 6.9.6M
0:HasComponentMethodSetManualSee 6.9.7O
0:HasComponentMethodAbortSee 6.9.8M
0:HasComponentVariableNonDefeatableOpenInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableNonDefeatableCloseInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableNonDefeatableCommandInProgressInterlock0:Boolean0:BaseDataVariableTypeO, RO
HasInterlockVariable<InterlockPlaceholder>0:BooleanInterlockVariableTypeOP, RO
ConformanceUnits
MDIS CIMV Base

The components of the MDISCIMVObjectType have additional references which are defined in Table 57.

Table 57 – MDISCIMVObjectType Additional Subcomponents
Source Path References NodeClass BrowseName DataType TypeDefinition Other
TotalMotorRuntime0:HasComponentVariableCount0:Duration0:BaseDataVariableTypeM
TotalMotorRuntime0:HasComponentMethodSetCountM
MotorOperationsCount0:HasComponentVariableCount0:UInt320:BaseDataVariableTypeM
MotorOperationsCount0:HasComponentMethodSetCountM
FlowRate0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM
TargetFlowRate0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM
TotalFlow0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM
DeviceCurrent0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM
InletPressure0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM
InternalPressure0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM
OutletPressure0:HasPropertyVariable0:EngineeringUnits0:EUInformation0:PropertyTypeM

OperationMode – An enumeration that reflects the current operating mode of the CIMV (see 8.1.8 for a description of the possible enumerations).

FlowRate – A float value that indicates the current inhibitor flow rate. It includes properties that represent the engineering units, the engineering units range and optionally the instrument range. Refer to table 16 for illustration.

TargetFlowRate – A float value that indicates the flow rate which the CIMV will automatically try to maintain when the OperationMode is set to “Flow” (refer to 8.1.8). It includes properties that represent the engineering units, the engineering units range and optionally the instrument range. Refer to table 16 for illustration. The SetFlowRate method (refer to 6.9.5) can be used to change this value.

TotalFlow – A float value that indicates the accumulated volume of inhibitor which has been injected since it was last reset. It includes properties that represent the engineering units, the engineering units range and optionally the instrument range. Refer to table 16 for illustration. If the TotalFlow is provided then the ResetTotalFlow Method shall also be provided.

Position – A Float that represents the current position in percent open for the CIMV.

TargetPosition – A Float that represents the position in percent open which the CIMV will automatically try to maintain when the OperationMode is set to “Position” (refer to 8.1.8). The SetPosition method (refer to 6.9.6) can be used to change this value.

Moving – An enumeration indicating the confirmed operation of the CIMV (confirmed by SPCS Vendor). (see 8.1.9 for a description of the possible enumerations)

TotalMotorRuntime – A value that indicates the accumulated duration of time that the motor has run since it was put into service. The object includes a reset method (see 6.10).

MotorOperationsCount – A value that indicates the total number of motor operations that have been completed since it was last reset. The object includes a reset method (see 6.10).

DeviceCurrent – The measure of the Electrical current being consumed by the device (e.g., motor operations). It includes properties that represent the engineering units, the engineering units range and optionally the instrument range. Refer to table 16 for illustration.

InletPressure – Current pressure on the upstream side of the throttling valve. Upstream in this case means closer to the source of the inhibitor chemical than the throttling valve. It includes properties that represent the engineering units, the engineering units range and optionally the instrument range. Refer to table 16 for illustration.

InternalPressure – Current pressure at the stem of the throttling valve. It includes properties that represent the engineering units, the engineering units range and optionally the instrument range. Refer to table 16 for illustration.

OutletPressure – Current pressure on the downstream side of the throttling valve. Downstream in this case means further from the source of the inhibitor chemical than the throttling valve. It includes properties that represent the engineering units, the engineering units range and optionally the instrument range. Refer to table 16 for illustration.

CommandRejected –– A flag that, if set to True, indicates that the CIMV has rejected the last command issued to it. The command could be rejected for a number of reasons. Possible reasons for rejecting a command include:

Loss of subsea communication reported by the SPCS.

An active interlock.

The CIMV is in the disabled state

Enabled – This Boolean reflects if the CIMV is available for control. The behaviour follows the MDISBaseObjectType.

SetOperationMode – This Method commands the CIMV into one of its operating modes – Position control mode, Flow control mode or Manual control mode.

SetFlowRate – This Method sets the CIMV flow rate when in flow control mode. The CIMV must be in flow control mode in order to invoke this method. It shall return an error if it is not in FlowControlMode

SetPosition – This Method sets the CIMV position when in position control mode. The CIMV must be in position mode in order to invoke this method. It shall return an error if it is not in PositionControlMode

SetManual – This Method allows an operator to open or close the CIMV to the specified percentage. The CIMV must be in manual mode in order to invoke this method. It shall return an error if it is not in ManualControlMode

Abort – This Method allows an operator to cancel any currently active SetOperationMode, SetFlowRate, SetPosition or Move command and return the operation mode to manual.

NonDefeatableCloseInterlock – The close CIMV command is interlocked and cannot be overridden.

NonDefeatableOpenInterlock – The open CIMV command is interlocked and cannot be overridden.

NonDefeatableCommandInProgressInterlock – A CIMV command is progress and no new commands can be issued until the current command ends or is stopped.

<InterlockPlaceholder> – The number of interlock Variables will change based on the project and even CIMV instance. The Variables shall be of InterlockVariableType or a subtype of it. They will be referenced by a HasInterlock Reference and will contain an InterlockFor Reference. Clients can use this information to categorise the interlocks appropriately.

The MDISCIMVObjectType is a subtype of MDISBaseObjectType and inherit the FaultCode Variable. The MDISCIMVObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 58. All subtypes of this the MDISCIMVObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 58 – MDISCIMVObjectType FaultCode Values
Value Bit no. Description
FailedToMove0The CIMV failed to move in response to a command.
CommunicationFault1Not possible to operate the valve.

The MDISCIMVObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 59. All subtypes of this the MDISCIMVObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 59 – MDISCIMVObjectType WarningCode Values
Value Bit no. Description
SideAProblem0There is an issue with the A side of the valve
SideBProblem1There is an issue with the B side of the valve.
PositionDiscrepancy2The valve position has a discrepancy (Side A and Side B are different and neither is broken)
UncommandedChange3Position of valve changed without an authorized move

6.9.4 SetOperationMode Method

SetOperationMode Method is used to change the operation mode of the CIMV.

Signature

	SetOperationMode (
			[in] CIMVOperationModeEnum		Mode,
			[in] SEMEnum					SEM,
			[in] 0:Boolean				ShutdownRequest);
Table 60 – SetOperationMode Method Arguments
Argument Description
ModeEnumeration indicating the requested operation mode
SEMThe selection of which SEM to send the command to
ShutdownRequestBoolean indicates that this command is part of a shutdown sequence.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The SetOperationMode Method initiates a change of operation mode command. Parameters include selection of operation mode and the SEM selection to use for the command. The method will complete when the command has been accepted. If the command has not been accepted by the Server, then the Method returns an error indicating the operation could not be performed. In the case when the SetOperationMode command is accepted by the Server, the operation may or may not be complete at the time the Method returns to the Client. Therefore, the Client must monitor the OperationMode of the CIMV to determine when the SetOperationMode command actually finishes. If the CIMV current OperationMode is the same as the mode specified in the SetOperationMode Method argument then the Server shall return a successful operation result but ignore the command. If the requested Mode is not support (i.e. Manual) the method shall return an error Bad_OutOfRange, indicating that the requested mode is not supported.

If a Server does not support the selection of SEM, the SEM parameter is ignored.

ShutdownRequest is a Boolean that indicates that this command is part of a shutdown sequence. It should be noted that the responsibility for the shutdown is on the DCS and operator side. All nondefeatable interlocks of the subsea system will be overridden which can cause damage to the subsea system.

Table 61 specifies the AddressSpace representation for the SetOperationMode Method.

Table 61 – SetOperationMode Method AddressSpace Definition
Attribute Value
BrowseName SetOperationMode
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS CIMV Base

6.9.5 SetFlowRate Method

SetFlowRate Method is used to set a target flow rate.

Signature

	SetFlowRate (
			[in] 0:Float		FlowRate,
			[in] SEMEnum		SEM,
			[in] 0:Boolean	ShutdownRequest);
	
Table 62 – SetFlowRate Method Arguments
Argument Description
FlowRateTarget flow rate. The CIMV will automatically maintain this target flow
SEMThe selection of which SEM to send the command to
ShutdownRequestBoolean indicates that this command is part of a shutdown sequence.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The SetFlowRate Method commands the CIMV to automatically maintain the given flow rate. Parameters include the requested flow rate, overriding of any interlocks and the SEM selection to use for the command. The FlowRate Method argument is of datatype float however the actual units are device specific. Refer to FlowRate and TargetFlowRate component of MDISCIMVObjectType discussed in 6.9.3. The Method will complete when the command has been accepted. After receiving the new commanded flow rate, the CIMV will update the TargetFlowRate to the value of the FlowRate input parameter and will automatically maintain the target rate. The CIMV must be in operation mode Flow (refer to 8.1.8) otherwise the Method shall return Bad_InvalidState. The operation may or may not have completed when the Method returns. The Method will return an error if the operation cannot be started.

If a Server does not support the selection of SEM, the SEM parameter is ignored.

ShutdownRequest is a Boolean that indicates that this command is part of a shutdown sequence. It should be noted that the responsibility for the shutdown is on the DCS and operator side. All nondefeatable interlocks of the subsea system will be overridden which can cause damage to the subsea system.

Table 63 specifies the AddressSpace representation for the SetFlowRate Method.

Table 63 – SetFlowRate Method AddressSpace Definition
Attribute Value
BrowseName SetFlowRate
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS CIMV Base

6.9.6 SetPosition Method

SetPosition Method is used to set a target position.

Signature

	SetPosition (
			[in] 0:Float		Position,
			[in] SEMEnum		SEM
			[in] 0:Boolean	ShutdownRequest);
Table 64 – SetPosition Method Arguments
Argument Description
PositionTarget position as percent of open. The CIMV will automatically maintain this position
SEMThe selection of which SEM to send the command to
ShutdownRequestBoolean indicates that this command is part of a shutdown sequence.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The SetPosition Method commands the CIMV to move to and automatically maintain the position. Parameters include the requested position, overriding of any interlocks and the SEM selection to use for the command. The Position Method argument is of datatype float and represents percent of open. The Position Method argument value shall be between 0 and 100. The server shall return Bad_OutOfRange if the Position Method argument value is outside of this range. The Method will complete when the command has been accepted. After receiving the new commanded position, the CIMV will store the value of the input param Position in the TargetPosition and will automatically maintain the position. Refer to Position and TargetPosition component of MDISCIMVObjectType discussed in 6.9.3. The CIMV must be in operation mode Position_1 (refer to 8.1.8) otherwise the Method shall return Bad_InvalidState. The operation may or may not have completed when the Method returns. The Method will return an error if the operation cannot be started.

If a Server does not support the selection of SEM, the SEM parameter is ignored.

ShutdownRequest is a Boolean that indicates that this command is part of a shutdown sequence. It should be noted that the responsibility for the shutdown is on the DCS and operator side. All nondefeatable interlocks of the subsea system will be overridden which can cause damage to the subsea system.

Table 65 specifies the AddressSpace representation for the SetPosition Method.

Table 65 – SetPosition Method AddressSpace Definition
Attribute Value
BrowseName SetPosition
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS CIMV Base

6.9.7 SetManual Method

CIMV SetManual Method is used to open or close the CIMV to a specified percent of open position.

Signature:

	SetManual (
		[in] CIMVMoveEnum		Direction,
		[in] 0:Float			Delta,
		[in] SEMEnum			SEM,
		[in] 0:Boolean		ShutdownRequest);
Table 66 – SetManual Method Arguments
Argument Description
DirectionDirection to move – Open or Close
DeltaA relative change in position from the current position as a percent. (i.e. if the position is at 50% and the delta is 5% and the direction is open , the result will be 55%)
SEMThe selection of which SEM to send the command to
ShutdownRequestBoolean indicates that this command is part of a shutdown sequence.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The SetManual Method commands the CIMV to move in the specified direction (open or close) the specified delta. Parameters include Direction 4 (refer to 8.1.9), the delta value in percent, overriding of any interlocks, the SEM selection to use for the command and if this is a shutdown request. After receiving the new commanded position, the CIMV will start to move. The server shall return Bad_OutOfRange when the Delta method argument value would result in the CIMV moving to a position less than 0 or greater than 100. For example, if the current position is 50, the method shall not be called with a Delta method argument value > 50 in either the open or close direction. The Method will complete when the command has been accepted. The move operation may or may not have completed when the Method returns. The CIMV must be in operation mode Manual_4 (refer to 8.1.8) otherwise the Method shall return Bad_InvalidState the Method returns an error if the operation cannot be started. The Client must monitor the Moving Variable to determine when the move operation actually finishes.

If a Server does not support the selection of SEM, the SEM parameter is ignored.

ShutdownRequest is a Boolean that indicates that this command is part of a shutdown sequence. It should be noted that the responsibility for the shutdown is on the DCS and operator side. All non defeatable interlocks of the subsea system will be overridden which can cause damage to the subsea system.

Table 67 specifies the AddressSpace representation for the Move Method.

Table 67 – SetManual Method AddressSpace Definition
Attribute Value
BrowseName SetManual
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS CIMV SetManual

6.9.8 Abort Method

CIMV Abort Method is used to halt any in-progress command, hold current position and return the operation mode to manual.

Signature:

	Abort ( );
	

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

In manual operation mode (refer to 8.1.8), the Abort Method will try to cancel any active CIMV Move command and hold current position. If no Move command is in progress, the command will be ignored and return successful. In position or flow operation mode (refer to 8.1.8), the Abort Method will try to cancel any activity associated with the current operation mode, hold current position and set the CIMV to manual operation mode. The Method will complete when the command has been accepted. The abort operation may or may not have completed when the Method returns. The Method returns errors only if the operation cannot be started. The Client shall monitor the Moving Variable and the OperationMode Variable and, if provided, the CommandRejected Variables to determine if the Abort command was successful or failed

Table 68 specifies the AddressSpace representation for the Abort Method.

Table 68 – Abort Method AddressSpace Definition (CIMV)
Attribute Value
BrowseName Abort
References Node Class BrowseName DataType TypeDefinition Other
ConformanceUnits
MDIS CIMV Base

6.9.9 ResetTotalFlow Method

ResetTotalFlow Method is used to reset the TotalFlow counter.

Signature:

	ResetTotalFlow (
		[in] 0:Float Initial);
Table 69 – ResetTotalFlow Method Arguments
Argument Description
InitialThe value to initialize the TotalFlow to

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

Table 68 specifies the AddressSpace representation for the ResetTotalFlow Method.

Table 70 – ResetTotalFlow Method AddressSpace Definition
Attribute Value
BrowseNameResetTotalFlow
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS CIMV TotalFlow

6.10 MDISCounterObjectType

6.10.1 Introduction

The following section details the generic MDISCounterObjectType structure. This ObjectType can be used as part of any aggregate that requires a duration to be included, such as TotalRunTime. This is in general a vendor and operator independent description, but all users of the MDISCounterObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISCounterObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of the MDISCounterObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the instance of the MDISCounterObjectType are initiated by the Client and are directed to the Server.

6.10.2 Overview

The following section details the MDIS generic properties for the MDISCounterObjectType. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 20 provides an overview of the MDISCounterObjectType as defined by MDIS.

Figure 19 – MDISCounterObjectType

6.10.3 MDISCounterObjectType Definition

Table 71 defines the structure of an MDISCounterObjectType. Any vendor specified properties that have been implemented within a project should be documented with a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISCounterObjectType.

Table 71 – MDISCounterObjectType Definition
Attribute Value
BrowseNameMDISCounterObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentVariableCount0:Number0:BaseDataVariableType M, RO
0:HasComponentMethodSetCountSee 6.10.4O
ConformanceUnits
MDIS Counter Object
MDIS CIMV Base

How this value is calculated is server specific. The name of an instance of this ObjectType shall indicate what the object is, such as TotalMotorRuntime, for an example of how this Object is used see 6.9

6.10.4 SetCount Method

SetCount Method is used to Set the Count. This Count maybe any counter.

Signature:

	SetCount (
		[in] 0:Number Initial);
	
Table 72 – SetCount Method Arguments
Argument Description
InitialThe value to initialize the Object Count to, default is 0

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The SetCount Method command resets the value of the Count Variable. The Count Variable, may immediately start incrementing depending on how it is defined.

Table 73 specifies the AddressSpace representation for the SetCount Method.

Table 73 – SetCount AddressSpace Definition
Attribute Value
BrowseName SetCount
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Counter Object
MDIS CIMV Base

6.11 MDISMotorObjectType

6.11.1 Introduction

The following section details the generic MDISMotorObjectType structure and defines the properties associated with controlling a Motor. This is in general a vendor and operator independent description, but all users of the MDISMotorObjectType can add vendor specific data. The vendor specific data should be defined as part of a subtype of the MDISMotorObjectType defined in this document. It is assumed that the subsea system is the Server and host of the instance of the MDISMotorObjectType. The DCS based system is the Client in the system. It is assumed that all interactions with the instance of the MDISMotorObjectType are initiated by the Client and are directed to the Server.

6.11.2 Overview

The following section details the MDIS generic properties for the MDISMotorObjectType. Implementation shall ensure adherence to Mandatory [M] aspects in order to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 20 provides an overview of the MDISMotorObjectType as defined by MDIS, including some nested types. Figure 20 includes all of the items that are inherited from the MDISBaseObjectType.

Figure 20 – MDISMotorObjectType

6.11.3 MDISMotorObjectType Definition

Table 74 defines the structure of an MDISMotorObjectType. Any vendor specified properties that have been implemented within a project should be documented with a similar format and supplied to the DCS vendor. The addition of vendor specific properties will result in a subtype of the MDISMotorObjectType. When an MDISMotorObjectType Instance is disabled the MDISBaseObjectType defaults are followed - no additional values will be available.

Table 74 – MDISMotorObjectType
Attribute Value
BrowseNameMDISMotorObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the MDISBaseObjectType
0:HasComponentVariableRunning0:Boolean0:BaseDataVariableTypeM, RO
0:HasComponentVariableOperationMotorOperationEnum0:BaseDataVariableTypeM, RO
0:HasComponentVariableNonDefeatableStartInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableStartInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableNonDefeatableStopInterlock0:Boolean0:BaseDataVariableTypeO, RO
0:HasComponentVariableDefeatableStopInterlock0:Boolean0:BaseDataVariableTypeO, RO
HasInterlockVariable<InterlockPlaceholder>0:BooleanInterlockVariableTypeOP, RO
0:HasComponentMethodStartSee 6.11.4O
0:HasComponentMethodStopSee 6.11.5O
0:HasComponentMethodSetOperationSee 6.11.6O
ConformanceUnits
MDIS Motor Base

Running – Feedback from the motor if it is running (or not). If the motor is running it returns True.

Operation – There are three different operation modes: Auto, Manual and Off. In Auto operation the process sends the Start and Stop command automatically (not from an Operator). In Manual operation the Start and Stop process is executed by the operator manually (e.g. by using the Start and Stop methods). When the operation mode is set to Off, the motor may not be started either automatically or manually. If Manual Operation is supported, then the Start and Stop Methods shall be exposed.

NonDefeatableStartInterlock – The Start command is interlocked and cannot be overridden.

DefeatableStartInterlock – The Start command is interlocked and can be overridden.

NonDefeatableStopInterlock – The Stop command is interlocked and cannot be overridden.

DefeatableStopInterlock – The Stop command is interlocked and can be overridden.

<InterlockPlaceholder> – The number of interlock Variables will change based on the project and even Motor instance. The Variables shall be of InterlockVariableType or a subtype of it. They shall be referenced by a HasInterlock Reference and shall contain an InterlockFor Reference. Clients can use this information to categorise the interlocks appropriately.

The MDISMotorObjectType is a subtype of MDISBaseObjectType and inherit the FaultCode Variable. The MDISMotorObjectType defines the standard FaultCodes (for bits 0-15 as defined in 6.2.2) in Table 75 (currently empty, no additional warning codes defined). All subtypes of this the MDISMotorObjectType will inherit all FaultCodes defined in this table. Subtypes may define additional FaultCodes in their own table.

Table 75 – MDISMotorObjectType FaultCode Values
Value Bit no. Description

The MDISMotorObjectType defines the standard WarningCodes (for bits 0-15 as defined in 6.2.2) in Table 76 (currently empty, no additional warning codes defined). All subtypes of this the MDISMotorObjectType will inherit all WarningCodes defined in this table. Subtypes may define additional WarningCodes in their own table.

Table 76 – MDISMotorObjectType WarningCode Values
Value Bit no. Description

6.11.4 Motor Start Method

Start Method is used to start the Motor.

Signature:

	Start (
		 [in] 0:Boolean OverrideInterlocks);
Table 77 – Start Method Arguments
Argument Description
OverrideInterlocks Boolean indicating if the Start command should override any interlocks

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference. This method shall return Bad_InvalidState if it is invoked and the operation model is not Manual. If the motor is running this command is ignored.

Comments

The Start Method command tries to start the Motor.

Table 67 specifies the AddressSpace representation for the Start Method.

Table 78 – Start AddressSpace Definition
Attribute Value
BrowseName Start
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Motor Start/Stop

6.11.5 Motor Stop Method

Stop Method is used to stop the Motor.

Signature:

	Stop (
			[in] 0:Boolean OverrideInterlocks);
Table 79 – Stop Method Arguments
Argument Description
OverrideInterlocks Boolean indicating if the Stop command should override any interlocks

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference. This method shall return Bad_InvalidState if it is invoked and the operation model is not Manual. If the motor is not Running this command is ignored.

Comments

The Stop Method commands the Motor to stop.

Table 80 specifies the AddressSpace representation for the Stop Method.

Table 80 – Stop AddressSpace Definition
Attribute Value
BrowseName Stop
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Motor Start/Stop

6.11.6 Motor SetOperation Method

SetOperation Method is used to set the Operation of the Motor.

Signature:

	SetOperation (
		[in] MotorOperationEnum Mode);
Table 81 – SetOperation Method Arguments
Argument Description
ModeMode to operate in (i.e., Auto, Manual or Off)

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The SetOperation Method commands the Operation.

Table 82 specifies the AddressSpace representation for the SetOperation Method.

Table 82 – SetOperation AddressSpace Definition
Attribute Value
BrowseName SetOperation
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Motor Operation

6.12 MDISAggregateObjectType

6.12.1 Overview

The following tables detail the generic properties for the MDISAggregateObjectType; implementation shall ensure adherence to Mandatory [M] aspects to comply with the MDIS interface standardisation. Optional [O] may or may not be implemented within a project. Figure 21 provides an overview of the MDISAggregateObjectType as defined by MDIS. This Object is intended to be the base object for all aggregate ObjectTypes. See section 10.5 for additional details on data aggregation.

Figure 21 – MDISAggregateObjectType

6.12.2 MDISAggregateObjectType Definition

Table 83 defines the structure of an MDISAggregateObjectType. The MDISAggregateObjectType is a subtype of MDISBaseObjectType and requires that all subtypes include, as a minimum, the Fault information. All other components are Optional and only components that are required by the aggregate are needed.

Table 83 – MDISAggregateObjectType
Attribute Value
BrowseNameMDISAggregateObjectType
IsAbstractTrue
References Node Class BrowseName Data Type TypeDefinition Other
Subtype of the MDISBaseObjectType defined in section 6.1.1
0:HasComponentObject<InstrumentPlaceholder>MDISInstrumentObjectTypeOP
0:HasComponentObject<InstrumentOutPlaceholder>MDISInstrumentOutObjectTypeOP
0:HasComponentObject<InstrumentArbitrationPlaceholder>MDISInstrumentArbitrationObjectTypeOP
0:HasComponentObject<DigitalPlaceholder>MDISDigitalInstrumentObjectTypeOP
0:HasComponentObject<DigitalOutPlaceholder>MDISDigitalOutObjectTypeOP
0:HasComponentObject<DigitalArbitrationPlaceholder>MDISDigitalArbitrationObjectTypeOP
0:HasComponentObject<DiscretePlaceholder>MDISDiscreteInstrumentObjectTypeOP
0:HasComponentObject<DiscreteOutPlaceholder>MDISDiscreteOutObjectTypeOP
0:HasComponentObject<DiscreteArbitrationPlaceholder>MDISDiscreteArbitrationObjectTypeOP
0:HasComponentObject<ValvePlaceholder>MDISValveObjectTypeOP
0:HasComponentObject<ChokePlaceholder>MDISChokeObjectTypeOP
0:HasComponentObject<ElectricChokePlaceholder>MDISElectricChokeObjectTypeOP
0:HasComponentObject<MotorPlaceholder>MDISMotorObjectTypeOP
0:HasComponentObject<CIMVPlaceholder>MDISCIMVObjectTypeOP
0:HasComponentObject<CounterPlaceholder>MDISCounterObjectTypeOP
HasInterlockVariable<InterlockPlaceholder>InterlockVariableTypeOP
ConformanceUnits
MDIS Aggregate Object

The MDISAggregateObjectType is an abstract ObjectType; instances of this ObjectType cannot be created. Object instances can only be created of subtypes of this ObjectType. In OPC UA it is legal to add additional Object or Variable Reference(s) to an instance of an Object, (i.e., add Variable or Object to an instance that are not defined in the type), but in MDIS we are restricting this in that a Client is not required to process or handle any Objects or Variables that are not part of a type.

The subtypes of MDISAggregateObjectType are allowed to include other subtypes of MDISAggregateObjectType. For example, a Well that is defined as a subtype of MDISAggregateObjectType might include an MPFMAggregateObjectType which is also a subtype of MDISAggregateObjectType.

<InstrumentPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISInstrumentObjectType or a subtype of it.

<InstrumentOutPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISInstrumentOutObjectType or a subtype of it.

<InstrumentArbitrationPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISInstrumentArbitrationObjectType or a subtype of it.

<DigitalPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISDigitalInstrumentObjectType or a subtype of it.

<DigitalOutPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISDigitalOutObjectType or a subtype of it.

<DigitalArbitrationPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISDigitalArbitrationObjectType or a subtype of it.

<DiscretePlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISDiscreteInstrumentObjectType or a subtype of it.

<DiscreteOutPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISDiscreteOutObjectType or a subtype of it.

<DiscreteArbitrationPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISDiscreteArbitrationObjectType or a subtype of it.

<ValvePlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISValveObjectType or a subtype of it.

<ChokePlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISChokeObjectType or a subtype of it.

<ElectricChokePlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISElectricChokeObjectType or a subtype of it.

<MotorPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISMotorObjectType or a subtype of it.

<CIMVPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISCIMVObjectType or a subtype of it.

<CounterPlaceholder> denotes that a subtype of this ObjectType may define any number of Objects of this type as part of a subtype. Each object instance shall have a unique BrowseName and must be of MDISCounterObjectType or a subtype of it.

<InterlockPlaceholder> denotes that a subtype of this VariableType may define any number of Variables of this type as part of a subtype. Each Variable instance shall have a unique BrowseName and must be of InterlockVariableType or a subtype of it.

6.13 MDISTimeSyncObjectType

6.13.1 Introduction

In some systems, a MDIS Server might be on an isolated network, one in which there is no NTP or other source of time synchronization signals. In these systems, the MDIS Server would need to be able to obtain a minimum time synchronization signal from the Client. This ObjectType and associated method is designed to allow this minimum time synchronization. It should only be used if a better time synchronization system, such as NTP, is not available. The accuracy of this type of time synchronization could be in the range of seconds.

If this Object is supported, a single instance of this Object shall exist on a Server. The Object shall have a name TimeSynchronization and the instance shall exist as part of the MDISInformationObject.

6.13.2 Overview

The following section details the MDISTimeSyncObjectType. This optional type allows a Client to provide time synchronization information to a Server. The Client can call the SetTime Method periodically to ensure the Server time does not drift. This Method does not return until the time on the Server has been updated or an error is returned.

Figure 22 – MDISTimeSyncObjectType

6.13.3 MDISTimeSyncObjectType Definition

Table 84 defines the structure of an MDISTimeSyncObjectType.

The current time on the Server is available as part of the ServerStatus provided by all OPC UA Servers.

Table 84 – MDISTimeSyncObjectType
Attribute Value
BrowseNameMDISTimeSyncObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the BaseObjectType
0:HasComponentMethodSetTimeSetTime Method is defined in 6.13.4M
ConformanceUnits
MDIS Timesync Object

SetTime – This method allows a Client to set time on the Server.

6.13.4 SetTime Method

SetTime Method (defined in Table 85) is used to set the time on the Server. If an error occurs this Method shall return an error code indicating the failure to set the time (see Table 87).

Signature:

	SetTime (
		[in] 0:UtcTime TargetTime );
	
Table 85 – SetTime Method parameters
Argument Description
TargetTimeThe UTC Time that the Server shall use to update its internal clock.

Method result codes are defined as part of the Call Service (see OPC 10000-4). They are described in Table 124 for ease of reference.

Comments

The SetTime Method will change the time on the Server. Table 86 specifies the AddressSpace representation for the SetTime Method.

Table 86 – SetTime Method AddressSpace Definition
Attribute Value
BrowseNameSetTime
References Node Class BrowseName DataType TypeDefinition Other
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyTypeM
ConformanceUnits
MDIS Timesync Object
Table 87 – SetTime Result Codes
Symbolic Id Description
Bad_InvalidTimestampThe timestamp is outside the range allowed by the Server or an error occurred setting the Server time.

6.14 MDISInformationObjectType

6.14.1 Introduction

MDIS defines flags, general status information and other optional data collections that need to exist in a standard manner on MDIS Servers to allow for easier interoperation between Clients and Servers. This information is provided via the MDISInformationObjectType.

6.14.2 Overview

The following section details the MDISInformationObjectType. This ObjectType defines a standard structure for organization of some basic Server information. An instance of this object is required for all versions of MDIS Servers 1.2 and greater. An instance of this ObjectType shall exist under the Objects folder on all OPC UA MDIS Servers. Clients are required to be able to handle Servers which do not contain this object. The Client shall assume any Server that does not contain an instance of this ObjectType is a version 1.1 or 1.0 MDIS Server.

Figure 23 – MDISInformationObjectType

6.14.3 MDISInformationObjectType Definition

Table 88 defines the structure of an MDISInformationObjectType.

Table 88 – MDISInformationObjectType
Attribute Value
BrowseNameMDISInformationObjectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the BaseObjectType (see OPC 10000-5)
0:HasComponentObjectTimeSynchronizationMDISTimeSyncObjectTypeO
0:HasComponentObjectSignatures0:FolderTypeO
0:HasComponentVariableMDISVersionMDISVersionDataTypeMDISVersionVariableTypeM, RO
ConformanceUnits
MDIS Information version

TimeSynchronization – this is an instance of the MDISTimeSyncObjectType object, that allows a Client to provide time information to a Server if required. See 6.1.16 for additional details.

Signatures is a folder that contains all of the currently available signatures (profiles). The individual signature(s) are stored as FileObjects and the format of the file(s) is vendor specific.

MDISVersion provides information about the version of the MDIS specification that is implemented by the Server. This is provided to assist the Client in determining what should be available and can also be used for automated testing of the Server.

7 MDIS VariableTypes

7.1 InterlockVariableType Definition

This VariableType is a Boolean indicating if the interlock is active. The instance of a Variable of InterlockVariableType shall have a descriptive name (display name) and include a description. The description shall describe the type of interlock. On a project basis an optional summary that details active interlocks may be implemented to support understanding of the open / close interlock status within the Object. For a given instance of an Object, any number of referenced interlocks may exist, where each instance would represent a specific interlock. The number of interlocks is determined at configuration time of the Object and could be different for each Object in a given well. Each interlock variable shall contain an InterlockFor reference to at least one of the following:

NonDefeatableOpenInterlock,

DefeatableOpenInterlock,

NonDefeatableCloseInterlock,

DefeatableCloseInterlock.

A given instance of an InterlockVariableType might be referenced by more than one Object, but for all objects that reference a given instance of an InterlockVariableType there must be at least one InterlockFor reference.

Table 89 – InterlockVariableType
Attribute Value
BrowseNameInterlockVariableType
IsAbstractFalse
ValueRank-1 (-1 = Scalar)
DataTypeBoolean
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseDataVariableType defined in OPC 10000-5.
ConformanceUnits
MDIS Valve DefeatableCloseInterlock
MDIS Valve DefeatableOpenInterlock
MDIS Valve NonDefeatableCloseInterlock
MDIS Valve NonDefeatableOpenInterlock
MDIS Choke DefeatableCloseInterlock
MDIS Choke DefeatableOpenInterlock
MDIS Choke NonDefeatableCloseInterlock
MDIS Choke NonDefeatableOpenInterlock
MDIS Electric Choke DefeatableCloseInterlock
MDIS Electric Choke DefeatableOpenInterlock
MDIS Electric Choke NonDefeatableCloseInterlock
MDIS Electric Choke NonDefeatableOpenInterlock
MDIS CIMV NonDefeatableCloseInterlock
MDIS CIMV NonDefeatableOpenInterlock
MDIS CIMV NonDefeatableCommandInProgressInterlock
MDIS Motor DefeatableStartInterlock
MDIS Motor DefeatableStopInterlock
MDIS Motor NonDefeatableStartInterlock
MDIS Motor NonDefeatableStopInterlock

7.2 MDISVersionVariableType Definition

This VariableType defines a standard representation of the version information that is related the MDIS Specification.

Table 90 – MDISVersionVariableType
Attribute Value
BrowseNameMDISVersionVariableType
IsAbstractFalse
ValueRank-1 (-1 = Scalar)
DataTypeMDISVersionDataType
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseDataVariableType defined in OPC 10000-5.
0:HasPropertyVariableMajorVersion0:Byte0:PropertyTypeM, RO
0:HasPropertyVariableMinorVersion0:Byte0:PropertyTypeM, RO
0:HasPropertyVariableBuild0:Byte0:PropertyTypeM, RO
ConformanceUnits
MDIS Information version

MajorVersion number is the major version of the MDIS OPC UA companion specification. For example, for version 1.2 of the MDIS Specification this will be a 1.

MinorVersion number is the minor version of the MDIS OPC UA companion specification. For example, for version 1.2 of the MDIS Specification this will be a 2.

Build number is additional version information that can be associated with minor updates, patches that could be provided by the MDIS organization related to the MDIS Information model NodeSet file. Typically, this will be 0.

8 MDIS DataTypes

8.1 Enumerations

8.1.1 ChokeMoveEnum

Table 91 defines the valid states for the ChokeMoveEnum.

Table 91 – ChokeMoveEnum Items
Name Value Description
Moving1The choke is currently moving (in progress)
Stopped2The move has stopped

Its representation in the AddressSpace is defined in Table 94.

Table 92 – ChokeMoveEnum Definition
Attribute Value
BrowseNameChokeMoveEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits

8.1.2 ChokeCommandEnum

Table 93 defines the valid states for the ChokeCommandEnum.

Table 93 – ChokeCommandEnum Items
Name Value Description
Close1The command to the Choke is Close
Open2The command to the Choke is Open

Its representation in the AddressSpace is defined in Table 94.

Table 94 – ChokeCommandEnum Definition
Attribute Value
BrowseNameChokeCommandEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Choke Base

8.1.3 SetCalculatedPositionEnum

Table 93 defines the valid states for the SetCalculatedPositionEnum.

Table 95 – SetCalculatedPositionEnum Items
Name Value Description
Initial0no command (initial state)
Inprogress1command in progress
Complete2command completed
Fault4command fault

Its representation in the AddressSpace is defined in Table 96.

Table 96 – SetCalculatedPositionEnum Definition
Attribute Value
BrowseNameSetCalculatedPositionEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Choke Base

8.1.4 SignatureStatusEnum

Table 97 defines the valid states for the SignatureStatusEnum.

Table 97 – SignatureStatusEnum Items
Name Value Description
NotAvailable1The profile / signature is not available (in progress)
Completed2The profile / signature request has completed
Failed4The profile / signature request has failed

Retrieval of a signature is outside of the scope of this interface. A NotAvailable_1 indicates that the current profile / signature request is not available.

Its representation in the AddressSpace is defined in Table 98.

Table 98 – SignatureStatusEnum Definition
Attribute Value
BrowseNameSignatureStatusEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Valve SignatureRequestStatus

8.1.5 CommandEnum

Table 99 defines the valid states for the CommandEnum. This might not be the actual state of the valve, it is just the last command sent to the valve.

Table 99 – CommandEnum Items
Name Value Description
Close1The last command to the valve was Close
Open2The last command to the valve was Open
None4No known command has been sent to the valve. The initial setting on start-up of a server.

Its representation in the AddressSpace is defined in Table 100.

Table 100 – CommandEnum Definition
Attribute Value
BrowseNameCommandEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Valve Base

8.1.6 SEMEnum

Table 101 defines the valid states for the SEMEnum.

Table 101 – SEMEnum Items
Name Value Description
SEM_A1Valve move command selection SEM A
SEM_B2Valve move command selection SEM B
Auto4Subsea equipment vendor decides how to send the command. In some cases, this would be both SEMs, in others it would mean a subsea system’s choice of a SEM.

Its representation in the AddressSpace is defined in Table 102

Table 102 – SEMEnum Definition
Attribute Value
BrowseNameSEMEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Valve Base

8.1.7 ValvePositionEnum

Table 103 defines the valid states for the ValvePositionEnum.

Table 103 – ValvePositionEnum
Name Value Description
Closed1The Valve is Closed
Open2The Valve is Open
Moving4The Valve is Moving
Unknown8The Valve is in an unknown state. This value can be used when a subsea vendor does not have any last command information and does not know the state of the valve.

Its representation in the AddressSpace is defined in Table 104

Table 104 – ValvePositionEnum Definition
Attribute Value
BrowseNameValvePositionEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Valve Base

8.1.8 CIMVOperationModeEnum

Table 105 defines the valid states for the CIMVOperationModeEnum.

Table 105 – CIMVOperationModeEnum Items
Name Value Description
Position1The CIMV is in closed-loop Position control mode. Sending fix position
Flow2The CIMV is in closed-loop Flow control mode (auto regulate)
Manual4The CIMV is in open-loop Manual mode (compare it to step mode – i.e., move some increment relative to current). Note: some CIMV instance may not support this mode.

Its representation in the AddressSpace is defined in Table 106.

Table 106 – CIMVOperationModeEnum Definition
Attribute Value
BrowseNameCIMVOperationModeEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits

8.1.9 CIMVMoveEnum

Table 107 defines the valid states for the CIMVMoveEnum.

Table 107 – CIMVMoveEnum Items
Name Value Description
MoveClose1The CIMV is moving in the close direction
MoveOpen2The CIMV is moving in the open direction
Stop4The CIMV is not moving

Its representation in the AddressSpace is defined in Table 108.

Table 108 – CIMVMoveEnum Definition
Attribute Value
BrowseNameCIMVMoveEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS CIMV Base

8.1.10 ArbitrationModeEnum

Table 107 defines the valid states for the ArbitrationModeEnum.

Table 109 – ArbitrationModeEnum Items
Name Value Description
Average1Build the average of both values (if both available)
DefaultA2Select SourceA (if available), else SourceB
DefaultB4Select SourceB (if available), else SourceA
ForceA8Always select SourceA
ForceB16Always select SourceB
High32Highest Value (for digital this is an OR operation)
Low64Lowest Value (for digital this is an AND operation)

Its representation in the AddressSpace is defined in Table 110

Table 110 – ArbitrationModeEnum Definition
Attribute Value
BrowseNameArbitrationModeEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Instrument Arbitration Base

8.1.11 MotorStateEnum

Table 107 defines the valid states for the MotorStateEnum.

Table 111 – MotorStateEnum Items
Name Value Description
Active1The Motor is in active state
NonActive2The Motor is not in active state

Its representation in the AddressSpace is defined in Table 112.

Table 112 – MotorStateEnum Definition
Attribute Value
BrowseNameMotorStateEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Motor Base

8.1.12 MotorOperationEnum

Table 107 defines the valid states for the MotorOperationEnum.

Table 113 – MotorOperationEnum
Name Value Description
Off1The Motor cannot be started either automatically or manually
Auto2The Motor works automatically
Manual4The Motor is controlled manually

Its representation in the AddressSpace is defined in Table 114.

Table 114 – MotorOperationEnum Definition
Attribute Value
BrowseNameMotorOperationEnum
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumValues0:EnumValueType[]0:PropertyType
ConformanceUnits
MDIS Motor Base

8.2 Structures

8.2.1 MDISVersionDataType

The MDISVersionDataType provides a single structure that provides all of the version information for the Server. There is a corresponding variable structure that provides each of the elements.

This VariableType is defined in 7.2.

Table 115 – MDISVersionDataType Structure
Name Type Description
MDISVersionDataTypeStructureInformation that describes MDIS Specification version.

MajorVersion

0:ByteThe Major Version number from the specification

MinorVersion

0:ByteThe minor version number from the specification

Build

0:ByteThe BuildNumber associated – typically always 0

9 MDIS ReferenceTypes

9.1 HasInterlock ReferenceType

The HasInterlock ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HasComponent ReferenceType.

The semantic is a part-of relationship. Figure 17 provides an illustration of how this ReferenceType is used. Multiple SourceNodes can reference the same TargetNode and a SourceNode can reference multiple TargetNodes.

Like all other ReferenceTypes, this ReferenceType does not specify anything about the ownership of the parts, although it represents a part-of relationship semantic. That is, it is not specified if the TargetNode of a Reference of the HasInterlock ReferenceType is deleted when the SourceNode is deleted.

The TargetNode of this ReferenceType shall be the InterlockVariableType or a Variable of InterlockVariableType or a subtype of InterlockVariableType.

The SourceNode shall be an instance of MDISChokeObjectType, MDISValveObjectType, MDISElectricChokeObjectType, MDISCIMVObjectType, MDISMotorObjectType or a subtype one of these. It may also be of a subtype of MDISAggregateObjectType that is being used for aggregation or one of these ObjectTypes.

Table 116 – HasInterlock Reference
Attributes Value
BrowseNameHasInterlock
InverseNameInterlockOf
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of the 0:HasComponent ReferenceType defined in OPC 10000-5
ConformanceUnits
MDIS Choke Base
MDIS Electric Choke Base`
MDIS Valve Base
MDIS CIMV Base
MDIS Motor Base

9.2 InterlockFor

The InterlockFor ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences. The inverse reference shall also exist for all uses of this ReferenceType.

The semantic of this ReferenceType is to relate InterlockVariableType Nodes to the Variable Node that represents an interlock flag.

The SourceNode of this ReferenceType shall be an instance of InterlockVariableType.

The TargetNode of this ReferenceType shall be a Variable that is one of:

NonDefeatableOpenInterlock,

DefeatableOpenInterlock,

NonDefeatableCloseInterlock,

DefeatableCloseInterlock,

DefeatableStartInterlock,

DefeatableStopInterlock,

NonDefeatableStartInterlock,

NonDefeatableStopInterlock,

NonDefeatableCommandInProgressInterlock

The Variable shall be part of an:

MDISValveObjectType

MDISChokeObjectType

MDISElectricChokeObjectType

MDISMotorObjectType

MDISCIMVObjectType

MDISAggregateObjectType,

Or a subtype of one of these types or an instance of one of these types.

Table 117 – InterlockFor Reference
Attributes Value
BrowseNameInterlockFor
InverseNameHasInterlockInformation
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of the 0:NonHierarchicalReferences ReferenceType defined in OPC 10000-5
ConformanceUnits
MDIS Choke Base
MDIS Electric Choke Base`
MDIS Valve Base
MDIS CIMV Base
MDIS Motor Base

9.3 HasSignature ReferenceType

The HasSignature ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HasComponent ReferenceType.

The semantic is a part-of relationship. Figure 24 provides an illustration of how this ReferenceType is used. A TargetNode can be referenced by a single SourceNode and a SourceNode can reference multiple TargetNodes.

Like all other ReferenceTypes, this ReferenceType does not specify anything about the ownership of the parts, although it represents a part-of relationship semantic. That is, it is not specified if the TargetNode of a Reference of the HasSignature ReferenceType is deleted when the SourceNode is deleted.

The TargetNode of this ReferenceType shall be an instance of FileType. The FileType instance shall contain valve signature information.

The SourceNode shall be an instance of MDISValveObjectType or a subtype of MDISValveObjectType. It might also be a MDISChokeObjectType or any other MDIS ObjectType that might need to report a signature.

Table 118 – HasSignature Reference
Attributes Value
BrowseNameHasSignature
InverseNameSignatureOf
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of the 0:HasComponent ReferenceType defined in OPC 10000-5
ConformanceUnits
MDIS Valve Base

10 MDIS AddressSpace Information

10.1 Introduction

This section defines information related to Instance Objects, value handling, UANodeSet and customised Objects

10.2 Instance AddressSpace

An MDIS Server shall include an instance of the MDISInformationObjectType under the Objects folder.

Figure 24 – MDIS Instance illustration

Any other structure under in the MDIS Server is vendor or project specific. Figure 24 provides an illustration of one possible instance structure, it is not the only available structure. Several of the items are optional and might not appear. The valve signature objects illustrate that valves might include multiple signatures for a given valve, no signatures for a given valve and that the single folder might contain signature from multiple trees. The naming use is project / vendor specific but might have to handle all of these cases. Signatures might also exist for other objects such as chokes.

The MDISInformation node is formally defined in Table 119.

Table 119 – MDISInformation definition
Attribute Value
BrowseNameMDISInformation
References NodeClass BrowseName TypeDefinition
OrganizedBy by the Objects Folder defined in OPC 10000-5
HasTypeDefinitionObjectTypeMDISInformationObjectType
ConformanceUnits

10.3 Value reporting

Data overflow at the SPCS shall be detected by the Client. This shall be performed through the use of a queue size greater than 1 on subscriptions and monitoring of the overflow bit in all received values. If an overflow occurs the Client shall generate some notification, but the exact notification is Client vendor specific.

10.4 UANodeSet Development

In OPC UA an AddressSpace is separated into Namespaces, where each Namespace defines the owner of the address space contained in it. The MDIS Namespace shall not be modified in any manner, it is owned by MDIS. Any implementation (custom types / instances) shall be in a separate Namespace from the MDIS Namespace.

Any custom types or subtypes of the standard MDIS Types, as defined in Section 10.5.2 should be separated from instances via Namespaces. This enables custom types to be shared across DCS vendors and SPCS vendors during early phases of project development and allows the DCS vendors to begin implementation of the custom types within the DCS software. It also allows reuse of types between projects.

When UANodeSet files are passed from the SPCS vendors to the DCS vendors, the whole address space is to be exchanged (i.e. the exchanged UANodeSet files shall include the MDIS Namespace and any custom Namespaces). A Namespace can be in a single UANodeSet file and multiple files are provided or the entire address space can be in a single UANodeSet file. Having all Namespaces shall enable the DCS vendors to understand any forward References as forward References can create ambiguity within developed UANodeSet files.

The length of the namespace URLs used for defining Namespaces should be less than 128 characters. This is to enable smaller devices like controllers to be able to store Namespaces. NamespaceUri usually reference back to the company that is the owner of the Namespace.

The NodeIds should be integers. If using strings, the length of the NodeIds shall be less than 32 characters. This shall enable smaller devices like controllers to process NodeIds efficiently.

NodeIds shall be fixed. When a Server restarts NodeIds shall not be changed. NodeIds should not be reused on a project. Any change in NodeIds shall require Clients to reconfigure the connection based on new generated UANodeSet files. Once a Nodeset file is delivered to a DCS vendor from the SPCS vendor the NodeIds in the file are fixed. Future NodeSet files might add or delete nodes. But in any future Nodeset file shall not change the Nodeid of any Objects that have been delivered in the prior NodeSet file.

For custom types the instance hierarchy shall be represented via HasComponent (standard OPC UA Reference) or a custom ReferenceType that has been subtyped from HasComponent or Organizes References only.

10.5 Object Development

10.5.1 Introduction

This section provides guidance on creation of modified and composite objects for use in compliance with MDIS standards. Standard MDIS Objects defined in Section 6 shall be used wherever possible. In the event that standard Objects cannot represent a given subsea component or piece of equipment, a new Object shall be developed by collection, aggregation or extension of existing Objects. Use of collection, aggregation or extension to model subsea equipment is dependent on vendor implementations.

10.5.2 Object Collection, Aggregation and Extension Definition

Object collection shall be implemented using folders and should be used to group components or equipment that are physically grouped together in a common structure. Several examples of where object collection could be utilised would include modelling Subsea Electronics Modules, Electronic Power Units and Wells.

Object aggregation shall be implemented by creating a subtype of the MDISAggregateObjectType and should be used to group relevant objects to represent a complex piece of equipment that cannot be represented by a single MDIS Object. A specific example of where Object aggregation could be used would be modelling Multiphase Flow Meters (MPFMs). Aggregated Objects have specific rules, defined below, to allow Clients to be able to discover them and easily support them.

Object extension shall be implemented by creating a subtype of an existing MDIS Object and should be used when an existing MDIS Object, such as a valve Object, has additional information or functionality that needs to be represented. An example might be a vendor specific valve, that follows all of the rules associated with a MDISValveObjectType, but includes additional diagnostic information related to the vendor specific valve. Extension of Objects applies to models defined in section 6 and listed below:

MDISInstrumentObjectType

MDISInstrumentOutObjectType

MDISInstrumentArbitrationObjectType

MDISDigitalInstrumentObjectType

MDISDigitalOutObjectType

MDISDigitalArbitrationObjectType

MDISDiscreteInstrumentObjectType

MDISDiscreteOutObjectType

MDISDiscreteArbitrationObjectType

MDISValveObjectType

MDISChokeObjectType

MDISElectricChokeObjectType

MDISCIMVObjectType

MDISMotorObjectType

Subtyping MDISBaseObjectType and MDISCounterObjectType is not allowed.

Figure 25 illustrates an extension that adds a simple diagnostic variable.

Figure 25 – Extension Example

Rules for developing aggregated and extended objects are provided in Table 120. To minimise variability, when aggregating or extending objects only instances of the following VariableTypes and ObjectTypes shall be used:

Standard MDIS Objects defined in section 6.

BaseDataVariableType

DiscreteItemType (Variable)

AnalogItemType (Variable)

Table 120 – Aggregation and Extension Decision Matrix
Description Aggregation Extension
Require new NodeId on TypeDefinition levelYesYes
0) Define new ObjectType with any non-MDIS parent NoNo
1) Define new ObjectType with any MDIS parent (subtyping MDIS ObjectTypes - MDISValveObjectType, MDISChokeObjectType, MDISElectricChokeObjectType, MDISMotorObjectType, MDISCIMVObjectType, MDISDigitalInstrumentObjectType, MDISInstrumentObjectType, MDISDiscreteInstrumentObjectType or any subtype of these types)NoYes
2) Define new ObjectType with MDISAggregateObjectType as parent YesNo

The operations described in Table 121 are valid operations in a generic OPC UA Server, but for an MDIS Server they are restricted as described in the table. All changes shall be based on type changes. Instance specific changes are not allowed.

Table 121 – General rules that apply to existing MDIS types
Description Aggregation Extension
Add MDIS Object instance to an instance of an existing MDIS ObjectType (or subtype).NoNo
Add non-MDIS Object instance to existing MDIS ObjectType (or subtype).NoNo
Add non-MDIS Object instance to an instance of an existing MDIS ObjectType (or subtype).NoNo
Add Method to an existing MDIS ObjectType (or subtype).NoNo
Add a Variable instance to an instance of an existing MDIS ObjectType (or subtype).NoNo
Add a Variable instance to an existing MDIS ObjectType.NoNo
Base MDIS Object’s compliance to MDIS OPC UA specs shall be demonstrable (CTT).YesYes

When extending an existing ObjectType, the rules described in

Table 122 apply to the MDIS Objects defined in Section 6. These rules apply to MDISValveObjectType, MDISChokeObjectType, MDISElectricChokeObjectType, MDISMotorObjectType, MDISCIMVObjectType, MDISInstrumentObjectType, MDISDigitalInstrumentObjectType, MDISDiscreteInstrumentObjectType or any subtype of these types; they do not apply to the MDISBaseObjectType and the MDISAggregateObjectType. The MDISBaseObjectType cannot be extended or subtyped by a vendor or project. Only the MDIS working group can extend the MDISBaseObjectType or create new a subtype of it. The MDISAggregateObjectType has its own set of rules. Extending existing ObjectTypes are restricted to limit available additions to allow Clients to pick up the new types without requiring coding changes to the Client.

Table 122 – Rules for subtypes
Description Extension
Add a BaseDataVariableType instance to the newly create subtype of an MDIS ObjectType (MDISValveObjectType, MDISChokeObjectType, MDISElectricChokeObjectType, MDISCIMVObjectType, MDISMotorObjectType, MDISDigitalInstrumentObjectType, MDISDiscreteInstrumentObjectType, MDISInstrumentObjectType or any subtype of these types), with a DataType of one of the OPC BaseDataType excluding structure.Yes
Add an instance of an AnalogItemType to the newly created subtype of an MDIS ObjectType.Yes
Add an instance of a DiscreteItemType to the newly created subtype of an MDIS ObjectType.Yes
Change ModellingRule from Optional -> Mandatory for any of existing properties or components.Yes

Table 123 describes rules for creating an aggregate object. They only apply as described.

Clients are expected to be able to handle new aggregate Objects, even if the Client only lists them as separate MDIS Objects and Variables of which they are composed. Clients are not required to handle an extension Object’s additional Variables, but they are required to support instances of the extension object. Clients that are unable to handle the extension Object’s additional Variables shall treat the extension object as an instance of the parent standard MDIS ObjectType. It is expected that some projects will require supporting the additional Variables defined in an extension Object.

10.5.3 Object Creation

ObjectTypes that are not an aggregated, extended or collection ObjectType can only be defined by the MDIS organisation. If a vendor (or group of vendors) determines that an ObjectType might be a candidate for creation as a new ObjectType, the proposed ObjectType needs to be submitted to or proposed to the MDIS organisation. If the MDIS organisation determines that a new ObjectType is to be created, it will be incorporated into the MDIS OPC UA Companion Specification. These new Objects shall be reviewed and validated by the MDIS organisation members.

10.5.4 Object Aggregation Example

The following is an example for creating an aggregated model of a simple MPFM Object. A generic model of a MPFM could have the following items:

GasFlow (32 bit, float)

WaterFlow (32 bit, float)

OilFlow (32 bit, float)

The following figure illustrates the resulting TypeDefinition with example Object instances. It includes three instances of MDISInstrumentObjectType Objects that represent the flows. As can be seen in the example figure, a common type definition allows for multiple identical Object instances to be created.

Figure 26 – Aggregated ObjectType Definition

A vendor does not have to generate aggregate Objects; it can just provide a list of the base MDIS Objects that are being exposed. For example, a Well might not be configured as a subtype of MDISAggregateObjectType it might be a folder that contains the MDIS Objects that comprise the Well. If a structure is to be repeated, generating a subtype of the MDISAggregateObjectType for the structure can simplify testing and Client configuration work.

11 Time Synchronisation

MDIS expects system clocks to be time synchronised. NTP is the recommended method for time synchronisation; however use of alternate time synchronisation method is acceptable. For a system where NTP or other similar time synchronization is not available, the time on the Server can be set using the MDISTimeSyncObjectType defined in 6.1.16.

12 Redundancy

12.1 General

This section details requirements to standardise redundancy across the MDIS interface. SPCS and DCS should be connected using two segregated communication channels. Designation of the primary communication channel between the SPCS and DCS shall be controlled at the DCS. Automatic reconnection / recovery in the event of a failed communication channel shall be implemented. Failure of either channel shall generate an alarm at the DCS. Communication configurations other than what is defined here may be used. However, it should be specified elsewhere and should be agreed between all parties prior to implementation. Additional redundancy options including physical and logical configuration should be based on required project availability.

In general, redundant communication between the SPCS and DCS shall:

Facilitate active redundancy which enables a seamless transfer to a secondary controller in the event of a primary controller failure.

Prevent or minimise the loss of subsea production due to a single-component failure or common-mode failure.

The information model available in MDIS OPC UA servers is affected by data arbitration choices (see 5.3.2).

OPC Redundancy is described in the following section.

12.2 OPC UA Redundancy Overview

OPC UA redundancy provides a standard manner for OPC UA Clients to determine which OPC UA Servers are redundant and the status of the Servers. In OPC UA redundant system all redundant servers provide:

an identical information model,

an identical instance address space.

The structures, redundancy objects and redundancy behaviours are described in OPC 10000-4 and further defined in OPC 10000-5.

12.3 OPC UA MDIS Redundancy

The information model (list of Objects Variables…) between redundant Servers is always identical. In an MDIS system, the information (actual values) exposed in a redundant set of OPC UA servers may be identical in some cases. MDIS systems typically include arbitration which is described in Section 5.3.2. The arbitration process can result in Servers in which the Servers have an identical instance address space, but it can also result in Servers that do not have identical instance address space.

12.4 MDIS Minimum Requirements

In all MDIS redundant Servers, the standard Redundancy Objects as described in Part 4 and Part 5 shall be supported. In addition, depending on if the data is identical on the servers the following apply:

On Servers where all data is identical: The server pair shall support either TRANSPARENT_4 redundancy or HOT_3 redundancy or HOT_AND_MIRRORED_5 redundancy including all associated objects and behaviours as described in Part 4 and Part 5.

On Servers where not all data is identical: The Server redundancy type cannot be specified and redundancy support shall always identify as NONE_0.

In both cases the ServerArray in each Server in the redundant set shall list the URL’s for all other Servers in the redundant set.

13 Common Information

13.1 Status Codes

Table 124 defines the list of standard Method call error codes generated by a MDIS Server.

Table 124 – Method error codes
Result Code Description
Good_Completes_Ascynchronously See OPC 10000-4 for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_MethodInvalid See OPC 10000-4 for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplemented See OPC 10000-4 for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknown See OPC 10000-4 for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_ArgumentsMissing See OPC 10000-4 for the description of this result code (The Client did not specify all of the input arguments for the Method.)
Bad_TooManyArguments See OPC 10000-4 for the description of this result code (The Client specified more input arguments than defined for the Method.)
Bad_InvalidArgument See OPC 10000-4 for the description of this result code. (Used to indicate in the operation level results that one or more of the input arguments are invalid. The inputArgumentResults contain the specific status code for each invalid argument.)
Bad_TypeMismatch See OPC 10000-4 for the description of this result code. (Used to indicate that an input argument does not have the correct data type.)
Bad_OutOfRange See OPC 10000-4 for the description of this result code. (Used to indicate that an input argument is outside the acceptable range.)
Bad_Timeout See OPC 10000-4 for the description of this result code. (The operation timed out. – the Server did not respond to the command)
Bad_InvalidState See OPC 10000-4 for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_AccessDenied See OPC 10000-4 for the description of this result code. (The operation cannot be completed because the server does not allow the client to perform the operation)

14 Profiles and Conformance Units

14.1 Test requirements

All mandatory Profiles shall be certified and any optional Profiles that are supported should be certified by an OPC Foundation certification authority (see 2.4 for additional details).

14.2 ConformanceUnits

14.2.1 Overview

This section defines ConformanceUnits that are specific to the MDIS information model. These ConformanceUnits are separated into ConformanceUnits that are Server specific and those that are Client specific.

14.2.2 Server

Table 125 defines the Server based ConformanceUnits. These units are related to MDIS information models. Table 126 describes general functionality based ConformanceUnits.

Table 125 – MDIS Server Information Model ConformanceUnits
Category Title Description
ServerMDIS Base FaultSupport the Fault flag
ServerMDIS Base FaultCodeSupport FaultCodes
ServerMDIS Base WarningSupport the Warning flag
ServerMDIS Base WarningCodeSupport WarningCodes
ServerMDIS Base EnabledSupport the Enabled flag and the EnableDisable Method to toggle the flag.
ServerMDIS Base TagIdSupport the TagId Property.
ServerMDIS Base FunctionalitySupports all required Namespaces, queue sizes greater than 1, notification of queue overflows, NodeId and Namespace restrictions
Valve
ServerMDIS Valve BaseSupports the base required aspect of the MDISValveObjectType. This includes position information and the Move Method for basic functionality. The Move Method basic functionality includes Direction, OverrideInterlocks, SEM and ShutdownRequest.
ServerMDIS Valve SignatureRequestStatusSupports providing information about an existing signature/profile requests, including the request of a profile/signature via the Move command.
ServerMDIS Valve CommandRejectedSupports the CommandRejected
ServerMDIS Valve LastCommandSupports the LastCommand.
ServerMDIS Valve DefeatableCloseInterlockSupports information related to DefeatableCloseInterlock. This includes DefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Valve DefeatableOpenInterlockSupports information related to DefeatableOpenInterlock. This includes DefeatableOpenInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Valve NonDefeatableCloseInterlockSupports information related to NonDefeatableCloseInterlock. This includes NonDefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Valve NonDefeatableOpenInterlockSupports information related to NonDefeatableOpenInterlock. This includes NonDefeatableCloseInterlock flag and providing at least one InterlockFor reference to a variable of InterlockVariableType.
Server MDIS Valve DurationSupports the inclusion of OpenTimeDuration and CloseTimeDuration duration information for the valve.
Instrument
ServerMDIS Instrument Base Supports the base required aspect of the MDISInstrumentObjectType. This includes the ProcessVariable. The ProcessVariable includes EURange and EngineeringUnits
ServerMDIS Instrument Limits Supports at least one of the following limit flags: HHlimit, Hlimit, Llimit, LLlimit. The actual list of supported limits is reported as part of the ConformanceUnit.
ServerMDIS Instrument SetpointsSupports at least one of the following set points: HHSetPoint, HSetPoint, LSetPoint, LLSetPoint. The actual list of supported setpoints is reported as part of the ConformanceUnit.
Instrument Out
ServerMDIS Instrument Out BaseSupports the base required aspect of the MDISInstrumentOutObjectType. This includes the ProcessVariable of the Object and the WriteValue Method.
Instrument Arbitration
ServerMDIS Instrument Arbitration BaseSupports the required aspect of the MDISInstrumentArbitrationObjectType. This includes the SourceA, SourceB and the ArbitrationMode of the Object.
ServerMDIS Instrument Arbitration ModeSupports the optional SetArbitrationMode Method of the MDISInstrumentArbitrationObjectType.
ServerMDIS Instrument Arbitration DiscrepancySupports the optional DiscrepancySetPoint of the MDISInstrumentArbitrationObjectType.
Discrete Instrument
ServerMDIS Discrete Instrument BaseSupports the base required aspect of the MDISDiscreteInstrumentObjectType. This includes the State of the Object.
Discrete Instrument Out
Server MDIS Discrete Out BaseSupports the base required aspect of the MDISDiscreteOutObjectType. This includes the State of the Object and the WriteValue Method.
Discrete Arbitration Instrument
Server MDIS Discrete ArbitrationSupports the required aspect of the MDISDiscreteArbitrationObjectType. This includes the SourceA, SourceB and the ArbitrationMode of the Object
ServerMDIS Discrete Arbitration ModeSupports the SetArbitrationMode method in the MDISDiscreteArbitrationObjectType
Digital Instrument
ServerMDIS Digital Instrument BaseSupports the base required aspect of the MDISDigitalInstrumentObjectType. This includes the State of the Object.
Digital Instrument Out
ServerMDIS Digital Out BaseSupports the base required aspect of the MDISDigitalOutObjectType. This includes the State of the Object and the WriteState Method.
Digital Arbitration Instrument
Server MDIS Digital ArbitrationSupports the required aspect of the MDISDigitalArbitrationObjectType. This includes the SourceA, SourceBand the ArbitrationMode of the Object
ServerMDIS Digital Arbitration ModeSupports the SetArbitrationMode method in the MDISDigitalArbitrationObjectType
Choke
ServerMDIS Choke BaseSupports the base required aspect of the MDISChokeObjectType. This includes CalculatedPosition information, Moving flag, the Move Method (ChokeMove Method), Abort Method (ChokeAbort Method), The Move Method basic functionality includes Position, OverrideInterlocks and SEM. The SetCalculatedPosition Method basic functionality includes CalculatedPosition and if required the SetCalculatedPositionStatus
ServerMDIS Choke SetCalculatedPositionStatus Supports the optional variable SetCalculatedPositionStatus
Server MDIS Choke CommandRejectedSupports the CommandRejected.
ServerMDIS Choke DefeatableCloseInterlockSupports the optional aspect of the MDISChokeObjectType related to DefeatableCloseInterlock. This includes DefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Choke DefeatableOpenInterlockSupports the optional aspect of the MDISChokeObjectType related to DefeatableOpenInterlock. This includes DefeatableOpenInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Choke NonDefeatableCloseInterlockSupports the optional aspect of the MDISChokeObjectType related to NonDefeatableCloseInterlock. This includes NonDefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Choke NonDefeatableOpenInterlockSupports the optional aspect of the MDISChokeObjectType related to NonDefeatableOpenInterlock. This includes NonDefeatableOpenInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
Server MDIS Choke Step DurationSupports the inclusion of StepDurationOpen and StepDurationClose time information for the MDISChokeObjectType.
Server MDIS Choke Total StepsSupports the inclusion of the TotalSteps for the MDISChokeObjectType.
Server MDIS Choke Step MethodSupports the inclusion of the Step (ChokeStepMethod) and the PositionInSteps for the MDISChokeObjectType. The Step Method basic functionality includes Direction, Steps, OverrideInterlocks and SEM.
Electric Choke
ServerMDIS Electric Choke BaseSupports the base required aspect of the MDISElectricChokeObjectType. This includes ActualPosition information, Moving flag, the Move Method, Abort Method, The Move Method basic functionality includes Position, OverrideInterlocks and SEM.
Server MDIS Electric Choke CommandRejectedSupports the CommandRejected.
ServerMDIS Electric Choke DefeatableCloseInterlockSupports the optional aspect of the MDISElectricChokeObjectType related to DefeatableCloseInterlock. This includes DefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Electric Choke DefeatableOpenInterlockSupports the optional aspect of the MDISElectricChokeObjectType related to DefeatableOpenInterlock. This includes DefeatableOpenInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Electric Choke NonDefeatableCloseInterlockSupports the optional aspect of the MDISElectricChokeObjectType related to NonDefeatableCloseInterlock. This includes NonDefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Electric Choke NonDefeatableOpenInterlockSupports the optional aspect of the MDISElectricChokeObjectType related to NonDefeatableOpenInterlock. This includes NonDefeatableOpenInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
Motor
ServerMDIS Motor BaseSupports the base required aspect of the MDISMotorObjectType. This includes running flag.
ServerMDIS Motor SetOperationSupports the optional aspect of the MDISMotorObjectType related to Operation, this includes the SetOperation Method.
ServerMDIS Motor Start/StopSupports the optional Start and Stop Methods of the MDISMotorObjectType, this includes supporting Manual Operation.
ServerMDIS Motor DefeatableStartInterlockSupports the optional aspect of the MDISMotorObjectType related to DefeatableStartInterlock. This includes DefeatableStartInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Motor DefeatableStopInterlockSupports the optional aspect of the MDISMotorObjectType related to DefeatableStopInterlock. This includes DefeatableStopInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Motor NonDefeatableStartInterlockSupports the optional aspect of the MDISMotorObjectType related to NonDefeatableStartInterlock. This includes NonDefeatableStartInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS Motor NonDefeatableStopInterlockSupports the optional aspect of the MDISMotorObjectType related to NonDefeatableStopInterlock. This includes NonDefeatableStopInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
CIMV
ServerMDIS CIMV BaseSupports the OperationMode, FlowRate, TargetFlowRate, Position, TargetPosition and Moving variable, as well as the SetFlowRate, SetPosition and Stop methods.
ServerMDIS CIMV TotalFlowSupports the TotalFlow variable and the ResetTotalFlow method
ServerMDIS CIMV TotalMotorRuntimeSupports the TotalMotorRuntime counter, include all feature of the MDISCounterObjectType
ServerMDIS CIMV MotorOperationsCountSupports the MotorOperationsCount counter, include all feature of the MDISCounterObjectType
ServerMDIS CIMV DeviceCurrentSupports the DeviceCurrent variable
ServerMDIS CIMV InletPressureSupports the InletPressure variable
ServerMDIS CIMV InternalPressureSupports the InternalPressure variable
ServerMDIS CIMV OutletPressureSupports the OutletPressure variable
ServerMDIS CIMV CommandRejectedSupports the CommandRejected flag
ServerMDIS CIMV SetManualSupports the SetManual Method
ServerMDIS CIMV NonDefeatableCloseInterlockSupports the optional aspect of the MDISCIMVObjectType related to NonDefeatableCloseInterlock. This includes NonDefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS CIMV NonDefeatableOpenInterlockSupports the optional aspect of the MDISCIMVObjectType related to NonDefeatableOpenInterlock. This includes NonDefeatableOpenInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ServerMDIS CIMV NonDefeatableCommandInProgressInterlockSupports the optional aspect of the MDISCIMVObjectType related to NonDefeatableCommandInProgressInterlock. This includes providing at least one InterlockFor reference to a Variable of InterlockVariableType..
Counter
ServerMDIS Counter ObjectSupports the MDISCounterObjectType
ServerMDIS Counter SetCount methodSupports the SetCount method in the MDISCounterObjectType
TimeSync Object
ServerMDIS Timesync ObjectSupports the MDISTimeSyncObjectType Object, including allowing a client to set the server time.
Information
ServerMDIS Information version Supports version information for the MDIS Server
ServerMDIS Information SignaturesSupports providing Signatures as FileType Objects
ServerMDIS Information Signature ValidationSupports the JSON schema for the Signature file objects.
Performance
ServerMDIS Performance DatasheetThe server provides a datasheet that describes performance and the datasheet has been verified
Table 126 – MDIS Server Behaviour ConformanceUnits
Category Title Description
ServerMDIS Redundancy BaseSupports one of the optional redundancy behaviours
ServerMDIS Redundancy NoneSupports MDIS defined side by side redundancy. Server can provide side by side redundant data as specified including identical NodeIds or naming conventions as required.
ServerMDIS Redundancy HotSupports the OPC UA defined redundancy concept of “Hot”
ServerMDIS Redundancy HotPlusMirroredSupports the OPC UA defined redundancy concept of “HotPlusMirrored”
ServerMDIS Redundancy TransparentSupports the OPC UA defined redundancy concept of “Transparent”
Table 127 – MDIS Server Aggregate & Extension ConformanceUnits
Category Title Description
ServerMDIS Aggregate ObjectThe MDIS Server supports aggregate Objects based on MDISAggregateObjectType.
ServerMDIS ExtensionThe Server defines new ObjectTypes that are extensions of the existing MDIS ObjectTypes (MDISValveObjectType, MDISChokeObjectType, MDISDigitalInstrumentObjectType, MDISDiscreteInstrumentObjectType, MDISInstrumentObjectType or any subtype of these types).

14.2.3 Client

Table 128 defines the Client based ConformanceUnits. These units are related to MDIS InformationModels.

Table 129 describes general functionality based ConformanceUnits

Table 128 – MDIS Client Information Model ConformanceUnits
Category Title Description
ClientMDIS Client Base FaultThe Client actively monitors the value of the Fault flag and reports the value.
ClientMDIS Client Base FaultCodeThe Client displays or reports FaultCode.
ClientMDIS Client Base WarningThe Client makes use of and displays or reports the Warning flag.
ClientMDIS Client Base WarningCodeThe Client displays or reports WarningCode.
ClientMDIS Client Base EnabledThe Client makes use of and displays or reports the Enabled flag and the EnableDisable Method.
ClientMDIS Client Base TagIdThe Client can display or report the TagId Property.
Valve
ClientMDIS Valve Client BaseUses the base required aspect of the MDISValveObjectType. This includes position information and the Move Method for basic functionality. The Move Method basic functionality includes Direction, OverrideInterlocks, SEM and ShutdownRequest.
Client MDIS Valve Client CommandRejectedMakes use of CommandRejected.
ClientMDIS Valve Client SignatureRequestStatusMakes use of signature/profile information and asks for signature/profile via the Move command.
ClientMDIS Valve Client LastCommandMakes use of the LastCommand.
ClientMDIS Valve Client DefeatableCloseInterlockMakes use of information related to DefeatableCloseInterlock. This includes DefeatableCloseInterlock flag and examining the instance of InterlockVariableType referenced by the InterlockFor reference.
ClientMDIS Valve Client DefeatableOpenInterlockMakes use of information related to DefeatableOpenInterlock. This includes DefeatableOpenInterlock flag and examining the instance of InterlockVariableType reference by the InterlockFor reference.
ClientMDIS Valve Client NonDefeatableCloseInterlockMakes use of information related to NonDefeatableCloseInterlock. This includes NonDefeatableCloseInterlock flag and examining the instance of InterlockVariableType reference by the InterlockFor reference.
ClientMDIS Valve Client NonDefeatableOpenInterlockMakes use of information related to NonDefeatableOpenInterlock. This includes NonDefeatableOpenInterlock flag and examining the instance of InterlockVariableType reference by the InterlockFor reference.
ClientMDIS Valve Client DurationMakes use of the OpenTimeDuration and CloseTimeDuration duration information for the valve.
Instrument
ClientMDIS Instrument Client Base Makes use of the base required aspects of instance of the MDISInstrumentObjectType. This includes the ProcessVariable.
ClientMDIS Instrument Client Limits Makes use of at least one of the following limit flags: HHlimit, Hlimit, Llimit, LLlimit.
ClientMDIS Instrument Client SetpointsMakes use of at least one of the following set points: HHSetPoint, HSetPoint, LSetPoint, LLSetPoint.
Instrument Out
ClientMDIS Instrument Out Client BaseMakes use of the base required aspect of the MDISInstrumentOutObjectType. This includes the ProcessVariable of the Object and the WriteValue Method.
Instrument Arbitration
ClientMDIS Instrument Client Arbitration BaseMakes use of the base required aspect of the MDISInstrumentArbitrationObjectType. This includes the ProcessVariable, SourceA, SourceB and Mode of the Object and the SetArbitrationMode Method.
ClientMDIS Instrument Client Arbitration ModeMake use of the optional SetArbitrationMode Method of the MDISInstrumentArbitrationObjectType.
ClientMDIS Instrument Client Arbitration DiscrepancyMakes use of the optional DiscrepancySetPoint of the MDISInstrumentArbitrationObjectType.
Discrete
ClientMDIS Discrete Instrument Client BaseMakes use of the base required aspect of the MDISDiscreteInstrumentObjectType. This includes the State of the Object.
Discrete Out
ClientMDIS Discrete Out Client BaseMakes use of the base required aspect of the MDISDiscreteOutObjectType. This includes the State of the Object and the WriteValue Method.
Discrete Arbitration
ClientMDIS Discrete Client ArbitrationMakes use of the required aspect of the MDISDiscreteArbitrationObjectType. This includes the SourceA, SourceB, SetArbitrationMode and the ArbitrationMode of the Object
Digital
ClientMDIS Digital Instrument Client BaseMakes use of the base required aspect of the MDISDigitalInstrumentObjectType. This includes the State of the Object.
Digital Out
ClientMDIS Digital Out Client BaseMakes use of the base required aspect of the MDISDigitalOutObjectType. This includes the State of the Object and the WriteState Method.
Digital Arbitration
ClientMDIS Digital Client ArbitrationMakes use of the required aspect of the MDISDigitalArbitrationObjectType. This includes the SourceA, SourceB, SetArbitrationMode and the ArbitrationMode of the Object
Choke
ClientMDIS Choke Client BaseMakes use of the base required aspect of the MDISChokeObjectType. This includes CalculatedPosition information, Moving flag, the Move (ChokeMoveMethod), Abort (ChokeAbortMethod), SetCalculatedPosition (ChokeSetCalculatedPositionMethod). The Move Method basic functionality includes Position, OverrideInterlocks and SEM, The SetCalculatedPosition Method basic functionality includes CalculatedPosition and if required the SetCalculatePositionStatus.
Client MDIS Choke Client CommandRejectedMakes use of CommandRejected.
ClientMDIS Choke Client DefeatableCloseInterlockMakes use of information related to DefeatableCloseInterlock. This includes DefeatableCloseInterlock flag and examining the instance of InterlockVariableType referenced by the InterlockFor reference.
ClientMDIS Choke Client DefeatableOpenInterlockMakes use of information related to DefeatableOpenInterlock. This includes DefeatableOpenInterlock flag and examining the instance of InterlockVariableType referenced by the InterlockFor reference.
ClientMDIS Choke Client NonDefeatableCloseInterlockMakes use of information related to NonDefeatableCloseInterlock. This includes NonDefeatableCloseInterlock flag and examining the instance of InterlockVariableType referenced by the InterlockFor reference.
ClientMDIS Choke Client NonDefeatableOpenInterlockMakes use of information related to NonDefeatableOpenInterlock. This includes NonDefeatableOpenInterlock flags and examining the instance of InterlockVariableType referenced by the InterlockFor reference.
ClientMDIS Choke Client Step durationMakes use of the StepDurationOpen and StepDurationClose time information for the MDISChokeObjectType.
ClientMDIS Choke Client Total StepsMakes use of the TotalSteps for the MDISChokeObjectType.
ClientMDIS Choke Client Step methodMakes use of the Step (ChokeStep Method) and the PositionInSteps for the Choke. The Step Method basic functionality includes Direction, Steps, OverrideInterlocks and SEM.
Electric Choke
ClientMDIS Electric Choke Client BaseMakes use of the base required aspect of the MDISElectricChokeObjectType. This includes ActualPosition information, Moving flag, the Move Method, Abort Method, The Move Method basic functionality includes Position, OverrideInterlocks and SEM.
Client MDIS Electric Choke Client CommandRejectedMakes use of CommandRejected.
ClientMDIS Electric Choke Client DefeatableCloseInterlockMakes use of the optional aspect of the MDISElectricChokeObjectType related to DefeatableCloseInterlock. This includes examining the instance of DefeatableCloseInterlock referenced by InterlockFor ReferenceType
ClientMDIS Electric Choke Client DefeatableOpenInterlockMakes use of the optional aspect of the MDISElectricChokeObjectType related to DefeatableOpenInterlock. This includes examining the instance of DefeatableOpenInterlock referenced by InterlockFor ReferenceType.
ClientMDIS Electric Choke Client NonDefeatableCloseInterlockMakes use of the optional aspect of the MDISElectricChokeObjectType related to NonDefeatableCloseInterlock. This includes examining the instance of NonDefeatableCloseInterlock referenced by InterlockFor ReferenceType.
ClientMDIS Electric Choke Client NonDefeatableOpenInterlockMakes use of the optional aspect of the MDISElectricChokeObjectType related to NonDefeatableOpenInterlock. This includes examining the instance of NonDefeatableOpenInterlock referenced by InterlockFor ReferenceType.
Motor
ClientMDIS Motor Client BaseMakes use of the base required aspect of the MDISMotorObjectType. This includes running flag.
ClientMDIS Motor Client SetOperationMakes use of the optional aspect of the MDISMotorObjectType related to Operation, including the SetOperation Method.
Client MDIS Motor Client Start/StopMakes use of the Start / Stop Method aspects of the MDISMotorObjectType
ClientMDIS Motor Client DefeatableStartInterlockMakes use of the optional aspect of the MDISMotorObjectType related to DefeatableStartInterlock. This includes DefeatableStartInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ClientMDIS Motor Client DefeatableStopInterlockMakes use of the optional aspect of the MDISMotorObjectType related to DefeatableStopInterlock. This includes DefeatableStopInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ClientMDIS Motor Client NonDefeatableStartInterlockMakes use of the optional aspect of the MDISMotorObjectType related to NonDefeatableStartInterlock. This includes NonDefeatableStartInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ClientMDIS Motor Client NonDefeatableStopInterlockMakes use of the optional aspect of the MDISMotorObjectType related to NonDefeatableStopInterlock. This includes NonDefeatableStopInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
CIMV
ClientMDIS CIMV Client BaseMakes use of the OperationMode, FlowRate, TargetFlowRate, Position, TargetPosition and Moving variable, as well as the SetFlowRate, SetPosition and Stop methods.
ClientMDIS CIMV Client TotalFlowMakes use of the TotalFlow variable and the ResetTotalFlow method
ClientMDIS CIMV Client TotalMotorRuntimeMakes use of the TotalMotorRuntime counter, include all feature of the MDISCounterObjectType
ClientMDIS CIMV Client MotorOperationsCountMakes use of the MotorOperationsCount counter, include all feature of the MDISCounterObjectType
ClientMDIS CIMV Client DeviceCurrentMakes use of the DeviceCurrent variable
ClientMDIS CIMV Client InletPressureMakes use of the InletPressure variable
ClientMDIS CIMV Client InternalPressureMakes use of the InternalPressure variable
ClientMDIS CIMV Client OutletPressureMakes use of the OutletPressure variable
ClientMDIS CIMV Client CommandRejectedMakes use of the CommandRejected flag
ClientMDIS CIMV Client SetManualMakes use of the SetManual Method
ClientMDIS CIMV Client NonDefeatableCloseInterlockMakes use of the optional aspect of the MDISCIMVObjectType related to NonDefeatableCloseInterlock. This includes NonDefeatableCloseInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ClientMDIS CIMV Client NonDefeatableOpenInterlockMakes use of the optional aspect of the MDISCIMVObjectType related to NonDefeatableOpenInterlock. This includes NonDefeatableOpenInterlock flag and providing at least one InterlockFor reference to a Variable of InterlockVariableType.
ClientMDIS CIMV Client NonDefeatableCommandInProgressInterlockMakes use of the optional aspect of the MDISCIMVObjectType related to NonDefeatableCommandInProgressInterlock. This includes providing at least one InterlockFor reference to a Variable of InterlockVariableType.
Counter
ClientMDIS Counter Client ObjectMakes use of the MDISCounterObjectType
ClientMDIS Counter Client SetCount methodMakes use of the SetCount method in the MDISCounterObjectType
TimeSync Object
ClientMDIS TimeSync ClientCan be configured to call the SetTime method on the MDISTimeSyncObjectType Object at a periodic rate, providing time synchronization to the server
Information
Client MDIS Signature ClientThe Client can access the instance of FileType objects to obtain signatures
ClientMDIS Information ClientThe Client makes use of the version information to identify supported functionality of the server, including handling server that are of different versions.
ClientMDIS Information Client Signature ValidationThe Client makes use of the JSON schema for the validation of Signature file objects.
Performance
ClientMDIS Performance Client DatasheetThe client provides a datasheet that describes performance and the datasheet has been verified
Table 129 – MDIS Client Behaviour ConformanceUnits
Category Title Description
ClientMDIS Client RedundancyCan communicate with a MDIS Server that transmits data redundantly. Selecting appropriate channel, handling Server failovers and generally supporting all specified actions.
Table 130 – MDIS Client Aggregation & Extension ConformanceUnits
Category Title Description
ClientMDIS Client Aggregate The Client can process and / or display information from an instance of an MDISAggregateObjectType subtype on a Server.
ClientMDIS Client Extension The Client can process and / or display information from an instance of Extension types defined by the Server. This includes extension to all of the existing type and subtypes of them.
ClientMDIS Client Extension ExtraThe Client can process and / or display information from the extended fields in an Extension Object defined in a Server, without programming changes, i.e. only requiring configuration changes

14.3 Profiles

14.3.1 Profile list

The section describes the various Facets that are provided as part of the MDIS OPC UA InformationModel. These Facets include MDIS InformationModel ConformanceUnits, but they also include ConformanceUnits or Facets from the OPC 10000-7 specification. They are summarised in Table 131

Table 131 – MDIS Profiles and Facets
Profile URI
MDIS Base Functionality Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/BaseFunctionServer
MDIS Valve Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/ValveModel
MDIS Instrument Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/InstrumentModel
MDIS Instrument Out Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/InstrumentOutModel
MDIS Instrument Arbitration Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/InstrumentArbitrationModel
MDIS Choke Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/ChokeModel
MDIS Electric Choke Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/ElectricChokeModel
MDIS Discrete Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/DiscreteModel
MDIS Discrete Out Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/DiscreteOutModel
MDIS Discrete Arbitration Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/DiscreteArbitrationModel
MDIS Digital Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/DigitalModel
MDIS Digital Out Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/DigitalOutModel
MDIS Digital Arbitration Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/DigitalArbitrationModel
MDIS Motor Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/MotorModel
MDIS CIMV Model Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/CIMVModel
MDIS Redundancy Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/Redundancy
MDIS Aggregate Object Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/AggregateObject
MDIS Extension Object Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/ExtensionObject
MDIS Signature Transfer Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/SignatureTransfer
MDIS TimeSync Object Server Facet http://opcfoundation.org/UA-Profile/Server/MDIS/TimeSyncObject
MDIS Base Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Base
MDIS Valve Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Valve
MDIS Instrument Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Instrument
MDIS Instrument Out Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/InstrumentOut
MDIS Instrument Arbitration Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/InstrumentArbitration
MDIS Choke Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Choke
MDIS Electric Choke Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/ElectricChoke
MDIS Discrete Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Discrete
MDIS Discrete Out Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/DiscreteOut
MDIS Discrete Arbitration Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/DiscreteArbitration
MDIS Digital Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Digital
MDIS Digital Out Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/DigitalOut
MDIS Digital Arbitration Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/DigitalArbitration
MDIS Motor Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Motor
MDIS CIMV Model Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/CIMV
MDIS Redundancy Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/Redundancy
MDIS Aggregate Object Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/AggregateObject
MDIS Extension Object Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/ExtensionObject
MDIS Extension Extra Object Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/ExtensionExtra
MDIS Signature Transfer Client Facethttp://opcfoundation.org/UA-Profile/Client/MDIS/SignatureTransfer
MDIS TimeSync Object Client Facet http://opcfoundation.org/UA-Profile/Client/MDIS/TimeSyncObject
MDIS Solution Client 1.3 Profile http://opcfoundation.org/UA-Profile/Client/MDIS/Solution1.3
MDIS Solution Server 1.3 Profile http://opcfoundation.org/UA-Profile/Server/MDIS/Solution1.3

14.3.2 Server Facets

14.3.2.1 MDIS Base Functionality Server Facet

Table 132 defines a Facet that describes the base characteristics that all OPC UA Servers shall support, if they support the MDIS companion specification.

Table 132 – MDIS Base Functionality Server Facet
Group Conformance Unit / Profile Title Optional
ProfileStandard DataChange Subscription Server Facet
ProfileCore Server Facet
ProfileUA-TCP UA-SC UA Binary
ProfileData Access Server Facet
Monitored Item ServicesMonitor MinQueueSize_05False
ProfileMethod Server Facet
ProfileSecurity Time Synchronization
MDIS BaseMDIS Base FunctionalityFalse
MDIS BaseMDIS Information Version True

This Profile includes a number of Profiles and ConformanceUnits.

14.3.2.2 MDIS Valve Model Server Facet

Table 133 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISValveObjectType model.

Table 133 – MDIS Valve Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS ValveMDIS Valve BaseFalse
MDIS ValveMDIS Valve CommandRejectedTrue
MDIS ValveMDIS Valve SignatureRequestStatusTrue
MDIS ValveMDIS Valve LastCommandTrue
MDIS ValveMDIS Valve DefeatableCloseInterlockTrue
MDIS ValveMDIS Valve DefeatableOpenInterlockTrue
MDIS ValveMDIS Valve NonDefeatableCloseInterlockTrue
MDIS ValveMDIS Valve NonDefeatableOpenInterlockTrue
MDIS ValveMDIS Valve DurationTrue
MDIS BaseMDIS Information SignaturesTrue
14.3.2.3 MDIS Instrument Model Server Facet

Table 134 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISInstrumentObjectType model.

Table 134 – MDIS Instrument Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Instrument BaseFalse
MDIS InstrumentMDIS Instrument LimitsTrue
MDIS InstrumentMDIS Instrument SetpointsTrue
14.3.2.4 MDIS Instrument Out Model Server Facet

Table 135 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISInstrumentOutObjectType model.

Table 135 – MDIS Instrument Out Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Instrument Out BaseFalse
MDIS InstrumentMDIS Instrument LimitsTrue
MDIS InstrumentMDIS Instrument Set pointsTrue
14.3.2.5 MDIS Instrument Arbitration Model Server Facet

Table 135 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISInstrumentArbitrationObjectType model.

Table 136 – MDIS Instrument Arbitration Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Instrument Arbitration BaseFalse
MDIS InstrumentMDIS Instrument Arbitration ModeTrue
MDIS InstrumentMDIS Instrument Arbitration DiscrepancyTrue
MDIS InstrumentMDIS Instrument LimitsTrue
MDIS InstrumentMDIS Instrument Set pointsTrue
14.3.2.6 MDIS Discrete Model Server Facet

Table 137 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISDiscreteInstrumentObjectType model.

Table 137 – MDIS Discrete Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Discrete Instrument BaseFalse
14.3.2.7 MDIS Discrete Out Model Server Facet

Table 138 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISDiscreteOutObjectType model.

Table 138 – MDIS Discrete Out Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Discrete Out BaseFalse
14.3.2.8 MDIS Discrete Arbitration Model Server Facet

Table 138 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISDiscreteArbitrationObjectType model.

Table 139 – MDIS Discrete Arbitration Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Discrete Arbitration BaseFalse
MDIS InstrumentMDIS Discrete Arbitration ModeTrue
14.3.2.9 MDIS Digital Model Server Facet

Table 140 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISDigitalInstrumentObjectType.

Table 140 – MDIS Digital Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Digital Instrument BaseFalse
MDIS InstrumentMDIS Digital Arbitration ModeTrue
14.3.2.10 MDIS Digital Out Model Server Facet

Table 141 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISDigitalOutObjectType.

Table 141 – MDIS Digital Out Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Digital Out BaseFalse
14.3.2.11 MDIS Digital Arbitration Model Server Facet

Table 141 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISDigitalArbitrationObjectType.

Table 142 – MDIS Digital Arbitration Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS InstrumentMDIS Digital Arbitration BaseFalse
14.3.2.12 MDIS Choke Model Server Facet

Table 143 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISChokeObjectType.

Table 143 – MDIS Choke Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS ChokeMDIS Choke BaseFalse
MDIS ChokeMDIS Choke DefeatableCloseInterlockTrue
MDIS ChokeMDIS Choke DefeatableOpenInterlockTrue
MDIS ChokeMDIS Choke NonDefeatableCloseInterlockTrue
MDIS ChokeMDIS Choke NonDefeatableOpenInterlockTrue
MDIS ChokeMDIS Choke Step DurationTrue
MDIS ChokeMDIS Choke Total StepsTrue
MDIS ChokeMDIS Choke Step methodTrue
MDIS ChokeMDIS Choke CommandRejectedTrue
MDIS ChokeMDIS Choke SetCalculatedPositionStatusTrue
14.3.2.13 MDIS Electric Choke Model Server Facet

Table 143 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISElectricChokeObjectType.

Table 144 – MDIS Electric Choke Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS Electric ChokeMDIS Electric Choke BaseFalse
MDIS Electric ChokeMDIS Electric Choke DefeatableCloseInterlockTrue
MDIS Electric ChokeMDIS Electric Choke DefeatableOpenInterlockTrue
MDIS Electric ChokeMDIS Electric Choke NonDefeatableCloseInterlockTrue
MDIS Electric ChokeMDIS Electric Choke NonDefeatableOpenInterlockTrue
MDIS Electric ChokeMDIS Electric Choke CommandRejectedTrue
14.3.2.14 MDIS Motor Model Server Facet

Table 143 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISMotorObjectType.

Table 145 – MDIS Motor Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS MotorMDIS Motor BaseFalse
MDIS MotorMDIS Motor DefeatableStartInterlockTrue
MDIS MotorMDIS Motor DefeatableStopInterlockTrue
MDIS MotorMDIS Motor NonDefeatableStartInterlockTrue
MDIS MotorMDIS Motor NonDefeatableStopInterlockTrue
MDIS MotorMDIS Motor OperationTrue
MDIS MotorMDIS Motor Start/StopTrue
14.3.2.15 MDIS CIMV Model Server Facet

Table 143 defines a Facet that describes the base characteristics for an OPC UA Server that is exposing the MDISCIMVObjectType.

Table 146 – MDIS CIMV Model Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Base FaultFalse
MDIS BaseMDIS Base FaultCodeTrue
MDIS BaseMDIS Base WarningTrue
MDIS BaseMDIS Base WarningCodeTrue
MDIS BaseMDIS Base EnabledTrue
MDIS BaseMDIS Base TagIdTrue
MDIS CIMVMDIS CIMV BaseFalse
MDIS CIMVMDIS CIMV NonDefeatableCommandInProgressInterlockTrue
MDIS CIMVMDIS CIMV NonDefeatableCloseInterlockTrue
MDIS CIMVMDIS CIMV NonDefeatableOpenInterlockTrue
MDIS CIMVMDIS CIMV CommandRejectedTrue
MDIS CIMVMDIS CIMV TotalFlowTrue
MDIS CIMVMDIS CIMV TotalMotorRuntimeTrue
MDIS CIMVMDIS CIMV MotorOperationsCountTrue
MDIS CIMVMDIS CIMV DeviceCurrentTrue
MDIS CIMVMDIS CIMV InletPressureTrue
MDIS CIMVMDIS CIMV InternalPressureTrue
MDIS CIMVMDIS CIMV OutletPressureTrue
MDIS CIMVMDIS CIMV SetOperationModeTrue
MDIS CIMVMDIS CIMV SetManualTrue
MDIS CounterMDIS Counter ObjectTrue
MDIS CounterMDIS Counter SetCount methodTrue
14.3.2.16 MDIS Redundancy Server Facet

Table 147 defines a Facet that describes Redundancy functionality that a Server would support. The Server must support at least one of the optional conformance units

Table 147 – MDIS Redundancy Server Facet
Group Conformance Unit / Profile Title Optional
MDIS RedundancyMDIS Redundancy BaseFalse
MDIS RedundancyMDIS Redundancy NoneTrue
MDIS RedundancyMDIS Redundancy HotTrue
MDIS RedundancyMDIS Redundancy HotPlusMirroredTrue
MDIS RedundancyMDIS Redundancy TransparentTrue
14.3.2.17 MDIS Aggregate Object Server Facet

Table 148 defines a Facet that describes Aggregate functionality based on MDISAggregateObjectType that a Server would support.

Table 148 – MDIS Aggregate Object Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Aggregate ObjectFalse
14.3.2.18 MDIS Extension Object Server Facet

Table 149 defines a Facet that describes Object extension functionality that a Server would support.

Table 149 – MDIS Extension Object Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS ExtensionFalse
14.3.2.19 MDIS Signature Transfer Server Facet

Table 150 defines a Facet that describes Signature transfer functionality that a Server would support.

Table 150 – MDIS Signature Transfer Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Information Signatures False
MDIS BaseMDIS Information Signature ValidationFalse
ProfileFile Access Server Facet
14.3.2.20 MDIS TimeSync Object Server Facet

Table 151 defines a Facet that describes TimeSync Object extension functionality that a Server would support.

Table 151 – MDIS TimeSync Object Server Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Timesync Object False

14.3.3 Client Facets

14.3.3.1 MDIS Base Client Facet

Table 152 defines a Facet that describes the base characteristics for all OPC UA Clients that make use of this companion specification. Additional Profiles will define support for various object models that are part of this specification.

Table 152 – MDIS Base Client Facet
Group Conformance Unit / Profile Title Optional
ProfileDataAccess Client Facet
ProfileMethod Client Facet
ProfileUA-TCP UA-SC UA Binary
ProfileSecurity Time Synchronisation
Address Space ModelAddress Space Client BaseFalse
Address Space ModelAddress Space Client Dictionary EntriesTrue
Address Space ModelAddress Space Client AtomicityTrue
Address Space ModelAddress Space Client Complex Data DictionaryTrue
Address Space ModelAddress Space Client DataTypeDefinition AttributeTrue
Address Space ModelAddress Space Client Full Array OnlyTrue
Base InformationBase Info Client BasicFalse
Base InformationBase Data Client ResendData MethodTrue
Base InformationBase Info Client GetMonitoredItems MethodTrue
View ServicesView Client Basic BrowseTrue
View ServicesView Client Basic ResultSet FilteringTrue
View ServicesView Client RegisterNodesTrue
View ServicesView Client Remote Nodes BrowseTrue
View ServicesView Client Remote Nodes Translate BrowseTrue
View ServicesView Client TranslateBrowsePathTrue
Attribute ServicesAttribute Client Read BaseFalse
Attribute ServicesAttribute Client Read by IndexTrue
Attribute ServicesAttribute Client Remote Nodes Attribute AccessTrue
Subscription ServicesSubscription Client BasicFalse
Subscription ServicesSubscription Client RepublishFalse
Subscription ServicesSubscription Client ModifyTrue
Subscription ServicesSubscription Client MultipleTrue
Monitored Item ServicesMonitor Client Value ChangeFalse
Monitored Item ServicesMonitor Client by IndexTrue
Monitored Item ServicesMonitor Client AbsoluteDeadband FilterTrue
Monitored Item ServicesMonitor Client Complex ValueTrue
Monitored Item ServicesMonitor Client ModifyTrue
Monitored Item ServicesMonitor Client PercentDeadband FilterTrue
Monitored Item ServicesMonitor Client TriggerTrue
Session ServicesSession Client BaseFalse
Session ServicesSession Client Renew NodeIdsFalse
Session ServicesSession Client KeepAliveFalse
Session ServicesSession Client Detect ShutdownFalse
Session ServicesSession Client Auto ReconnectTrue
Session ServicesSession Client CancelTrue
Session ServicesSession Client ImpersonateTrue
MDIS BaseMDIS Information ClientFalse
14.3.3.2 MDIS Valve Model Client Facet

Table 153 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISValveObjectType model.

Table 153 – MDIS Valve Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS ValveMDIS Valve Client BaseFalse
MDIS ValveMDIS Valve Client SignatureRequestStatusTrue
MDIS ValveMDIS Valve Client LastCommandTrue
MDIS ValveMDIS Valve Client DefeatableCloseInterlockTrue
MDIS ValveMDIS Valve Client DefeatableOpenInterlockTrue
MDIS ValveMDIS Valve Client NonDefeatableCloseInterlockTrue
MDIS ValveMDIS Valve Client NonDefeatableOpenInterlockTrue
MDIS ValveMDIS Valve Client DurationTrue
MDIS ValveMDIS Valve Client CommandRejectedTrue
14.3.3.3 MDIS Instrument Model Client Facet

Table 154 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISInstrumentObjectType model.

Table 154 – MDIS Instrument Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCode True
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Instrument Client Base False
MDIS InstrumentMDIS Instrument Client Limits True
MDIS InstrumentMDIS Instrument Client SetpointsTrue
14.3.3.4 MDIS Instrument Out Model Client Facet

Table 155 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISInstrumentOutObjectType model.

Table 155 – MDIS Instrument Out Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Instrument Client BaseFalse
MDIS InstrumentMDIS Instrument Client Limits True
MDIS InstrumentMDIS Instrument Client SetpointsTrue
MDIS InstrumentMDIS Instrument Out Client BaseFalse
14.3.3.5 MDIS Instrument Arbitration Model Client Facet

Table 155 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISInstrumentArbitrationObjectType model.

Table 156 – MDIS Instrument Arbitration Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Instrument Client BaseFalse
MDIS InstrumentMDIS Instrument Client Limits True
MDIS InstrumentMDIS Instrument Client SetpointsTrue
MDIS InstrumentMDIS Instrument Arbitration Client BaseFalse
14.3.3.6 MDIS Discrete Model Client Facet

Table 157 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISDiscreteInstrumentObjectType model.

Table 157 – MDIS Discrete Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaselMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Discrete Client Base False
14.3.3.7 MDIS Discrete Out Model Client Facet

Table 158 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISDiscreteOutObjectType.

Table 158 – MDIS Discrete Out Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Discrete Client BaseFalse
MDIS InstrumentMDIS Discrete Out Client BaseFalse
14.3.3.8 MDIS Discrete Arbitration Model Client Facet

Table 158 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISDiscreteArbitrationObjectType.

Table 159 – MDIS Discrete Arbitration Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Discrete Client BaseFalse
MDIS InstrumentMDIS Discrete Arbitration Client BaseFalse
14.3.3.9 MDIS Digital Model Client Facet

Table 160 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISDigitalInstrumentObjectType model.

Table 160 – MDIS Digital Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Digital Instrument Client BaseFalse
14.3.3.10 MDIS Digital Out Model Client Facet

Table 161 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISDigitalOutObjectType model.

Table 161 – MDIS Digital Out Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Digital Instrument Client BaseFalse
MDIS InstrumentMDIS Digital Out Client BaseFalse
14.3.3.11 MDIS Digital Arbitration Model Client Facet

Table 161 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISDigitalOutObjectType model.

Table 162 – MDIS Digital Arbitration Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS InstrumentMDIS Digital Instrument Client BaseFalse
MDIS InstrumentMDIS Digital Arbitration Client BaseFalse
14.3.3.12 MDIS Choke Model Client Facet

Table 163 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISChokeObjectType model.

Table 163 – MDIS Choke Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS ChokeMDIS Choke Client BaseFalse
MDIS ChokeMDIS Choke Client DefeatableCloseInterlockTrue
MDIS ChokeMDIS Choke Client DefeatableOpenInterlockTrue
MDIS ChokeMDIS Choke Client NonDefeatableCloseInterlockTrue
MDIS ChokeMDIS Choke Client NonDefeatableOpenInterlockTrue
MDIS ChokeMDIS Choke Client Step durationTrue
MDIS ChokeMDIS Choke Client Total Steps True
MDIS ChokeMDIS Choke Client Step methodTrue
MDIS ChokeMDIS Choke Client CommandRejectedTrue
14.3.3.13 MDIS Electric Choke Model Client Facet

Table 163 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISElectricChokeObjectType model.

Table 164 – MDIS Electric Choke Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS Electric ChokeMDIS Electric Choke Client BaseFalse
MDIS Electric ChokeMDIS Electric Choke Client DefeatableCloseInterlockTrue
MDIS Electric ChokeMDIS Electric Choke Client DefeatableOpenInterlockTrue
MDIS Electric ChokeMDIS Electric Choke Client NonDefeatableCloseInterlockTrue
MDIS Electric ChokeMDIS Electric Choke Client NonDefeatableOpenInterlockTrue
MDIS Electric ChokeMDIS Electric Choke Client Command RejectedTrue
14.3.3.14 MDIS Motor Model Client Facet

Table 163 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISMotorObjectType model.

Table 165 – MDIS Motor Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS MotorMDIS Motor Client BaseFalse
MDIS MotorMDIS Motor Client DefeatableStartInterlockTrue
MDIS MotorMDIS Motor Client DefeatableStopInterlockTrue
MDIS MotorMDIS Motor Client NonDefeatableStartInterlockTrue
MDIS MotorMDIS Motor Client NonDefeatableStopInterlockTrue
MDIS MotorMDIS Motor Client OperationTrue
MDIS MotorMDIS Motor Client Start/StopTrue
14.3.3.15 MDIS CIMV Model Client Facet

Table 163 defines a Facet that describes the base characteristics for an OPC UA Client using the MDISCIMVObjectType model.

Table 166 – MDIS CIMV Model Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Base FaultFalse
MDIS BaseMDIS Client Base FaultCodeTrue
MDIS BaseMDIS Client Base WarningTrue
MDIS BaseMDIS Client Base WarningCodeTrue
MDIS BaseMDIS Client Base EnabledTrue
MDIS BaseMDIS Client Base TagIdTrue
MDIS CIMVMDIS CIMV Client BaseFalse
MDIS CIMVMDIS Motor Client NonDefeatableCommandInProgressInterlockTrue
MDIS CIMVMDIS CIMV Client NonDefeatableOpenInterlockTrue
MDIS CIMVMDIS CIMV Client NonDefeatableCloseInterlockTrue
MDIS CIMVMDIS Motor Client OperationTrue
MDIS CIMVMDIS CIMV Client TotalFlowTrue
MDIS CIMVMDIS CIMV Client TotalMotorRuntimeTrue
MDIS CIMVMDIS CIMV Client MotorOperationsCountTrue
MDIS CIMVMDIS CIMV Client DeviceCurrentTrue
MDIS CIMVMDIS CIMV Client InletPressureTrue
MDIS CIMVMDIS CIMV Client InternalPressureTrue
MDIS CIMVMDIS CIMV Client OutletPressureTrue
MDIS CIMVMDIS CIMV Client CommandRejectedTrue
MDIS CIMVMDIS CIMV Client SetOperationModeTrue
MDIS CIMVMDIS CIMV Client SetManualTrue
MDIS CounterMDIS Counter Client SetManualTrue
MDIS CounterMDIS Counter Client SetCount methodTrue
14.3.3.16 MDIS Redundancy Client Facet

Table 167 defines a Facet that describes Redundancy that a Client would support.

Table 167 – MDIS Redundancy Client Facet
Group Conformance Unit / Profile Title Optional
MDIS RedundancyMDIS Client RedundancyFalse
14.3.3.17 MDIS Aggregate Object Client Facet

Table 168 defines a Facet that describes Aggregate Object functionality that a Client would support.

Table 168 – MDIS Aggregate Object Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client AggregateFalse
14.3.3.18 MDIS Extension Object Client Facet

Table 169 defines a Facet that describes Extension Object functionality that a Client would support.

Table 169 – MDIS Extension Object Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client ExtensionFalse
14.3.3.19 MDIS Extension Extra Object Client Facet

Table 170 defines a Facet that describes Extension Object extra Fields’s functionality that a Client would support.

Table 170 – MDIS Extension Extra Object Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Client Extension ExtraFalse
14.3.3.20 MDIS Signature Transfer Client Facet

Table 171 defines a Facet that describes signature transfer functionality that a Client would support.

Table 171 – MDIS Signature Transfer Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS Signature ClientFalse
MDIS BaseMDIS Information Client Signature Validation False
14.3.3.21 MDIS TimeSync Object Client Facet

Table 172 defines a Facet that describes TimeSync functionality that a Client would support.

Table 172 – MDIS TimeSync Object Client Facet
Group Conformance Unit / Profile Title Optional
MDIS BaseMDIS TimeSync ClientFalse

14.4 MDIS OPC UA Profiles

14.4.1 Overview

This specification has defined a number of individual Facets that a Server and / or a Client are expected to combine and utilise in an application. The following Profiles provide a recommended combination of functionality that a Server or Client should include. These are complete Profiles that include all required Profiles and ConformanceUnits to implement a Server or a Client.

14.4.2 MDIS Solution Client 1.3 Profile

Table 173 defines a Full Featured Profile that describes the characteristics for an OPC UA Client. The OPC UA Client may expose additional functionality as separate Profiles.

Table 173 – MDIS Solution Client 1.3 Profile
Group Conformance Unit / Profile Title Optional
ProfileMDIS Base Functionality Client Facet
ProfileMDIS Valve Model Client Facet
ProfileMDIS Instrument Model Client Facet
ProfileMDIS Choke Model Client Facet
ProfileMDIS Electric Choke Model Client Facet
ProfileMDIS Discrete Model Client Facet
ProfileMDIS Digital Model Client Facet
ProfileMDIS Motor Model Client Facet
ProfileMDIS CIMV Model Client Facet
MDIS ModelMDIS Performance Client DatasheetFalse

14.4.3 MDIS Solution Server 1.3 Profile

Table 174 defines a full featured Profile that describes the base characteristics for an OPC UA Server. The OPC UA Server may expose additional functionality as Profiles.

Table 174 – MDIS Solution Server 1.3 Profile
Group Conformance Unit / Profile Title Optional
ProfileMDIS Base Functionality Server Facet
ProfileMDIS Valve Model Server Facet
ProfileMDIS Instrument Model Server Facet
ProfileMDIS Choke Model Server Facet
ProfileMDIS Electric Choke Model Server Facet
ProfileMDIS Discrete Model Server Facet
ProfileMDIS Digital Model Server Facet
ProfileMDIS Motor Model Server Facet
ProfileMDIS CIMV Model Server Facet
MDIS ModelMDIS Performance DatasheetFalse

14.5 Equipment Certification

The MDIS interface shall be certified at an OPC Foundation Certification Test Laboratory on a product basis. Any major release of the product shall be recertified. Recertification can also be required if there are any changes to the standard or test cases defined by MDIS. The certification documentation shall include

a list of valid MDIS Profiles and optional ConformanceUnits for which the vendor equipment is certified,

vendor equipment information used for testing,

equipment architecture and configuration used for testing during the certification process.

Extensions or aggregate Objects added during a project do not need to be recertified.

15 Namespaces

15.1 Namespace Metadata

Table 175 defines the namespace metadata for this document. The Object is used to provide version information for the namespace and an indication about static Nodes. Static Nodes are identical for all Attributes in all Servers, including the Value Attribute. See for more details see OPC 10000-5, NamespaceMetadataType definition.

The information is provided as Object of type NamespaceMetadataType. This Object is a component of the Namespaces Object that is part of the Server Object. The NamespaceMetadataType ObjectType and its Properties are defined in Table 175.

The version information is also provided as part of the ModelTableEntry in the UANodeSet XML file. The UANodeSet XML schema is defined in 15.2.

Table 175 – NamespaceMetadata Object for this Document
Attribute Value
BrowseName http://opcfoundation.org/UA/MDIS
Property DataType Value
NamespaceUriString http://opcfoundation.org/UA/MDIS
NamespaceVersionString1.3
NamespacePublicationDateDateTime2023-07-07
IsNamespaceSubsetBooleanFalse
StaticNodeIdTypesIdType []0
StaticNumericNodeIdRangeNumericRange []0:5000
StaticStringNodeIdPatternString

Note: The IsNamespaceSubset Property is set to False as the UaNodeSet XML file contains the complete Namespace. Servers only exposing a subset of the Namespace need to change the value to True. The StaticNodeIdTypes are numeric (0).

15.2 Handling of OPC UA Namespaces

Namespaces are used by OPC UA to create unique identifiers across different naming authorities. The Attributes NodeId and BrowseName are identifiers. A Node in the UA AddressSpace is unambiguously identified using a NodeId. Unlike NodeIds, the BrowseName cannot be used to unambiguously identify a Node. Different Nodes may have the same BrowseName. They are used to build a browse path between two Nodes or to define a standard Property.

Servers may often choose to use the same namespace for the NodeId and the BrowseName. However, if they want to provide a standard Property, its BrowseName shall have the namespace of the standards body although the namespace of the NodeId reflects something else, for example the EngineeringUnits Property. All NodeIds of Nodes not defined in this specification shall not use the standard namespaces.

Table 176 provides a list of mandatory and optional namespaces used in an MDIS OPC UA Server.

Table 176 – Namespaces used in a MDIS Server
NamespaceURI Description Use
http://opcfoundation.org/UA/Namespace for NodeIds and BrowseNames defined in the OPC UA specification. This namespace shall have namespace index 0.Mandatory
Local Server URINamespace for nodes defined in the local server. This may include types and instances used in an AutoID Device represented by the Server. This namespace shall have namespace index 1.Mandatory
http://opcfoundation.org/UA/MDIS Namespace for NodeIds and BrowseNames defined in This specification. The namespace index is Server specific.Mandatory
Vendor specific typesA Server may provide vendor-specific types like types derived from ObjectTypes defined in this specification in a vendor-specific namespace.Optional
Vendor specific instances

A Server provides vendor-specific instances of the standard types or vendor-specific instances of vendor-specific types in a vendor-specific namespace.

It is recommended to separate vendor specific types and vendor specific instances into two or more namespaces.

Mandatory

Table 177 provides a list of namespaces and their index used for BrowseNames in this specification. The default namespace of this specification is not listed since all BrowseNames without prefix use this default namespace.

Table 177 – Namespaces used in this document
NamespaceURI Namespace Index Example
http://opcfoundation.org/UA/00:EngineeringUnits

Annex A MDIS Namespace and mappings (Normative)

A.1 NodeSet and Supplementary Files for MDIS Information Model

The MDIS Information Model is identified by the following URI:

http://opcfoundation.org/UA/MDIS

Documentation for the NamespaceUri can be found here.

The NodeSet associated with this version of specification can be found here:

https://reference.opcfoundation.org/nodesets/?u=http://opcfoundation.org/UA/MDIS&v=1.3&i=1

The NodeSet associated with the latest version of the specification can be found here:

https://reference.opcfoundation.org/nodesets/?u=http://opcfoundation.org/UA/MDIS&i=1

The supplementary files associated with this version of specification can be found here:

https://reference.opcfoundation.org/nodesets/?u=http://opcfoundation.org/UA/MDIS&v=1.3&i=2

The supplementary files associated with the latest version of the specification can be found here:

https://reference.opcfoundation.org/nodesets/?u=http://opcfoundation.org/UA/MDIS&i=2

A.2 Capability Identifier

The capability identifier for this document shall be:

	MDIS

Annex B Sequence Diagrams (Informative)

B.1 Introduction

The following section provides sample sequence diagrams for each of the MDIS ObjectTypes. These sample sequences are not mandated or the only valid variant.

B.2 MDIS Discrete Instrument Object Sequence Diagrams

B.2.1 Enable Disable

Figure 27 – Discrete Instrument

B.3 MDIS Digital Instrument Object Sequence Diagrams

B.3.1 Enable Disable

Figure 28 – Digital Instrument

B.4 MDIS Instrument Object Sequence Diagrams

B.4.1 Enable Disable

Figure 29 – Instrument Enable / Disable

B.4.2 Write to Setpoint

Figure 30 – Instrument Setpoint changes

B.4.3 Display Limits

Figure 31 – Instrument Limits

B.4.4 Display Engineering units

Figure 32 – Instrument Engineering Units

B.5 MDIS Choke Object Sequence Diagrams

B.5.1 Overview

The following sequence diagrams indicate the intended SPCS and DCS interface operational steps. The sequence diagrams are used only to visualise different choke operations and to provide helpful information for implementation of the MDISChokeObjectType in OPC UA.

B.5.2 Move to Position – Success

Figure 33 – Choke Move to Position

Sequence description; the above sequence details a successful execution of a Move to Position command [open or close] from the DCS to SPCS in addition to intermediate acknowledgements and states.

B.5.3 Move to Position – Fault

Figure 34 – Choke Move Fault

Sequence description; the above sequence details a Fault during the execution of a Move to Position command [open or close] from the DCS to SPCS in addition to intermediate states.

B.5.4 Move to Position – Failure, Interlock active

Figure 35 – Choke Move Interlocked

Sequence description; the above sequence details a failed execution of a Move to Position command [open or close] from the DCS to SPCS due to an Interlock being active.

B.5.5 Abort Choke (Position)

Figure 36 – Choke Move Abort

Sequence description; the above sequence details abort of a Move to Position command [open or close] from the DCS to SPCS.

B.5.6 Defeat / Override Interlock (Move)

Figure 37 – Choke Move Interlock Override

B.5.7 Fault – No Move Operation

Figure 38 – Choke Fault

B.5.8 Step Open / Close – Success

Figure 39 – Choke Step Success

Sequence description; the above sequence details a successful execution of a Step Open / Close command from the DCS to SPCS in addition to intermediate acknowledgements and states. The sequence diagram also includes information from instruments such as the Linear Variable Displacement (Differential) Transmitter (LVDT) to help illustrate what the actual information flow is.

B.5.9 Step Open / Close – Failure, choke fault

Figure 40 – Choke Step Fault

Sequence description; the above sequence details a failed execution of a Step Open / Close command from the DCS to SPCS due to a choke fault.

B.5.10 Abort Choke (Step)

Figure 41 – Choke Step Abort

Sequence description; the above sequence details a successful execution of a Choke Abort command from the DCS to SPCS in addition to intermediate acknowledgements and states.

B.5.11 Set Calculated Position

Figure 42 – Choke Set Position

Sequence description; the above sequence details a successful execution of a Set Calculated Position command from the DCS to SPCS.

B.5.12 Enable Disable Choke

Figure 43 – Choke Enable / Disable

Sequence description; the above sequence details a successful execution of an Enable / Disable Choke from the DCS to SPCS in addition to intermediate acknowledgements and states.

B.5.13 Defeat / Override Interlock (Step)

Figure 44 – Choke Step Interlock Override

Sequence description; the above sequence details a successful execution of a Defeat / Override Interlock Choke command from the DCS to SPCS in addition to intermediate acknowledgements and states

B.6 MDIS Valve Object Sequence Diagrams

B.6.1 Overview

The general functionality of the valve is to control the flow, in that it is either open and flowing or closed and not flowing. The MDISValveObjectType provides the information available for valves and provides access to control and management functionality in the valve. The following sequence diagrams indicate the intended subsea and DCS interface operational requirements and should be used in conjunction with the MDISValveObjectType generic properties. The final result described in the sequence diagram will be held until the next command is issued to the Valve, or until the state of the Valve changes (Fault or Interlock clears).

[Note: in most of the failure cases described below, the Method call should not have been made. But the error case is still described, since the Server still needs to be able to correctly handle the case where a Client sends an inappropriate command. Warning states do not affect commands.]

B.6.2 Valve command – Success

Figure 45 – Valve command - success

Sequence description; the above sequence details a successful execution of a command [Open or Close] from the DCS to SPCS in addition to intermediate state changes.

B.6.3 Valve command – Overridden Interlock

Figure 46 – Valve command – overridden Interlock

Sequence description; the above sequence details a successful execution of a command [Open or Close] with an interlock override active from the DCS to SPCS in addition to intermediate states changes. The Interlocks listed in the interlocks folder that are overridden are updated to reflect not interlocked.

B.6.4 Valve command –- Interlocked not overridden

Figure 47 – Valve command – Failed - Interlocked

Sequence description; the above sequence details the rejection to execute a command [open or close] owing to a non-defeatable interlock active status in the subsea system. The interlock is one reason a command may be rejected but there are others.

B.6.5 Valve command – Disabled

Figure 48 – Valve command – Failed- Disabled

Sequence description; the above sequence details the rejection to execute a command [Open or Close] owing to the valve being disabled. The move Method may return successful or a failure depending on whether it knows if the valve is disabled.

B.6.6 Valve command – Failed – Fault case 1

Figure 49 – Valve command – Failed - Fault

Sequence description; the above sequence is a failure of a command. The value fault maybe the result of the lack of action from the valve for a period of time greater that the OpenTimeDuration, it could also be some other fault that is reported from the subsea system.

B.6.7 Valve command – Failed – Fault case 2

Figure 50 – Valve command – Failed - Faulted

Sequence description; the above sequence details what the possible outcomes for moving a valve that has a fault set. The valve may immediately fault, may fault again after some time or the move may succeed. All outcomes are possible from a Client point of view. On some Servers only the last two may be possible.

B.6.8 Valve Signature Request – Completed

Figure 51 – Valve Profile Request – Completed

Sequence description; the above sequence details the valve signature request of a valve during operation [open or close] from the subsea system level. The valve may also report Failed or Not Available.

B.6.9 Valve command – Shutdown

Figure 52 – Valve command – Shutdown

Sequence description; the above sequence details the execution of a Shutdown command [Open or Close]. The intermediate acknowledgements and states as applicable are indicated. The Shutdown command will attempt to override all interlocks, including any non-defeatable interlock if possible

Annex C Recommended Practice (Normative)

C.1 Introduction

This Recommended Practice provides guidance for use in specifying and implementing the OPC Unified Architecture (UA) for use as a standard communication interface for use between a Distributed Control System (DCS) and a Subsea Production Control System (SPCS) for control of subsea equipment.

Guidance for specifying minimum requirements when implementing MDIS are provided to ensure:

Equipment compatibility when integrating the MCS or Subsea Gateway with the DCS.

Safe and effective operation of equipment controlled by the MCS or Subsea Gateway from the DCS. Successful integration of the DCS with the MCS or Subsea Gateway during project execution.

These checklists and associated text maybe used directly in an RFQ, or maybe adjusted as needed.

C.2 Architecture Implementation

Physical architecture, defined in Section 5.1, should be specified. The location of the following minimum set of functionality, in the DCS or SPCS, is dependent on physical and “Operating Company” requirements and should be clearly specified prior to project execution:

Data Arbitration

Communication Channel Selection

SEM Control Selection

Process Interlocks

Product Interlocks

Shutdown Sequences

Automated Control Sequences

Valve Status Validation

Choke Position Validation

Interfacing with the HPU

Interfacing with the topside chemical injection system

Validation of Valve Profiles / Signatures

While functional logic has been prescribed by MDIS; implementation of specific functionality is not mandatory and should be specified on a project basis. As a minimum any MDIS implementation should ensure exchange of all required information required to safely line up, start up, operate and shutdown subsea equipment.

Interfaces with external interfaces with other third-party systems (i.e. historians) and external interfaces between SPCS and DCS for use other than for control and monitoring of subsea equipment are not specified through the use of the MDIS OPC UA Companion Specification and should be specified on a project basis.

C.3 Security

It is recommended that all encryption or application-level security requirements that are specified should be based on a network security assessment. If encryption on the protocol level is required, it is recommended to use encryption algorithms specified by OPC UA. Any advanced security features, if implemented, should have the option to be disabled and not adversely affect system performance.

No provision for user level security is considered for the MDIS Interface. The MDIS Interface is controller to controller communication and is not user restricted. All user level security should be implemented in the SPCS and DCS.

C.4 Performance

To maximise efficient use of bandwidth and performance, communication should be subscription based, by default.

The OPC UA interface is exception driven and a publishing interval of 2 seconds or less should be used between the SPCS and the DCS. Update rates from subsea to the SPCS is outside the scope of MDIS and can be much longer than 2 seconds. Maximum allowable update rates for individual controllers should be determined and based on system architecture and hardware capabilities.

It is expected that update rates will vary according to general categories of data. Critical data will have update rates that could be under 1 second while housekeeping data might have update rates in the 1-minute time range. These data rates shall be constant for the supported counts of Objects. i.e. if a device supports 3 wells (say 3000 critical values and 10,000 housekeeping values), the 1 second and 1 minute data rates will be support, not just for 1 well, but for the advertised 3 wells.

Conformance units provided general ranges of performance numbers that a product can be tested against. It is understood that performance will vary according to the hardware provided and the other loading on the hardware. The ConformanceUnits do not guarantee any performance, but they will point out performance issues earlier. i.e. a device that can support 5000 objects as part of a test is may not support 5000 when it is fully loaded with non-MDIS functionality, but it is likely that it would still be able to support 3000 objects. These conformance units are included to provide some general bench marks for performance.

Systems can be architected to include multiple server/devices to offset load. These number are targeted to allow better choice of configuration. For example, if 10,000 objects are desired and the software can only pass 5000 objects, the system should be architected to have at least 2 devices, but to allow for other factor, it might be a good idea to target 3 devices.

Requirements should be developed on a project basis to provide sufficient bandwidth between the SPCS and DCS to ensure all commands, issued both during normal operation and shutdowns, are passed across the interface effectively.

Evaluation of communication performance and testing requirements should take into account any latency or communication limitations due to physical system architecture constraints between SPCS and the DCS. (i.e. radio communication).

C.5 Data Priority

Data prioritisation should be considered on a system level by each project and should take into consideration functional requirements for safe and effective operation of control of subsea equipment.

Data exchange across the interface should, unless otherwise specified be prioritised in the following manner:

High Priority:Information required for process control.
Low Priority:Information that is not required for process control (i.e. diagnostics, housekeeping).

C.6 Documentation

An interface specification should be developed between the SPCS vendor, DCS vendor and the “Operating Company” prior to the implementation of MDIS. The interface specification should provide the required fidelity to ensure all project specific requirements have been met. During the development of this specification it is recommended to review the project check list in Section B.8.

The SPCS vendor shall maintain revision control of the UANodeSet file that is being utilised by the project.

External interfaces (i.e. historians, condition monitoring systems, etc.) should also be specified however are outside the scope of this specification.

C.7 Interface Testing

The MDIS communication link shall be verified between the SPCS and DCS. Testing shall include both normal operation and failure scenarios. Redundancy and performance requirements should be tested under full load (i.e. shutdown conditions). Time synchronisation should be verified.

Clients and Servers that have passed independent MDIS certification should require less integration testing. Integration testing should be focused on the project configuration rather than base MDIS functionality. It is recommended prior to any integration testing that the interface specification, defined in Section C.6 and OPC UA UANodeSet files be finalised and agreed between SPCS and DCS vendors as early as possible. Integration testing should only be attempted when the SPCS and DCS software has reached an acceptable level of maturity.

It is recommended that, during project execution, preliminary integration testing be performed to validate the data exchange across the MDIS Interface off critical path, prior to full onsite integration testing. In addition to validating data exchange, this testing should allow for verification of graphical displays, redundancy and data prioritisation. Validation of performance and full functionality, including shutdowns, sequences and interlocks, should be performed during full onsite integration testing using the hardware that will be supplied to the project.

C.8 Project Check List

C.8.1 Introduction

This Checklist provides general guidance for use in tender and development cycles for implementing the MDIS Interface between a Distributed Control System (DCS) and a Subsea Production Control System (SPCS) for control of subsea equipment.

C.8.2 Front End Engineering Design (FEED)

The following checklist is ordered by decisions and activities that should be defined during clarification and development of an MDIS interface specification interface.

Table 178 – Checklist – FEED Scope
No Item Description Comments
The Operator, DCS vendor and SPCS vendor should assign dedicated persons to develop requirements for the interface.Knowledge of latest MDIS Specification is recommended.
Operator to schedule Kick-off or Workshop with DCS vendor and SPCS vendor to discuss checklist items.

For example

System Introduction.

Agree on weekly / biweekly regular meetings

Lessons learned of previous implementations

Checklist items

Agree on system architecture. The Operator shall decide which MDIS architecture (Integrated, Interfaced or Other) is applicable. The definition of architecture should document where all functional logic should reside, as per Section B.2.
Create an overview drawing of the hardware and network architecture. Decide on Interface setting (IP ranges and class). Define hardware components on both systems that are related for the interface.
Schedule Cyber Security Meeting for the MDIS Interface
DCS vendor to provide OPC Foundation accredited Test Lab certification report (OPC UA Client), if available, to the Operator.
SPCS vendor to provide OPC Foundation accredited Test Lab certification report (OPC UA Server), if available, to the Operator.
Select responsible Party (DCS or SPCS) for implementing shutdown Sequences.
Select responsible Party (DCS or SPCS) for implementing automated Sequences.
Select responsible Party (DCS or SPCS) for implementing Product Interlocks.
Select responsible Party (DCS or SPCS) for implementing Process Interlocks.
Select responsible Party (DCS or SPCS) for creation and managing the Product Alarms/Warnings. Specify detail level of product alarms (summary alarm or specific information)SPCS Vendor should provide diagnostic information.
Select responsible Party for changing Setpoints for Alarms & Interlocks (if applicable)
SPCS Vendor to present specific Subsea Communication & Arbitration Philosophy
Select responsible Party (DCS or SPCS) for creation and managing Process Alarms/Warnings.
Define where information from redundant physical measurements is arbitrated. Example: Should the SPCS or DCS be responsible for arbitrating information from redundant pressure / temperature transmitters that are measuring the same process variable?
Define where management of redundancy in subsea equipment is arbitrated.Example: Should the SPCS or DCS be responsible for assigning which SEM is used to command valve actuation? Should the SPCS or DCS be responsible for assigning a “primary” or “backup” SEM?
Define where redundant information due to multiple communication channels is arbitrated. Example: Dependent on system design a single process sensor value might be available through various communication channels. Should the SPCS or DCS be responsible for determining which value is used for display to the operator and used as input to interlocks and automated sequences?
Define the instance model for redundant systems Example: Is the instance model on each OPC Server identical or do the instance models represent separate and redundant pathways to subsea equipment? See section 12 for more details.
Make a list of all MDIS Object types that will utilized on the project.Object types that are not utilized on the project can be skipped from following optional item selection.
Operator, DCS and SPCS to select required optional References and Methods for all MDIS objects:
- MDIS Discrete Instrument
- MDIS DiscreteOut Instrument
- MDIS Digital Instrument
- MDIS DigitalOut Instrument
- MDIS Instrument
- MDIS InstrumentOut
- MDIS Valve
- MDIS Choke
- Etc.
It is recommended to start discussions assuming all objects use all mandatory and optional References and Methods and remove items that are not project relevant.
Supported arguments for the MDIS Valve and MDIS Choke Move-Method calls should be documented.Available Move-Method calls are defined in the MDIS Valve and MDIS Choke objects.
Faults and warning codes warning provided in SPCS system should be defined. Specific actions to be initiated by the DCS in the event of a fault or warning code should be documented.

For example:

A workshop for specific alarms & actions should be conducted after interface specification is finalized.

Agree on standardised methodology for naming of Objects used on the interface (Hierarchy / Field structure)Project specific equipment specific tag identifiers can be used on the interface to name equipment.
SPCS Vendor to prepare list of available MDIS Aggregated Objects and Vendor specific Subtypes of MDIS Objects.This list should provide sufficient detail to allow development of software by both the DCS and SPCS provider.
The structure of address space across the interface (folder structure or MDIS Aggregated object) should be defined.Address space structure should be clearly documented by the SPCS vendor and be reviewed by the DCS vendor to ensure no incompatibility.
A method for time Synchronization shall be defined.
FEED work should be documented to clarify expectations during project execution.

C.8.3 Project Execution

The following checklist documents activities that should be considered during project execution.

Table 179 – Checklist - Project Execution
No Item Description Comments
SPCS Vendor should create a project specific MDIS Interface specification for DCS.This MDIS Interface specification should be based on documented FEED discussions.
SPCS Vendor to schedule date for delivery of MDIS NodesetFile(s) for DCS Vendor.More than one date might be scheduled, where each date would provide a NodesetFile that includes additional object definitions. For example, an initial NodesetFile might contain just the first prototype of a well and subsequent NodesetFiles might contain a more detailed well and then multiple instances of the well. Also, some Objects might include additional optional items as the well model is finalized.
Schedule date for first MDIS interface connection Test. SPCS vendor, DCS vendor and Operator should agree on test cases for first MDIS interconnection test.First interconnection test should cover test cases such as redundancy, time synchronization, performance, etc.
Check possibility/availability of an online SPCS OPC UA MDIS Server to support and accelerate interface development. Operator to support/provide infrastructure (e.g. use own infrastructure or cloud systems) if link between SPCS and DCS Vendor cannot be established.
DCS Vendor to prepare Interface Test procedure. Schedule review cycle for Operator and SPCS vendor.
Schedule Date for final MDIS interface connection Test (full project configuration, including sequences and interlocks, etc.).

C.8.4 Closeout

The following Checklist documents activities that should be completed complete as part of a project closeout.

Table 180 – Checklist - Project Closeout
No Item Description Comments
Feedback lessons learned and improvements from project execution to MDIS working group.Feedback should be provided from all parties (Operator, DCS, SPCS). Feedback could include discussion of specification features, feedback on this checklist, future features that could be added to specification etc.

Annex D Alternative MDIS Applications (Normative)

D.1 Introduction

OPC UA, through the MDIS Companion Specification, has been specified as a controls interface between the MCS and DCS. This normative guideline provides details on other potential applications of the MDIS standard and additions to standard MDIS implementations that are outside the original scope of MDIS. Concepts covered include:

Application of OPC UA and standard objects and concepts defined within the MDIS Companion Specification as “read only” interfaces for historian applications.

Additions to OPC UA MDIS implementations that can facilitate data transfer that are not specifically control related.

D.2 Read Only Interface

The MCS can provide “read only” interfaces to facilitate data to external databases, as specified on a project basis. In these cases, OPC UA can be specified and use of standard objects and concepts taken from the MDIS standard can be utilized based on project specific requirements.

To use the OPC UA interface as a “read only” interface it is recommended to that a Server be able to indicate that all writeable points (by definition have access restriction that denies write for all users and that no writeable ObjectType instance will exist in the address space. For all methods that allow writing, the user access rights should indicate not executable. The Server should be configurable to support this “read only” configuration. The server should not be able to be changed from this configuration without a restart.

D.3 Signature File Transfer

Valve signatures are files that contain high sample rate pressure profiles recorded during individual valve operations exposed by the subsea system. There are cases where valve signatures are required to be transferred from the SPCS to either the DCS or external historian interfaces.

A Server that supports transferring the valve signature via OPC UA shall expose a FileObject as part of the Valve Object Instance via the HasSignature ReferenceType. The valve Signature will also be provided in the MDIS folder under the MDISInformation Object. File formats and specific information captured within the valve signature files are outside the scope of this specification and should be specified on a project basis.

The items required are provided as part the individual ObjectTypes. This functionality is optional and covered in a separate profile.

Annex E Valve Signature File Format Annex (Normative)

E.1 File format definition

This section provides a file format definition for the valve signature files. It includes a file naming convention:

Filname:

‘Date_Time_ValveTagId’, where Date-Format: yyyyMMdd and Time-Format: HHmmss.

Time in filename is only to be used for file handling purposes. Accurate Valve-Signature time-stamp is given in TriggerTime variable.

Variables:

BrowsePathA browse path that uniquely identifies the valve in signature file (without namespace).Mandatory
TagIdTagId of the ValveOptional
DescriptionValve description.Mandatory
Command"open", "close", "partial-stroke"Mandatory
TriggerTime

Timestamp for signature, SEM time when valve movement started.
In OPC UA DateTime (see OPC 10000-5 section 5.2.2.5 DateTime)

the string should be in this format "1510835812.330"

Optional
InstrumentInstrument data start.
InstrumentIdTagId or BrowseName for instrument.Mandatory
InstrumentDescriptionDescription.Mandatory
EUrangeHighHigh range for plot, may be different from actual instrument range.
(example: for flow transmitter EUrangeHigh should correspond to valve volume not flow instrument max range)
Optional
EUrangeLowLow range for plot, may be different from actual sensor range.Optional
EngineeringUnitsInstrument Engineering unit, same unit as EngineeringUnits under ProcessVariable.Mandatory
SamplesSample values.
TimeSEM time for sample.
In OPC UA DateTime (see OPC 10000-5 section 5.2.2.5 DateTime)) the string should be in this format "1510835812.330"
Mandatory
ValueInstrument sample value.Mandatory
FaultSensor fault.Optional

Additional comments:

First instrument sample value may be earlier in time than TriggerTime, dependent on subsea vendor SEM configuration, to include a pre-operation sample in the plot.

The normative definition of the JSON schema is available in the file found here:

https://reference.opcfoundation.org/files/Profile-Schema.json?u=http://opcfoundation.org/UA/MDIS&v=1.3

For the latest version:

https://reference.opcfoundation.org/files/Profile-Schema.json?u=http://opcfoundation.org/UA/MDIS

Agreement of Use

COPYRIGHT RESTRICTIONS

Any unauthorized use of this specification may violate copyright laws, trademark laws, and communications regulations and statutes. This document contains information which is protected by copyright. All Rights Reserved. No part of this work covered by copyright herein may be reproduced or used in any form or by any means – graphic, electronic, or mechanical, including photocopying, recording, taping, or information storage and retrieval systems – without permission of the copyright owner.

OPC Foundation members and non-members are prohibited from copying and redistributing this specification. All copies must be obtained on an individual basis, directly from the OPC Foundation Web site
http://www.opcfoundation.org.

PATENTS

The attention of adopters is directed to the possibility that compliance with or adoption of OPC specifications may require use of an invention covered by patent rights. OPC shall not be responsible for identifying patents for which a license may be required by any OPC specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. OPC specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents.

WARRANTY AND LIABILITY DISCLAIMERS

WHILE THIS PUBLICATION IS BELIEVED TO BE ACCURATE, IT IS PROVIDED "AS IS" AND MAY CONTAIN ERRORS OR MISPRINTS. THE OPC FOUDATION MAKES NO WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, WITH REGARD TO THIS PUBLICATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE. IN NO EVENT SHALL THE OPC FOUNDATION BE LIABLE FOR ERRORS CONTAINED HEREIN OR FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, RELIANCE OR COVER DAMAGES, INCLUDING LOSS OF PROFITS, REVENUE, DATA OR USE, INCURRED BY ANY USER OR ANY THIRD PARTY IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THIS MATERIAL, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

The entire risk as to the quality and performance of software developed using this specification is borne by you.

RESTRICTED RIGHTS LEGEND

This Specification is provided with Restricted Rights. Use, duplication or disclosure by the U.S. government is subject to restrictions as set forth in (a) this Agreement pursuant to DFARs 227.7202-3(a); (b) subparagraph (c)(1)(i) of the Rights in Technical Data and Computer Software clause at DFARs 252.227-7013; or (c) the Commercial Computer Software Restricted Rights clause at FAR 52.227-19 subdivision (c)(1) and (2), as applicable. Contractor / manufacturer are the OPC Foundation, 16101 N. 82nd Street, Suite 3B, Scottsdale, AZ, 85260-1830.

COMPLIANCE

The OPC Foundation shall at all times be the sole entity that may authorize developers, suppliers and sellers of hardware and software to use certification marks, trademarks or other special designations to indicate compliance with these materials. Products developed using this specification may claim compliance or conformance with this specification if and only if the software satisfactorily meets the certification requirements set by the OPC Foundation. Products that do not meet these requirements may claim only that the product was based on this specification and must not claim compliance or conformance with this specification.

Trademarks

Most computer and software brand names have trademarks or registered trademarks. The individual trademarks have not been listed here.

GENERAL PROVISIONS

Should any provision of this Agreement be held to be void, invalid, unenforceable or illegal by a court, the validity and enforceability of the other provisions shall not be affected thereby.

This Agreement shall be governed by and construed under the laws of the State of Minnesota, excluding its choice or law rules.

This Agreement embodies the entire understanding between the parties with respect to, and supersedes any prior understanding or agreement (oral or written) relating to, this specification.

Revision 1.3 Highlights

The following table includes the Mantis issues resolved with this revision.

Mantis ID Summary Resolution
4311 The MDIS Specification need to provide a more standard set of error codesUpdated Fault and Warning codes to include a subset of standard defined codes and then still allow additional bits to be vendor specific
4904 Conflict when using Extensions and AggregatesUpdated text to indicate that subtypes are also allowed
5269 Add CIMV object definitionAdded definition of new CIMV ObjectType
5536 Add MDIS Arbitration ObjectAdded individual Arbitration objects for all instruments
5537 Add MDIS Pump ObjectAdded Motor Object (for a more general pump object type)
6045 Wrong usage of HasPropertyFixed incorrect definition using HasProperty
7549 WriteValue Method of InstrumentOut ObjectTypes (5.3.5, 5.4.5, 5.5.5): definition of the feedback value is unclear

updated the text in all three sections

section 5.5.5

The value of the ProcessVariable value will only update once the subsea system has provided a new value.

section 5.4.5

The value of the State value will only update once the subsea system has provided a new value.

section 5.3.5

The value of the State value will only update once the subsea system has provided a new value.

7808 Handling of "State" variable when there is no feedback from subseaUpdated text as: The value of the State value Variable will shall only be updated once the subsea system has provided a new value. For Objects that are used as a command, the value of the State Variable shall be updated directly to the value provided by the State parameter of the Method.
8005 MDIS Client profile includes base specification facets that do not fully apply to MDIS-only client appsRemoved reference to base specification facets "AddressSpace Lookup Client Facet" and "DataChange Subscriber Client Facet" and instead listed the individual CUs which comprise those facets, indicating which are optional for MDIS clients
8006 SetArbitrationMode method is optional in MDISInstrumentArbitrationObjectTypeSet it as optional in all objects
8190 Clarify CIMV behaviour when SetPosition and SetManual manual arguments are out of rangeUpdated CIMV section methods "SetPosition" Method "SetManual"
8023 Profile group names in the spec do not align with those in the profile databaseAligned profile group names with those in the profile database
7982 Documentation updates/clarifications for MDIS Motor objectUpdated document to include a statement that the Start/Stop methods are required if Manual Operation is provided.
Note: Following Nodeset Issues were also addressed in this release
3928 Type of ProcessVariable MismatchThe nodeset was updated to correctly use AnalogItemType not MDISAnalogItemType
4425 MDISAggregateObjectType is not defined correctly in the nodesetfileCorrected Nodeset file to have correct types
4990 Fix spelling/Grammar problems in nodesetCorrect all indicated issue and review /corrected any other issues
8090 Add a third value to MotorOperationEnum, “Off_0”Updated sections "MDISMotorObjectType Definition", "Motor SetOperation Method" and "MotorOperationEnum"
7814 What is the error result when setting the CIMV position >100%Updated Choke Move method (Position argument) and CIMV SetManual method (Delta argument)
8309 Fix minimum version for OPC base specification to 1.03Updated Specification version