// Offshore & Marine

Holding a drillship still in a moving ocean.

No anchors. A dynamically positioned drillship hovers over a wellhead in thousands of feet of water, held on station by thrusters the control system re-commands four times a second as wind gusts, current pushes, and waves roll through. We've worked inside these systems: the control laws, the sensor fusion, and the power plant that keeps it all alive.

SENSE ESTIMATE CONTROL ALLOCATE POWER
// The control problem01

One loop. A full correction every quarter second.

Every cycle, the system estimates where the vessel truly is, decides what force would hold it there, and splits that force across the thrusters, while the power plant guarantees the electricity to deliver it.

wind feed-forward: counter the gust before the ship moves vessel motion: position · heading · velocity power limit phase-back SENSORS DGPS · gyro · wind + KALMAN FILTER separates drift from waves + PID force & moment + + ALLOCATION per-thruster · azimuth THRUSTERS the vessel POWER MANAGEMENT generators · switchboards · spinning reserve
// the DP control loop: click SENSORS · KALMAN FILTER · PID for the full technical model
// Inside the loop02

Four ideas keep the ship on the well.

Each one is decades-proven control engineering. Together they turn a hundred thousand tonnes of steel into something that holds position within meters.

Estimate: the Kalman filter

DGPS, acoustics, and gyros all disagree a little, and waves rock the ship several meters with every swell. A Kalman filter blends the sensors, weighs each by its measured noise, and separates true vessel drift from wave motion, so the thrusters correct real drift instead of fighting every wave.

x̂ += K · (z − x̂)

Control: the PID law

Proportional force pulls the ship back toward the setpoint. The integral term slowly learns the steady push of current and holds against it. The derivative smooths every approach. During heading changes the learned force is rotated with the ship, so the hold carries straight through the turn.

F = Kₚ·e + Kᵢ·∫e dt + Kₓ·ė

React first: wind feed-forward

Waiting for a gust to move the ship means you're already late. Anemometers plus an aerodynamic model of the hull and superstructure compute the wind force directly, and the thrusters counter it the moment it hits, before any position error has a chance to develop.

F_w = ½ρ v² Cₜ(θ) A

Allocate: one force, many thrusters

The control law asks for one thing: a surge force, a sway force, a yaw moment. Thrust allocation splits that demand across azimuth and tunnel thrusters (respecting each unit's limits, its azimuth slew rate, and the power actually available) and verifies the result by computing the force it will really produce.

[Fₓ Fᵣ Mₖ] → {Tᵢ, αᵢ}
// the estimation problem: measurement = drift + waves measurement z: what the sensors report wave motion: filtered out, never fought true drift x̂: the only motion PID corrects // the allocation problem: one demand, seven thrusters F: demanded force M: yaw moment Tᵢ, αᵢ: thrust & azimuth, solved per thruster, every cycle
// left: what the estimator keeps vs. discards · right: one demand becoming seven thrust vectors
// The power problem03

None of it works if the lights go out.

A DP vessel is diesel-electric: the thrusters, the drill floor, and the hotel all draw from the same generators. The power management system runs its own control problem: keep utilization healthy, never let demand outrun capacity, and if the plant ever does go dark, bring it back before the ship leaves the well.

Start before you need it

Percent utilization (online load over online capacity) drives everything. Hold above the demand setpoint too long and the next generator in priority starts and synchronizes automatically; priority itself is scored from alarms, capacity, and run-hour balancing. Cross the emergency threshold and the warm-up niceties are skipped.

util > 95% for 60 s → emergency start

Limit before you trip

Every big consumer gets a live upper power limit: its own filtered load plus a share of the spinning reserve, recomputed on a 100 ms scan. When reserve runs thin, drilling is phased back first (never below what it needs to secure the well), and thrust limits are phased back to the SCR drives individually, per thruster. DP is always cut last.

UPL = P_filt + c · SR

Recover before you drift

Blackout is detected two ways at once (dead-bus relay and bus voltage), so a bad sensor can't trigger a false recovery. Then a scripted sequence runs: staggered emergency starts so air pressure recovers between engines, breakers reclosed in a timed order, and thrusters handed back to the DP system exactly as they were before the lights went out.

¬dead_bus_ok ∧ V<4 kV → BOR
// engines 1–4 → bus A // engines 5–8 → bus B G1 G2 G3 G4 G5 G6 G7 G8 bus tie 4160 V · BUS A 4160 V · BUS B HOTEL 480 V (uncontrolled) DRILLING SCR drives SCR T1 SCR T2 SCR T3 thrusters 1–3 HOTEL 480 V (uncontrolled) DRILLING SCR drives SCR T4 SCR T5 SCR T6 SCR T7 thrusters 4–7 POWER MANAGEMENT utilization · UPL · blackout recovery kW · V · Hz breaker status start · sync · stop start · sync · stop DR UPL THR UPL DR UPL THR UPL: per-thruster phase-back
// the one-line: 8 engines → two 4160 V buses → hotel · drilling · thrusters; the PMS senses everything, starts what's needed, limits what isn't
// blackout recovery: one scripted sequence, 120-second master timer blackout confirmed dead-bus relay ∧ 0 V · two independent checks t = 0 emergency starts issued priority order · staggered 1.5 s for starting air generators online >4 kV · >56 Hz · breaker closed · wait for minimum count feeders reclose in order hotel 4160→480 V · drill · thrusters · ~15 s script thrusters back to DP same units in the solution as before master timer expires t = 120 s · recovery complete
// detect on two independent signals → restart staggered → reconnect scripted → hand the thrusters back
// The seam04

Two control systems. One conversation, every scan.

The hard part is the seam between the two. DP and power management negotiate continuously, over redundant paths, with a plan for every signal failing.

Vessel Control

Dynamic Positioning

Estimates vessel state, computes forces, allocates thrust, and shapes its demand to the power limit it's given. If the limit signal ever disagrees with its redundant twin, DP falls back to its own internal power-plant model and keeps station without missing a cycle.

power limit (kW, dual channel) per-thruster phase-back thruster load & status heartbeat, both networks
Plant Control

Power Management

Watches every breaker and generator, allocates spinning reserve between DP, drilling, and hotel loads, and enforces the limits that keep the plant from tripping. After a blackout, it rebuilds the bus and returns each thruster to DP control automatically.

control cycle ~0.25 s power-limit scan 100 ms I/O scan 40 ms controllers redundant, hot standby signal paths dual network + analog class notation DP-2 / DP-3
// Contact05

Have a control system that has to work the first time, and every time after?

Marine, offshore, or shoreside plant: tell us what you're holding steady, and we'll tell you how we'd approach it.

Start a conversation