Harmony
HARMONic stabilitY assessment of PE-penetrated power systems
Loading...
Searching...
No Matches
ProportionalIntegralController Class Reference

PI controller with optional damping and bandwidth metadata. More...

#include <ProportionalIntegral_controller.h>

Inheritance diagram for ProportionalIntegralController:
Collaboration diagram for ProportionalIntegralController:

Public Member Functions

 ProportionalIntegralController (const std::string &symbol, const std::vector< double > &value, int number_signals, std::vector< double > refs={ 0 })
 Construct a PI controller.
 
void updateParameters (double newKp, double newKi, double newZeta, double newBandwidth)
 Replace Kp, Ki, damping ratio, and bandwidth.
 
virtual Eigen::VectorXd define_equations (const Eigen::VectorXd &x, const Eigen::VectorXd &u, const Eigen::VectorXd &c) override
 Vector PI-controller dynamics.
 
virtual Eigen::VectorXd define_equations (const double x, const double u, const double c) override
 Scalar PI-controller dynamics.
 
virtual void printValues () override
 Print controller type, gains, damping, bandwidth, and references.
 
double getKp () const
 Return the proportional gain Kp.
 
double getKi () const
 Return the integral gain Ki.
 
double getZeta () const
 Return the damping ratio.
 
double getBandwidth () const
 Return the bandwidth (Hz).
 
virtual vector< double > getParameters () const override
 Return { Kp, Ki, zeta, bandwidth }.
 
virtual void setParameters (const vector< double > &params) override
 Set parameters from { Kp, Ki, zeta, bandwidth }.
 
- Public Member Functions inherited from Controller
 Controller (const std::string &symbol, const vector< double > &value, int number_signals, std::vector< double > refs={ 0 })
 Construct a controller with reference setpoints.
 
void setReference (const std::vector< double > &ref)
 Replace all reference setpoints.
 
void setReference (const double ref, int i)
 Set one reference channel.
 
std::vector< double > getReference () const
 Return a copy of the current reference vector.
 
std::string getControllerSymbol () const
 Return the controller symbol/name.
 
int getNumberOfSignals () const
 Return the number of control channels.
 
virtual ~Controller ()=default
 

Additional Inherited Members

- Protected Attributes inherited from Controller
std::string controller_symbol
 
bool active = false
 
std::vector< double > reference
 

Detailed Description

PI controller with optional damping and bandwidth metadata.

Output per channel: Kp * error + Ki * integrator_state + c.

Constructor & Destructor Documentation

◆ ProportionalIntegralController()

ProportionalIntegralController::ProportionalIntegralController ( const std::string &  symbol,
const std::vector< double > &  value,
int  number_signals,
std::vector< double >  refs = { 0 } 
)
inline

Construct a PI controller.

Parameters
symbolController symbol/name.
valueGain vector containing Kp and Ki (exactly two elements).
number_signalsNumber of control channels.
refsReference values per channel (default zero).

Member Function Documentation

◆ define_equations() [1/2]

Eigen::VectorXd ProportionalIntegralController::define_equations ( const double  x,
const double  u,
const double  c 
)
overridevirtual

Scalar PI-controller dynamics.

Defines the differential equations for a scalar PI controller.

Parameters
xIntegrator state.
uMeasured input value.
cFeed-forward output value.
Returns
Vector containing state derivative and controller output.

This function computes the error between the reference and input, updates the integrator state, and calculates the PI controller output. The returned vector contains the state derivative and controller output.

Parameters
xIntegrator state (scalar).
uInput (measured) value.
cConstant/reference output signal.
Returns
Eigen::VectorXd Vector containing state derivative and controller output.

Reimplemented from Controller.

References Controller::reference.

◆ define_equations() [2/2]

Eigen::VectorXd ProportionalIntegralController::define_equations ( const Eigen::VectorXd &  x,
const Eigen::VectorXd &  u,
const Eigen::VectorXd &  c 
)
overridevirtual

Vector PI-controller dynamics.

Defines the differential equations for a vector PI controller.

Parameters
xIntegrator state vector.
uMeasured input vector.
cFeed-forward output vector.
Returns
Concatenated state derivatives and controller outputs.

This function computes the error between the reference and input, updates the integrator state, and calculates the PI controller output for each channel. The returned vector concatenates the state derivatives and controller outputs.

Parameters
xIntegrator state vector.
uInput (measured) vector.
cConstant/reference output signal vector.
Returns
Eigen::VectorXd Concatenated vector of state derivatives and controller outputs.

Reimplemented from Controller.

References Controller::reference.

◆ getBandwidth()

double ProportionalIntegralController::getBandwidth ( ) const
inline

Return the bandwidth (Hz).

◆ getKi()

double ProportionalIntegralController::getKi ( ) const
inline

Return the integral gain Ki.

◆ getKp()

double ProportionalIntegralController::getKp ( ) const
inline

Return the proportional gain Kp.

◆ getParameters()

virtual vector< double > ProportionalIntegralController::getParameters ( ) const
inlineoverridevirtual

Return { Kp, Ki, zeta, bandwidth }.

Reimplemented from Controller.

◆ getZeta()

double ProportionalIntegralController::getZeta ( ) const
inline

Return the damping ratio.

◆ printValues()

virtual void ProportionalIntegralController::printValues ( )
inlineoverridevirtual

Print controller type, gains, damping, bandwidth, and references.

Reimplemented from Controller.

References Controller::reference.

◆ setParameters()

virtual void ProportionalIntegralController::setParameters ( const vector< double > &  params)
inlineoverridevirtual

Set parameters from { Kp, Ki, zeta, bandwidth }.

Parameters
paramsFour-element parameter vector.

Reimplemented from Controller.

◆ updateParameters()

void ProportionalIntegralController::updateParameters ( double  newKp,
double  newKi,
double  newZeta,
double  newBandwidth 
)

Replace Kp, Ki, damping ratio, and bandwidth.

Update controller parameters (if dynamic change is needed).

Parameters
newKpNew proportional gain.
newKiNew integral gain.
newZetaNew damping ratio.
newBandwidthNew bandwidth (Hz).

The documentation for this class was generated from the following files: