Skip to content

Continuous P Controller ​

Proportional-only with integrating output (velocity form)

Overview ​

The Continuous P Controller implements proportional-only control with an integrating (accumulating) output. Also known as "velocity form" or "incremental" control, the output changes proportionally to error rather than being directly proportional. This is ideal for integrating processes like valve positioning.

When to Use ​

  • Integrating processes: Level, position, inventory
  • Self-regulating outputs: Valve positions
  • Noise immunity: When derivative causes issues
  • Simple tuning: Single gain parameter

Common Applications ​

ApplicationProcess TypeTypical Kp
Valve positioningIntegrating0.5-2.0
Level controlIntegrating0.1-1.0
Tank inventoryIntegrating0.2-0.8
Dosing adjustmentSelf-regulating0.5-1.5

Control Theory ​

Concept ​

Unlike standard P control where output is directly proportional to error, Continuous P changes output proportionally to error:

Standard P: $$output = K_p \cdot error$$

Continuous P (Velocity Form): $$\Delta output = K_p \cdot error \cdot \Delta t$$ $$output_k = output_{k-1} + \Delta output$$

Block Diagram ​

mermaid
graph LR
    SP[Setpoint] --> Sum((+/-))
    PV[Process Variable] --> Sum
    Sum -->|error| P[Kp × dt]
    P -->|Δoutput| Int[Integrator]
    Int --> Output[Output]
    Output --> Rate[Rate Limit]
    Rate --> MV[Manipulated Variable]

Mathematical Model ​

$$output_k = output_{k-1} + K_p \cdot e_k \cdot \Delta t$$

Subject to: $$rate_{min} \leq \frac{\Delta output}{\Delta t} \leq rate_{max}$$ $$output_{min} \leq output \leq output_{max}$$

Parameters ​

ParameterUnitRangeDefaultDescription
Setpointvaries--Target value
Kp-0.1-101.0Proportional gain
Rate Maxunits/day1-10010Maximum rate of change
Rate Minunits/day-100 to -1-10Minimum rate of change
Output Min%0-1000Minimum output
Output Max%0-100100Maximum output
Bias%0-10050Initial/center output
Action-direct/reversedirectControl direction

Tuning Guidelines ​

Gain Selection ​

  1. Start low: Begin with Kp = 0.5
  2. Increase gradually: Until response is adequate
  3. Watch for overshoot: Reduce if overshooting

Rate Limit Selection ​

  1. Equipment capability: Actuator speed limit
  2. Process dynamics: How fast process can respond
  3. Stability: Prevent output racing
ApplicationKpRate LimitBias
Valve position1.010%/hr50%
Level control0.520%/hr50%
Flow trim1.530%/hr0%

Configuration ​

Example: Valve Position Control ​

json
{
  "id": "valve-position-1",
  "type": "ContinuousP",
  "enabled": true,
  "targetNodeId": "control-valve-1",
  "pvNodeId": "flow-meter-1",
  "pvVariable": "flow",
  "manipulatedVariable": "position",
  "setpoint": 1000,
  "kp": 1.0,
  "rateLimit": {
    "maxRate": 10,
    "minRate": -10
  },
  "outputMin": 0,
  "outputMax": 100,
  "action": "direct",
  "bias": 50,
  "mode": "auto"
}

Integration Example ​

Flow Control via Valve Position ​

Scenario: Control flow by adjusting valve position

Error = Setpoint - Flow
        1000 - 900 = 100 m³/d (positive error)

Δposition = Kp × error × dt
          = 1.0 × 100 × (1/24) day
          = 4.2%

If previous position = 50%
New position = 50 + 4.2 = 54.2%

Rate check: 4.2% / (1/24 day) = 100%/day
If rate limit = 10%/day → limited to:
New position = 50 + 10 × (1/24) = 50.4%

Response Characteristics ​

Setpoint  1000 ──────────────────────────
                        ┌────────────────  Actual Flow
Flow       900 ─────────┘

Position   60% ─────────────────────────
                   ╭────────────────────  Valve Position
           50% ────╯                       (ramps up)

Time        0      1h      2h      3h

Comparison: Continuous P vs Standard PID ​

AspectContinuous PStandard PID
Integrating actionBuilt-inFrom Ki term
ComplexitySimpleMore complex
TuningOne parameterThree parameters
Noise sensitivityLowDepends on Kd
Best forIntegrating processesSelf-regulating processes

Why Use Continuous P? ​

  1. Natural for valves: Valve position is inherently integrating
  2. Simple tuning: Only Kp to adjust
  3. Smooth response: Rate limits prevent jumps
  4. Bumpless restart: Starts from last position

Best Practices ​

  1. Set appropriate bias

    • Center of operating range
    • Starting point after reset
  2. Rate limit for stability

    • Match actuator capabilities
    • Prevent process upsets
  3. Action direction

    • Direct: More output = more PV
    • Reverse: More output = less PV
  4. Monitor for drift

    • Check output over time
    • Ensure reaching setpoint

Troubleshooting ​

IssueCauseSolution
Output drifts continuouslyKp too highReduce Kp
Slow responseKp too lowIncrease Kp
Output races to limitRate limit too highReduce rate limit
Stuck at biasKp = 0 or disabledCheck configuration
Wrong directionAction incorrectToggle action

Advanced Features ​

Rate Limiting ​

Prevents rapid output changes:

typescript
const maxChange = maxRate * dt;
const minChange = minRate * dt;
outputChange = clamp(outputChange, minChange, maxChange);

Accumulated Output ​

Output accumulates over time:

typescript
accumulatedOutput += kp * error * dt;
output = clamp(accumulatedOutput + bias, outputMin, outputMax);

Manual Reset ​

Set output to specific value:

typescript
controller.setOutput(60); // Set valve to 60%

Mathematical Derivation ​

From PID to Velocity Form ​

Standard PID: $$u = K_p e + K_i \int e , dt + K_d \frac{de}{dt}$$

Velocity form (derivative of output): $$\frac{du}{dt} = K_p \frac{de}{dt} + K_i e + K_d \frac{d^2e}{dt^2}$$

For Continuous P (Ki = Kd = 0): $$\frac{du}{dt} = K_p \frac{de}{dt}$$

For constant setpoint: $$\frac{du}{dt} = -K_p \frac{dPV}{dt}$$

But we want response to error magnitude: $$\frac{du}{dt} = K_p \cdot e$$

This gives integrating behavior on position.

References ​

  1. Smith, C.L. "Digital Computer Process Control" (1972)
  2. Shinskey, F.G. "Process Control Systems" (4th Edition)
  3. Seborg, D.E. "Process Dynamics and Control" (4th Edition)