Добрый день, нужна помощь для написания софта на ПР200 для управления 2 контурным теплоузлом, алгоритм управления аналогичен ТРМ232.
Вид для печати
Добрый день, нужна помощь для написания софта на ПР200 для управления 2 контурным теплоузлом, алгоритм управления аналогичен ТРМ232.
может поможет чем то
Игорюня, спасибо за проект.
Я только начинаю разбираться с Logic. Прошу помощи с некоторыми вопросами.
1. Как поменять на свою версию ПР.
2. При открытии в версии 1.10 пишет, что происходит конвертация до текущей версии. Выдает предупреждение относительно блока БУИМ, что обнаружены циклические связи - будет ли это ошибкой.
Заранее спасибо за ответы
Вложение 36470
На примере работы ИМ можешь объяснить принцип работы блока
Да этот блок для перестраховки, ну и переключения ручной-автомат. Фактически можно от него отказаться, если не нужно ручное управление.
Спасибо за пояснения.
Задача у меня автоматизировать схему
Источник тепла: Электрокотел, управляется по сухому контакту по таймеру - для возможности использования ночного тарифа - 1 реле
2 контура отопления с трехточечным ИМ и насосом - 6 релейных выходов
Датчики: наружная температура, гидрострелка, подача радиаторного отопления, теплого пола - PT1000 4 шт
Нужно реализовать погодозависимое управление контурами отопления: насос, трехход. см. клапан радиаторный контур и теплый пол.
Диспетчеризация по Modbus: все температуры, возможность отключения контуров отопления с экрана ПР200 и по Модбас, в идеале и корректировать погодозависимую кривую
Вложение 36480
На базе цтп Игорюни попробую сделать свою версию.
Буду благодарен за любую помощь (совет) в реализации проекта.
о боге, гидрострелка там нафеншуй ?
Дорогие форумчане,
мне необходимо оценить время на программирование ПР200 под мою задачу.
Как вы думаете, сколько потребуется ориентировочно времени для специалиста уже знакомого с OWEN Logic.
Блок HEAT_TEMP
Входы
T_EXT : REAL (Наружная температура)
T_INT : REAL (Заданная температура в помещении)
OFFSET : REAL (Понижение или повышение температуры в помещении)
T_REQ : REAL (Заявленная температура)
Выходы
TY : REAL (Температура теплоносителя в контуре отопления)
HEAT : BOOL (Запрос на включение отопления)
Настройки
TY_MAX : REAL (Максимальная температура в контуре отопления, 70°C)
TY_MIN : REAL (Минимальная температура в контуре отопления, 25°C)
TY_C : REAL (Расчётная температура, 70°C)
T_INT_C : REAL (Расчётная температура в помещении, 20°C)
T_EXT_C : REAL (T_EXT при расчётной температуре -15°C)
T_DIFF_C : REAL (Дифференциал подающей и обратной магистрали 10°C)
C : REAL (Постоянная системы отопления, DEFAULT = 1,33)
H : REAL (Порог для запроса на включение отопления 3°C)
HEAT_TEMP вычисляет температуру теплоносителя в зависимости от наружной температуры по следующей формуле:
TY = TR + T_DIFF / 2 * TX + (TY_Setup - T_DIFF / 2 - TR) * TX ^ (1 / C)
где: TR = T_INT + OFFSET
TX := (TR - T_EXT) / (T_INT_Setup - T_EXT_Setup);
Параметры температурного графика отопления задаются через настроечные переменные TY_C (расчетная температура теплоносителя), T_INT_C (температура в помещении в расчётной точке), T_EXT_C (наружная температура в расчётной точке) и T_DIFF_C (разность температур подаваемого и обратного теплоносителя в расчётной точке). При помощи входа OFFSET температурный график может настраиваться для снижения (отрицательное смещение) или повышения (положительное смещение) температуры в помещении. Настроечными переменными TY_MIN и TY_MAX температура теплоносителя может быть ограничена минимальным и максимальным значениями. Вход T_REQ служит для поддержки внешних запросов температуры, например, от бойлера. Если T_REQ больше, чем вычисленное по температурному графику значение TY, то TY будет установлено в соответствии с T_REQ. Ограничение по TY_MAX не распространяется на запрос через T_REQ. Настроечной переменной H определяется, начиная с какой наружной температуры будет вычисляться температурный график. Пока T_EXT + H >= T_INT + OFFSET, TY остается равным 0, а HEAT равным FALSE. Когда T_EXT + H < T_INT + OFFSET, HEAT устанавливается в TRUE, а TY становится равным вычисленной температуре теплоносителя. Настроечная переменная C определяет кривизну температурного графика. Кривизна зависит от применяемой системы отопления.
Конвекторы: C = 1.25 – 1.45
Панельные радиаторы: C = 1.20 – 1.30
Радиаторы: C = 1.30
Трубы: C = 1.25
Теплые полы: C = 1.1
Чем больше значение C, тем сильнее искривлен температурный график. Значение 1.0 задает температурный график в виде прямой. Для типичных систем отопления значение C лежит в пределах от 1.0 до 1.5.
Вопрос: Позволят ли возможности ПР200 реализовать подобный график
Нашел в интернете формулу для расчета кривой отопления.
t подачи, зад = t комнатная, зад + N сдвиг ко - S наклон ко*dT уличная комнатная*А
А=1,149+0,021*dT+0,00025*dT*dT
где
N - параллельный сдвиг кривой отопления;
S - наклон кривой отопления;
dT - разница между уличной температурой и комнатной, зад
Буду делать такой блок в Owen Logic
Блок Смеситель отопления управляет приводом трехходового смесительного клапана для отопления или охлаждения. Он может быть использован со всеми видами трехточечных и аналоговых 0-10 В приводов.
Для трехточечного привода текущее положение вычисляется программно. Калибровка выхода (положения ИМ) осуществляется при помощи импульса 1,5 от времени полного хода ИМ в момент старта регулятора, при крайних положениях или 1 раз сутки, если ИМ не приходит в крайнее положение.
Встроенный ПИ регулятор с настаиваемой частотой дискретизации, Д составляющей не нужно.
Приблизительная схема, описание макроса в файле. Пока на немецком, но там и так все понятно.
T - заданная температура подачи,
AI - температура подачи,
St - остановка регулятора
R - время ИМ
S - время до следующего расчета воздействия
Kp
Ki
Sm поведение при останове 1 закрытие 2 открытие 0 на месте
M нормальный или инверсный режим (отопление или охлаждение)
Min
Max
Inv выход 0-10 В или 10-0 В
AQ выход 0-10 В
Q1 - выход открытие
Q2 - выход закрытие
Большое спасибо Василию Кашубе за помощь в создании макроса Кривая отопления,
все желающие берите макрос, пробуйте, высказывайте замечания.
Вложение 36612
Согласно здравого смысла, регулировка идет по температуре в помещении, тогда нафик зависимость от наружного воздуха? Температурный график и придуман, чтобы усредненно держать температуру в нескольких помещениях. В свое время мы делали регулировку в самом холодном помещении одного единственного здания, но потом отказались и перешли на температурный график. Даже не представляю зачем температуру в помещении соединять с улицей.
Игорюня, макрос(блок) Кривая отопления выдает температуру задания, учитывая характеристики здания, тип отопительных приборов (наклон отопительной кривой) и заданную температуру в помещении. Т.е., изменяя заданную температуру в помещении, - меняется отопительная кривая. Это позволяет заказчику поменять только один параметр и кривая поменяется. Это удобно.
Тепловые характеристики здания нелинейны, поэтому простое пропорциональное уравнение работать будет только не очень качественно.
Этот макрос соответствует европейской автоматике по логике работы, чего не хватает в овене!!!
Объясните как работает макрос, особенно место с линиями задержки
Вложение 36521
Игорюня вы предлагаете, когда на улице 18 градусов + так же подавать в СО 85 градусов ? Да, это работает, но очень некомфортно...
В технической литературе встречаю понятие аналоговый и цифровой регулятор. При малом периоде дискретизации цифровой регулятор ведет себя, как аналоговый.
Если период дискретизации увеличивать, то различия становятся существенными.
Цифровой алгоритм ПИ регулятора
e = w - x; //Рассоглосование
esum = esum + e; // И составляющая
if (esum < -400) {esum = -400;} //Ограничение И части
if (esum > 400) {esum = 400;}
y = Kp*e + Ki*Ta*esum; //Расчет выходной величины
if (y < 0) {y = 0;} //Ограничение выхода регулятора
if (y > 255) {y = 255;}
PWM = y; //Передача на положение ИМ
Может кто-то прокомментировать, объяснить как это все работает.
Важный момент Ta период дискретизации. Вычисления проводятся через период Ta.
Например, часто для отопления достаточно периода дискретизации 1 минута
PS. Посмотрел несколько реализаций ПИД на форуме, нигде dt (период дискретизации) не привязывается к реальному выполнению расчетов.
У кого-то 0,01 с, у кого-то 1 с. А как реально должно быть?
Я думаю, что если дискретизация 0,01 с, то и алгоритм должен расчитываться 1 раз в 0,01 с. А он рассчитывается как прибор успевает один такт сделать. Сколько это времени у ПР200 занимает не знаю.
Как реализован функциональный блок ПИД в Owen Logic - у него нет такого параметра dt, те. можно предположить, что он фиксированный, что есть неправильно или адаптируемый под скорость вычисления, тогда вопрос как это сделано.
Вывод: регуляторы ПИД, которые посмотрел на форуме являются приближением к аналоговым. Цифровых регуляторов ПИД, чтобы период дискретизации совпадал с расчетами не обнаружено.
Недостатком такого аналогового режима работы ПИД считаю:
1. Лишняя нагрузка на процессор. Для управляющего воздействия нужен один расчет за период дискретизации, а расчеты выполняются постоянно.
2. Невозможность математически рассчитать коеффициенты ПИД, т.к. такой аналоговый регулятор может серьезно не совпадать с объектом во времени.
Возможно из-за этого получаются разные косяки с настройками, как вы думаете?
Я бы не стал заморачиваться с разными реализациями ПИД. Встроенный в овенлоджик прекрасно работает. Когда с этим начал заморачиваться, перепробовал много разных вариантов и с форума и своих реализаций, лоджик мне больше понравился. Эксперементировал на банке с водой, кипятильником и латром с МЭО. Смонтировал на реальном работает хорошо. Исполнительный практически не дергается.
Добрый день, соглашусь с сообщением выше, делал проект по нагреву сушильной камеры, использовал встроенный ПИД с автонастройкой, после 3 итерации получил коэффициенты которые отлично справлялись с регулированием как на участке выхода на уставку (длительное время с разным наклоном), так и в установившемся режиме, при этом на выходе можно ставить как аналоговый так и дискретный узел.(в теме про ПИД приводил график работы). Есть конечно и недостатки у него, один из них это не возможность избавиться от перерегулирования, возможно это как раз связано с нерегулируемой частотой обсчета ПИД регулятора, и невозможности ограничить интегральную составляющую. От этих недостатков можно избавиться использовав выше приведенные формулы, кстати таких реализация на форуме выложено штук 6 наверное, каждый со своими особенностями. Что касается нагрузки на процессор, кто-то мне сообщал, что проверяли проект с 7 регуляторами, и все работало, подробностей не знаю. Что касается расчета коэффициентов, в режиме автонастройки они рассчитываются и работают.
Теория по применению импульсного регулятора на объектах с запаздыванием
Вложение 36830
Методы создания ШИМа
PD-регулятор
e = w - x;
y = Kp*e + Kd/Ta*(e-ealt);
ealt = e;
if (y > 255) {
y = 255;
}
if (y < -255) {
y = -255;
}
Управление объекта с запаздыванием
Расчет параметров объекта управления
Пид регулятор на клапан
Так там все понятно. Длительность всегда одна и равна длительности 1% хода исполнительного. Пауза в зависимости от рассогласования положения исполнительного и задания. В зависимости от рассогласования формируется минус или плюс для открытия или закрытия. Элементарно все проверяется в симуляции.
Игорюня, еще вопрос по БУИМу.
1. Какая логика стартового закрытия ИМ.
БУИМу дали разрешение на работу EN, и первым делом нужно клапан закрыть.
В этом месте не могу понять. Вижу, что когда EN =0, клапан закроется. А при старте, если питание выключили?
2. АНР Отоп - за что эта переменная отвечает
Сработает пр включении TOF и не даст запуститься ПИДу. АНР для запуска автонастройки ПИДа по отоплению
Еще вопрос.
1. Как сделать, чтобы контур включался/выключался с дисплея и по модбас.
2. Просимулировал БУИМ - у него есть особенность, что он перемещает ИМ только шажками 1/100 времени ИМ. Длинных импульсов не формирует.
Так это или что-то я не так делаю?
Входы:
E - разрешение на работу блока
Ts - заданная температура
Ti - измеренная температура
Kp - коэффициент пропорциональности
Ta - период расчета управляющего воздействия
Tm - время полного открытия исполнительного механизма (120 с по умолчанию)
Te- зона нечувствительности С, 2 С по умолчанию, 1 С вверх от зад значения и 1 С вниз от задания
Выходы блока
Y - виртуальное положение исполнительного механизма (0-100%)
Up - команда на открытие ИМ, сек
Down команда на закрытие ИМ, сек
Алгоритм
1. Если Разрешение на работу =1, то включаем регулятор, иначе все выходы 0
Если регулятор работал, и пришла команда на отключение то ИМ должен закрыться с импульсом Tm*1,3
2. Закрытие ИМ (для определения положения ИМ). Подача сигнала на выход Down длиной Tm*1.3 c (для гарантированного закрытия)
3. Вычисление сигнала рассогласования e=Ts-Ti
4. Если Ts больше Ti, то Флаг открытия = 1, иначе 0
5. Если е меньше зоны нечувствительности, то ничего не делаем,, т.е. Y= Y на пред шаге Иначе
6. Вычисляем прирост управляющего воздействия dy =Kp*e
7. Y=Y на пред. шаге + dy
8. Ограничение Y от 0 до 100
9. Вычисление длительности импульса ИМ Ty=dy*Tm/100 , минимальная длина импульса 1 с
10. Если Флаг открытия =1 то подача импульса на выход Up длительностью Ty
иначе подача импульса на выход Down длительностью Ty
11. Выполнение следующего воздействия в п.3 через Ta, c по умолчанию 60 с
По первому вопросу, пример изменения переменной в ПР200 через дискретный вход или экран и панель оператора или другой источник связанный по Modbus. При этом изменения отображаются синхронно и на дисплее ПР200 (если выведено) и на панели оператора.
Надо формула ПД регулятора
описание работы ШИМ
Прикрепите проект, так будет легче понять проблему.
Запустил симуляцию, сходу сложно понять какие уставки куда подавать, ввел произвольные значения что-бы были не нули, вижу что на выходе задания для TON2 идет попеременная запись рассчитанного числа-"0" и так по кругу, т.е нужно добиться стабильной записи уставки, для проверки можно поставить константу для TON2, после исключить "0" на выходе перед Write ro FB.
Блок управления смесителем для радиаторного отопления, теплого пола и вентиляции
Входы:
E - разрешение на работу блока
Ts - заданная температура, C
Ti - измеренная температура, C
Kp - коэффициент пропорциональности
Ta - период расчета управляющего воздействия, секунда
Tm - время полного открытия исполнительного механизма (120 с по умолчанию), секунда
delta - зона нечувствительности, С
Выходы блока
+ команда на открытие ИМ
- команда на закрытие ИМ
Y - виртуальное положение исполнительного механизма (0-100%)
Алгоритм и особенности работы
Функциональный блок условно можно разделить на 4 части.
1 часть - синхронизация положения ИМ:
1) 1 раз в 24 часа при включенном флаге Е подается команда синхронизации закрыть сервопривод длительностью Tm .
2) При обнулении флага E подается команда синхронизации закрыть сервопривод.
3) При включении флага Е подается команда синхронизации закрыть сервопривод.
4) При вычисленном положении ИМ 0 также подается команда синхронизации закрыть сервопривод.
5) При вычисленном положении ИМ 100 подается команда синхронизации открыть сервопривод длительностью Tm.
2 часть формирование импульсов для расчета управляющего воздействия длительностью Та
3 часть - непрерывный расчет упр воздействия по П закону и длительности импульса на ИМ, а также положение ИМ с ограничением от 0 до 100. Обнуление счетчика при Е=0.
dy =Kp*e,
длительность импульса ИМ Ty=dy*Tm/100
4 часть - Проверка на зону нечувствительности и формирование выхода +, -. Реализованы виртуальные концевые выключатели.
Если длительность упр. импульса на выход больше периода расчета, то пока выход активен, управляющий импульс блокируется.
Главные макросы (блоки) для моей системы сделаны и я начал сборку.
В результате получилась система управления радиаторным отоплением: насос и регулирование температурой подачи при помощи трехходового смесительного клапана, тоже самое для теплого пола.
Для управления электрокотлом поставил таймер.
Результаты ниже.
Вложение 36627
Фото интерфейса
На первом экране РО - радиаторное отопление, ТП - теплый пол.
Выведена булевская переменная для включения контура ("Р" -вкл, "- " выкл), Тк(заданная темп комнаты) для быстрой корректировки кривой пользователю, далее изм. температура подачи контура и знаками больше, меньше отображается моменты работы сервопривода.
Вложение 36628
Вложение 36629
Вложение 36630
Сама программа находится в посте выше.
Просьба откликнуться всем, кто может помочь.
1. Как подключить к таймеру переменные и вывести на экран.
2. Как вывести переменные в модбас.
Чтение
Tулицы, Tподачи ро, Т подачи тп, Тп_ро, зад, Тп_тп, зад
Чтение и запись
Т к_ро, Tк_тп, Разрешение на работу РО, разрешение на работу ТП мест, разрешение на работу ТП дист
Котел вкл-выкл дист
3. Какие аналоговые датчики лучше подключить к ПР200
4. Баг - нельзя записать отрицательное значение в вещественное число с дисплея
5.Как в ПР200 вывести символ кавычек, как в на рис.?
Вложение 36642
6. Как при вводе ограничивать переменные?
По мере роста проекта количество вопросов увеличивалось, а ответов не было. И тут улыбнулась удача - 17.04 был мастер-класс по ПР200 в Житомире. Спасибо Юрию за полезную информацию.
Получил исчерпывающие ответы на все свои вопросы и даже больше :-)
1. Как подключить к таймеру переменные и вывести на экран.
Есть пример с дисплеем, позже когда себе сделаю, тоже выложу.
2. Как вывести переменные в модбас и управление из двух мест местное и дистанционное.
Также есть пример на эту тему.
3. Какие аналоговые датчики лучше подключить к ПР200
Лучше использовать PT1000, хотя работает и с NTC 10kOM. Есть макрос.
4. Баг - нельзя записать отрицательное значение в вещественное число с дисплея
Оказывается для программирования дисплея есть блок Ввод/вывод с функцией Диапазон, в которой есть параметры: Контроль, максимум и минимум. С их помощью осуществляется контроль диапазона задаваемых значений.
5.Как в ПР200 вывести символ кавычек, как в на рис.?
Вложение 36642
Пока этот символ вывести нельзя.
Произвел испытания своего регулятора на реальном объекте.
Заметил особенности работы.
1. Датчик температуры PT1000 долго выходит на показания до 10 мин. Может быть из-за того, что поставил постоянную времени фильтрования 1 с.
Погрешность показаний приемлимая. +-1 С.
Вложение 36794
2. Объект управления - теплый пол в существующей котельной на базе ТТ котла. Переподключил к ПР200 смеситель теплого пола.
Вложение 36795
Смесительный клапан 3/4 Honeywell
Сервопривод "Honeywell" (M6063L1009) 100s-90 "230В
3. Запускаем систему в работу.
Стартовые парметры: Тк=26 С, Тулицы=5,0 С
Sнаклон=0,8 N=2
Kp=1,5 Та= 60 с
Сначала были сомнения в Кр и Та, однако работа показала, что параметры вполне рабочие.
Вложение 36796
Регулятор прекрасно вел себя в диапазоне температур перед смесителем 60-75 С. Когда на котле было 80 С, были небольшие тактования, т.к. самый малый поворот привода приводил к существенному приросту температуры. Это можно поправить, уменьшив Кр. Для работы данной установки это не критично.
После этого температура на котле уменьшилась и регулятор четко отработал задание и вышел к уставке.
Вложение 36797
В целом эксперимент оказался очень успешным - не пришлось ничего налаживать или дописывать в программе. Все отработало, как задумывалось.
Молодей, быстро врубился и хорошо отчитался ;) Теперь можно двигаться к СКАДА ....:cool: