RTV forum PL | NewsGroups PL

Możliwość wdrożenia algorytmu PID na prostym CPLD - czy wystarczy zasobów?

Czy można zrealizować prosty algorytm PID w prostym CPLD np:

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Możliwość wdrożenia algorytmu PID na prostym CPLD - czy wystarczy zasobów?

Goto page Previous  1, 2

Grzegorz Kurczyk
Guest

Fri Dec 04, 2009 10:45 pm   



Użytkownik Artur Miller napisał:
Quote:
i miesiąc siedzenia nad softem, ktoremu czasem zdarzy sie pojsc w maliny i
dźwig wjedzie w sciane Wink albo winda do nieba pojedzie Wink

To się może zdarzyć również na fabrycznych "sprawdzonych" serwonapędach.
Niedawno naprawiałem sterowniki ServoStar-a. Sterownik "fullwypas"
procek 32bit, FPGA i mnóstwo innych kwadratowych scalaków z setkami
nóżek, a taki prozaiczny wyschnięty elektrolit z zasilaniu spowodował,
że gdyby nie krańcówki bezpieczeństwa odcinające zasilanie, to wrzeciono
maszyny wjechałoby przez ścianę do drugiego pokoju :-)

Pozdrawiam
Grzegorz

Grzegorz Kurczyk
Guest

Fri Dec 04, 2009 10:56 pm   



Użytkownik Szumek napisał:
Quote:
Pozdrawiam

Witam ponownie
już liczyłem to co kolega pisze
mam enkodery już sprzęgnięte fabrycznie z servem mam takie co maja 250 imp
/obr
ale mam i takie co mają 2500 i 5000 i tu zaczynają się schody AVR już się
nie wyrobi
oprócz obsługi enkodera powinno byc miejsce na prosty PID
i tak sobie kombinuje co by tu mądrego wymyslić


Ale czy aż taka rozdzielczość jest Koledze potrzebna ?! 5000imp/obr to
0,072 stopnia. A jakie obroty ? W ostateczności można do obsługi
enkodera zaprząc liczniki w AVRku.
Korzystając z zewnętrznego licznika enkodera na jakimś CPLD trzeba jakoś
ten stan licznika zczytać do procesora. Jeśli pojemność licznika ma mieć
np. 32bity to musisz w CPLD zaszyć jakiś rejestr buforowy coby na czas
transmisji zatrzasnąć bieżący stan licznika. Inaczej gdy w podczas
przesyłania danych z CPLD do uC przyjdzie impuls z enkodera (co przy
takiej rozdzielczości jest wysoce prawdopodobne) to uC może odczytać
niezłą kaszankę.

Pozdrawiam
Grzegorz

Artur Miller
Guest

Fri Dec 04, 2009 11:21 pm   



Użytkownik "Grzegorz Kurczyk" <grzegorz.usun@control.usun.slupsk.pl> napisał
w wiadomości news:hfc17f$s37$1@nemesis.news.neostrada.pl...
Quote:

Ale czy aż taka rozdzielczość jest Koledze potrzebna ?! 5000imp/obr to
0,072 stopnia. A jakie obroty ? W ostateczności można do obsługi enkodera
zaprząc liczniki w AVRku.
Korzystając z zewnętrznego licznika enkodera na jakimś CPLD trzeba jakoś
ten stan licznika zczytać do procesora. Jeśli pojemność licznika ma mieć
np. 32bity to musisz w CPLD zaszyć jakiś rejestr buforowy coby na czas
transmisji zatrzasnąć bieżący stan licznika. Inaczej gdy w podczas
przesyłania danych z CPLD do uC przyjdzie impuls z enkodera (co przy
takiej rozdzielczości jest wysoce prawdopodobne) to uC może odczytać
niezłą kaszankę.


dlatego wlasnie, po takich przebojach, służąc doświadczeniem Wink
zaproponowałem LM629 ... buforowanie rejestrów, gotowy filtr PID, wyjscie
PWM, kilka ciekawych trybów pracy ... parę złotych więcej, ale o wiele
więcej zaoszczędzone na czasie i skutkach błędów w sofcie.

@

PS. nie, nie pracuje dla Nationala Smile

Szumek
Guest

Sat Dec 05, 2009 2:43 pm   



Użytkownik "Grzegorz Kurczyk" <grzegorz.usun@control.usun.slupsk.pl> napisał
w wiadomości news:hfc17f$s37$1@nemesis.news.neostrada.pl...
Quote:
Użytkownik Szumek napisał:
Pozdrawiam

Witam ponownie
już liczyłem to co kolega pisze
mam enkodery już sprzęgnięte fabrycznie z servem mam takie co maja 250
imp /obr
ale mam i takie co mają 2500 i 5000 i tu zaczynają się schody AVR już się
nie wyrobi
oprócz obsługi enkodera powinno byc miejsce na prosty PID
i tak sobie kombinuje co by tu mądrego wymyslić


Ale czy aż taka rozdzielczość jest Koledze potrzebna ?! 5000imp/obr to
0,072 stopnia. A jakie obroty ? W ostateczności można do obsługi enkodera
zaprząc liczniki w AVRku.
Korzystając z zewnętrznego licznika enkodera na jakimś CPLD trzeba jakoś
ten stan licznika zczytać do procesora. Jeśli pojemność licznika ma mieć
np. 32bity to musisz w CPLD zaszyć jakiś rejestr buforowy coby na czas
transmisji zatrzasnąć bieżący stan licznika. Inaczej gdy w podczas
przesyłania danych z CPLD do uC przyjdzie impuls z enkodera (co przy
takiej rozdzielczości jest wysoce prawdopodobne) to uC może odczytać
niezłą kaszankę.

Pozdrawiam
Grzegorz

już kolegom odpowiadam
5000 imp /obr rozdzielczości mi nie trzeba myślę że 1000 jest w sam raz ale
nie chcę rozbierać oryginalnych serv po to żeby wymienić im enkodery

mój pierwszy post miał mieć na celu zorientowanie się w możliwościach i
problemach
ponieważ z CPLD dopiero zaczynam trudno mi jest ocenic co wejdzie do takeigo
układu a co nie
czy jego sasoby pozwolą na stworzenie to o czym my tu piszemy czy nie ?

już mi się sprawa dzięki wam naświetla
narazie wezmę mniejsze servo ze słabszym enkoderem i podziałam na avr z tym
co mam dopuki nie wymyslę
jak sterowac tamtymi

LM629 też jest ciekawą opcją ale warto poznać i pomyśleć nad innymi
rozwiązanaimi

pozdrawiam

Konop
Guest

Sat Dec 05, 2009 3:33 pm   



Quote:
ponieważ z CPLD dopiero zaczynam trudno mi jest ocenic co wejdzie do takeigo
układu a co nie
czy jego sasoby pozwolą na stworzenie to o czym my tu piszemy czy nie ?

Co do CPLD - polecam poeksperymentować Smile... ale tak "z góry" oszacować
wymagania też się da. Podstawowy problem to ilość makrocel, a co za tym
idzie też przerzutników... Musisz ocenić ile stanów ma obsługiwać
urządzenie... jeśli robisz licznik - no to potrzebujesz tyle makrocel
ile bitów ma licznik. Pamiętaj też o preskalerach częstotliwości (jeśli
byś do czegoś potrzebował ;P) - to też są liczniki. Jeśli potrzebujesz
buforować stan licznika - to podobnie znów drugie tyle bitów leci...
jakieś sterowanie - powiedzmy SPI, jeśli typowe - to 8 bitów zużywasz na
zapamiętanie sygnałów wejściowych/wyjściowych plus 3 bity, żeby policzyć
do 8 Wink... to takie minimum... więc dla licznika 32 bity z buforowaniem
i dostępem przez SPI potrzebujesz 75 makrocele... Lub więcej Wink Wszystko
zależy na ile masz zaawansowaną logikę... w większości przypadków
wystarczy logika "podpięta" do danej makroceli... Wówczas nie ma
problemu. Gorzej, gdy któraś funkcja "rośnie"... i jest zależna od dużej
liczby sygnałów... wtedy logika podłączona do innej makroceli zostaje
wykorzystana do jakiegoś sygnału "wewnętrznego", albo połączona z logiką
"sąsiednią" - i wtedy jakby maleje Ci liczba makrocel, którymi
dysponujesz...
Tak więc określasz minimum które potrzebujesz i pozostawiasz zapas.
Warto także wybrać takie układy, które mają swoje większe odpowiedniki
Wink... Ja się tak kiedyś wkopałem, wziąłem CPLD 64 makrocele w PLC44, nie
starczyło miejsca i psikus, wersji 128 makrocel nie można było dostać w
tej obudowie Wink... Warto projekt (prototyp) zrobić w większym układzie,
gdy przejdzie testy, można śmiało w programie eksperymentować w który
układ kod się wciśnie, a w który nie i później stosować już mniejszy
(tańszy) układ...

Pozdrawiam
Konop

PS Oczywiście makrocele to nie wszystko... miałem projekt, który
"wchodził" w ukłąd XCR3064 (64 makrocel), a nie wchodził w układ
XC9072XL (72 makrocele)... ale nie będę Cię zamęczać szczegółami Wink...

Paweł Sujkowski
Guest

Sat Dec 05, 2009 4:02 pm   



Witam

A może jakiś procesorek z wbudowanym wsparciem dla enkodera
inkrementalnego? Na przykład dsPCI33F z serii M do sterowania
silnikami czy coś z serii TMS320F2000. Zdaje mi się że niektóre ARM-y
7 od Analog Devices też mają wsparcie dla enkoderów. Dodatkowo do tych
procesorów jest trochę dokumentacji i przykładów ukierunkowanych na
aplikacje napędowe. Zaletą jest posiadanie wszystkiego w środku -
mniejszy problem z EMI, prostszy model programowania. Pozdrawiam.

Paweł

Szumek
Guest

Sat Dec 05, 2009 5:29 pm   



Użytkownik "Konop" <konoppo@gazeta.pl> napisał w wiadomości
news:hfdqvf$kev$1@inews.gazeta.pl...
Quote:
ponieważ z CPLD dopiero zaczynam trudno mi jest ocenic co wejdzie do
takeigo układu a co nie
czy jego sasoby pozwolą na stworzenie to o czym my tu piszemy czy nie ?

Co do CPLD - polecam poeksperymentować Smile... ale tak "z góry" oszacować
wymagania też się da. Podstawowy problem to ilość makrocel, a co za tym
idzie też przerzutników... Musisz ocenić ile stanów ma obsługiwać
urządzenie... jeśli robisz licznik - no to potrzebujesz tyle makrocel ile
bitów ma licznik. Pamiętaj też o preskalerach częstotliwości (jeśli byś do
czegoś potrzebował ;P) - to też są liczniki. Jeśli potrzebujesz buforować
stan licznika - to podobnie znów drugie tyle bitów leci... jakieś
sterowanie - powiedzmy SPI, jeśli typowe - to 8 bitów zużywasz na
zapamiętanie sygnałów wejściowych/wyjściowych plus 3 bity, żeby policzyć
do 8 Wink... to takie minimum... więc dla licznika 32 bity z buforowaniem i
dostępem przez SPI potrzebujesz 75 makrocele... Lub więcej Wink Wszystko
zależy na ile masz zaawansowaną logikę... w większości przypadków
wystarczy logika "podpięta" do danej makroceli... Wówczas nie ma problemu.
Gorzej, gdy któraś funkcja "rośnie"... i jest zależna od dużej liczby
sygnałów... wtedy logika podłączona do innej makroceli zostaje
wykorzystana do jakiegoś sygnału "wewnętrznego", albo połączona z logiką
"sąsiednią" - i wtedy jakby maleje Ci liczba makrocel, którymi
dysponujesz...
Tak więc określasz minimum które potrzebujesz i pozostawiasz zapas. Warto
także wybrać takie układy, które mają swoje większe odpowiedniki Wink... Ja
się tak kiedyś wkopałem, wziąłem CPLD 64 makrocele w PLC44, nie starczyło
miejsca i psikus, wersji 128 makrocel nie można było dostać w tej obudowie
Wink... Warto projekt (prototyp) zrobić w większym układzie, gdy przejdzie
testy, można śmiało w programie eksperymentować w który układ kod się
wciśnie, a w który nie i później stosować już mniejszy (tańszy) układ...

Pozdrawiam
Konop

PS Oczywiście makrocele to nie wszystko... miałem projekt, który
"wchodził" w ukłąd XCR3064 (64 makrocel), a nie wchodził w układ XC9072XL
(72 makrocele)... ale nie będę Cię zamęczać szczegółami Wink...


uC ze sprzętowym dekoderem kwadraurowym już widziałem wcześniej
jednak narazie nie czuję się na siłach żeby walczyć z nimi, może później
po drugie pewnie cena i dostępność w polsce pozostawia wiele do życzenia
(choć zaraz poszukam i się spróbuje przekonać ...)

a zasoby do upchnięcia do CPLD to jak pisałem wcześniej :
"czyli dekoder kwadraturowy, licznik , sumator" i proponowany bufor kolegi

J.F.
Guest

Sat Dec 05, 2009 6:57 pm   



On Sat, 5 Dec 2009 14:43:05 +0100, Szumek wrote:
Quote:
już mi się sprawa dzięki wam naświetla
narazie wezmę mniejsze servo ze słabszym enkoderem i podziałam na avr z tym
co mam dopuki nie wymyslę jak sterowac tamtymi

Uzycie CPLD/FPGA moze nie byc takie glupie - jest mniejsza szansa ze
zgubi impulsy, wiec przynajmniej dekoder i licznik bym tam wsadzil.

J.

Jerry1111
Guest

Sun Dec 06, 2009 1:05 am   



J.F. wrote:
Quote:
On Sat, 5 Dec 2009 14:43:05 +0100, Szumek wrote:
już mi się sprawa dzięki wam naświetla
narazie wezmę mniejsze servo ze słabszym enkoderem i podziałam na avr z tym
co mam dopuki nie wymyslę jak sterowac tamtymi

Uzycie CPLD/FPGA moze nie byc takie glupie - jest mniejsza szansa ze
zgubi impulsy, wiec przynajmniej dekoder i licznik bym tam wsadzil.

Aha, ta Wink
Zwlaszcza jak nie odkloci zboczy i wsadzi je na licznik rewersyjny jako
asynchroniczne do zegara Wink
Zwlaszcza te drugie powoduje ciekawe efekty uboczne.


--
Jerry1111

J.F.
Guest

Sun Dec 06, 2009 1:15 am   



On Sun, 06 Dec 2009 00:05:07 +0000, Jerry1111 wrote:
Quote:
J.F. wrote:
Uzycie CPLD/FPGA moze nie byc takie glupie - jest mniejsza szansa ze
zgubi impulsy, wiec przynajmniej dekoder i licznik bym tam wsadzil.

Aha, ta Wink
Zwlaszcza jak nie odkloci zboczy i wsadzi je na licznik rewersyjny jako
asynchroniczne do zegara Wink
Zwlaszcza te drugie powoduje ciekawe efekty uboczne.

Bo to jakis zly projekt jest :-)

J.

Konop
Guest

Sun Dec 06, 2009 2:11 pm   



Quote:
Zwlaszcza jak nie odkloci zboczy i wsadzi je na licznik rewersyjny jako
asynchroniczne do zegara Wink
Zwlaszcza te drugie powoduje ciekawe efekty uboczne.

A jakie są przeciwskazania do podłączenia tego sygnału jako zegarowy??
Popularne CPLD mają raczej minimum 3 linie zegarowe, można coś
przeznaczyć na wejście z enkodera Wink... oczywiście odkłócić trzeba, ale
problem z asynchronicznością względem zegara odpada...

Pozdrawiam
Konop

Jerry1111
Guest

Sun Dec 06, 2009 9:16 pm   



Konop wrote:
Quote:
Zwlaszcza jak nie odkloci zboczy i wsadzi je na licznik rewersyjny
jako asynchroniczne do zegara Wink
Zwlaszcza te drugie powoduje ciekawe efekty uboczne.

A jakie są przeciwskazania do podłączenia tego sygnału jako zegarowy??

Tylko po co? Bedziesz i tak musial przejsc do domeny zegarowej ukladu,
wiec zegar lokalny dla enkodera nie ma sensu. Z enkodera masz 2
asynchroniczne sygnaly, z nich generujesz + i -, ktore dalej sa
asynchroniczne. W ktoryms miejscu przechodzisz do doemny zegarowej
ukladu - jak nie wiesz jak to zrobic, to sie beda dzialy cuda.

Najlepiej dac na kazdy pin po 2 DFFy szeregowo zaraz na pinach - wtedy
cala reszta jest synchroniczna.


--
Jerry1111

Konop
Guest

Wed Dec 09, 2009 10:48 pm   



Quote:
Tylko po co? Bedziesz i tak musial przejsc do domeny zegarowej ukladu,
wiec zegar lokalny dla enkodera nie ma sensu. Z enkodera masz 2
asynchroniczne sygnaly, z nich generujesz + i -, ktore dalej sa
asynchroniczne. W ktoryms miejscu przechodzisz do doemny zegarowej
ukladu - jak nie wiesz jak to zrobic, to sie beda dzialy cuda.

Nie no, o problemie słyszałem, o radzeniu sobie z nim - niby także...
choć w praktyce jeszcze nie przerabiałem ;P... zapomniałem o tym, że
później i tak trzeba zmienić domenę zegara i dlatego kombinowałem "jak
to obejść" Wink...

Pozdrawiam
Konop

Goto page Previous  1, 2

elektroda NewsGroups Forum Index - Elektronika Polska - Możliwość wdrożenia algorytmu PID na prostym CPLD - czy wystarczy zasobów?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map