Skip to content

File syn_pid.c

FileList > control > syn_pid.c

Go to the source code of this file

PID controller implementation.

  • #include "../common/syn_defs.h"
  • #include "../util/syn_assert.h"
  • #include "syn_pid.h"
  • #include <string.h>

Public Functions

Type Name
void syn_pid_init (SYN_PID * pid, const SYN_PID_Config * cfg)
Initialize PID controller.
void syn_pid_reset (SYN_PID * pid)
Reset integral and derivative state.
void syn_pid_set_gains (SYN_PID * pid, int32_t kp, int32_t ki, int32_t kd)
Update gains at runtime.
void syn_pid_set_limits (SYN_PID * pid, int32_t out_min, int32_t out_max)
Set output clamping limits.
int32_t syn_pid_update (SYN_PID * pid, int32_t setpoint, int32_t measured, uint32_t dt_ms)
Compute one PID update step.

Public Functions Documentation

function syn_pid_init

Initialize PID controller.

void syn_pid_init (
    SYN_PID * pid,
    const SYN_PID_Config * cfg
) 

If integral_max is 0, it is auto-computed from ki, scale, and out_max to allow full integral authority without windup.

Parameters:

  • pid PID instance.
  • cfg Configuration (copied internally).

function syn_pid_reset

Reset integral and derivative state.

void syn_pid_reset (
    SYN_PID * pid
) 

Parameters:

  • pid PID instance.

function syn_pid_set_gains

Update gains at runtime.

void syn_pid_set_gains (
    SYN_PID * pid,
    int32_t kp,
    int32_t ki,
    int32_t kd
) 

Parameters:

  • pid PID instance.
  • kp Proportional gain.
  • ki Integral gain.
  • kd Derivative gain.

function syn_pid_set_limits

Set output clamping limits.

void syn_pid_set_limits (
    SYN_PID * pid,
    int32_t out_min,
    int32_t out_max
) 

Parameters:

  • pid PID instance.
  • out_min Minimum output.
  • out_max Maximum output.

function syn_pid_update

Compute one PID update step.

int32_t syn_pid_update (
    SYN_PID * pid,
    int32_t setpoint,
    int32_t measured,
    uint32_t dt_ms
) 

Parameters:

  • pid PID instance.
  • setpoint Desired value.
  • measured Actual measured value.
  • dt_ms Time since last update in milliseconds. (0 is treated as 1 to avoid division by zero.)

Returns:

Clamped output value.



The documentation for this class was generated from the following file src/syntropic/control/syn_pid.c