реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ПИ - регулятор, Маленький и быстренький
DeXteR
сообщение Dec 5 2005, 16:33
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Добрый день
Очень прошу поделиться исходниками маленького 16 разрядного пид (пи) регулятора на Си под атмел
может у кого есть ....
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Dec 5 2005, 16:40
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(DeXteR @ Dec 5 2005, 20:33) *
Добрый день
Очень прошу поделиться исходниками маленького 16 разрядного пид (пи) регулятора на Си под атмел
может у кого есть ....

Поищи поиском, где-то здесь выкладывали.
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 5 2005, 17:19
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Цитата(&-rey @ Dec 5 2005, 20:40) *
Цитата(DeXteR @ Dec 5 2005, 20:33) *

Добрый день
Очень прошу поделиться исходниками маленького 16 разрядного пид (пи) регулятора на Си под атмел
может у кого есть ....

Поищи поиском, где-то здесь выкладывали.


Спасибо &-rey Поиском нашел толька литературу
ее у меня навалом + политех когдато закончил =)
Исходников под АВРку ненашел
Глючит сегодня все чегото

Если несложно исходники регулятора на ukrniisip@mail.ru

Зарание благодарю
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Dec 6 2005, 10:15
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(DeXteR @ Dec 5 2005, 21:19) *
Спасибо &-rey Поиском нашел толька литературу
ее у меня навалом + политех когдато закончил =)
Исходников под АВРку ненашел


А ссылка была
http://forum.electronix.ru/index.php?showtopic=8440
но теперь она не работает sad.gif
Возможно ввиду очень длинного текста её укоротили или переместили куда-то в другое место sad.gif

Просьба к модераторам и ко всем кто видел этот алгоритм помочь в этом вопросе.
к сожалению не помню автора но вот слово ПИД там было.
Go to the top of the page
 
+Quote Post
BVU
сообщение Dec 6 2005, 11:24
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(&-rey @ Dec 6 2005, 13:15) *
Цитата(DeXteR @ Dec 5 2005, 21:19) *

Спасибо &-rey Поиском нашел толька литературу
ее у меня навалом + политех когдато закончил =)
Исходников под АВРку ненашел


А ссылка была
http://forum.electronix.ru/index.php?showtopic=8440
но теперь она не работает sad.gif

Не поленитесь сей факт довести до сведения админов (указав пример). Вещь как ссылка на форумные темы очень нужная, иногда просто необходимая.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
subver
сообщение Dec 6 2005, 11:48
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



ПИ регулятор:

y+=(kp+ki*T)*e[0] - kp*e[1];

y - выход
e[0] - текущий отсчет ошибки
e[1] - предыдущий отсчет ошибки

kp - коэффициент усиления П-звена
ki - коэффициент усиления I-звена
T - период дискретизации.

Естественно, что (kp+ki*T) можно вычислить заранее.
Go to the top of the page
 
+Quote Post
Black Pahan
сообщение Dec 6 2005, 11:55
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 117
Регистрация: 21-07-05
Из: Новосибирск
Пользователь №: 6 978



Вот правильная сцылка
http://electronix.ru/forum/index.php?showtopic=8440

сравните с неправильной
http://forum.electronix.ru/index.php?showtopic=8440

и догатайтесь что теперь нужно делать в таких случаях.


--------------------
Из того, что дуракам закон не писан, вовсе не следует, что они не принимают участия в их написании.
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 6 2005, 11:56
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Молодец =)
Такие вещи знают на втором курсе любого политеха =)

Но работать небудет вот почему

Переполнения будут кругом

Писал дла TMS320F24xx

Там есть математика с насыщением
тоесть FFFF + A = FFFF

А в твоем случае наверна переполниться и в насыщение не войдет
Go to the top of the page
 
+Quote Post
subver
сообщение Dec 6 2005, 11:59
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Ну так просил на С, я написал на с. А как там его компилятор откомпилирует, с насыщением или без, это уже другой вопрос.

Как ни странно работает, уже год.

Переполниться может.
Чтобы не переполнялся нужно ограничить выходное значение, но тогда такая форма будет работать не совсем корректно.

Вот еще вариант:

err_i+=err;
sat(err_i);
y = err_i*Ki*T + err*Kp

sat(err_i) - насыщение интегратора.

Сообщение отредактировал subver - Dec 6 2005, 12:06
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 6 2005, 12:12
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Дело в том что изучаю
Си уже почти неделю

Может расскажеш как заставить считать твою строчку с насышением

Я пишу на EWAVR 4.11
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 6 2005, 12:45
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Цитата(subver @ Dec 6 2005, 15:59) *
Ну так просил на С, я написал на с. А как там его компилятор откомпилирует, с насыщением или без, это уже другой вопрос.

Как ни странно работает, уже год.

Переполниться может.
Чтобы не переполнялся нужно ограничить выходное значение, но тогда такая форма будет работать не совсем корректно.

Вот еще вариант:

err_i+=err;
sat(err_i);
y = err_i*Ki*T + err*Kp

sat(err_i) - насыщение интегратора.


Толька одним выходным значением необойдешся
При вычислении ошибки тоже может быть переполнение.
Дальше - когда err_i*Ki*T + err*Kp считаем - тоже

Входные величины нехочиться ограничивать

Неподскажет ли кто можно ли как нибудь реализовать
функцию сложения с насышением на Си
Go to the top of the page
 
+Quote Post
subver
сообщение Dec 7 2005, 03:35
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Цитата
Неподскажет ли кто можно ли как нибудь реализовать
функцию сложения с насышением на Си


long result;
short int a,b;
short shortresult;
result = a+b;
if(result>32767) result = 32767;
if(result<-32768) result = -32768;
shortresult = result;

hint:

result - 32 разрядный,
a,b - 16 разрядные, так что при сложении
a и b и помещении результата в result переполнения не будет.

На ассемблере достаточно проверить бит OVF.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Dec 7 2005, 06:12
Сообщение #13


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(subver @ Dec 7 2005, 05:35) *
Цитата
Неподскажет ли кто можно ли как нибудь реализовать
функцию сложения с насышением на Си


...
На ассемблере достаточно проверить бит OVF.


Да вообщем и на С можно, например, для IAR, if (SREG_Bit3) ....

Только аккуратно надо с этим, рекомендуется посматривать в листинг, чего он там компилирует. Я для TCP/IP так бит переноса проверял (для расчета CRC).


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 7 2005, 10:48
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Огромное спасибо за совет

Дело в том что способ subver очень медленный

Нельзя ли както побыстрее ??
Ведь задача считать Пи регулятор с частотой общета гдето килогрец 10 - 16
Go to the top of the page
 
+Quote Post
subver
сообщение Dec 7 2005, 11:41
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Цитата
Нельзя ли както побыстрее ??
Ведь задача считать Пи регулятор с частотой общета гдето килогрец 10 - 16


Если процессор работает на частоте 16Мгц, то получается 1000 тактов для расчета регулятора.
неужели не хватит?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016