PID regulator v 1.0
 
Loading...
Searching...
No Matches
pid_controller.c File Reference

Implementacja algorytmu PID do sterowania prędkością silnika. Zawiera funkcje inicjalizacji, resetowania stanu regulatora oraz obliczania wartości sterującej na podstawie uchybu (różnicy między wartością zadaną a rzeczywistą). More...

#include <pid_controller.h>

Functions

void pid_init (pid_struct *pid_data)
 Inicjalizuje struktury PID.
 
void pid_reset (pid_struct *pid_data)
 Resetuje stan regulatora PID.
 
int pid_calculate (pid_struct *pid_data, int setpoint, int process_variable)
 Oblicza wartość sterującą regulatora PID.
 

Detailed Description

Implementacja algorytmu PID do sterowania prędkością silnika. Zawiera funkcje inicjalizacji, resetowania stanu regulatora oraz obliczania wartości sterującej na podstawie uchybu (różnicy między wartością zadaną a rzeczywistą).

Created on: Jan 15, 2025 Author: Igor

Function Documentation

◆ pid_calculate()

int pid_calculate ( pid_struct * pid_data,
int setpoint,
int process_variable )

Oblicza wartość sterującą regulatora PID.

Oblicza wartość sterującą na podstawie algorytmu PID.

Funkcja oblicza odpowiedź regulatora PID na podstawie uchybu, czyli różnicy między zadanym punktem (setpoint) a zmienną procesową (process_variable). Wykonywane są obliczenia dla członu proporcjonalnego, całkującego oraz różniczkującego, a następnie sumowanie wyników tych członów. Dodatkowo stosowane są ograniczenia na sumę błędów oraz człon całkujący, aby zapobiec efektowi "windup".

Parameters
pid_dataWskaźnik do struktury pid_struct reprezentującej regulator PID.
setpointZadana wartość, do której dąży system.
process_variableRzeczywista wartość zmiennej procesowej (np. zmierzona prędkość).
Returns
Wartość sterująca, która ma być zastosowana w systemie (np. wartość PWM).

< Odpowiedź członu proporcjonalnego

< Odpowiedź członu całkującego

< Odpowiedź członu różniczkującego

Here is the caller graph for this function:

◆ pid_init()

void pid_init ( pid_struct * pid_data)

Inicjalizuje struktury PID.

Inicjalizuje dane struktury PID.

Funkcja ustawia początkowe wartości parametrów PID, w tym współczynniki Kp, Ki, Kd, ograniczenie dla sumy błędów (total_error) oraz ograniczenie dla członu całkującego (anti_windup_limit). Inicjalizuje również zmienne przechowujące błąd z poprzedniego cyklu oraz całkowity błąd.

Parameters
pid_dataWskaźnik do struktury pid_struct reprezentującej regulator PID.

< Inicjalizacja błędu z poprzedniego cyklu

< Inicjalizacja całkowitego błędu

Here is the caller graph for this function:

◆ pid_reset()

void pid_reset ( pid_struct * pid_data)

Resetuje stan regulatora PID.

Resetuje dane regulatora PID.

Funkcja zeruje błędy, zarówno bieżący, jak i całkowity, przygotowując regulator do nowego cyklu obliczeń.

Parameters
pid_dataWskaźnik do struktury pid_struct reprezentującej regulator PID.

< Zerowanie błędu z poprzedniego cyklu

< Zerowanie całkowitego błędu

Here is the caller graph for this function: