Quant 442 Опубликовано: 3 августа, 2016 Привет форумчане! Для тех, кто не знает, что это за штука то такая,можете посмотреть 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 Маленькая проблема с тегами 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 3 августа, 2016 А я помню в колледже проходил ПИД-регуляторы. Лайк за то, что напомнил приятные воспоминания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 3 августа, 2016 (изменено) В функции loop.reset достаточно сбрасывать только интегратор loop.I. Переменная loop.D все равно пересчитывается на каждом такте регулирования независимо от своего предыдущего значения. А что такое loop.p0 вообще не понял. Она нигде не определяется. По идее где то должно быть loop.p0=get И как на счет зоны нечувствительности? Неужели в майнкрафте есть объекты, для регулирования которыми требуется ПИД-регулятор? Изменено 3 августа, 2016 пользователем Zer0Galaxy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Quant Автор темы 442 Опубликовано: 3 августа, 2016 В функции loop.reset достаточно сбрасывать только интегратор loop.I. Переменная loop.D все равно пересчитывается на каждом такте регулирования независимо от своего предыдущего значения. А что такое loop.p0 вообще не понял. Она нигде не определяется. По идее где то должно быть loop.p0=get И как на счет зоны нечувствительности? Неужели в майнкрафте есть объекты, для регулирования которыми требуется ПИД-регулятор? Исправил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 3 августа, 2016 Зачем оно нужно рядовому Васе Пупкину который вчера изучил луа и хочет программулек понаписывать? Объясните. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 3 августа, 2016 Зачем оно нужно рядовому Васе Пупкину который вчера изучил луа и хочет программулек понаписывать? Объясните. У рядового Васи Пупкина иконы ECS стоят на рабочем столе. И плакат "ГРАААФООН" на стене. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 3 августа, 2016 Не понимаю, зачем тратятся ресурсы на обратные вызовы 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 Опубликовано: 4 августа, 2016 (изменено) Авчомсмысол для BigReactors? Там же просто кубик 3х3 собрал, положил слиток один, стержни запихал на 40% и тебе на неделю хватит, блин. P.S.: теги "иб" и "лиотекаб" - топ! Изменено 4 августа, 2016 пользователем Kartze Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах