Znaleziono 11 wyników

autor: korinsj
08 gru 2008, 14:09
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

>Kolega pewnie gdzieś pracuje zawodowo. Kwotę, którą zarabia na godzinę, proszę pomnożyć przez ilość godzin spędzoną nad projektem i koszt zaraz się poprawi

Przecież nie pisałem o koszcie wykonania projektu - działającego prototypu (elektronika+oprogramowanie). Zacytowałem zdanie: "tanie podzespoly elektroniczne" i do tego zdania się odniosłem.

[ Dodano: 2008-12-09, 13:46 ]
Tutaj:

www.korinsj.com.pl/pub/regtest.exe

wrzuciłem nową wersję programu - symuluje pracę serwa DC sterowanego regulatorem P-PI(D).

Pole "Mnożnik" odpowiada za dokładność pomiaru prędkości. O ile uchyb położenia ma zawsze wartość całkowitą (pozycja zadana - pozycja enkodera), o tyle mnożnikiem można symulować precyzyjny pomiar prędkości.

Standardowo prędkość jest liczona jako różnica między odczytami enkodera przy kolejnych wejściach do obsługi PID. Ustawiając mnożnik np. na 10 powodujemy iż prędkość "mierzona" jest z dokładnością do jednej cyfry po przecinku.

Można porównać zachowanie się pętli regulacji gdy pomiar prędkości odbywa się nie na podstawie tylko różnicy odczyt enkodera, ale dokonując pomiaru np. szybkim timerem.
autor: korinsj
08 gru 2008, 06:51
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

> enkodery napewno nie 10000 na obrot

Zakładam zastosowanie enkoderów 250..1000 imp/obr (wymnożone następnie w sterowniku przez 4)

> czestotliwosci napewno nie 0.5Mhz

W tej chwili ARM zlicza bez problemu 500kHz. Pójdzie nawet na ponad 700kHz.

> dopuszczalne bledy w interpolacji np.0,05mm

To zależy od rozdzielczości enkodera i skoku śruby. Zapytam inaczej - ile przykładowo działek enkodera powinien wynosić max błąd?

>tanie podzespoly elektroniczne

Koszt mojego sterownika serwa DC to jakieś 50zł (bez mostka H).
autor: korinsj
05 gru 2008, 18:23
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

> A na dodatek wszystko sie pochrzani jak się zmieni kierunek obrotów.

Dokładnie. Przy zmianie kierunku mogę mieć dwa przypadki:

1. Jeżeli początek pomiaru robię na zboczu narastającym na kanale A a koniec pomiaru na zboczu opadającym kanału A to mogę mieć fałszywą dużą prędkość.
2. Jeżeli początek pomiaru robię przy dowolnym zboczu na kanale A a koniec przy dowolnym zboczu na kanale B to mogę mieć fałszywą mała prędkość.

Ale wydaje mi się że to kwestia obróbki programowej. W końcu znak szybkości (kierunek obrotów) i tak będę ustalał na podstawie różnicy położeń enkodera, więc mogę to jakoś ze sobą powiązać.

[ Dodano: 2008-12-05, 18:43 ]
W sumie to zmiana kierunku nie jest problemem. Sprawdziłem PDF do procka jakiego używam (ARM Atmela) i jeśli wystarczy mi wolnych komórek w CPLD to mogę tak mu wygenerować sygnały że "sam" odpowiedni pomierzy czas trwania impulsów niezależnie od zmiany kierunku.

[ Dodano: 2008-12-05, 19:36 ]
No to już wiem. Musiałbym jedną funkcję wyrzucić z CPLD i wrzucić ją do procka (tylko dwie instrukcje więcej w programie). Wtedy zyskam brakujące komórki w CPLD aby mierzyć precyzyjnie czas trwania impulsów. Ale wiąże się tą z przeróbką całej PCB i montaż nowego prototypu.

Narazie uruchomię całkowanie i zobaczę jak będzie silnik pracować z pełnym P-PI i programowym liczeniem szybkości.
autor: korinsj
05 gru 2008, 07:55
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

> ...aktualna predkosc (obroty) pobierana z tachometru lub czujnikow przyspieszenia...

To oczywiście u mnie odpada. Mam silniki tylko z enkoderami.

>...enkoder potrzebuje czasu na analize i jest zawsze spuzniony...

Tu nie problemem jest czas reakcji enkodera, ale jego rozdzielczość. Przy małej ilości imp/obrót różnica pomiędzy kolejnymi odczytami enkodera jest mocno skokowa. I jest tym gorzej im większa jest częstotliwość pracy PID a obroty silnika wolniejsze.

>...Aby sygnał wyjściowy z regulatora nie latał od -max do +max, rozdzielczość sygnałów mierzonych (np prędkości) musi być znacznie większa...

Dokładnie tak.

>...Inaczej różniczka głupieje i daje takie sygnały, co z kolei generuje potężne zakłócenia EMC ponieważ powstają silne udary prądowe. Wszystko szumi, trzeszczy i się zakłóca na wzajem...

Właśnie testuję P-PI, całkowanie narazie wyłączone, czyli mam P-P - działa super, ale fakt - silnik wydaje odgłosy jakby był zarzynany - drugie P (a więc różniczka) daje mu popalić. Na symulacji doszedłem nawet do regulacji 3-stanowej: -Uwymax, 0 +Uwymax i też działa :)

>...Współczesne serva AC nie używają już tacho tylko estymują prędkość z enkodera...

Też o tym myślałem. Silnik sterowany napięciowo to całkowanie z inercją, czyli k/s(1+sT). Więc kombinowałem aby zrobić jego symulację w procku tak jak robię pod windowsem. Obliczenie odpowiedzi przyrostowej dla położenia enkodera silnika wygląda tak:

ObjSum := ObjSum + ObjWe * (ObjK * Tp);
ObjWy := ObjWy + (ObjSum - ObjWyl) * (Tp / ObjT);

ObjK*Tp i Tp/ObjT to stałe, więc nie mam nigdzie dzielenia - jest do zrobienia w procku.

Czyli znam prędkość aktualną, wyjście PWM i mogę obliczyć prędkość jaka powinna być w następnym cyklu PIDa. Nie wiem czy akurat będzie to właściwe podejście do sprawy.

Mogę też symulować odpowiedź prędkościową (jeszcze prościej) bo to inercja k/(1+sT).

Narazie zrobię jeszcze parę kombinacji:
- ograniczenie i uruchomienie całkowania w P-PI,
- strukturę PI-P
- przeróbkę regulatora z pozycyjnego na prędkościowy
- zwiększenie rozdzielczości pomiaru prędkości obrotowej - nie jako różnica kolejnych odczytów enkodera, ale pomiar długości trwania impulsu poprzez sprzętowy timer procka.

Zegar będzie bramkowany przez jeden z kanałów enkodera i zliczany w liczniku. Licznik 16bit, "f" zegara do wyboru: 20MHz, 5MHz, 1250kHz, 312.5kHz.

Mogę w ten sposób zwiększyć dokładność (rozdzielczość) pomiaru prędkości obrotowej silnika, ale dopiero od szybkości przy której wystąpią oba zbocza na kanale enkodera w czasie jednego cyklu PID - nie mogę mierzyć długości impulsu który trwa dłużej niż kolejne obliczenie PIDa.

PIDa obliczam co 2kHz (okres 500us) dopiero od takiej częstotliwości impulsów z enkodera mogę mierzyć dokładnie ich czas trwania.

Zrobiłem trochę pomiarów:

Silnik 24V 140W
Enkoder 500 imp/obr
f PID 2kHz (500us)
f CLK 5MHz (0.2us)

PWM - wartość wyjścia PWM od 0(0%) do 2000(100%)
T - czas trwania poziomu wysokiego na kanale enkodera
K - prędkość wyliczona jako różnica kolejnych odczytów enkodera ("tradycyjnie")
N - prędkość zmierzona przez szybki licznik sprzętowy (sprzętowo)

1. PWM=0 T=oo K=0 N=65535
2. PWM=100 T=oo K=0 N=65535
3. PWM=200 T=oo K=0 N=65535
4. PWM=300 T=2ms K=0 N=10000
5. PWM=350 T=376us K=3 N=1880
6. PWM=400 T=216us K=5 N=1080
7. PWM=450 T=140us K=7 N=700
8. PWM=500 T=120us K=8 N=600
9. PWM=550 T=98us K=10 N=490
10. PWM=600 T=90us K=11 N=450
11. PWM=700 T=76us K=13 N=380
12. PWM=800 T=72us K=14 N=360
13. PWM=900 T=67us K=15 N=335
14. PWM=1000 T=64us K=16 N=320
15. PWM=1100 T=62us K=16 N=310
16. PWM=1200 T=61us K=16 N=305
17. PWM=1300 T=60us K=17 N=300
18. PWM=1400 T=59us K=17 N=295
19. PWM=1500 T=58us K=17 N=290
20. PWM=1600 T=57us K=18 N=285
21. PWM=1700 T=57us K=18 N=285
22. PWM=1800 T=56us K=18 N=280
23. PWM=1900 T=55us K=18 N=275
24. PWM=2000 T=54us K=19 N=270

Dokładność i dynamika sprzętowego pomiaru prędkości wydaje się być obiecująca.
autor: korinsj
04 gru 2008, 13:51
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

> Co do regulatora P_PI to będzie lepiej, ale jak chcecie wyznaczać prędkość aktualną? Macie prądniczkę tacho? Bo programowo z enkodera to nic z tego nie wyjdzie, a sprzętowy estymator jest bardzo skomplikowany.

Strzał w dziesiątkę :) Przy niskich obrotach silnik "chrobocze". Jest tym gorzej, im procedura PID jest częściej wykonywana i im mniejsza jest rozdzielczość enkodera.

Jeśli prędkość jest obliczana jako różnica kolejnych wartości z enkodera, to najgorzej sprawa wygląda jeśli prędkość obrotowa jest niewielka, a częstotliwość PID duża.

Kolejne odczyty dla prędkości np. 0,25 wyjdą takie: 1,0,0,0,1,0,0,0,...

Właśnie kombinuję co z tym zrobić.

Ale właśnie w ten sposób działa to:
http://elm-chan.org/works/smc/report_e.html

i UHU pewnie też.
autor: korinsj
04 gru 2008, 09:37
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

>wszystkie mają wyjścia PWM bez pomiaru prądu

Dokładnie tak. Ja też tak mam

Problemem jest sama struktura regulatora. Regulator PID bazujący tylko na uchybie położenia nie będzie działał.

> Autor ELM publikuje schemat blokowy i kod źródłowy - można coś przylookać.

Zerknąłem na rysunek ze strukturą regulatora - dokładnie to o czym pisałem - regulator P-PI :)

Zrobiłem symulację. Jest pięknie. Teraz przerabiam nieco elektronikę i wrzucam to do procka.
autor: korinsj
04 gru 2008, 05:46
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

> Empirycznie dla K=390, Ti=40 i Td=10,65 odpowiedź regulatora jes prawie bez przerzutu.

Powiem jedno - piękne nastawy!

> Myślę, że ograniczenie PWM +/- 1330 nie powinno być uwzględniane w symulacji.

Musi być, bo takie ograniczenie ma układ rzeczywisty. Zresztą mogę wrzucić te nastawy do sterownika i ściągnąć odpowiedź na skok i porównać go z odpowiedzią z symulacji.

>okaże się że zakres ograniczenia wyniesie +/-128 i reakcji prawie nie będzie.

Dokładnie TAK!. Symulacja działa poprawnie - jak układ rzeczywisty.

Ale chyba już wiem gdzie leży problem. Sterownik serwa DC ze strukturą: uchyb położenia => PID => wyjście PWM nigdy nie zadziała poprawnie w układzie rzeczywistym (ze względu na ograniczenie wyjścia). Porobiłem jeszcze sporo innych symulacji - tylko struktury: PI_P, P_PI, P_PID powinny działać poprawnie. Spróbuję dzisiaj załadować je w procek - powinno być OK!
autor: korinsj
03 gru 2008, 18:35
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

Wydaje mi się że jest OK. Aby całkowicie wyłączyć całkowanie można wpisać 0. Aby np. otrzymać aperiodyczne dojście do wartości zadanej można ustawić K=0.1 Ti=0 Td=0
autor: korinsj
03 gru 2008, 11:39
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

Zdjąłem charakterystykę.

Tym bardziej że to "typowa" transmitancja. Dla sterowania napięciowego i odczytu położenia z enkodera to obiekt astatyczny typu całka z inercją. Pochodna (czyli prędkość) to będzie obiekt inercyjny I-wszego rzędu. Dla sterowania prądowego to będzie podwójne całkowanie.

Silnik talerzowy (dyskowy), bez obciążenia, więc tarcie pomijalnie małe.
autor: korinsj
03 gru 2008, 05:20
Forum: Elektronika CNC
Temat: Sterownik serwa DC - szczegóły działania PIDa
Odpowiedzi: 42
Odsłony: 9766

Mam ograniczenie zarówno nasycenia całkowania jak i sygnału wyjściowego. I tu pies pogrzebany. Całkowanie nawet wyłączam.

Przykład: silnik sterowany napięciowo (PWM) to całkowanie z inercją o parametrach K=40 T=0,04s. Zakładam czas regulacji 0,01s, to Kp=390, Ki=0 (aby było łatwiej), Kd=12000! Krotki czas regulacji => duże Kp => duże Kd aby stłumić drgania od dużego Kp. Tylko że przy takich nastawach wartość wyjściowa od razu leci w kosmos. Wyjście PIDa oczywiście ograniczam do -1330..+1330 ale tym samym "psuję" działanie różniczki która chce stłumić drgania. No wiec wydłużam czas regulacji, zmniejsza mi się Kp i Kd, jest coraz lepiej, ale silnik robi się coraz bardziej miękki.

Nie wiem czy sterowanie z pętlami stabilizacji prądu, prędkości i pozycji załatwia ten problem choćby dlatego że silnik sterowany prądowo to całkiem inny obiekt (podwójne całkowanie).

[ Dodano: 2008-12-03, 08:17 ]
Ten program do symulacji wszystko wyjaśni:

www.korinsj.com.pl/pub/regtest.exe

Proszę nacisnąć "GO!". Potem ustawić ograniczenie sygnału wyjściowego (pomiędzy PID a obiektem) na 1330 (czyli dla mnie jest to max PWM - 100%) i znów nacisnąć "GO!".

Będzie widać o co chodzi.

Wróć do „Sterownik serwa DC - szczegóły działania PIDa”