46. Cable payout and kinematic control
The identification tag for this tutorial is PDS-ABH. Pregenerated input files for this tutorial are found in the folder named PDS-ABH in the provided tutorial input files.
46.1. Tutorial overview
This tutorial covers:
- DCable PID tension controller
- RigidBody Kinematic constraint

Fig. 46.1 Cable lay operation

Fig. 46.2 Cable payout layout
46.2. Setting up a barge RigidBody DObject
Note
- PID tension controller can be used to represent winch or heave compensation behavior in simulation in various environment conditions.
- Create a new project.
- Set water depth to 50 m.
46.2.1. Creating a barge
- Create a RigidBody that will act as a barge.
Note
- The barge dimensions are 25 m long, 10 m wide, and 1.5 m deep with a draft of 0.6 m.
- Create a cuboid feature called bargeHull and set the
$LengthX
to 25 m,$LengthY
to 10 m and$LengthZ
to 1.5 m. The other cuboid properties will be ignored as the kinematic flag will be set. - Add the instance of the barge to the RigidBody:
$Cuboid bargeHull 0 0 0 0 0 0
- Set the
$Kinematic
flag to 1.
Note
- The barge RigidBody will be set in kinematic mode to move at a constant velocity. In this mode, all external forces are ignored. Mass and moments of inertia can be set to arbitrary values.
- The kinematic flag enforces constant velocity based on the declared initial conditions. A velocity of 0 will enforce a constant position through the simulation.
- In order to get the correct draft and keep the barge stationary until the cable is correctly configured, set the barge state to a position of (0,0,-0.15) m and a velocity of (0,0,0) m/s.
46.2.2. Creating a subsea cable
- Create a new cable to represent a subsea cable.
Note
- The subsea cable will have one end fixed to the seabed and the other end connected to the barge.
- Set
$Node0Static
to 1 to pin the cable to the seabed. - Create a DCableSegment feature for the cable with the following material properties:
// Axial Rigidity
$AxialRigidityMode 0
$EA 1e9
// Fluid loading
$CDc 1.4
$CDt 0.01
$CAc 1.15
// Mechanical
$EI1 1.5e6
$EI2 1.5e6
$GJ 2e6
$Diameter 0.13
$Density 3000
$AxialDampingMode 1
$AxialReferenceDampingRatio 0.5
$BCID 1e1
$TCID 0
$CE 1
// Strain Limit
$ElongationLimitMode 0
- Create a connection between the node N and the barge. The connection should occur 0.5 m back from the stern of the barge and 0.5 m above the deck at a location in terms of the RigidBody local frame of (-12,0,-1.25).
Note
- As per the simulation schematic, the cables are 100 m away from the winch on the barge in the X,Y plane and 50 m deep in the Z direction.
- Set the cable state giving node 0 a position of (-112,0,50) m and node N (-12,0,-1.4) m.
Note
- Note this location is different from the connection location because the barge is located 0.15m in the -Z direction to account for the barge draft.
- Give the cable a 113 m length and set the number of cable segments to 15.
Note
- In order to begin the simulation with the correct amount of bottom tension, a pretension controller will be used similar to the Barge mooring tutorial.
- If the desired bottom tension is 10 kN, a simple calculation can be performed to determine the top tension in the cable for a water depth of 50 m.
- The gravitational force on the cable in the water will create a tension of 13 kN. Therefore, to obtain 10 kN at the seabed, the desired top tension will be approximately 23 kN.
- A
$NodeNPayoutMode
property in the cable input file, and set it to pretension mode. Resolve the follower properties and use a pretension set point of 23 kN. Use a payout speed of 0.5 m/s.
46.2.3. Generate pretensioned cables
Note
- Since there are many cable elements in the simulation the integration error tolerance can be increased to speed up the processing time.
- Set
$TruncationError 1e-3
in the integrator library feature. - Set the simulation length to 20 seconds.
- Run the simulation and view the results. The cable will reach steady state with the desired cable tension.
- In PST, select Export to create a new simulation with an initial state that is the final simulation state of the simulation that has just completed. Open the new project when prompted.
46.3. Initializing the PID tension controller
- In the newly created project, remove the
$NodeNPayoutMode
property (and its follower properties) from the cable input file. - To create a PID tension controller, add a new DCableTensionController DObject.
- Connect the tension controller to the cable using the tension controller as the master.
- In the connection properties, change the
$DCableFollowerNodeN
property to 1, as node N is the end of the cable at which the tension controller will act by rendering or recovering cable. - In the tension controller input file, set:
$TensionSetPoint 13000
. - Change the PID properties to have only proportional (P) gain. Set
$Ki
and$Kd
to 0. Set$Kp
to 1e3. Leave$MaxPayoutSpeed
at 0.5 m/s.
46.4. Setting barge forward speed
Note
- In order to move the barge at a constant velocity, the
$Kinematic
flag will be used.
- Ensure that the
$Kinematic
flag is still enabled in the barge input file. - To give the barge a constant velocity, set the barge state to have a position of (0,0,-0.15) m and a velocity of (0.25,0,0) m/s. The barge will now travel at a constant velocity of 0.25 m/s along the x direction, ignoring all external forces acting upon it.
- Run the simulation for 30 s and visualize the results.
- Plot the tensions at element 15 using the PostPDS plotting function.
46.5. Adding integral (I) tension control
Note
- Since only the P gain was used in the controller, significant noise is present. This could be mitigated by reducing the maximum payout speed. However, if the maximum payout speed is near the speed of the barge the controller may not be able to payout cable fast enough.
- The P controller is very useful for cable payout. However, whenever the cable length becomes long enough and a new cable element is created by inserting a node, the tension controller may strongly react to small fluctuations in tension. This can be avoided by adding a small amount of I gain.
- Set the
$Ki
property to 100. Note that too much I gain can cause severe overshoot and lag in the controller response. - Rerun the simulation and plot the tension to see the difference that the I gain makes.
Note
- The added I gain will reduce the amount of noise in the control system.
- PID controllers with D gain may cause instabilities due to the noise of the system. Caution should be used when adding D gain to a control system.