PI_controller

public class PI_controller implements Controller

Simple implementation of PI controller with output constraining and windup prevention.

Author:Marcel Stefko

Fields

I

protected double I

Integral component

P

protected double P

Proportional component

current_output

protected double current_output

Last calculated output of the controller

is_blocked

protected boolean is_blocked

Constructors

PI_controller

public PI_controller(double P, double I_per_second, double max_output, double sampling_period_s)

Initialize the PI controller.

Parameters:
  • P – proportional component
  • I_per_second – integral component (per second)
  • max_output – maximal output value
  • sampling_period_s – controller tick rate in seconds

Methods

block

public void block()

Temporarily stops the controller from taking in input, and forces output to be 0.

getCurrentOutput

public double getCurrentOutput()

getName

public String getName()

getSetpoint

public double getSetpoint()

getStatusPanel

public ControllerStatusPanel getStatusPanel()

nextValue

public double nextValue(double value)

setSetpoint

public void setSetpoint(double new_setpoint)

unblock

public void unblock()

Resets integral before unblocking the output