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.

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.

image016.gif

Figure 14 - MDISChokeObjectType

Table 20 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 20 - MDISChokeObjectType

Attribute

Value

BrowseName

MDISChokeObjectType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

RW

Subtype of the MDISBaseObjectType

HasComponent

Variable

CalculatedPosition

Float

BaseDataVariableType

Mandatory

R

HasComponent

Variable

SetCalculatedPositionStatus

SetCalculatedPositionEnum

BaseDataVariableType

Optional

R

HasComponent

Variable

PositionInSteps

Int16

BaseDataVariableType

Optional

R

HasComponent

Variable

Moving

ChokeMoveEnum

BaseDataVariableType

Mandatory

R

HasComponent

Variable

CommandRejected

Boolean

BaseDataVariableType

Optional

R

HasComponent

Method

Move

See 5.6.4

Mandatory

HasComponent

Method

Step

See 5.6.5

Optional

HasComponent

Method

Abort

See 5.6.6

Mandatory

HasComponent

Method

SetCalculatedPosition

See 5.6.7

Mandatory

HasComponent

Variable

NonDefeatableOpenInterlock

Boolean

BaseDataVariableType

Optional

R

HasComponent

Variable

DefeatableOpenInterlock

Boolean

BaseDataVariableType

Optional

R

HasComponent

Variable

NonDefeatableCloseInterlock

Boolean

BaseDataVariableType

Optional

R

HasComponent

Variable

DefeatableCloseInterlock

Boolean

BaseDataVariableType

Optional

R

HasProperty

Variable

StepDurationOpen

Duration

PropertyType

Optional

R

HasProperty

Variable

StepDurationClose

Duration

PropertyType

Optional

R

HasProperty

Variable

TotalSteps

UInt16

PropertyType

Optional

R

HasInterlock

Variable

<InterlockPlaceholder>

InterlockVariableType

OptionalPlaceholder

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. If it is disabled (FALSE) then the choke will not act on any Move command, Step Command or SetCalculatedPosition Command and is not available from a functional point of view. The choke will still report any status information.

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.

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

Method Declaration:

Move(

[in] Position Float,

[in] OverrideInterlocks Boolean,

[in] SEM SEMEnum

);

Table 21 – Choke Move Method Arguments

Argument

Description

Position

A number (in percent) indicating the percent open to be moved to when operated.

OverrideInterlocks

Boolean indicating if the open or close command should override any defeatable interlocks

SEM

The selection of which SEM to send the command to.

Method result codes are defined as part of the Call Service (see OPC UA Services Part 4 – Services specification). They are described in Table 94 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. 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 22 specifies the AddressSpace representation for the ChokeMoveMethod.

Table 22 – Choke Move Method AddressSpace Definition

Attribute

Value

BrowseName

Move

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

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

Method Signature:

Step(

[in] Direction ChokeCommandEnum,

[in] Steps UInt16,

[in] OverrideInterlocks Boolean,

[in] SEM SEMEnum

);

Table 23 – Choke Step Method Arguments

Argument

Description

Direction

Enumeration to indicate if an open request or close request is being initiated

Steps

The number of steps to either open or close the choke

OverrideInterlocks

Boolean indicating if the open or close command should override any defeatable interlocks

SEM

The selection of which SEM to send the command to.

Method result codes are defined as part of the Call Service (see OPC UA Services Part 4 – Services specification). They are described in Table 94 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 24 specifies the AddressSpace representation for the ChokeStepMethod.

Table 24 – Choke Step Method AddressSpace Definition

Attribute

Value

BrowseName

Step

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

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

Method Signature

Abort ();

Method result codes are defined as part of the Call Service (see OPC UA Services Part 4 – Services specification). They are described in Table 94 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 25 specifies the AddressSpace representation for the choke Abort Method.

Table 25 – Choke Abort Method AddressSpace Definition

Attribute

Value

BrowseName

Abort

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

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

Method Signature:

SetCalculatedPosition(

[in] CalculatedPosition Float

);

Table 26 – Choke SetCalculatedPosition Method Arguments

Argument

Description

CalculatedPosition

A number (in percent)

Method result codes are defined as part of the Call Service (see OPC UA Services Part 4 – Services specification). They are described in Table 94 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 SetCalculatedPostionStatus to determine if an error occurred or the command completed. The SetCalculatedPositionStatus will reset on the next successful SetCalculatedPostion Method invocation.

Table 27 specifies the AddressSpace representation for the SetCalculatedPosition Method.

Table 27 – Choke SetCalculatedPosition Method AddressSpace Definition

Attribute

Value

BrowseName

SetCalculatedPosition

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory