Перейти к содержимому
Quant

Библиотека ПИД-регулятора

Рекомендуемые сообщения

Привет форумчане!

Для тех, кто не знает, что это за штука то такая,можете посмотреть 

https://ru.wikipedia.org/wiki/%D0%9F%D0%98%D0%94-%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80

Прочитали/знаете?Идём дальше.


Зачем это?

Реакторы - яркий пример.Особенно из бигреакторсов. Можно достаточно легко поддержать его температуру и не сжигать лишнее топливо.Впрочем,можно найти ещё больше применений.

Где код?

http://pastebin.com/nTJvpax3

А как заставить его работать?

Тут всего три функции

 add(получение,выдача,коэффициенты kp,ki,kd,опционально минимум,максимум) == loop

 таблица loop:

   loop:execute(время с предыдущего запуска) - запускает ОДИН! раз цикл,обновляя значения

   loop:reset() сбрасывает накопленные значения

 А пример?

http://pastebin.com/85c7Axm2

P.S. Коэффициенты подобраны не верно.Появляются колебания.

 P.P.S Маленькая проблема с тегами

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


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

А я помню в колледже проходил ПИД-регуляторы. Лайк за то, что напомнил приятные воспоминания.

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


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

В функции loop.reset достаточно сбрасывать только интегратор loop.I. Переменная loop.D все равно пересчитывается на каждом такте регулирования независимо от своего предыдущего значения. А что такое loop.p0 вообще не понял. Она нигде не определяется. По идее где то должно быть

loop.p0=get

И как на счет зоны нечувствительности?

Неужели в майнкрафте есть объекты, для регулирования которыми требуется ПИД-регулятор?

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

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


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

В функции loop.reset достаточно сбрасывать только интегратор loop.I. Переменная loop.D все равно пересчитывается на каждом такте регулирования независимо от своего предыдущего значения. А что такое loop.p0 вообще не понял. Она нигде не определяется. По идее где то должно быть

loop.p0=get

И как на счет зоны нечувствительности?

Неужели в майнкрафте есть объекты, для регулирования которыми требуется ПИД-регулятор?

Исправил.

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


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

Зачем оно нужно рядовому Васе Пупкину который вчера изучил луа и хочет программулек понаписывать? Объясните.

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


Ссылка на сообщение
Поделиться на других сайтах
Зачем оно нужно рядовому Васе Пупкину который вчера изучил луа и хочет программулек понаписывать? Объясните.

У рядового Васи Пупкина иконы ECS стоят на рабочем столе. И плакат "ГРАААФООН" на стене.

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


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

  • Не понимаю, зачем тратятся ресурсы на обратные вызовы get/set, если вместо вызова get можно передать параметр в функцию execute, а вместо вызова set вернуть из execute нужное значение. Должно получиться что-то типа:

    speed = speed + loop:execute(0.1,r-c)
    c = c + speed
    с избавлением от лишнего кода.
  • Не понимаю из примера, как управлять реактором. Какие показатели из реактора считываются, а какими параметрами реактор управляется.
  • Не понимаю из описания, как подбирать коэффициенты. Без этого код бесполезен.
  • Также есть мелкие ошибки, например, в строке local get=get() или if value>0 then speed=speed+math.min(value,0.1) else speed=speed+math.max(value,-0.3) end

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


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

Авчомсмысол для BigReactors? Там же просто кубик 3х3 собрал, положил слиток один, стержни запихал на 40% и тебе на неделю хватит, блин.

 

P.S.: теги "иб" и "лиотекаб" - топ!

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

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


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

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

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

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

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

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

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


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