Подскажите где можно взять ПИД регулятор для СПК207 на клапан
управления с помощью дискретных выходов БОЛЬШЕ/МЕНЬШЕ или
как его реализовать. Позиционера на клапане тоже нет.
Может у кого есть реализация этого ПИД?
Вид для печати
Подскажите где можно взять ПИД регулятор для СПК207 на клапан
управления с помощью дискретных выходов БОЛЬШЕ/МЕНЬШЕ или
как его реализовать. Позиционера на клапане тоже нет.
Может у кого есть реализация этого ПИД?
У меня такая же проблема. Нужна реализация выложенного на форуме регулятора PID_PWM_CE (в виде библиотеки версии CDSv2) для CDSv3. Конвертировать не получается - запрашивается пароль. С другими вариантами регуляторов, выложенными на форуме, та же ситуация. Поделитесь, пожалуйста! Может, как вариант, есть отдельно модуль ШИМ для CDSv3? Пробовал библиотеку OSCAT: "прикрутить" модуль PWM к ПИД-регулятору из Util.lib CDSv3 можно, но не очень понятно, как одной выходной переменной данного модуля можно управлять двумя дискретными выходами контроллера (Больше и Меньше)...
А ручками собрать свой ПИД?
Именно самому и в дифференциальном виде.
Задвижка как правило отлично рулится через ПИ-регулятор. -Д вообщем то не нужен.
Выход регулятора - скорость движения задвижки.
Условно говоря - выход =+100% = все время включен больше, выход=-100% = все время включен меньше. ШИМ рекомендую подбирать по задвижке. Там есть мин вр. вкл, мин вр. выкл.
P.S.
Для задвижки плохо что нет зоны не чувствительности.
Я брал стандантный ПИД и добавлял DB. Если ABS(невязка) < DB невязка = 0
ШИМ и ПИД-регулятор вещи несовместимые, если говорить о задвижках и клапанах с электроприводом. Задача регулятора найти устойчивое положение системы регулирования. ШИМом Вы всегда будете плясать вокруг устойчивого положения, иными словами сокращать ресурс органа регулирования. Выход регулятора-это смещение положения регулирующего органа (в случае задвижки).
А что такое ПДД2 регулятор?
Для 3-х позиционного управления клапанами используют импульсные ПИД-регуляторы. Первый импульс этого регулятора сдвигает регулирующий орган в соответствии с пропорциональной составляющей, последующие импульсы корректируют положение регулирующего органа в соответствии И (т.е. по накопленной статической ошибке) и Д (т.е. по реакции объекта регулирования) составляющими. Ни какими ШИМами это реализовать не возможно.
Это продифференцированный ПИД, система клапан с приводом с управлением больше/меньше сама является интегрирующей цепочкой (это я не сам придумал, вычитал на просторах сети, когда приперло трехходовым управлять) а двойное интегрирование получается ересь какая то.
Я ШИМом управляю, не знаю насколько это правильно нет... но клапана вроде как свое положение находят и не гуляют туда сюда.
Коэффициент заполнения считаю по пропорциональной и дифференциальной составляющей.
Ну вот вы пишите про импульсы, ну там длительность, как часто, в какую сторону подавать, нужно ведь считать как то.
Могли бы и пример расчета для примера кинуть.
Для ПИД-регулятора справедливо выражение для перемещения регулирующего органа Y:
Желаю удачи.Скрытый текст:
Если интересно, посмотрите как я сделал импульсный ПИД-регулятор. Любым замечаниям буду рад.
** Ксожалению, много логических ошибок, которые надо исправлять**
Наконец то!!!
После двух месяцев трудов и поисков мне удалось наконец написать полностью работоспособный ШИМ для клапана без датчика положения.
В проекте использовались только блоки из стандартной библиотеки CoDeSys и из Util собственно, сам ПИД регулятор, испытания проводил на этом стенде https://yadi.sk/i/0VWFUN4ecnPiQ
ссылка на мой Яндекс диск. Как это не удивительно я не являюсь специалистом в области составления алгоритмов ПИД регулирования, но результат меня приятно удивил.
Может мне показалось но мой ПИД регулятор на заданную уставку выходит лучше чем ТРМ212 почти без "проскока" и держит температуру -+ 1 гр. с от заданной уставки.
Конечно алгоритм еще требует доработки, но проект полностью работоспособен, и может использоваться на реальных объектах регулирования.
Тестировал в течении нескольких часов и остался доволен результатом. По его принципу написал алгоритм в CoDeSys v2.3 на ПЛК110, и также остался доволен результатом.
И чему несказанно был рад, что, клапан не дергался туда-сюда почти сразу нашел нужную точку и встал в необходимое положение.
Выкладываю проект в свободный доступ, ничего не закодировано и не запаролено. Буду рад любым доработкам и улучшениям, также надеюсь, что вы протестируете у себя на объектах, стенд стендом, а реальный объект, это совсем другое. Надеюсь что все выложил правильно на форуме и с открытием файла проекта проблем не возникнут, я новичок в этом деле.
Стенд обрезано: Вложение 15273
Фото моих уставок Вложение 15275
Всем кто использует в своих проектах PID из Util, нужно иметь ввиду и предусмотреть способ сброса ПИДа при смене уставки, как показали мои наблюдения на некоторое время ему (ПИДу) первое время "сносит" "башню".
А выражаясь грамотно происходит "удар" при регулировании. И это правильно, просто ПИД выдает результат с учетом новой уставки и накопленной старой интегральной составляющей.
22.11.2014г.
Тестировал ШИМ, и PID из библиотеки Util, на даче у своего коллеги (на форуме зарегистрирован как "Монтер", огромное ему спасибо), остались оба доволены результатом, правда в начале нам пришлось по-колдовать с Кp, Tn, Tv но результат получили хороший -+ 1,5 гр. после выхода на уставку 55гр., это при условии что газовый котел работал дискретно в диапазоне от 70гр. до 90гр..
Я устранил проблему с "броском" во время смены уставки и добавил блок архивации (кому не нужно можно удалить) по двум параметрам.
Скорректированный проект с архивацией также выкладываю (надеюсь все откроется без проблем).
Фото объекта Вложение 15386
В вашем проекте Ворона, используеться блок вашего изготовления с именем "Generator", в место него нельзя использовать блок "BLINK" ?
Проект на CoDeSys V2.3 c панелью СП270 здесь.
Поведение ПИДа при резкой смене уставки (нужно доработать ПИД должен быть сброшен после смены уставки) https://yadi.sk/i/CHKsfJOocnimA
Поведение ПИДа при обычной регулировке https://yadi.sk/i/k7QCIGRYcniNX
Также выкладываю файл панели.
Несовместимы ? А мужики-то и не знали
Если нету готового ШИМ на выходе, мастерим из Do
Теперь дружим с пидомКод:function psw : bool
var_input
in : real; //0..1.0
period : time;
---------------
psw := ((time_to_dword(time()) mod (time_to_dword(period))) / time_to_real(period)) < in;
Дергание механизма ? Зона нечуйствительности около нуля соответственно знаку.Код:function_block pid_to_2psw
var_input
actual, set_point : real; //текучка и задание соотв
period : time; //общий
var_output
plus, minus : bool;
var
pid : pid; //стандартный из util
---------------
pid(
actual := actual - set_point, //именно E на вход.
set_point := 0, //именно 0, т.к. E=0 и есть цель
y_min := -1,
y_max := 1
... //тута сами
);
plus := psw(limit(0, pid.Y, 1), period);
minus := psw(abs(limit(-1, pid.Y, 0)), period);
Сообсно всё.Код:var_input
n : real; //0..1.0
----
pid(...);
plus := psw(sel(pid.Y > n, 0, limit(0, pid.Y,1)),..);
minus := psw(abs(sel(pid.Y < -n, 0, limit(0, pid.Y,1))),..);
PS
Просьба не поднимать баян про якобы кривой util.pid
Потому что смена уставки для пида - то же что и скачок actual в другую сторону. Зачем тут ломать голову ?Цитата:
Всем кто использует в своих проектах PID из Util, нужно иметь ввиду и предусмотреть способ сброса ПИДа при смене уставки, как показали мои наблюдения на некоторое время ему (ПИДу) первое время "сносит" "башню".
Хотите безударно - поставьте для уставки прокладку из ramp_real
Код:var
ramp : ramp_real;
-----------
ramp(in:=set_point, ...);
pid(
actual := actual - ramp.out,
...
);
...
У нас в России мужики могут всякое совместить. А нормальный ПИД-регулятор находит равновесное положение системы за 3-4 импульса. Длительность этих импульсов разная: 1 длинный(пропорциональная часть) устанавливает регулирующий орган в положение близкое к равновесному, следующие 2-3 импульса короткие убирают ошибку рассогласования (интегральная часть). Дифференциальная составляющая вносит коррекцию в зависимости от скорости движения системы к равновесному состоянию. Правильному ПИД-регулятору не нужны прокладки из ramp. Сделать из аналогового ПИД-регулятора импульсный с помощью ШИМ нельзя - это будет не регулятор а недоразумение. Но я не отрицаю, что на каких-то объктах он будет вполне сносно работать.Цитата:
Несовместимы ? А мужики-то и не знали
Скрытый текст:
Нормальная таблица умножения умножает быстрее ?
В "равновесное положение системы за 3-4 импульса" заводит не ПИД регулятор а его настройки - т.е. использующий его чел.
Продолжайте витать в облаках, а я пока запущу очередную систему с аналоговым ПИД-регулятора на 3х поз.вентиле (ШИМ'ами на + и -)Цитата:
Сделать из аналогового ПИД-регулятора импульсный с помощью ШИМ нельзя - это будет не регулятор а недоразумение...
А кто их предлагал для ПИД-регулятора ?
Вы это цитируете чой-то задочное. А что такое
???
Бывает неаналоговый ПИД-регулятор ?
И чем для регулируемой темп-ры (например) отличается поворот вентиля на X градусов по изменению сигнала 4-20ма (например) от поворота на Х градусов по соответствующему импульсу ?
Скрытый текст:
Скрытый текст:
П.И.Д - что-то не вижу дискретов, разрывов...
..а постоянное значение аналога - экв. отсутствию импульсов
Интересно, а за что отвечает И в ПИД ?
Нет аналогового сигнала - рассматривайте как аварию, пжста - здесь не рассматривают сферических пони, если же хочется - смотрите тогда нет сигнала вместе с нет питания - и никто никуда не переместится
И для 3х поз - аварию нужно рассматривать переход в соотв. авар. положение. А аналог = min аналогичен (жесть) либо постоянному соотв. импульсу либо импульсу с длиной достаточной для перехода в какой-то край.
Про это - лучше где-нить в академиях
Для привода с постоянной скоростью перемещения. Тут и ШИМ не нужен. Да и код проще.
Начальное значение РО не имеет значения - встанет в нужно место все равно.Код:var_input
....
var_output
plus,minus : bool;
var_const
h : real := .. //что хоца считать верхом pida: 1, 100%, ...
timebase : time := .. //максимально близко к реальному времени полного перехода РО
z : real := .. //зона нечуйствительтности (соотнести с h)
var
pid : pid := (y_max := h); //все тот же пид
pos : pamp_real := (ascend := h, descend := h, timebase := timebase); //здесь ramp как модель РО
-------------------------
pid(
actual := actual,
set_point := set_point,
...
);
pos(in:=pid.y);
plus := pos.diff > z or pid.y = pid.y_max; // = max,min - гарантия от накопления погрешностей по timebase
minus := pos.diff < -z or pid.y = pid.y_min; // а i в pid все вылечит
Вероятно Вы путаете входной и выходной сигнал регулятора. Деление ПИД-регуляторов на аналоговые и импульсные осуществляют по их выходному сигналу.Цитата:
Сообщение от Валенок
Позвольте Вас спросить, а что вы имеете ввиду под термином "привод с постоянной скоростью перемещения" ? Разве это не клапан или задвижка с электроприводом?
С какого перепугу
?Цитата:
.. перемещаются в исходное положение(либо NO, либо NC), если нет сигнала
Что такое нет сигнала ? Проводочек отвалился ?
У ПИД регулятора выход в принципе только аналоговый. Импульсный ПИД - это дискретный косинус.Цитата:
Деление ПИД-регуляторов на аналоговые и импульсные осуществляют по их выходному сигналу.
А промежуточные прокладки этот выход могут превратить во что угодно и нужны только для связи ПИДа с РО. Эти прокладки непосредственно к ПИДу не имеют никакого отношения.
Собссно в моих примерах это и показано - ПИД и прокладки.
Да - клапан или задвижка с электроприводом. Без разгона в течении импульсаЦитата:
Позвольте Вас спросить, а что вы имеете ввиду под термином "привод с постоянной скоростью перемещения" ? Разве это не клапан или задвижка с электроприводом?
Скрытый текст:
Вы смеетесь?Цитата:
Сообщение от Валенокhttp://www.owen.ru/forum/images/butt...post-right.png
А промежуточные прокладки этот выход могут превратить во что угодно....... Эти прокладки непосредственно к ПИДу не имеют никакого отношения.
Кто с самого начала доказывал что ПИД-регулятором невозможно управлять 3-х ходовым с помощью импульсов?
P.S.
У всех ПИД-регулятор + прокладка в виде VALVE_REG_NO_POS и подобные управляют немалым количеством объектов (у меня в том числе).
Вы пришли, сказали что так нельзя, выложили свою версию, которую даже не проверяли. И как это выглядит со стороны?
Абалдеть. Спор на три страницы. Можно я тоже поучаствую, а то попкорн закончился. :D
Ну а если серьезно, то обсуждается ситуация из серии – сферическая в вакууме.
Был задан вопрос: есть ПИД для управления клапаном по ШИМ.
Ответили: есть, и не плохо работает.
Сразу следует поправка: ШИМ и ПИД для задвижек и клапанов с электроприводом не подходит.
На что следует резонный ответ: Подходит. Работает. Вот код.
И следом: Да, работает. Вот ещё один код и он проверен на стенде.
На что следует ответ: ну в России и не такое могут зафигачить. Но это хреновое решение и вообще не правильно, хотя где то и может пригодится.
Ну а дальше почти все посты из серии: может – не может, с элементами «понеслась органика по трубам».
А надо было задать простой вопрос: какую задачу надо решить ?
Если это на пример приточная вентиляция или погодозависимая система отопления, то это инерционные системы. Ставим задвижки с электроприводом. Управляем ШИМ и не паримся. ПИД дергать привод часто не будет, в силу инерционности системы.
Если это допустим автоклав, то это достаточно быстротекущие процессы. Тут рулят клапана с позиционероми. Управляем аналоговым сигналом. Тем более что в случае пропадания сигнала клапана автоматически встанут в безопасное состояние.
Вот собственно и всё. Оба решения рабочие. Всё зависит от задачи.
Вы неверно с производствам, и с практикой вы не дружите, если ПИД точно настроен то для поддержания заданной температуры не нужно частое включения клапана. А чтобы контактор не вышел из строя при управлении ТЭНами его заменяют симисторным усилителем или твердотельным реле.
Похоже вы просто не представляете себе процесс регулирования на реальном объекте (производстве). Все о чем вы ранее говорили подходит под управление "чертовски" дорогих клапанов с аналоговым управлением, там и мудрить не нужно клапана управляются сигналом 0-10 В или 0-20 мА, (4-20мА), подавай "напрямую" сигнал с ПИД и регулируй на здоровье.
Я еще раз спрашиваю, вы на том форуме зарегистрировались?
Вероятно Вы сами запутались предлагая для аналогового управления зачем-то действие вне рамок управления - в виде "убрать сигнал". Зачем "убрать сигнал" ? Тогда давайте сравнивать эквивалентные наборы действий - "убрать сигнал" и обесточить аналог супротив снять управляющий кабель с клемм для 3х.поз
Т.е. где-то в мозгах положение РО (исполненного как 3х) видится как аналог ?
Тока тем более инерционным должен быть объект и/или будет большая амплитуда ошибки
Соглашусь. Только не пойму - зачем Вы мне предлагаете "др...ть мощный контактор" ? Только после Вас
Удачи в поиске отличий, например, в ШИМ=0 и "где РО остаётся до следующего импульса" и отличий в ШИМ=1 от "выходным сигналом(импульсом)"
PS
Имхо, тут несколько большее значение имеет инерция самого РО.Цитата:
Если это допустим автоклав, то это достаточно быстротекущие процессы. Тут рулят клапана с позиционероми
Согласен. В примере с автоклавом как раз и приходится решать задачу с его тепловой инерционостью.
Так как подъем температуры и давления, выдержка, а главное снижение температуры и давления строго регламентированы картами техпроцесса на каждый вид консервов. Иначе в консервах обеспечен ботулизм. Или просто крышки с банок сорвет или жестебанку деформирует. Тут как говорится клапана с пневматическим приводом и позиционером - форевер.
Можно конечно решить эту задачу на задвижках с электроприводом, но встают вопросы по безопасности, в случае внезапного отключения электричества. Хотя в свете последних цен на импортные комплектующие к этому вопросу придется вернутся.
Вообщем как и говорил, все зависит от решаемой задачи. :)
Вероятно не на том.
Потому что здесь путают понятия - ПИД-регулятор и 3-х позиционный регулятор это разные вещи. Приделывая к ПИД-регулятору с аналоговым выходом ШИМ-примочку для получения импульсов для регулирования клапаном Вы просто получаете 3-х позиционный регулятор- тогда зачем городить огород появилось отклонение дайте импульс оределённой(не ПИД регулятором, а например TOFом) и дело сделано-и не надо парить голову с Кр, Ти и Тд.
Да надо полагать, что пневматический компрессор в это время Вы будете крутить в ручную или у Вас бесконечно большой рессивер?Цитата:
Можно конечно решить эту задачу на задвижках с электроприводом, но встают вопросы по безопасности, в случае внезапного отключения электричества.
А что такое - 3-х позиционный регулятор? Дайте четкое определение.