Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 26.01.2009, 08:31  
Vov123
Вид на жительство
 
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
Vov123 на пути к лучшему
По умолчанию

По моему должно помочь

Прикрепленный файл: 8038561.rar
Реклама:
Vov123 вне форума  
Непрочитано 26.01.2009, 11:09  
DL36
Вид на жительство
 
Регистрация: 06.10.2006
Сообщений: 329
Сказал спасибо: 4
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
DL36 на пути к лучшему
По умолчанию

исходники
DL36 вне форума  
Непрочитано 27.01.2009, 13:18  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Спасибо всем за отклики.
Посидел, разбирался, чуть закодил.
Ниже екзешка. Прога котороя отрабатывает и отображает выход ПИД регулятора при изменении его параметров. К сожалению функция которая служит для отображения динамии процесса фиксирована.
Диапазон выходного воздействия сделан в диапазоне от минус величины "Диапазон ПИД" до плюс ее же.

Обратите внимание, что даже при воздействии ПИд-а не можно понизить температуру, или наоборот ее повысить. Температура идет по функции. К сожалению ПИД не может подавить мою функцию .

Посмотрите нету ли именно ошибок в сути работы ПИДа при разных параметров.

П.С. Вирусни и троянов нету. Сам не писал и не вставлял их туда. Прога собрана под Delphi7. На компу стоит НОД32 с обновлением постоянным. Думаю на счёт этого проблем не должно быть.

Код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var   Kprop, Kinteg, Kdef, Gaine:real;
      i: integer;
      t_step, error, integral, setpoint, pre_error, pid: real;
      min_integ_error, max_integ_error, diapazon: real;
      A,B:real;

begin
    //------------------------------------
    Chart1.Series[0].Clear;
    Chart1.Series[1].Clear;
    Chart1.Series[2].Clear;
    Chart1.Series[3].Clear;
    Chart1.Series[0].AddArray(f2);
    //------------------------------------
    t_step:=0.1;
    max_integ_error:=  StrToFloat(Form1.Edit6.Text);
    min_integ_error:=  StrToFloat(Form1.Edit7.Text);
    //------------------------------------
     Kprop:= StrToFloat(Form1.Edit1.Text);
     Kinteg:= StrToFloat(Form1.Edit2.Text);
     Kdef:= StrToFloat(Form1.Edit3.Text);
     setpoint:= StrToFloat(Form1.Edit4.Text);
     //------------------------------------
    diapazon:=StrToFloat(Form1.Edit5.Text);
    //------------------------------------
     for i:=1 to size do
     begin
          error:= setpoint-currentpoint;
          Form1.Label9.Caption:=FloatToStr(error);
          f3[i]:=error;
          Chart1.Series[2].Clear;
          Chart1.Series[2].AddArray(f3);
          //--------------------------------------------------------------------
          if ((min_integ_error‹error) and (error‹max_integ_error)) then
          integral:=integral+error
          else
          integral:=0;
          //--------------------------------------------------------------------
          pid:=Kprop*error+Kinteg*integral*t_step+Kdef*(erro  r-pre_error)/t_step;
          if (-diapazon›pid) then  pid:=-diapazon;
          if (pid› diapazon) then  pid:= diapazon;
          f2[i]:=pid; //30*(1-exp(-0.2*pid));
          //--------------------------------------------------------------------
          //currentpoint:=currentpoint+0.1;
          //currentpoint:=1/(pid*pid+1);
          //currentpoint:=10*sin((i-pid)/40);
          currentpoint:=10*sin((i-pid)/40);
          f4[i]:= currentpoint;
          Form1.Label7.Caption:=FloatToStr(currentpoint);
          //--------------------------------------------------------------------
          pre_error:=error;
          //--------------------------------------------------------------------
          Delay(1);
          Chart1.Series[1].Clear;
          Chart1.Series[1].AddArray(f2);
          //----------------------------
          Chart1.Series[3].Clear;
          Chart1.Series[3].AddArray(f4);
     end;
     Chart1.Series[1].Clear;
     Chart1.Series[1].AddArray(f2);
     pre_error:=0;
end;
Прикрепленный файл: 2323796.zip
ua_gruzin вне форума  
Непрочитано 28.01.2009, 03:48  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

И так, еще выложу свою мыслю.
Пид регулятор предназначен для изменения переходного процесса системы, которой управляют (ускорить выход на заданную температуру, сделать это с перерегулированием).

Входным параметром ПИД есть ошибка (разница между необходимой заданной величиной и текущим выходом системы).

На примере котла - входная заданная величина это необходимая температура, а обратная а текущий выход - значение на датчике температуры.

Выходным параметром есть воздействие. Это в принципе безразмерный параметр. Определяется только свойствами управляющих элементов (заслонки, двигатели, реле и т.д.)
В общем воздействие можна представить на примере бачка с водой. Есть кран, им управляем. Кран имеет воздействие в диапазоне 0..100% (закрытый.. открытый).
Система имеет свою переходную характеристику - скорость нарастания уровня (резервуар может быть в виде пирамиды - в низу объем большой, вверху маленький).
Если кран открыт - мы получаем максимальное воздействие на объект (максимальную скорость нарастания уровня воды).
ПИД же управляет данным воздействием в зависимости от его настройки.
Примером - щас открыть на 100%, потом на 30%, и еще на 10%, потом закрыть.

На выход ПИД обязательно необходимо накладывать ограничение в размере максимально и минимально допустимого воздействия, другими словами этот диапазон 0..100%. Ибо выходом ПИД может быть и 200%, и -100%, и даже все 1000%.

И так рассмотри в данном случае только пропорциональную составляющую. Она равна умножению ошибки на коэффициент Кп.
Вот случай. Включили систему. На выходе должны получить заданное значение температуры. На щас она ниже на 10градусов, что в общем случае говорит что необходимо открыть заслонку газа на 10%(для примера и только). При уменьшении разницы в температуре заслонку будем пропорционально закрывать. Изза инерции систему будет долго нагреваться и постепенно приближаться к заданной температуре.
В виде таблицы можна записать:
Ошибка Воздействие
10град = 10%
5град = 5%
1град = 1%
0град = 0%

Но теперь умножим правую колонку на некий коэффициент Кп=3, получим:
10град = 30%
5град = 15%
1град = 3%
0град = 0%

Это даст на начале очень большой импульс системе путем большего открытия заслонки газа, но через её инерционность возможен вылет (перегрев, когда ошибка будет отрицательна).

Интегральная же часть позволяет суммировать ошибку начиная с некой величины около необходимого значения (например в диапазоне 9.5 градуса и 10.5 градуса). Она введена для того чтобы форсировать выход на величину когда уже пропорциональная составляющая не может это сделать (0.5град = 0.5% что через потери не позволит приблизить ошибку к нулю).
И так. Рассмотрим таблицу.
Вариант 1:
Ошибка равна 0.5 градусов.
За 10-ть сканов она не изменилась. В интеграторе скопилась сумма в размере 0.5+0.5+...+0.5=5
Получим большое воздействие на выходе.
Вариант 2:
Ошибка равна 0.5 градусов.
За 10-ть сканов она постепенно изменилась (по 0.05град за скан) и упала до нуля. В интеграторе скопилась сумма в размере 0.5+0.45+0.40+0.35+...+0.05=3.2
Получим уже меньше воздействие на выходе.
И так, интегральный коэффициент необходим для форсирования выхода в приближениях ошибке до нуля, и уменьшается при уменьшении ошибки.

ВНИМАНИЕ. На интегральную сумму ставят ограничение на конечную сумму (максимально возможную 0.5+0.5+...) и определяют диапазон, после которого интег. вступает в силу (мы рассматривали 9.5..10.5, вне диапазона сумму принудительно обнуляют!!!).

Думаю мои "пальцы" будут кому-то полезны.

*скан - сканирование. ПИД запускается с неким интервалом, например 1 сек.
ua_gruzin вне форума  
Эти 2 пользователя(ей) сказали Спасибо ua_gruzin за это сообщение:
gladun5 (21.02.2012)
Непрочитано 28.01.2009, 23:57  
xinod
Временная регистрация
 
Регистрация: 13.07.2006
Сообщений: 90
Сказал спасибо: 10
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
xinod на пути к лучшему
По умолчанию

Маниак... ... рекомендую обратиться к класикам - Бесекерский, Попов, Зеленов и т.д. На "пальцах" полный ППЦ получается... как практику для полнейшего понимания на опыте привода постоянного тока - Фишбейн - лучче нет ничего...
xinod вне форума  
Непрочитано 29.01.2009, 00:45  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Сообщение от xinod
Маниак... ... рекомендую обратиться к класикам - Бесекерский, Попов, Зеленов и т.д. На "пальцах" полный ППЦ получается... как практику для полнейшего понимания на опыте привода постоянного тока - Фишбейн - лучче нет ничего...
Задавил авторитетами !
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 29.01.2009, 13:38  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Задача не ставилась для привода или еще чего-то.
Был предложен вариант общего подхода.
Во что будут переведены проценты - вам решать (ШИМ, ТОК, НАПРЯЖЕНИЕ).
ua_gruzin вне форума  
Непрочитано 30.01.2009, 02:31  
jelsay
Прописка
 
Регистрация: 24.06.2005
Сообщений: 123
Сказал спасибо: 7
Сказали Спасибо 37 раз(а) в 15 сообщении(ях)
jelsay на пути к лучшему
По умолчанию

Кроме здоровенного Матлаба, есть маленькая и шустрая программа VisSim для изучения ТАУ - студенческая версия 3.0 вполне бесплатна.
Программа позволяет ВИЗуально СИМмулировать (VisSim) практически любые объекты управления. С программой идёт куча примеров. И поскольку она специально "заточена" именно под ТАУ - то освоить её можно за один вечер.

Студенческий VisSim 3.0
http://softok.org/science/naukateh/7813prog.html

VisSim 5.0
http://softok.org/science/naukateh/7801prog.html
jelsay вне форума  
Непрочитано 31.01.2009, 10:47  
anton_1000
Прописка
 
Регистрация: 31.08.2008
Сообщений: 117
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
anton_1000 на пути к лучшему
По умолчанию Вчера испытал собранный ПИД регулятор давления на АТмеге168.

С коэф. П (пропорциональности) все понятно, но как только ввёл интегральный коэф. на обум, в автоклаве стало расскачивать давление. Объясните, пожалуста, доступным языком на что влияют Инт- и Диф- составляющие? До какого момента накапливать ошибку в Инт- сумме? При каких условиях или какой периодичностью обнулять эту сумму? Ведь можно просто дождаться пока сумма сама не обнулится при превышении измеренной величины задания. Как подобрать коэф., чтобы добиться наилучшего качества регулирования?
anton_1000 вне форума  
Непрочитано 31.01.2009, 11:44  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: Вчера испытал собранный ПИД регулятор давления на АТмеге

Сообщение от anton_1000
Объясните, пожалуста, доступным языком на что влияют Инт- и Диф- составляющие?
Выше выкладываласи ИНСТРУКЦИЯ к ПИД регулятору, там было и толкование и настройка.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПИД-регулятор и Proteus oleg_harp Микроконтроллеры, АЦП, память и т.д 16 01.07.2009 23:37
ПИД регулятор masterpc Производственное оборудование 14 05.03.2007 16:24
ПИД регулятор на AVR mishutka Микроконтроллеры, АЦП, память и т.д 40 31.12.2006 03:11
Пид-регулятор и AVR French Микроконтроллеры, АЦП, память и т.д 1 06.10.2004 23:30


Часовой пояс GMT +4, время: 06:42.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot