-
Data: 2010-05-10 21:29:11
Temat: Algorytm regulatora PID
Od: "roxy" <k...@o...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Znalazlem na stronie Atmel'a fragment programu realizujacy regulator PID dla
uC.
Czy w linii 93 nie ma aby bledu?
Wedlug mnie powinna ona wygladac raczej tak
d_term = pid_st->D_Factor * (processValue - pid_st->lastProcessValue);
czy ktos moze potwierdzic poprawnosc ktores z wersji?
00060 {
00061 int16_t error, p_term, d_term;
00062 int32_t i_term, ret, temp;
00063
00064 error = setPoint - processValue;
00065
00066 // Calculate Pterm and limit error overflow
00067 if (error > pid_st->maxError){
00068 p_term = MAX_INT;
00069 }
00070 else if (error < -pid_st->maxError){
00071 p_term = -MAX_INT;
00072 }
00073 else{
00074 p_term = pid_st->P_Factor * error;
00075 }
00076
00077 // Calculate Iterm and limit integral runaway
00078 temp = pid_st->sumError + error;
00079 if(temp > pid_st->maxSumError){
00080 i_term = MAX_I_TERM;
00081 pid_st->sumError = pid_st->maxSumError;
00082 }
00083 else if(temp < -pid_st->maxSumError){
00084 i_term = -MAX_I_TERM;
00085 pid_st->sumError = -pid_st->maxSumError;
00086 }
00087 else{
00088 pid_st->sumError = temp;
00089 i_term = pid_st->I_Factor * pid_st->sumError;
00090 }
00091
00092 // Calculate Dterm
00093 d_term = pid_st->D_Factor * (pid_st->lastProcessValue -
processValue);
00094
00095 pid_st->lastProcessValue = processValue;
00096
00097 ret = (p_term + i_term + d_term) / SCALING_FACTOR;
00098 if(ret > MAX_INT){
00099 ret = MAX_INT;
00100 }
00101 else if(ret < -MAX_INT){
00102 ret = -MAX_INT;
00103 }
00104
00105 return((int16_t)ret);
00106 }
__________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow
5103 (20100510) __________
Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.
http://www.eset.pl lub http://www.eset.com
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- RS-485 ale automatycznie dwukierunkowy
- Leżakujące SSD gubią po roku dane
- kolorowy e-paper
- Sterownik kotła CO praca PWM
- Jakie baterie A23 i LR44?
- OLED SSD1306 - degradacja?
- Który symulator AVR jest ,,prawilny"?
- Disk on Module, czym to odczytać?
- Pasta ochronna? Lutownicza?
- zagadka pneumatyczna
- Klip testowy, jak sie to używa
- Jak sie smazy elektronike z odleglosci kilkuset metrów?
- William Shockley, co-inventor of the transistor
- Gazowy kocioł CO regulacja cyklingu i regulacja pogodowa
Najnowsze wątki
- 2025-12-04 male zaginiecie
- 2025-12-04 Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- 2025-12-04 Gównoburza bo "odsiedział" nieprawomocny wyrok w areszcie i zwiał z Polski po zwolnieniu z aresztu
- 2025-12-04 Warszawa => Project Manager (AI and innovation) <=
- 2025-12-04 Warszawa => Project Manager (AI and innovation) <=
- 2025-12-04 wetomat.pl
- 2025-12-04 Re: Mein Kampf
- 2025-12-04 Rosja "ludobójczych terrorystów" w Senacie USA [deportacje dzieci ludobójczym sponsorowaniem terroryzmu]
- 2025-12-03 RS-485 ale automatycznie dwukierunkowy
- 2025-12-03 Taką elektromobilność należy promować i wspomagać
- 2025-12-03 Rzeszów => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2025-12-03 Warszawa => Systems & Network Engineer <=
- 2025-12-03 Warszawa => Inżynier Systemów i Sieci <=
- 2025-12-03 Obstrukcja Tuska nie uratowała Komunistycznej Partii Polski przed delegalizacją przez TK
- 2025-12-03 Warszawa => Key Account Manager (Usługi HR) <=




Ile kosztują tanie mieszkania w polskich metropoliach?