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.
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 |
|||||
SetOperationMode |
||||||
References |
Node Class |
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 |
||||
SetFlowRate |
|||||
References |
Node Class |
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 |
||||
SetPosition |
|||||
References |
Node Class |
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 |
||||||
SetManual |
|||||||
References |
Node Class |
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 |
|||||
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 |
DataType |
TypeDefinition |
Other |
||
0:HasProperty |
Variable |
0:InputArguments |
0:Argument[] |
0:PropertyType |
M |
|
ConformanceUnits |
||||||
MDIS CIMV TotalFlow |