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. | |
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
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".
pid_data | Wskaźnik do struktury pid_struct reprezentującej regulator PID. |
setpoint | Zadana wartość, do której dąży system. |
process_variable | Rzeczywista wartość zmiennej procesowej (np. zmierzona prędkość). |
< Odpowiedź członu proporcjonalnego
< Odpowiedź członu całkującego
< Odpowiedź członu różniczkującego
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.
pid_data | Wskaźnik do struktury pid_struct reprezentującej regulator PID. |
< Inicjalizacja błędu z poprzedniego cyklu
< Inicjalizacja całkowitego błędu
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ń.
pid_data | Wskaźnik do struktury pid_struct reprezentującej regulator PID. |
< Zerowanie błędu z poprzedniego cyklu
< Zerowanie całkowitego błędu