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.

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.

image022.png

Figure 18 – MDISCIMVObjectType Overview

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

BrowseName

MDISCIMVObjectType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the MDISBaseObjectType (define in 6.2.2)

0:HasComponent

Variable

OperationMode

CIMVOperationModeEnum

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

FlowRate

0:Float

0:AnalogItemType

M, RO

0:HasComponent

Variable

TargetFlowRate

0:Float

0:AnalogItemType

M, RO

0:HasComponent

Variable

TotalFlow

0:Float

0:AnalogItemType

O, RO

0:HasComponent

Method

ResetTotalFlow

See 6.9.9

O

0:HasComponent

Variable

Position

0:Float

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

TargetPosition

0:Float

0:BaseDataVariableType

M, RO

0:HasComponent

Variable

Moving

CIMVMoveEnum

0:BaseDataVariableType

M, RO

0:HasComponent

Object

TotalMotorRuntime

MDISCounterObjectType

O, RO

0:HasComponent

Object

MotorOperationsCount

MDISCounterObjectType

O, RO

0:HasComponent

Variable

DeviceCurrent

0:Float

0:AnalogItemType

O, RO

0:HasComponent

Variable

InletPressure

0:Float

0:AnalogItemType

O, RO

0:HasComponent

Variable

InternalPressure

0:Float

0:AnalogItemType

O, RO

0:HasComponent

Variable

OutletPressure

0:Float

0:AnalogItemType

O, RO

0:HasComponent

Variable

CommandRejected

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Method

SetOperationMode

See 6.9.4

M

0:HasComponent

Method

SetFlowRate

See 6.9.5

M

0:HasComponent

Method

SetPosition

See 6.9.6

M

0:HasComponent

Method

SetManual

See 6.9.7

O

0:HasComponent

Method

Abort

See 6.9.8

M

0:HasComponent

Variable

NonDefeatableOpenInterlock

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

NonDefeatableCloseInterlock

0:Boolean

0:BaseDataVariableType

O, RO

0:HasComponent

Variable

NonDefeatableCommandInProgressInterlock

0:Boolean

0:BaseDataVariableType

O, RO

HasInterlock

Variable

<InterlockPlaceholder>

0:Boolean

InterlockVariableType

OP, 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

TotalMotorRuntime

0:HasComponent

Variable

Count

0:Duration

0:BaseDataVariableType

M

TotalMotorRuntime

0:HasComponent

Method

SetCount

M

MotorOperationsCount

0:HasComponent

Variable

Count

0:UInt32

0:BaseDataVariableType

M

MotorOperationsCount

0:HasComponent

Method

SetCount

M

FlowRate

0:HasProperty

Variable

0:EngineeringUnits

0:EUInformation

0:PropertyType

M

TargetFlowRate

0:HasProperty

Variable

0:EngineeringUnits

0:EUInformation

0:PropertyType

M

TotalFlow

0:HasProperty

Variable

0:EngineeringUnits

0:EUInformation

0:PropertyType

M

DeviceCurrent

0:HasProperty

Variable

0:EngineeringUnits

0:EUInformation

0:PropertyType

M

InletPressure

0:HasProperty

Variable

0:EngineeringUnits

0:EUInformation

0:PropertyType

M

InternalPressure

0:HasProperty

Variable

0:EngineeringUnits

0:EUInformation

0:PropertyType

M

OutletPressure

0:HasProperty

Variable

0:EngineeringUnits

0:EUInformation

0:PropertyType

M

 

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

FailedToMove

0

The CIMV failed to move in response to a command.

CommunicationFault

1

Not 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

SideAProblem

0

There is an issue with the A side of the valve

SideBProblem

1

There is an issue with the B side of the valve.

PositionDiscrepancy

2

The valve position has a discrepancy (Side A and Side B are different and neither is broken)

UncommandedChange

3

Position of valve changed without an authorized move

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

Mode

Enumeration indicating the requested operation mode

SEM

The selection of which SEM to send the command to

ShutdownRequest

Boolean 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:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

ConformanceUnits

MDIS CIMV Base

SetFlowRate Method is used to set a target flow rate.

Signature

SetFlowRate (

[in] 0:Float FlowRate,

[in] SEMEnum SEM,

[in] 0:BooleanShutdownRequest);

Table 62 – SetFlowRate Method Arguments

Argument

Description

FlowRate

Target flow rate. The CIMV will automatically maintain this target flow

SEM

The selection of which SEM to send the command to

ShutdownRequest

Boolean 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:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

ConformanceUnits

MDIS CIMV Base

SetPosition Method is used to set a target position.

Signature

SetPosition (

[in] 0:Float Position,

[in] SEMEnum SEM

[in] 0:BooleanShutdownRequest);

Table 64 – SetPosition Method Arguments

Argument

Description

Position

Target position as percent of open. The CIMV will automatically maintain this position

SEM

The selection of which SEM to send the command to

ShutdownRequest

Boolean 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:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

ConformanceUnits

MDIS CIMV Base

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

Direction

Direction to move – Open or Close

Delta

A 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%)

SEM

The selection of which SEM to send the command to

ShutdownRequest

Boolean 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:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

ConformanceUnits

MDIS CIMV SetManual

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

ResetTotalFlow Method is used to reset the TotalFlow counter.

Signature:

ResetTotalFlow (

[in] 0:Float Initial);

Table 69 – ResetTotalFlow Method Arguments

Argument

Description

Initial

The 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

BrowseName

ResetTotalFlow

References

Node Class

BrowseName

DataType

TypeDefinition

Other

0:HasProperty

Variable

0:InputArguments

0:Argument[]

0:PropertyType

M

ConformanceUnits

MDIS CIMV TotalFlow