Форум за електроника Форуми Форум за електроника
Български форум за електроника, ремонти, схеми, документация
 
 Въпроси/ОтговориВъпроси/Отговори   ТърсенеТърсене   ПотребителиПотребители   ГрупиГрупи   Регистрирайте сеРегистрирайте се 
 ПрофилПрофил   Влезте, за да видите съобщенията сиВлезте, за да видите съобщенията си   ВходВход 

програмна реализация на PID алгоритъм
Иди на страница Предишна  1, 2
 
Създайте нова тема   Напишете отговор    Форум за електроника Форуми -> Обща електроника - General Electronics



Предишната тема :: Следващата тема  
Автор Съобщение
sherif
Нов потребител
Нов потребител


Регистриран на: 09 Авг 2010
Мнения: 4

МнениеПуснато на: Чет Авг 12, 2010 19:01    Заглавие: Отговорете с цитат

благодаря на за разясненията и помощта. Някои работи ми се изясниха и вече имам идея.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
RM
Опитен потребител
Опитен потребител


Регистриран на: 16 Сеп 2008
Мнения: 680

МнениеПуснато на: Съб Авг 14, 2010 13:22    Заглавие: Отговорете с цитат

От всички тъпизми казани до тук требва да си разбрал че тук нема кой да ти помогне Shocked Shocked Shocked
Няма да ти разправям празни приказки, има индженери за това, аз съм с основно образование( извинявам се "образувание") и мога да ти дам една лека основна насока.


Код:

#define  PID_GLOBAL

#include "PID.h"

/*
*********************************************************************************************************
    Ui = Kp*ei_1 + Ki*ei + I + Kd*ud_1 + Kd*N*(ei-ei_1)
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                             Изчисление на ПИД
*********************************************************************************************************
*/

void  PID_Serv (PID_Struct *pid)
{
    float vk;


    pid->yf_1  = pid->yf;
    pid->ek_1  = pid->ek;
    pid->dk_1  = pid->dk;
   
   
    pid->yf    = pid->Kf * (pid->yk - pid->yf_1) + pid->yf_1;     
   
    pid->ek    = pid->sp - pid->yf;   /* грешка                                   */
         vk    = pid->ek - pid->ek_1;  /* изменение на грешката                         */
   
    pid->pk    = pid->Kp * pid->ek_1;  /* пропорционална част                   */
    pid->ik    = pid->Ki * pid->ek + pid->ik;  /* интегрална част                       */
    pid->dk    = pid->Kd * (pid->dk_1 + pid->N * vk);      /* диференциална част                   */
   
    pid->uk    = pid->pk + pid->ik + pid->dk;              /* изход регулатор                         */

    if (pid->uk > pid->umax) {                             /* Ограничение максимално значение      */
        pid->uk = pid->umax;
    } else if (pid->uk < pid->umin) {                      /* Ограничение минимално значение        */
        pid->uk = pid->umin;
    }
}

В хедър фаила се прави една обикновена структора с променливите, и се обявява функцията .
Дори и да имаш 100 такива примери, без да си наясно с теорията на този вид регулиране, няма да успееш да направиш нищо(то е очеизвадно). Но съм сигурен че ще замажеш очите на някой още по бездарен даскал.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
Bojilov
Опитен потребител
Опитен потребител


Регистриран на: 02 Май 2004
Мнения: 15426

МнениеПуснато на: Съб Авг 14, 2010 13:56    Заглавие: Отговорете с цитат

RM написа:
От всички тъпизми казани до тук требва да си разбрал че тук нема кой да ти помогне Shocked Shocked Shocked

За това писание получаваш официално предупреждение.
_________________
Мегатрон-2007 ООД
На вниманието на всички бързащи-ако не ви е дадена оферта за някой артикул-значи ще ви я пратя по-късно и без да надавате зор и звъните!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла Посетете сайта на потребителя
joro_1
Нов потребител
Нов потребител


Регистриран на: 05 Мар 2008
Мнения: 37
Местожителство: Sofia

МнениеПуснато на: Вто Авг 17, 2010 6:48    Заглавие: Отговорете с цитат

the_bull написа:
. . . . Щом доц. по ТАУ ни казваше ако не знаете какъв закон да ползвате слагайте ПИД и не се плашете Very Happy

Човека вероятно се е шегувал Very Happy , която и от трите съставки не е изчислена както трябва, регулатора или ще се възбуди, или ще реагира прекалено бавно, най добре е подготвен човек да изведе закона в зависимост от случаят, а после да се реализира програмно, като се заложат съответните цифрови филтрации, семплирането и разрядноста на АЦП ще ги определи пак този който извежда закона, той пък(закона) за да се изведе е нужна цялостна характеристика на управлявания обект.
Wink
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
the_bull
Опитен потребител
Опитен потребител


Регистриран на: 31 Май 2007
Мнения: 660
Местожителство: Монтана(Студент в Русе)

МнениеПуснато на: Сря Авг 18, 2010 22:37    Заглавие: Отговорете с цитат

joro_1 написа:

Така е Smile леко в кръга на шегата го спомена но в доста случай може да намери приложение. Иначе задължително се избира точния закон и се проверяват критериите за устойчивост и качеството на преходните процеси. Това ТАУ е много яка наука, но за наистина "истинските неща" става една математика дето може да побелее човек докато сметне каквото му трябва.Трябва човек много да е на ти от висша математика и физиката на различни процеси за да успее.
_________________
Постулат на Хорнер за петте удара:
"Опитът е право пропорционален на потрошеното оборудване."
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла Посетете сайта на потребителя
Покажи мнения от преди:   
Създайте нова тема   Напишете отговор    Форум за електроника Форуми -> Обща електроника - General Electronics Часовете са според зоната GMT + 2 Часа
Иди на страница Предишна  1, 2
Страница 2 от 2

 
Към:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети


Powered by phpBB © 2001, 2005 phpBB Group
Translation by: Boby Dimitrov
Where to Find Free Service Manuals