PI-Controller#
Toolbox for a standard PI-Controller in either parallel or ideal form. The transfer function of the parallel implementation is:
Whilst the transfer function of the ideal implementation is:
It has a configurable output limitation with internal clamping to prevent the integrator from rising further if the output limitation is active. An input port for an external clamping signal is available as well.
Setup#
Configuration#
-
enum uz_PI_Controller_select#
enum for readable configuring for the selection of PI-Controller structure
Values:
-
enumerator parallel#
-
enumerator ideal#
-
enumerator parallel#
-
struct uz_PI_Controller_config#
Configuration struct for PI-Controller. Pass to init function. Accessible by the user.
Public Members
-
enum uz_PI_Controller_select type#
Selection for parallel or ideal PI-Controller
-
float Kp#
Proportional gain for PI-Controller. Must be greater or equal than 0.0f
-
float Ki#
Integral gain for PI-Controller. Must be greater or equal than 0.0f
-
float samplingTime_sec#
SamplingTime of the PI-Controller in seconds. Must be greater than 0.0f
-
float upper_limit#
Upper limit for the output limitation. Must be greater than lower limit
-
float lower_limit#
Lower limit for the output limitation
-
enum uz_PI_Controller_select type#
Example#
1#include "uz/uz_piController/uz_piController.h"
2int main(void) {
3 struct uz_PI_Controller_config config = {
4 .type = parallel,
5 .Kp = 10.0f,
6 .Ki = 10.0f,
7 .samplingTime_sec = 0.00005f,
8 .upper_limit = 10.0f,
9 .lower_limit = -10.0f
10 };
11}
Description#
With this config struct one can customize the PI-Controller variables. It has to be initialized before the init-function is called.
Init function#
-
typedef struct uz_PI_Controller uz_PI_Controller#
Object definition for generating a PI-Controller.
-
uz_PI_Controller *uz_PI_Controller_init(struct uz_PI_Controller_config config)#
Initialization of the PI-Controller object.
- Parameters:
config – uz_PI_Controller_config configuration struct
- Returns:
Pointer to uz_PI_Controller instance
Example#
1int main(void) {
2 uz_PI_Controller *PI_instance = uz_PI_Controller_init(config);
3}
Description#
Allocates the memory for the PI-Controller instance and asserts the input values of the configuration struct.
Reset#
-
void uz_PI_Controller_reset(uz_PI_Controller *self)#
Resets the PI-Controller.
- Parameters:
self – uz_PI_Controller instance
Example#
1int main(void) {
2 uz_PI_Controller_reset(PI_instance);
3}
Description#
Resets the PI-Controller. The initial condition for the integrator after the reset is 0.0f.