Делаем трехпозиционный ПИД-регулятор из аналогового

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ต.ค. 2024

ความคิดเห็น • 108

  • @yuriypriymakov929
    @yuriypriymakov929 ปีที่แล้ว +4

    Грамотный вы человек, спасибо что делитесь своим опытом. И ещё, это коротко, всё по существу и без лишнего разглагольства. Спасибо.

  • @Noname-el6tq
    @Noname-el6tq ปีที่แล้ว +1

    Млять из 10000000000 видео, только ты один показал настройки пид регулятора этих сраных коэфициентов, остальные в видео два часа графики свои показывают и ни слова о настройке, спасибо тебе человек

  • @Igor-eta
    @Igor-eta 2 หลายเดือนก่อน

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

    • @dimalimite
      @dimalimite  2 หลายเดือนก่อน

      @@Igor-eta Спасибо! 5536913882006709

    • @dimalimite
      @dimalimite  2 หลายเดือนก่อน

      @@Igor-eta Спасибо!

  • @СергейСевас-й8м
    @СергейСевас-й8м ปีที่แล้ว

    Дмитрий, спасибо Вам! Всегда с удовольствием смотрю Ваши видео!

  • @a1er123
    @a1er123 ปีที่แล้ว +1

    Супер! Очень полезно!

  • @Menshinin
    @Menshinin ปีที่แล้ว +4

    Вы даже не представляете, насколько проще эта задача решается :)
    Правда с Овеном я не работал, возможно там какая-то специфика требует такого усложнения.
    Для начала, достаточно оставить лишь И составляющую, Д в вентиляции и отплении не нужна.
    П составляющая бессмысленна в отсутствии обратной связи от клапана.
    Далее берём разницу между уставкой и фактической температурой, умножаем на коэффициент П и прибавляем к накопительной переменной. Пусть это будут милисекунды.
    Далее, в секундном цикле смотрим, если в переменной набралость больше 1000, двигаем клапан в одну сторону и вычитаем 1000 из накопительной переменной, если мегьше - 1000, то секунду двигаем в другую и прибавляем.
    Всё.
    Красоты ради можно завести счётчик движения в одну сторону и блокировать слишком большое количество непрерывных движений в одном направлении.
    Ещё бОльшей красоты ради можно ограничить прирост за 1 такт, ввести мёртвую зону и т.д. по аналогии с умными ПИДами, но на практике это никому кроме внутреннего перфекциониста программиста не нужно.

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Вечер добрый.
      Я вам таких аналогичных способов штук 5 смогу легко придумать.
      Вот например: Можно просто давать импульс 1 сек и 5 сек паузы на открытие, если ниже уставки и тоже самое на закрытие, если выше уставки.
      Будет работать 100%. Вопрос точности вынесем за скобки.
      Но это не ПИ/ПИД регулятор :). Наверное дома для себя такое можно сделать.
      Если у вас есть пример вашего регулятора по вашему описанию, который стоит на пром объекте, то с удовольствием посмотрю :).

    • @Menshinin
      @Menshinin ปีที่แล้ว

      @@dimalimite Объект действительно есть, там реконструкция вентиляции была но привода менять не хотели. Делалось на Delta Controls, язык там один, типа ST.
      Только Ваш сарказм непонятен, так как описанный алгоритм являет собой классический И-регулятор, в задаче, где применение П составляющей физически невозможно, а Д - не имеет практического смысла.
      Я не виноват, что регулятор так прост :)

    • @dimalimite
      @dimalimite  ปีที่แล้ว +1

      @@Menshinin да нет сарказма никакого. Я много раз говорил и говорю, что работать будет всё что угодно. И необязательно это должно быть сложно. То что вы описали - уверен тоже работоспособно и работает.
      Если не затруднит, то выложите сюда прям в комментарии копи-паст из ST-проекта. Интересно посмотреть.
      Я просто не очень понял следующие моменты и поэтому и прошу посмотреть:
      - "П составляющая бессмысленна в отсутствии обратной связи от клапана.
      Далее берём разницу между уставкой и фактической температурой, умножаем на коэффициент П и прибавляем к накопительной переменной. Пусть это будут милисекунды." Получается, что вроде П нет, а потом вроде есть П в следующем предложение;
      - "П составляющая бессмысленна в отсутствии обратной связи от клапана." Что вообще означает эта фраза? Я вообще не понимаю :(;
      - "в задаче, где применение П составляющей физически невозможно". Не представляю себе задачу в системе вентиляции где применение П составляющей физически не возможно.
      И большая просьба - не изменяйте комментарии! Хотите что-то исправить или дописать - пишите новый комментарий!

    • @Menshinin
      @Menshinin ปีที่แล้ว

      @@dimalimite Выложить сложно, проект в 2009 был, а Дельта программируется исключительно онлайн.
      Но я будучи у компьютера распишу поподробнее. Сейчас я с телефона.

  • @viktorlevchenko4337
    @viktorlevchenko4337 ปีที่แล้ว

    Спасибо. Так можно программирование выучить. 🙂

  • @AnatoliyGysev
    @AnatoliyGysev 15 ชั่วโมงที่ผ่านมา

    Добрый день. Выяснилось, что при больших расхлждениях в текущей переменной и заданной схема не работает. Штатный пид отказывается подавать сигналы. Также при старте при больших цифрах значений переменных и их разности. Хорошо работает при начальных нулях. А нужен пид для вентиляции с дискретным исполнительным механизмом и большой инерцией датчика температуры

    • @dimalimite
      @dimalimite  14 ชั่วโมงที่ผ่านมา

      @@AnatoliyGysev день добрый. кто не работает? Аналоговый пид встроенный или моя прихлобучка?

    • @AnatoliyGysev
      @AnatoliyGysev 7 ชั่วโมงที่ผ่านมา

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

  • @ФанильСалахутдинов-д3к
    @ФанильСалахутдинов-д3к ปีที่แล้ว

    Я тоже создал преобразователь подобный что на видео но под управление форточками. Отличие моего в том что к расчитанному проценту он подходит из расчитанного шага и отсрочки (от дельты считает какой импульс дать), также установил лимиты задаваемые, минимальный и максимальный процент открытия ( условия дождя, скорости, направления ветра и ручное ограничение). Ввиду того что форточки 2 сделал переориентирование наветренной и подветренной форточки. Визуализацию на виртуино делаю. Офигенная программа, каскада рядом не стоит

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Я по каскаде тоже в каком-то видео говорил, что мне не зашла эта прога.

    • @endprg6477
      @endprg6477 ปีที่แล้ว

      Хоть бы показал своё творение.

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Это вы по этой системе своей пишите вопрос про сброс накопленного времени открытия?

  • @gertil58
    @gertil58 8 หลายเดือนก่อน

    Классно! а можете дать ссылочку на загрузку вашего макроса или скинуть на почту?

  • @romakim1356
    @romakim1356 ปีที่แล้ว

    Видео полезно однозначно . Подскажите а почему в конце Вы не задаёте текущее значение температуры - , получается оно не важно для данного опыта? и корректно ли называть данный тип регулятора ШИМом?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      День добрый!
      1. Оно не то чтобы не важно. Регулятор работает с отклонением уставка-текущее значение. Дельта именно важна. Просто чтобы в двух местах параметры не менять и видео не затягивать я менял только уставку :).
      2. Нет это не регулятор с ШИМ выходом. С ШИМ выходом это если 0-100% переводить в "заполнение" импульса в цикле допустим 3 сек (10%-это 0,3 сек импульс и 2,7 сек пауза, 50%-это 1,5 сек импульс и 1,5 сек пауза и т.д.). И выход был бы только 1.

  • @РжуНимагу-ф6з
    @РжуНимагу-ф6з ปีที่แล้ว

    В этот раз просто замечательно! А можно в следующий раз показать как сделать чтоб регулятор не давал импульсы на открытие или закрытие, если регулируемый параметр и так идет в нужную сторону. Так бороться с перерегулированием. Только не надо ссылаться на параметр Д регулятора.

    • @dimalimite
      @dimalimite  ปีที่แล้ว

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

    • @РжуНимагу-ф6з
      @РжуНимагу-ф6з ปีที่แล้ว

      @@dimalimite да, бывает. Только от перерегулирования это не спасает.

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      @@РжуНимагу-ф6з приведите конкретный пример.
      Перерегулирование - это нормальное явление при стремление как можно скорее выйти на уставку. Если скорость выхода ну уставку не важна, то замедлите настройки регулятора и перерегулирование уйдёт.

    • @РжуНимагу-ф6з
      @РжуНимагу-ф6з ปีที่แล้ว

      @@dimalimite может для вас и нормальное явление. Мне в свое время на Р25 удавалось регулирование в один импульс на всех регуляторах, объект паровая котельная. А вам слабо по развитию сигнала рассогласования сделать так же на контроллере?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Если вам есть что показать, то покажите.

  • @ing_ildar
    @ing_ildar 11 หลายเดือนก่อน

    Здравствуйте , вы могли бы скинуть ссылку на данный код из видео, спасибо

  • @ВладимирДружинин-у5щ
    @ВладимирДружинин-у5щ ปีที่แล้ว

    Добрый день! Отличное видео, чувствуется понимание процесса. Позвольте уточниться по алгоритму применительно к практике - как вы заметили при включении симуляции (по сути - подаче питания на ПР) идет синхронизация модели путем непрерывного сигнала на закрытие. Я так разумею что нужно дождаться ухода клапана до закрытого положения и после этого включать регулирование, и ПР в дальнейшем будет отдавать себе отчет в примерном положении клапана? Так понимаю придумано это для исключения долгой "долбежки" клапана в крайнее положение в последующей работе?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      День добрый.
      Основная цель всё верно - убрать ненужные импульсы при достижение крайних положений. И тут получается что больше реального хода привода импульсов не удастся выдать, т.к. модель достигнет крайнего положения даже если сам привод уже изначально стоял в этом крайнем положение.
      Ждать реальной синхронизации большого смысла нет, т.к. положение не важно. Важно поддерживать именно регулируемый параметр. На практике, если система долго не выключается и периодически модель достигает крайних положений (или предполагается периодический перевод в крайние положения), то достаточно близко модель к реальному положению показывает. Но ещё раз повторю, что на регулирование это не влияет. Это скорее визуально приятно наблюдать :)

    • @ВладимирДружинин-у5щ
      @ВладимирДружинин-у5щ ปีที่แล้ว

      @@dimalimite спасибо за ответ. То что не влияет на регулирование в целом понятно, просто хотел вот уточнить для понимания. Если позволите ещё один вопрос, опять же применительно к теплоэнергетике и ПР200 дабы не углубляться в дебри - как обычно решаете задачу фильтрацию входных данных от датчиков температуры (меня в основном интересуют термосопротивления) - достаточно ли просто выставление постоянной времени фильтра в настройках аналоговых входов, или вводите какие-нибудь дополнительные усреднения?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      ​@@ВладимирДружинин-у5щ достаточно настроить встроенный на входах фильтр.

    • @ВладимирДружинин-у5щ
      @ВладимирДружинин-у5щ ปีที่แล้ว

      @@dimalimite Большое спасибо за отклик и за ваш труд ^^

  • @kirovpreovitavp
    @kirovpreovitavp 6 หลายเดือนก่อน

    Дмитрий, спасибо! Только вот обьясните бедному человеку, где найти этот готовый макрос в OwenLogic в менеджере компонентов? Он есть там или его надо самому писать в программе? А?

    • @dimalimite
      @dimalimite  6 หลายเดือนก่อน

      Самостоятельно. + в процессе разберётесь как он работает

  • @vironikatesla7702
    @vironikatesla7702 ปีที่แล้ว

    Дмитрий, все хотелось спросить как у профессионала. Время цикла пид-регулятора зависит от мощности горелки?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      День добрый.
      На мой взгляд нет. Лично я для горелок (любой мощности) использую 3,2 сек цикл регулятора.

  • @НикКИН-э8ж
    @НикКИН-э8ж 10 หลายเดือนก่อน

    Здравствуйте, Дмитрий. Использовал ваш макрос в "железе". ПР200. Подключил tp100, запустил программу, и нагревал - остужал термосопротивление, наблюдая за работой пид регулятора. Иногда наблюдается хаотичное переключение выходных реле, очень частое переключение, зуммерят. Изначально такое поведение наблюдалось чаще, пока не поднял постоянную времени фильтра до 1500 мс. на аналоговом А1. Вроде прекратилось, но иногда проскакивает. С чем это может быть связано?

    • @dimalimite
      @dimalimite  10 หลายเดือนก่อน

      Не знаю. Скорее всего где-то косякнули в блоках. Стоит перепроверить (может вместо >= у вас = например стоит где-то или типо того). Ещё интересно что вы подаёте на вход макроса (может там хаотичные значение типа 40-30-55-40...). В любом случае прям "зуммерения" быть не должно. Максимум раз в 3 сек (если как у меня цикл оставили) может меняться направление открытия/закрытия. Если проверка не поможет, то присылайте на dimalimite@gmail.com посмотрю

    • @НикКИН-э8ж
      @НикКИН-э8ж 10 หลายเดือนก่อน

      @@dimalimite На вход макроса подаю выход с пид регулятора, как в вашем примере. На вход пид - с выхода преобразователя сопротивления в температуру, подключенного к аналоговому входу АI1, настроенного как 4000 Ом. Макрос перепроверял два раза, вроде ошибок нет. Исходник на работе, в понедельник ещё раз перепроверю. Спасибо вам.

  • @romakim1356
    @romakim1356 ปีที่แล้ว

    Дмитрий, а каким кабелем обычно подключаете приводы?Каким сечением. Трехпозиционые/ аналоговые вообще есть разница?

    • @dimalimite
      @dimalimite  ปีที่แล้ว +1

      Трехпозиционные МКШнг(А)-LS 3х0,75 или 5х0,75. Аналоговый управляющий сигнал экранированным МКэШнг(А)-LS

    • @romakim1356
      @romakim1356 ปีที่แล้ว

      @@dimalimite Я так и думал). Спасибо

    • @romakim1356
      @romakim1356 ปีที่แล้ว

      @@dimalimite правда. не понимаю зачем используют парные жилы, например, 1x2x0.75 или 2х2х0.75

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      @@romakim1356 парные скрученные для интерфейсов RS-485. Для аналоговых сигналов 4-30 мА, 0-10 В или термометров сопротивления великого смысла не вижу в парной скрутке. Может конечно я что-то делаю не так :)

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      4-20 мА

  • @ПавелИванов-с8ц7ы
    @ПавелИванов-с8ц7ы 9 หลายเดือนก่อน

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

    • @dimalimite
      @dimalimite  9 หลายเดือนก่อน

      День добрый. Да можно.

  • @kuhlivskij_roman
    @kuhlivskij_roman ปีที่แล้ว +1

    👍👍👍🤝🤝🤝

  • @НиколайСерафимов-н8и
    @НиколайСерафимов-н8и ปีที่แล้ว

    Здравствуйте Дмитрий! С удовольствим смотрю ваши видео! Спасибо большое за столь интересные и информативные ролики! После просмотра этого видео вернулась идея довести до ума свою систему автоматизации. А именно: у меня ПР200 управляет ТТ котлом, ТА, заполнением рабочего бункера из накопительного и т.д., в общем, почти все входы-выходы заняты. Имеются только два свободных дискретных выхода. В то же время схема управления приводом трехходового клапана ТТ котла (защита от конденсата) собрана на ПЛК Simens RLU222 (имеется у него такой режим), работает исправно, но хочется запихать всё ПР, благо для этого всё есть (RLU управляет трехточечным приводом). В связи с этим два вопроса: 1) можно ли код макроса из видео скачать; 2) будет он работать в режиме охлаждения (как я понимаю в таком режиме у меня отрабатывает Simens).

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      День добрый, Николай.
      1. Скачать нет, но можно самостоятельно его сделать по данному видео и как бонус разобраться в его работе. Если неудобно по видео, то напишите на почту dimalimite@gmail.com и я вам скриншоты пришлю программы.
      2. Режим работы нагрев/охлаждение определяется самим регулятором. Макросу всё равно :). Поставите режим работы регулятора на охлаждение и будет работать без проблем.

  • @1FrozenHeart1
    @1FrozenHeart1 ปีที่แล้ว

    Вместо блоков сейв можно использовать sel на один из входов которого приходит нужная нам переменная, а на второй передаем выходящее значение? То есть при единице как бы записываем при ноле просто дублируем то значение которое было при единице

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Попробуйте я так в голове сообразить не могу можно или нельзя :)

  • @ДмитрийБорисенков-й3л
    @ДмитрийБорисенков-й3л ปีที่แล้ว

    Красава

  • @user-ww1iw4bi8k
    @user-ww1iw4bi8k ปีที่แล้ว

    Подскажите , пожалуйста, ТРМ -12 выполняет ту же самую функцию?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Там есть сразу встроенный трехпозиционный регулятор. Раньше он модель внутри не считал, а просто выдавал сигналы больше/меньше (возможно сейчас что-то изменилось).

  • @ahtungs6274
    @ahtungs6274 9 หลายเดือนก่อน

    Я так понимаю он все время щелкать релешкой будет? Открыть закрыть.

    • @dimalimite
      @dimalimite  9 หลายเดือนก่อน

      Нет

    • @ahtungs6274
      @ahtungs6274 9 หลายเดือนก่อน

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

    • @dimalimite
      @dimalimite  9 หลายเดือนก่อน

      @@ahtungs6274 тут положение модели клапана подгоняется под требуемый выход регулятора. Даётся импульс нужной длительности и на этом всё. Если меняется выход регулятора, то опять импульс и т.д.

  • @mrsergh7386
    @mrsergh7386 ปีที่แล้ว

    Спасибо, видео годное. Не загружали в общие библиотеки свое творение? P.S кто будет повторять макрос ставьте замедления видео, что бы правильно распределить связи. Дмитрий, еще раз спасибо ;)

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Нет. А разве как-то можно загрузить именно в общую библиотеку?

    • @mrsergh7386
      @mrsergh7386 ปีที่แล้ว

      @@dimalimite ДУмаю, как то можно. База постоянно пополняется. Подскажите пожалуйста, как вы сделали макросы fSAVE и FEQGT? точнее их наполнение

    • @dimalimite
      @dimalimite  ปีที่แล้ว +1

      @@mrsergh7386 fSAVE есть в менеджере компонентов (в аналоговых преобразованиях), а fEQGT сам сделал вот видио и там же можно скачать его th-cam.com/video/K9AvjkmFX1c/w-d-xo.html

    • @mrsergh7386
      @mrsergh7386 ปีที่แล้ว

      @@dimalimite Посмотрел, а есть разница между fGTEQ и fEQGT?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      @@mrsergh7386 наверное нет. А где вы такие нашли? У меня вроде GTEQ, fGTEQ и fEQ

  • @andreykramskih9077
    @andreykramskih9077 ปีที่แล้ว

    А можно получить данный макрос?

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Нет

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Только самостоятельно сделать/перерисовать с экрана + попутно разберётесь как работает и отпадут все возможные вопросы

  • @klm3852
    @klm3852 ปีที่แล้ว

    Как он будет вести себя, если пропало тепло и регулятор высчитывал 100% в течение долгого времени. Потом тепло дали, сразу клапан начнет закрываться? Через некоторое время после работы начнется рассинхрон модели и механизма

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Вечер добрый.
      Рассинхрон полюбому будет, но для регулирования это всё равно.

  • @Menshinin
    @Menshinin ปีที่แล้ว

    (продолжаю)
    11. Толку от Д составляющей в теплотехнике мне обнаружить не удавалось. Вот в механике, где инерция понята и усилие воздействия, там да. Квадрокоптер бед Д составляющей, или балансирующего робота не сделать.
    12. Опять же если ОЧЕНЬ хочется, в рамках "моей" программы можно и П и Д добавить, строчек кода не добавится, просто единственная строка станет длиннее.
    13. ПИД регулятор "моей" программы точно соответствует классике, только он не на "положение", а на приращение, поэтому там не U(n)=U(n-1)+..., а просто U=
    Err2:=Err1
    Err1=Err
    Err=SP-T
    U=Kp(Err-Err1)+Ki(Err)+Kd(Err-2*Err1+Err2)
    При этом я оставил только: U=Ki(Err)
    Тут мы можем поспорить о "тоже будет работать" или "оптимальный вариант", но по поводу "полного" ПИД-а, полагаю Вы не станете поднимать этот вопрос, просто признав, что это "оптимальный вариант".
    14. Уточню, что у нас есть рабочий цикл программы, что эта строка выполняется 1 раз в секунду.
    15. "Организационно", мы можем наложить ограничение на абсолютную величину U, так как это приращение положения за 1 секунду, ну и как бы больше, чем привод может физически сдвинуться мы всё равно не уедем никуда.
    16. Ровно как и на минимальное приращение за такт, симулирую "зону нечувствительности" мы тоже можем реализовать.
    17. Более того, мы можем ещё хитрее поступить, устроив зону нечувствительности для Err, но это уже вопрос перфекционизма, который здесь и сейчас обсуждать не стоит.
    18. А вот дальше у нас самое интересное, так как оперируя односекундными циклами нам бы хотелось как-то поточнее управлять приводом. Мы заводим промежуточную переменную, в которую накапливаем U - UC=UC+U. То есть каждый цикл мы сколько-то "добавляем" в "копилочку", или вычитаем, и когда там "накапает" +1000 или -1000 мы двинем привод на 1000мс в одну ил другую сторону и вычтем 1000 из "копилочки", ну или прибавим:
    UC=UC+U
    IF UC>1000 Out_Up=1; Out_Down=0; UC=UC-1000
    ELSEIF UC

    • @dimalimite
      @dimalimite  ปีที่แล้ว +1

      Час вы потратили не зря! Спасибо!
      По п. 13 я понял что вы делаете.
      Что я думаю по этому:
      1. Про приращение - это всё понятно. Согласен. Я делаю точно также с таким же смыслом (не в этом конкретном видео, а вообще на работе и в других видео по этой тематике).
      2. U=Kp(Err-Err1)+Ki(Err)+Kd(Err-2*Err1+Err2) с формулой не согласен, т.к. "по классике" она бы выглядела вот так U=Kp(Err-Err1)+Ki(Err1)+Kd(Err-2*Err1+Err2). Именно Ki(Err1). Посмотрите как выглядят реакции на единичное ступенчатое воздействие у ПИ-регуляторов в книжках по ТАУ. На первом шаге есть только "полка" от Kp(Err-Err1), а вот уже начиная со второго шага (где Err-Err1=0) появляется "наклон" от Ki(Err1). А в случае Ki(Err) полка будет увеличена на этот Ki(Err). Не будет действовать "правило" про время удвоения. НО РАБОТАТЬ БУДЕТ И ТАК И ТАК!!! Ещё конечно интересный вопрос о том в каких у вас единицах измерения подразумевается Kp, Ki и Kd. Особенно интересно Ki и как оно соотносится с Kp и имеет ли вообще какую-то связь. Я бы записал "классическую" формулу при цикле=1 сек, как U=Kp(Err-Err1+(Err)/Ти+Тд*(Err-2*Err1+Err2), где Kp=%/градус, Ти=сек, Тд=сек. И вот в таком виде я ей и пользуюсь (ну только цикл не секунда).
      3. Почему и как у вас работает U=Ki(Err) ? Объяснить легко. По сути это аналоговый П-регулятор самый-самый обычный, который никогда не достигнет уставки по определению из-за остаточного отклонения и при задание=уставке U=0. НО, т.к. вы преобразуете U в импульсы с передаёте их трехпозиционному приводу, который СОХРАНЯЕТ СВОЁ ПОЛОЖЕНИЕ, то он выполняет роль И в вашем аналоговом регуляторе (по сути интегрирует импульсы). Поэтому и только по этому это работает!!!
      4. Несмотря на то, что ваша система с формулой U=Ki(Err) работает и вы её называете классическим И регулятор - она таковой не является. Ни одной "классической" методикой такую систему не настроить. При этот она 100% рабочая.
      5. Всё вышенаписанное ещё раз подтверждает тезис о том - что работает практически всё! И решений может быть сотня.

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      U=Kp(Err-Err1+Err1/Ти+Тд*(Err-2*Err1+Err2)) скобку последнюю пропустил в формуле и Err вместо Err1 скопипастил у вас в И части :)))))

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      И ещё раз вас прошу - НЕ ИЗМЕНЯЙТЕ СВОИ КОММЕНТАРИИ! Пишите ещё что что-то хотите добавить/исправить и т.п.

    • @dimalimite
      @dimalimite  ปีที่แล้ว +1

      Вообще все эти темы про приращения, про формулы и т.п. у меня года 3 лежат на канале th-cam.com/video/qJt-AtaccJE/w-d-xo.html

    • @Menshinin
      @Menshinin ปีที่แล้ว

      @@dimalimite п.3 - ну как бы да, "пропорциональное воздействие" которое уходит на "интегрирующий по своей сути механизм" привода.
      Тут важно, что аналоговый и 3п привод друг к другу относятся как функция и её интеграл.
      И уставки оно достигает, в отличие от пропорционального воздействия на аналоговый привод. Собственно, как оно не может не достичь-то? Пока есть отличная от нуля ошибка мы всегда меняем положение привода.
      п.2 - коэффициенты эмпиричны, но они и "интуитивны" одновременно, так как масштаб возможных рассогласований понятен, время хода привода тоже, дальше в несколько итераций всё уточняется, и становится вполне единообразным для похожих установок.

  • @Menshinin
    @Menshinin ปีที่แล้ว

    Доброе утро,
    Формат комментариев Ютуба не самый удобный для данной задачи, но что-нибудь придумаем.
    Итак, давайте по порядку:
    Описанный мной алгоритм касается двух аспектов, и будет проще сразу их разделять: ПИД регулятор (1) и трёхпозиционное управления (2).
    Нумерую, чтобы было проще возражать/уточнять.
    Говоря о ПИД регуляторе, следует понимать, что:
    3. ПИД регулятор для аналогового управления клапаном определяет ПОЛОЖЕНИЕ, а ПИД регулятор ориентированный на трёхпозиционное управление определяет ПРИРАЩЕНИЕ положения. Эти два понятия соотносятся друг с другом как функция и её производная.
    4. Говоря о коэффициентах ПИД регулятора важно помнить, что они все суть "пропорциональные", так как являются умножающими коэффициентами. Путаницы на этой почве надо стараться избегать.
    5. Для понимания стоит отдельно выделить П-регулятор, так как разные его понимания тоже вносят много путаницы. П-регулятор смотрит на измеренную величину, в то время как остальные составляющие И и Д смотрят на Ошибку.
    6. Давайте "заведём" переменные, кстати. Т - наша измеряемая величина, SP - уставка, Kp, Ki, Kd - параметры регулятора. Err, Err1, Err2 - ошибка (текущая, прошлая, позапрошлая),
    ближе к делу переменные добавятся, я сейчас вслепую не попаду в синтаксис, так как "давно не брал в руку шашку".
    7. Итак, П-регулятор, это обычная линейная функция y=kT+b. Для удобства, допустим мы делаем приточку, мы просто представим две точки+ 12 градусов - клапан открыт на 100% и 30 градусов - клапан закрыт в 0%. Разумеется на практике это будет просто плюс-минус от SP, не суть. Суть в том, что П-регулятор всегда выставит наше ПОЛОЖЕНИЕ куда-то "в нужную сторону", но никогда точно не попадёт.
    8. В трёхпозиционном регулировании понятия ПОЛОЖЕНИЕ нет, поэтому и смысла в П-составляющей ПИД регулятора при трёхпозиционном управлении тоже нет.
    9. Если мы возьмём классическую рекуррентную формулу ПИД-регулятора, а части П-составляющей: U(n)=U(n-1)+Kp(Err-Err1), то мы можем заметить, что При равных и отнюдь НЕ НУЛЕВЫХ Err И Err1 происходить не будет НИЧЕГО, то есть всё то же самое, что и для y=Kx+b.
    10. Фактически, П составляющая задаёт начальное положение, которое в 3п регулировании не нужно, и немного "подруливает" в нужную сторону при изменении Т. "Подруливание" всегда невелико, иначе всё в раскачку уйдёт, и его отсутствие при 3п регулировании прекрасно компенсируется небольшим увеличением Кр.
    (продолжение следует)

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      День добрый.
      Давайте лучше посмотрим ваш код на ST или в любом другом виде.
      Нет кода от 2009 года - не проблема. Покажите как вы делаете сейчас. А то мы тут сейчас с вами будет из пустого в порожнее очень долго переливать.
      По вашим пунктам 1-10 я или не понимаю о чём вообще идёт речь или с ними не согласен. Поэтому и предлагаю сразу перейти к программной реализации. Часто такое бывает, что у разных людей разные понятия о классических формулах и т.п. Поэтому лучше 1 раз увидеть, чем 10 раз прочитать описание.

    • @Menshinin
      @Menshinin ปีที่แล้ว

      ​@@dimalimite Я там ниже в общих чертах по памяти показал, надеюсь Вас устроит.
      Дело не в "сохранении исходников", многие среды программирования к этому совсем не благоволят. Бакапить-то программы можно, но открыть это потом нечем, а загрузить уже некуда :)))

    • @Menshinin
      @Menshinin ปีที่แล้ว

      По п.7. хочу уточнить: ПИД-регулятор адекватнее всего представлять как линейную функцию (положения привода) y=Kp*T+b, где вся "ПИД-овская" игра сводится к управлению вот этим "b". То есть пропорциональная составляющая сама по себе (наклонная линия), а "умная" часть регулятора двигает её вверх-вниз стараясь достичь уставки. В случае 3п управления у нас линии нет, есть только точка, её и двигаем. И всё это потому, что у нас нет "положения", есть только "приращение".

    • @dimalimite
      @dimalimite  ปีที่แล้ว

      Я вам ответил в другой ветке . Я понял о чём вы

    • @АнтонК-ж5щ
      @АнтонК-ж5щ ปีที่แล้ว

      Белиберда.

  • @AnatoliyGysev
    @AnatoliyGysev 14 ชั่วโมงที่ผ่านมา

    Встроенный аналоговый. Не дает команду на прихлобучку

    • @dimalimite
      @dimalimite  12 ชั่วโมงที่ผ่านมา

      @@AnatoliyGysev странно конечно. Честно говоря, я не использовал никогда встроенный регулятор :) и сложно прокомментировать правильность его работы. Можно попробовать в техподдержку Овена обратиться (лучше написать со скриншотами проблемы). Они достаточно быстро отвечают

    • @AnatoliyGysev
      @AnatoliyGysev 10 ชั่วโมงที่ผ่านมา

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

    • @dimalimite
      @dimalimite  7 ชั่วโมงที่ผ่านมา

      @@AnatoliyGysev если у вас свой регулятор, то прихлобучку эту гораздо проще можно сделать. Тут внутри рассчитывается приращения, который регулятор выдаёт. А если регулятор свой, то и рассчитывать ничего особо не нужно.

  • @АсхатКоянбаев
    @АсхатКоянбаев 3 หลายเดือนก่อน

    Здравствуйте .Где можно скачать данный макрос?

    • @dimalimite
      @dimalimite  3 หลายเดือนก่อน

      @@АсхатКоянбаев только для самостоятельного изготовления + разберётесь параллельно как работает