Перейти к содержанию
    

Автоматическое регулирование

Несколько отвлекаю от темы, но, тем не менее советую посетить сайт http:/www.model.exponenta.ru

там находятся современные интерактивные учебные материалы по ТАУ на русском языке, там же можно получить VisSim, и обширный методический материал по применению этой программы в задачах анализа и синтеза САУ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

рекомендую взглянуть на методики настройки пид-регуляторов здесь - http://members.vicard.net/sensor/main1_10.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если время квантования меняется? Мне нужно стабилизировать скорость вращения двигателя. Эту скорость я измеряю по времени между двумя импульсами, которые выдает датчик вращения по одному на каждый оборот. Этот импульс вызывает прерывание в котором по формулам ПИД расчитываются новые параметры ШИМа, управляющего двигателем. Впринципе работает нормально, но при резкой смене скорости возникает либо выброс (wind-up) либо установление идет слижком медленно - в зависимости от величины постоянной интегрирования. Вот я и думаю сделать ее зависимой от времени квантования, но не знаю какую формулу применить. Не подскажите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если время квантования меняется? Мне нужно стабилизировать скорость вращения двигателя. Эту скорость я измеряю по времени между двумя импульсами, которые выдает датчик вращения по одному на каждый оборот. Этот импульс вызывает прерывание в котором по формулам ПИД расчитываются новые параметры ШИМа, управляющего двигателем. Впринципе работает нормально, но при резкой смене скорости возникает либо выброс (wind-up) либо установление идет слижком медленно - в зависимости от величины постоянной интегрирования. Вот я и думаю сделать ее зависимой от времени квантования, но не знаю какую формулу применить. Не подскажите?

 

Это не есть очень тривиально. Так как время кванта меняется - стандартные формулы ПИД регулятора для такого случая очевидно неприменимы. Как минимум, нужно учитывать изменение шага интегрирования/дифференцирования, чтобы динамика системы оставалась близкой к требуемой. Кроме того, при малых скоростях вращения данная схема обратной связи (один импульс на оборот) становится неприменимой - нужно изменять структуру контура управления. Попробуйте промоделировать в симулинке с учетом близкой к реальности модели динамики и требуемых диапазонов регулирования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Есть ли смысл моделировать (искать и изучать программу) если у меня под рукой есть готовый макет (АРМ-овский Ев-борд и этот самый моторчик) ? Вообще у моторчика есть датчик выдающий 24 импульса за оборот, но по какимто причинам эти импульсы внутри одного оборота располагаются неравномерно. Да и при максимальной частоте вращения (4000) мне на 24 импульса скорости АРМа не хватит уже наверное (AT91SAM7X256). :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли смысл моделировать (искать и изучать программу) если у меня под рукой есть готовый макет (АРМ-овский Ев-борд и этот самый моторчик) ? Вообще у моторчика есть датчик выдающий 24 импульса за оборот, но по какимто причинам эти импульсы внутри одного оборота располагаются неравномерно. Да и при максимальной частоте вращения (4000) мне на 24 импульса скорости АРМа не хватит уже наверное (AT91SAM7X256). :(

 

IMHO программу под названием Matlab в любом случае полезно найти и изучить. Упоминавшийся мною Simulink - это ее огромный компонент для моделирования динамических систем.

 

Отладочный боард вряд-ли хорошо рисует на компьютере графики, кроме того, в нем наверняка не очень просто задавать различные нагрузки и смотреть, к чему это приводит. Но в общем смотрите сами что Вам лучше.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость TSerg
Есть ли смысл моделировать (искать и изучать программу) если у меня под рукой есть готовый макет (АРМ-овский Ев-борд и этот самый моторчик) ? Вообще у моторчика есть датчик выдающий 24 импульса за оборот, но по какимто причинам эти импульсы внутри одного оборота располагаются неравномерно. Да и при максимальной частоте вращения (4000) мне на 24 импульса скорости АРМа не хватит уже наверное (AT91SAM7X256). :(

 

Моделировать имеет смысл всегда, впрочем также как и знать теорию:)

Уже упоминавшийся VisSim, бесплатный в студенческой версии, отличный инструмент для моделирования динамических систем, как аналоговых, так и дискретно-цифровых.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А сейчас, господа, сюрприз! И состоит он в том, что поток регулируемый шаровым краном нелинейный! Другими словами при работе крана седельного типа пропускаемый им поток прямо пропорционален степени его открытия. С шаровым краном такого не происходит. Специально для устранения этого недостатка шаровых кранов фирма Белимо изготавливает шаровые краны со специальными вставками, которые приводят характеристику шаровых кранов к седельным. Так что если в регуляторе будет применён обычный шаровый кран, то придётся учитывать и его нелинейность.

Ну и ссылка по теме для всех интересующихся... http://belimo.ru/clap1.shtml

Изменено пользователем Deka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость TSerg
А сейчас, господа, сюрприз! И состоит он в том, что поток регулируемый шаровым краном нелинейный!

<skip>

 

Не поверишь, но проектировщики это знают.

Если они проектировщики, а не детский сад:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пока далек от темы регулирования, знакомлюсь с основными понятиями и методами.

Нужна подсказка по каким ключевым словам искать нужный мне раздел в теории.

Задача такая:

С камеры в ПК приходит видео. По каждому кадру считается среднее арифметическое значене яркости.

В качестве регулировок есть 3 параметра: время экспозиции, внешняя диафрагма и аналоговое усиление(после ПЗС).

Все регулировки имеют цифроаое управление и доступны из ПК. Задача по возможности удерживать значение средней яркости в окрестности значения выбранного в программе при разных условиях освещенности сцены.

Короче интересуют разделы посвещенные системам с несколькими регулировками и одним объектом регулирования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые специалисты, помогите пожалуйста начинающему освоить автоматическое регулирование.

Вопрос заключается в следующем:

Нужно подерживать постоянно температуру(заданную) тена(Делаю регулирование температуры ламинатора, для ЛУТа)

Почитав теорию.

Написал для себя класс.

#include "pid.h"

Pid::Pid(void)
    {
        this->iState=0;
        this->dState=0;
        this->iGain=0;
        this->pGain=0;
        this->dGain=0;
    }

Pid::Pid(float& iGain,unsigned short& pGain,unsigned short& dGain)
    {
        this->iGain=iGain;
        this->pGain=pGain;
        this->dGain=dGain;
    }

Pid::~Pid(void)
    {
        
    }
    
float Pid::UpdatePID(unsigned short& error, unsigned short& position)
    {
    
    unsigned short     pTerm;
    unsigned short    dTerm;
    float    iTerm;
    pTerm=this->pGain*error;    //Вычисление пропорциональной состовляющей
    this->iState+=error;    //Вычисление интегральной состовляющей с учетом приделов
    
    if(this->iState > this->iMax)
    {
        this->iState=this->iMax;
    }
    else if(this->iState < this->iMin)
    {
        this->iState=this->iMin;
    }

    iTerm=this->iGain*this->iState;    //Расчет интегральной состовляющей
    dTerm=this->dGain*(position - this->dState);//расчет. диф. состовляющей
    this->dState=position;
    return (pTerm+iTerm+dTerm);
    }

 

#ifndef PID_DEF_H
#define PID_DEF_H

#include "stdafx.h"
#include <float.h>
class Pid
{
  private:
    unsigned short     dState;        //Последняя входная позиция
    unsigned short    iState;        //Сосотояние интегратора
    unsigned short     iMax,iMin;    //Max & Min состояние интегратора
    
    float        iGain;        //интегральная компонента
    unsigned short    pGain;        //пропорциональная компонента
    unsigned short    dGain;        //производная компонента
  
  public:
    Pid(void);
    Pid(float& iGain,unsigned short& pGain,unsigned short& dGain);
    ~Pid(void);
    float UpdatePID(unsigned short& error, unsigned short& position);
};

#endif //PID_DEF_H

 

 

Вопрос в следующем вот посчитали с помощью метода UpdatePID новое значение... Вот только что менять в ШИМе частоту или скважность....

И какую выбирать частоту ШИМ?

Стабилизация нужна +-2градуса.

 

Да и по ПИД вопросу, как правильно выбрать max & min состояние интегратора....

Да и как понял из теории для термостабилизации достаточно будет ПД алгоритма, т.е. можно избавиться от интегральной компоненты, т.е. от работы с float.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

ПД закон имеет неравномерность регулирования, другими словами Вы получаете устойчивый процесс, но задание отличается от регулируемого параметра

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хм, а зачем на клапан вообще двигатель, например занимался по работе электромагнитами, узнал кучу нового, например что в клапанах они очень часто используются, просто советую в интернете посмотреть информацию по клапанам и системам регулировки.

по регулеровке температуры вопрос, чем регулируется температура(просто отключение подогрева, и/или система вентиляции), ну и выходная характеристика термодатчика? просто на контроллерах часто програмировал термоконтроль для уличных устройств(-40 +50), хотя там больше подогрев играл роль(эл. компоненты не все держали отрицательную температуру), нежели охлаждение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...