Просмотр полной версии : Макросы в онлайн базе OWEN Logic
64993
Ну или чтобы совсем хорошо было
64994
ЗЫ.
По моему такой макрос был, только называется не регистр защелка, а типа память
Ну да так и есть
64996
Newcomer
03.01.2023, 13:06
По моему такой макрос был, только называется не регистр защелка, а типа память
Работает. Спасибо.
Newcomer
03.01.2023, 13:07
Ну да так и есть
64996
Это в какой версии OL есть такой макрос ? Нашел.
Это в какой версии OL есть такой макрос ?...
От версии не зависит, т.к. с сервера взял http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/OnlineMacroes/Analog%20conversion/
64999
Newcomer
03.01.2023, 13:42
От версии не зависит, т.к. с сервера взял
А что это там так много наворочено, если на SEL все можно сделать ?
А что это там так много наворочено, если на SEL все можно сделать ?
Наверно оператора SEL тогда еще не было
Приветствую, подскажите пожалуйста ОЛ достаточно давно существует но пид регулятора для управления кзр так и нет ? или я не могу найти ?
если у кого есть поделитесь пожалуйста.
Приветствую, подскажите пожалуйста ОЛ достаточно давно существует но пид регулятора для управления кзр так и нет ? или я не могу найти ?
если у кого есть поделитесь пожалуйста.
В разделе "Для вентиляции" макрос KZR_DO_Sel . Если полный обвес не нужен, то вытягиваете из него макрос RegKZR
В разделе "Для вентиляции" макрос KZR_DO_Sel . Если полный обвес не нужен, то вытягиваете из него макрос RegKZR
на реальном объекте реализовывали ? как работает? или все же мучатся и самому делать ?
Ruslanadm
24.01.2023, 00:06
Вот хорошая тема для подобного вопроса - https://owen.ru/forum/showthread.php?t=34012
А вот мой макрос по мотивам этой темы (идея Keldish)
65383
65384
Pwr, % - это выход стандартного PID-регулятора из библиотеки компонентов
Остальные входы и выходы, я думаю, понятны.
Макрос трудится на нескольких объектах, регулирует теплосети и ГВС
Как кстати подключиться к ФТП серверу обычным клиентом типа Тотал Командер а не через вэб интерфейс
Никак - это не ftp сервер, а обычная http страничка
если речь, конечно, про
https://ftp.owen.ru/CoDeSys23/06_Documentation
Eugenek555
23.03.2023, 15:51
Добрый день. Подскажите, где можно достать макрос FLOAT-INT и INT-FLOAT. 66693
kondor3000
23.03.2023, 16:14
Добрый день. Подскажите, где можно достать макрос FLOAT-INT и INT-FLOAT. 66693
Где то на форуме выложены были
Сергей0308
23.03.2023, 18:42
Добрый день. Подскажите, где можно достать макрос FLOAT-INT и INT-FLOAT. 66693
Здесь, в посте#6462 выкладывал усовершенствованные версии макросов, в смысле, более точные, в смысле, преобразование(во FLOAT) по модулю происходит в целочисленном виде, минус, в случае необходимости, добавляется после и более универсальные, в смысле, диапазона INT/DINT(настройка в свойствах макроса):
https://owen.ru/forum/showthread.php?t=9398&page=647
66704
66705
Eugenek555
28.03.2023, 07:42
Сергей, спасибо большое за ответ и помощь.
добрый день! подскажите -как работает макрос SelChgF 67487.
Не пойму, почему линии задержки в левой части сплошные?
Откуда берется сама переменная на выходе, если в середин она "теряется"?
отдельные элементы понятны, а вместе не понятно. Пробовал формулы написать, но опять же умножение на 0 - даёт ноль.
просьба пояснить
Сергей0308
23.04.2023, 18:59
добрый день! подскажите -как работает макрос SelChgF 67487.
Не пойму, почему линии задержки в левой части сплошные?
Откуда берется сама переменная на выходе, если в середин она "теряется"?
отдельные элементы понятны, а вместе не понятно. Пробовал формулы написать, но опять же умножение на 0 - даёт ноль.
просьба пояснить
Во-первых надо определится как правильно сравнивать значения переменных с плавающей запятой, эти значения приблизительной(не абсолютной) точности, в смысле, мне кажется будет правильным определять изменение переменных с неким допуском(дельтой), для душевного спокойствия, так сказать!
Короче, примерно как-то так:
67490
добрый день! подскажите -как работает макрос SelChgF 67487.
Не пойму, почему линии задержки в левой части сплошные?
Откуда берется сама переменная на выходе, если в середин она "теряется"?
отдельные элементы понятны, а вместе не понятно. Пробовал формулы написать, но опять же умножение на 0 - даёт ноль.
просьба пояснить
Этот макрос уже устарел. Сейчас можно проще сделать
67491
И в середине переменная не теряется - ведь есть обратная связь. А по поводу отображения линий задержки - это фичи Лоджика
Этот макрос уже устарел. Сейчас можно проще сделать
67491
И в середине переменная не теряется - ведь есть обратная связь. А по поводу отображения линий задержки - это фичи Лоджика
спасибо. Как этот работает понятно. А есть он в базе или самому создать надо?
спасибо. Как этот работает понятно. А есть он в базе или самому создать надо?
самому делать надо
Добрый день. Подскажите, где можно достать макрос FLOAT-INT и INT-FLOAT. 66693
А зачем собственно? Или речь именно о чистом 16 битном int? Чем встроенные блоки не гожи?
С этим макросом постоянно вопросы, он попал в базу как часть макросов от разработчиков макросов для СУНА, и там он использовался в каком-то хитром алгоритме, все что по нему есть в описании. Используйте BOOL_INT и INT_BOOL там все прозрачно и понятно.
Добрый день. Столкнулся с такой же проблемой: нужно было из дискретных входов собрать битовую маску для передачи по modbus. Нашел в менеджере компонентов макрос BM_in, в описании указано Разработчик - ОВЕН.
Что должно вроде как быть свидетельством того, что все точно работает как нужно. А оказалось что макрос действительно "из коробки" работает со сдвигом на один бит, благо в онлайн отладке это сразу увидел.
Судя по описанию номер первого бита должен задаваться в свойствах макроса, но в последней версии OL у меня такого параметра нет.
Может действительно убрать этот макрос из менеджера, ну или доработать?
kondor3000
26.07.2023, 15:38
Добрый день. Столкнулся с такой же проблемой: нужно было из дискретных входов собрать битовую маску для передачи по modbus. Нашел в менеджере компонентов макрос BM_in, в описании указано Разработчик - ОВЕН.
Что должно вроде как быть свидетельством того, что все точно работает как нужно. А оказалось что макрос действительно "из коробки" работает со сдвигом на один бит, благо в онлайн отладке это сразу увидел.
Судя по описанию номер первого бита должен задаваться в свойствах макроса, но в последней версии OL у меня такого параметра нет.
Может действительно убрать этот макрос из менеджера, ну или доработать?
Макрос редактируется, верхнюю константу меняете с 1 на 0 и всё работает.
Исправить в Менеджере макрос конечно надо.
yuriy2346
30.07.2023, 21:58
Здравсвтуйте. Есть ли пример макркоса расчет EWMA (exponentially weighted moving average) которая Xn = a*Value + (1-a)*X(n-1) ?
yuriy2346
31.07.2023, 00:07
Как Вы планируете удаленно заливать проект в ПР, если не можете формулу в квадратики перевести или воспользоваться функцией ST с небольшой доработкой?
Молча. Уже сделал и залил, вопрос снят.
Эдуард90
14.08.2023, 10:30
Здравствуйте!
Подскажите пожалуйста почему у меня в программе пустая онлайн база макросов?
69592
kondor3000
14.08.2023, 10:39
Здравствуйте!
Подскажите пожалуйста почему у меня в программе пустая онлайн база макросов?
69592
Либо интернет медленный ( долго загружается), либо в строке Поиска набита какая то фигня, типа ъъъъ ( Поиск, рядом с кнопкой Загрузить в библиотеку, растяните вправо средний столбец)
Здравствуйте!
Подскажите пожалуйста почему у меня в программе пустая онлайн база макросов?
69592
Такая же фигня.
у меня все присутствует, открывается сразу. Ставите WireShark, и смотрите , только нужен точный адрес, ip и т.д. от Овен, чтобы проверить.
Либо в логах Firewall смотреть. Вроде больше блокировать некому.
Здравствуйте, на сайте vent.owen.ru есть макрос "Recuper_1.00 (Управление рекуператором)" с описанием от ОВЕН. Подскажите, где его можно скачать?
Здравствуйте, на сайте vent.owen.ru есть макрос "Recuper_1.00 (Управление рекуператором)" с описанием от ОВЕН. Подскажите, где его можно скачать?
его пока нет в свободном доступе http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/OnlineMacroes/Vent/
Danila Kholkin
23.10.2023, 11:22
Хотел бы обсудить работы макроса PID_ так как на ПР205 Друва пида нет . Время дискретизации 100 МС регулятор с П и И частью работает прекрасно . Когда Ввожу Дчасть она работает не правильно как будто д Часть зависит от ошибки а не от задания и на него влияет тоже время дискретизации что и на И часть что не очень удобно .
Вот график где с сначала Д Часть 0 потом Д Часть 5 потом 10 я не считаю что Д часть правильно работает 71110
Хотел бы обсудить работы макроса PID_ так как на ПР205 Друва пида нет . Время дискретизации 100 МС регулятор с П и И частью работает прекрасно . Когда Ввожу Дчасть она работает не правильно как будто д Часть зависит от ошибки а не от задания и на него влияет тоже время дискретизации что и на И часть что не очень удобно .
Вот график где с сначала Д Часть 0 потом Д Часть 5 потом 10 я не считаю что Д часть правильно работает 71110
Все правильно, диф. часть зависит от ошибки и от времени дискретизации
Danila Kholkin
23.10.2023, 14:38
Все правильно, диф. часть зависит от ошибки и от времени дискретизации
Да неплохо бы было сделать 2 времени дискретизации для И и для Д а то график с иголками получается
Чтобы работала Д составляющая нужно:
1. или сгладить измеренный сигнал (увеличить время фильтра) - но это "потянет" за собой проблемы замедления измерения
2. или увеличить время пересчёта ПИД регулятора - в свойствах этого конкретного макроса.
Идеала нет, чем-то придётся жертвовать.
Для другого контроллера при управлении котлом делал время пересчёта регуляторов:
- давление пара, уровень воды в котле - 10-15 с
- давление воздуха, разрежение в топке - 1-5 с
В том же случае время сглаживания было для разных параметров 1-5 с
Спасибо за ответ. Удалось получить макрос. Я запросил макрос "Recuper_1.00 (Управление рекуператором)" в техподдержке support@owen.ru и специалист, поинтересовавшись для чего он мне нужен, прислал мне этот макрос.
Steadfast
25.10.2023, 07:14
Здравствуйте, помогите пожалуйста, прибор ипп 120 выполняет функцию на производственной мойке колёсных пар, прибор показывал время до конца мойки и температуру раствора, в данный момент всё работает но на экране ошибка памяти, обновление не помогло, я прочитал что нужно за нового загрузить проект, но у меня его нет и как сделать его я без понятия, может есть у вас уже готовый?
Здравствуйте, помогите пожалуйста, прибор ипп 120 выполняет функцию на производственной мойке колёсных пар, прибор показывал время до конца мойки и температуру раствора, в данный момент всё работает но на экране ошибка памяти, обновление не помогло, я прочитал что нужно за нового загрузить проект, но у меня его нет и как сделать его я без понятия, может есть у вас уже готовый?
ИПП - свободно программируемый прибор, его функционал определяется зашитой в него программой, которую кто-то сделал - ИНДИВИДУАЛЬНО для вашего производства.
На щитах нет маркировки производителя? - попробуйте обратиться к ним
Steadfast
25.10.2023, 08:17
ИПП - свободно программируемый прибор, его функционал определяется зашитой в него программой, которую кто-то сделал - ИНДИВИДУАЛЬНО для вашего производства.
На щитах нет маркировки производителя? - попробуйте обратиться к ним
Понял ,спасибо
Serhioromano
26.10.2023, 10:01
ни знаю что я делаю не так но на блоке TIME_UD когда на R подаю импульс секунды на выходе не сбрасываются, продолжают считать.
Королев Кирилл
26.10.2023, 10:41
ни знаю что я делаю не так но на блоке TIME_UD когда на R подаю импульс секунды на выходе не сбрасываются, продолжают считать.
Добрый день!
Для сброса счетчика необходимо снимать сигнал с входа En и только после этого подавать команду R
См. описание макроса:
71172
Serhioromano
26.10.2023, 11:06
Добрый день!
Для сброса счетчика необходимо снимать сигнал с входа En и только после этого подавать команду R
См. описание макроса:
71172
Понял. Спасибо. Не очень интуитивно это. Все другие сбросы на других блоках работают не так. Но понятно. Вопрос решен.
Здравствуйте! Не подскажете где можно найти макрос ПИД регулятора, с дискретными выходами(открыть, закрыть)?
Здравствуйте! Не подскажете где можно найти макрос ПИД регулятора, с дискретными выходами(открыть, закрыть)?
Было много разных предложений, например
https://owen.ru/forum/showthread.php?t=25067&p=317531&viewfull=1#post317531
https://owen.ru/forum/showthread.php?t=34012&p=402491&viewfull=1#post402491
Добрый день, если я всё правильно понял, то у ПИД-регулятора для ПР205 нет автоматической настройки. Может у кого-то есть макрос для реализации этой автонастройки?
Также я хочу из ПЛК периодически опрашивать внешний сервис по HTTP с GET и POST запросами. Может у кого-то есть макрос или пример как это реализовать?
ilka.xd ПР и HTTP ? вам точно не в ПР, они такого не умеют.
Я видел библиотеки для Codesys, в которых ПЛК обращаются к веб-серверу (если что он в локальной сети виден), подумал, может и тут такое есть.
А макроса для автонастройки в ПР205 у Вас, случайно, нет?)
В ПР205 вроде нет встроенного PID, вроде только он был с автонастройкой. А на счет софтовых не в курсе.
Нет ли у кого фильтра аналогового сигнала? AVG (среднее арифметическое) не очень помогает.
kondor3000
22.02.2024, 10:48
Нет ли у кого фильтра аналогового сигнала? AVG (среднее арифметическое) не очень помогает.
На сколько сильно прыгает сигнал ? В цифрах ?
Лучше напишите что за сигнал и откуда вы его берёте. Может просто реже опрашивать вход или выводить просто раз в секунду.
Сократить количество знаков после запятой.
Например аналоговый сигнал снятый с одного входа модуля МВ110-8А, может прыгать от 23.125 до 23.275.
Вот пример не правильного выбора датчика, вместо Pt1000 пытаются воткнуть 50M https://owen.ru/forum/showthread.php?t=37270&page=2&p=430110#post430110
Сергей0308
22.02.2024, 11:22
Нет ли у кого фильтра аналогового сигнала? AVG (среднее арифметическое) не очень помогает.
Можно попробовать увеличить постоянную времени фильтра, есть такая настройка у аналогового входа ПР! Это не может не работать, в смысле, находят компромисс между быстродействием и степенью сглаживания!
Универсального способа не существует, в смысле важен и сам процесс!
Если уровень воды плавает в ёмкости вверх-вниз относительно реального значения это одно, если температуру не верно показывает(с запозданием) в результате неверного выбора датчика или неверного места установки датчика - это совсем другое!
В смысле, лучше не наводить тень на плетень и если чего накосячили, сразу поправить!
Короче, бывают случаи когда не касаясь процесса не получится нормально обработать сигнал, чтобы показывало то, что можно использовать дальше.
Вопрос,на пр205 датчик 50м нормально не работает, или я что то не так делаю? с пт1000 все отлично
Сергей0308
26.03.2024, 12:54
Вопрос,на пр205 датчик 50м нормально не работает, или я что то не так делаю? с пт1000 все отлично
Вы используете модуль расширения ПРМ-3?
https://owen.ru/product/prm/specifications
Если нет, то где Вы увидели поддержку этих датчиков?
kondor3000
26.03.2024, 13:17
Вопрос,на пр205 датчик 50м нормально не работает, или я что то не так делаю? с пт1000 все отлично
С 50М и 100М у вас и не будет нормально работать, ставьте Pt1000.
Здравствуйте подскажите применил макрос 2PosUPReg Сигнализатор вх/вых величины за границы из менеджера компонентов ,при работе макроса дребезжит реле на выходе ОВЕН ПР200 .
Здравствуйте подскажите применил макрос 2PosUPReg Сигнализатор вх/вых величины за границы из менеджера компонентов ,при работе макроса дребезжит реле на выходе ОВЕН ПР200 .Да при подходе к границам дельты.
Здравствуйте подскажите применил макрос 2PosUPReg Сигнализатор вх/вых величины за границы из менеджера компонентов ,при работе макроса дребезжит реле на выходе ОВЕН ПР200 .Да при подходе к границам дельты.
Ну, если у вас значение плавает в районе границы, то и будет щелкать.
Можно попробовать увеличить постоянную времени аналогового входа. Или на выход поставить TON с задержкой, скажем 1 сек
Извините за вопрос разобрался.
Traveller
03.06.2024, 11:32
Доброго времени суток!
В базе Owen Logic есть такой замечательный макрос "AVG", так то вроде все понятно его назначение, но непонятно как он работает в том смысле он будет усреднять по тому кол-ву значений которое определено на входе "N" при условии что на входе En стоит разрешение, затем он авто-сбросился и пошел усреднять заново или усреднение происходит непрерывно по последним значениям кол-во которых определяет значение на входе "N"
Traveller
03.06.2024, 11:34
deleted message
Доброго времени суток!
В базе Owen Logic есть такой замечательный макрос "AVG", так то вроде все понятно его назначение, но непонятно как он работает в том смысле он будет усреднять по тому кол-ву значений которое определено на входе "N" при условии что на входе En стоит разрешение, затем он авто-сбросился и пошел усреднять заново или усреднение происходит непрерывно по последним значениям кол-во которых определяет значение на входе "N"
Там же в описании все написано.
Макрос усредняет N входящих значений, потом фиксирует (защелкивает) полученный результат на выходе, сбрасывается и начинает считать заново
Сергей0308
03.06.2024, 12:38
Там же в описании все написано.
Макрос усредняет N входящих значений, потом фиксирует (защелкивает) полученный результат на выходе, сбрасывается и начинает считать заново
В смысле, находит среднее арифметическое за определённый период: суммирует значения с определённым периодом и делит на количество измерений, потом сумма сбрасывается и процесс повторяется или высчитывает среднее арифметическое скользящим окном: с определённым периодом значения пишутся в стек, значения всех разрядов стека суммируются и делятся на количество разрядов? Количеством разрядов стека умноженное на период записи определяют ширину скользящего окна в масштабе времени.
В смысле, находит среднее арифметическое за определённый период: суммирует значения с определённым периодом и делит на количество измерений, потом сумма сбрасывается и процесс повторяется или высчитывает среднее арифметическое скользящим окном: с определённым периодом значения пишутся в стек, значения всех разрядов стека суммируются и делятся на количество разрядов? Количеством разрядов стека умноженное на период записи определяют ширину скользящего окна в масштабе времени.
находит среднее арифметическое за определённый период: суммирует значения с определённым периодом и делит на количество измерений, конечный полученный результат фиксируется на выходе, потом сумма сбрасывается и процесс повторяется
Traveller
03.06.2024, 13:27
Там же в описании все написано.
Макрос усредняет N входящих значений, потом фиксирует (защелкивает) полученный результат на выходе, сбрасывается и начинает считать заново
находит среднее арифметическое за определённый период: суммирует значения с определённым периодом и делит на количество измерений, конечный полученный результат фиксируется на выходе, потом сумма сбрасывается и процесс повторяетсяТогда не подходит! :) придется вставлять свой макрос, но он только на 128 значений, но зато скользящим окном идет... :)
Сергей0308
03.06.2024, 13:50
Тогда не подходит! :) придется вставлять свой макрос, но он только на 128 значений, но зато скользящим окном идет... :)
В смысле, не подходит, разница только в меньшем периоде обновления при вычислении скользящим окном, Вас какой период обновления устроит?
Traveller
03.06.2024, 14:05
В смысле, не подходит, разница только в меньшем периоде обновления при вычислении скользящим окном, Вас какой период обновления устроит?
Да забейте, у меня нет периода обновления, у меня есть кол-во входящих данных, а идут они хаотично и непрерывно, вот и нужно в этом числовом окне (кол-во переменных), в общем нужно среднее арифметическое по последним N-значениям, без привязки ко времени цикла, т.е. есть 128 значений, поступило 129, первое затерлось и так по кругу. У меня уже давно есть рабочий макрос, который так делает, просто подумал, что этот будет полегче в плане кол-ва элементов... :)
https://owen.ru/forum/attachment.php?attachmentid=76215&stc=1&d=1717412685
https://owen.ru/forum/attachment.php?attachmentid=76216&stc=1&d=1717412695
Сергей0308
03.06.2024, 15:35
Да забейте, у меня нет периода обновления, у меня есть кол-во входящих данных, а идут они хаотично и непрерывно, вот и нужно в этом числовом окне (кол-во переменных), в общем нужно среднее арифметическое по последним N-значениям, без привязки ко времени цикла, т.е. есть 128 значений, поступило 129, первое затерлось и так по кругу. У меня уже давно есть рабочий макрос, который так делает, просто подумал, что этот будет полегче в плане кол-ва элементов... :)
https://owen.ru/forum/attachment.php?attachmentid=76215&stc=1&d=1717412685
https://owen.ru/forum/attachment.php?attachmentid=76216&stc=1&d=1717412695
Вы же пишите значения в стек с определённым периодом, например равным двум циклам программы, я могу и каждый цикл программы писать значения, короче это и будет периодом обновления!
В одной из тем "капзап" предлагал упрощённый алгоритм вычисления среднего значения скользящим окном, в смысле когда стек полностью заполнен, при каждом последующем такте записи в стек у нас к сумме стека прибавляется самое новое значение и отнимается самое старое, поэтому алгоритм можно упростить в разы, надеюсь понятно написал?
Получается, что стек и не нужен, в смысле, достаточно сумматора и ширину окна можно сделать практически любую без усложнения алгоритма!
Вы же пишите значения в стек с определённым периодом, например равным двум циклам программы, я могу и каждый цикл программы писать значения, короче это и будет периодом обновления!
В одной из тем "капзап" предлагал упрощённый алгоритм вычисления среднего значения скользящим окном, в смысле когда стек полностью заполнен, в каждом последующем такте записи в стек у нас к сумме стека прибавляется самое новое значение и отнимается самое старое, поэтому алгоритм можно упростить в разы, надеюсь понятно написал?
Получается, что стек и не нужен, в смысле, достаточно сумматора и ширину окна можно сделать практически любую без усложнения алгоритма!
А как без стека, нам ведь, по-любому, нужно помнить старые значения?
Сергей0308
03.06.2024, 16:07
А как без стека, нам ведь, по-любому, нужно помнить старые значения?
Так в сумматоре запоминается сумма значений стека, например 128 значений, как у товарища, каждый последующий такт к этой сумме прибавляется самое новое значение и отнимается самое старое в смысле достаточно выхода от самого последнего разряда стека и сам алгоритм существенно упростится, в разы. Да сам стек в принципе сохранится, но в гораздо упрощённом виде.
И, сделать такое проще!
И сам стек можно упростить, типа так: 76218
Traveller
03.06.2024, 16:57
Вы же пишите значения в стек с определённым периодом, например равным двум циклам программы, я могу и каждый цикл программы писать значения, короче это и будет периодом обновления!
В одной из тем "капзап" предлагал упрощённый алгоритм вычисления среднего значения скользящим окном, в смысле когда стек полностью заполнен, при каждом последующем такте записи в стек у нас к сумме стека прибавляется самое новое значение и отнимается самое старое, поэтому алгоритм можно упростить в разы, надеюсь понятно написал?
Получается, что стек и не нужен, в смысле, достаточно сумматора и ширину окна можно сделать практически любую без усложнения алгоритма!Чё вы привязались к этим циклам программы? нет у меня привязки ко времени, у меня каждый новый такт, может меняться, первый такт=0,5 сек., второй=1,5, третий=0,3сек., и.т.д., какие циклы прогамм, нафиг они мне нужны, ну да в макросе из базы данных, там идет непрерывный поток данных от датчика температуры и это оправданно, в моем случае это вообще не нужно ибо мне нужно усреднить частоту следования импульсов, которые идут как бог на душу положит...
И да, что бы два раза не вставать, говорю все уже сделано и все уже работает, просто хотел немного оптимизировать не более того... :)
Сергей0308
03.06.2024, 18:13
Чё вы привязались к этим циклам программы? нет у меня привязки ко времени, у меня каждый новый такт, может меняться, первый такт=0,5 сек., второй=1,5, третий=0,3сек., и.т.д., какие циклы прогамм, нафиг они мне нужны, ну да в макросе из базы данных, там идет непрерывный поток данных от датчика температуры и это оправданно, в моем случае это вообще не нужно ибо мне нужно усреднить частоту следования импульсов, которые идут как бог на душу положит...
И да, что бы два раза не вставать, говорю все уже сделано и все уже работает, просто хотел немного оптимизировать не более того... :)
И упрощайте, Вам даже подсказали как это можно сделать, в смысле, самому даже думать не надо! В вашем случае это упрощение(оптимизация) может составить до двух порядков, в смысле по количеству используемых элементов!
Хорошо, чтобы на два порядка упростить это стараться надо, на порядок в лёгкую упростится, в смысле, по количеству используемых элементов или Вы уже передумали?
Как говорят, лучше поздно, чем никогда!
Я имею ввиду ваш алгоритм вычисления среднего скользящим окном со стеком глубиной(разрядностью) 128, а период следования тактовых сигналов здесь ни при чём, это я пример привёл, Вы что ещё и плохо видите, в смысле, я же написал!
Когда-то делал вычислитель, по простому теплосчётчик, для счётчика объёма с импульсным выходом, там тоже неизвестно когда следующий импульс придёт, в смысле, период произвольный, в это время температура может меняться и приходится высчитывать среднюю температуру за период между импульсами, короче, я каждый цикл программы значения суммировал и делил на количество измерений, это чтобы по максимуму было!
Короче, чтобы тяп-ляп сделать и ума не надо, Вы попробуйте на порядок точней(я пример привёл с теплосчётчиком) и на порядок проще сделать(тоже варианты упрощения обозначил), в итоге в 100 раз лучше получится, чем такое не устраивает?
Traveller
04.06.2024, 08:37
И упрощайте, Вам даже подсказали как это можно сделать, в смысле, самому даже думать не надо! В вашем случае это упрощение(оптимизация) может составить до двух порядков, в смысле по количеству используемых элементов!
Хорошо, чтобы на два порядка упростить это стараться надо, на порядок в лёгкую упростится, в смысле, по количеству используемых элементов или Вы уже передумали?
Как говорят, лучше поздно, чем никогда!
Я имею ввиду ваш алгоритм вычисления среднего скользящим окном со стеком глубиной(разрядностью) 128, а период следования тактовых сигналов здесь ни при чём, это я пример привёл, Вы что ещё и плохо видите, в смысле, я же написал!
Когда-то делал вычислитель, по простому теплосчётчик, для счётчика объёма с импульсным выходом, там тоже неизвестно когда следующий импульс придёт, в смысле, период произвольный, в это время температура может меняться и приходится высчитывать среднюю температуру за период между импульсами, короче, я каждый цикл программы значения суммировал и делил на количество измерений, это чтобы по максимуму было!
Короче, чтобы тяп-ляп сделать и ума не надо, Вы попробуйте на порядок точней(я пример привёл с теплосчётчиком) и на порядок проще сделать(тоже варианты упрощения обозначил), в итоге в 100 раз лучше получится, чем такое не устраивает?Я не нашел как это можно делать именно в этом макросе ибо там есть счетчик с автосбросом, который все обнуляет и другой макрос который тупо складывает все значения, но опции что самое старое значение вычитается, а новое прибавляется, этого там нет, во всяком случае я не нашел, думать как это сделать мне лень, вы же тоже ничего кроме общих фраз не излагаете, а писать что вы тут во всем разбираетесь, без верификации своего интеллекта, эдак и я так могу...:)
Сергей0308
04.06.2024, 10:50
Я не нашел как это можно делать именно в этом макросе ибо там есть счетчик с автосбросом, который все обнуляет и другой макрос который тупо складывает все значения, но опции что самое старое значение вычитается, а новое прибавляется, этого там нет, во всяком случае я не нашел, думать как это сделать мне лень, вы же тоже ничего кроме общих фраз не излагаете, а писать что вы тут во всем разбираетесь, без верификации своего интеллекта, эдак и я так могу...:)
Не знаю чего Вы искали, вроде всё понятно разложил, короче, это дело пяти минут сделать, чего там искать, вот мой пример, приблизительно как-то так:
76228
76229
И, для увеличения ширины окна достаточно стек расширить до нужной глубины(разрядности).
Traveller
04.06.2024, 12:15
Не знаю чего Вы искали, вроде всё понятно разложил, короче, это дело пяти минут сделать, чего там искать, вот мой пример, приблизительно как-то так:
76228
76229
И, для увеличения ширины окна достаточно стек расширить до нужной глубины(разрядности).
Ну вот это уже предметный разговор, тока это ни фига не проще того что я нарисовал, а может даже и сложнее, все эти упаковки, распаковки и то что между, ну в общем зачет, но мне такого не нать... :)
Уж простите, это не оптимизация, это просто другой путь, на мой взгляд несколько более тернистый... :)
Ща пока не до этого, но у меня есть мысли как это дело действительно оптимизировать, т.е. свести к миниму кол-во дискретных элементов, как взгрустнеца может чё и придумаю, но не обещаю... :)
Ежели что сделаю, то выложу... :)
Ну вот это уже предметный разговор, тока это ни фига не проще того что я нарисовал, а может даже и сложнее, все эти упаковки, распаковки и то что между, ну в общем зачет, но мне такого не нать... :)
Уж простите, это не оптимизация, это просто другой путь, на мой взгляд несколько более тернистый... :)
Ща пока не до этого, но у меня есть мысли как это дело действительно оптимизировать, т.е. свести к миниму кол-во дискретных элементов, как взгрустнеца может чё и придумаю, но не обещаю... :)
Ежели что сделаю, то выложу... :)
Вариант на ST на базе оскатовского блока фильтра (за 100% работоспособность не ручаюсь, напильник в комплекте):
FUNCTION_BLOCK FILTER_MAV_I
VAR_INPUT
X : UDINT; (* Данные *)
N : UDINT := 32; (* Глубина *)
C : BOOL := TRUE; (* Импульс для обновления данных *)
RST : BOOL;
END_VAR
VAR_OUTPUT
Y : UDINT;
END_VAR
VAR
init: BOOL;
buffer : ARRAY[1..32] OF UDINT;
i: UDINT;
sum : UDINT;
tmp : UDINT;
END_VAR
(*
version 1.5
edit 1exan
version 1.4 26. MAR. 2011
programmer hugo
tested by oscat
FILTER_MAV_W is a moving average filter with programmable length N for WORD Data.
*)
(* limit N to size of buffer *)
IF N > 32 THEN N := 32; END_IF;
(* startup initialisation *)
IF NOT init OR rst OR N = 0 OR tmp <> N THEN
init := TRUE;
tmp := N;
FOR i := 1 TO tmp DO
buffer[i] := X;
END_FOR;
Y := X;
sum := Y * N;
ELSE
IF C THEN
tmp := N;
IF i >= tmp THEN i := 1;
ELSE i := i + 1; END_IF;
sum := sum + X - buffer[i];
buffer[i] := X;
END_IF;
Y := sum / N;
END_IF;
end_function_block
Сергей0308
04.06.2024, 13:39
Ну вот это уже предметный разговор, тока это ни фига не проще того что я нарисовал, а может даже и сложнее, все эти упаковки, распаковки и то что между, ну в общем зачет, но мне такого не нать... :)
Уж простите, это не оптимизация, это просто другой путь, на мой взгляд несколько более тернистый... :)
Ща пока не до этого, но у меня есть мысли как это дело действительно оптимизировать, т.е. свести к миниму кол-во дискретных элементов, как взгрустнеца может чё и придумаю, но не обещаю... :)
Ежели что сделаю, то выложу... :)
Допустим стек можете свой оставить, к тому же упростить, в смысле, достаточно будет выхода от крайнего разряда стека.
Мой стек реверсивный, если Вы своему реверс приделаете - он получится куда сложнее моего. Короче, в данном случае реверс не нужен, стек оставьте свой, это я насчёт общего понимания простоты! С моим стеком для реализации вашего метода вычисления не надо и выходы делать от всех используемых разрядов стека, в смысле, можно по очереди выводить на один выход и суммировать. К тому же мой макрос можно использовать и как матрицу памяти на 32 ячейки памяти(0-31), в смысле, при смене адреса разряда(регистра) для записи, по преведущему адресу в ячейке сохранится значение на входе "IN" в момент смены адреса.
И, чуть не забыл, энергонезависимость у моего стека для данного случая нужно убрать, она только вредна в этом конкретном случае, для этого достаточно у соответствующей переменной подмакроса убрать энергонезависимость.
Traveller
04.06.2024, 13:44
Допустим стек можете свой оставить, к тому же упростить, в смысле, достаточно будет выхода от крайнего разряда стека.
Мой стек реверсивный, если Вы своему реверс приделаете - он получится куда сложнее моего. Короче, в данном случае реверс не нужен, стек оставьте свой, это я насчёт общего понимания простоты! С моим стеком для реализации вашего метода вычисления не надо и выходы делать от всех используемых разрядов стека, в смысле, можно по очереди выводить на один выход и суммировать. К тому же мой макрос можно использовать и как матрицу памяти на 32 ячейки памяти(0-31), в смысле, при смене адреса разряда(регистра) для записи, по преведущему адресу в ячейке сохранится значение на входе "IN" в момент смены адреса.Это уже вода, мне не важно как это работает, мне важно что бы это работало, в принципе и мой работает исправно... :)
Traveller
04.06.2024, 13:53
Вариант на ST на базе оскатовского блока фильтра (за 100% работоспособность не ручаюсь, напильник в комплекте):Спасибо конечно, но я еще не так сильно образован в языках программирования, что бы допиливать это, мне нужно более вдумчиво подойти к этой проблеме, но т.к. проблема пока не проблема или не такая уж сильная проблема, то мы это пока пропустим, хотя признаю, что это было бы более красивое и правильное решение, чем наши все вместе взятые, Снимаю шляпу! :)
Сергей0308
04.06.2024, 23:46
Я так бы предпочёл, принцип работы выше описал, в смысле, на один выход по очереди выводятся все разряды стека, суммируются и сумма делится на количество разрядов, всё!
76258
76259
Цикл работы этого алгоритма будет составлять 62 цикла программы, что при времени цикла программы в 16 мс примерно составит одну секунду, в смысле, на выходе алгоритма всегда будет среднее арифметическое за последнюю секунду измерения!
При этом период обновления = 32 мс, в смысле, два цикла программы!
Traveller
05.06.2024, 06:23
Я так бы предпочёл, принцип работы выше описал, в смысле, на один выход по очереди выводятся все разряды стека, суммируются и сумма делится на количество разрядов, всё!Вы не поверите, но у меня именно так и работает... :) Единственное, что в этом макросе максимальное кол-во переменных равно 128, но на тот момент, да и сейчас тоже, больше было и не нужно, поэтому как есть. :)
https://owen.ru/forum/attachment.php?attachmentid=76273&stc=1&d=1717568267
https://owen.ru/forum/attachment.php?attachmentid=76274&stc=1&d=1717568274
https://owen.ru/forum/attachment.php?attachmentid=76275&stc=1&d=1717568283
Сергей0308
05.06.2024, 11:09
Вы не поверите, но у меня именно так и работает... :) Единственное, что в этом макросе максимальное кол-во переменных равно 128, но на тот момент, да и сейчас тоже, больше было и не нужно, поэтому как есть. :)
https://owen.ru/forum/attachment.php?attachmentid=76273&stc=1&d=1717568267
https://owen.ru/forum/attachment.php?attachmentid=76274&stc=1&d=1717568274
https://owen.ru/forum/attachment.php?attachmentid=76275&stc=1&d=1717568283
Да, в принципе тоже самое, только я один сумматор использую для суммирования всех разрядов, а Вы 127!
Traveller
05.06.2024, 11:16
Да, в принципе тоже самое, только я один сумматор использую для суммирования всех разрядов, а Вы 127!128! :) Пусть и так, просто это делалось на скорую руку и я особо не заморачивался на этом, мне нужен был результат и да, по кол-ву элементов, у меня все же полегче чем у вас, у вас там несколько сложнее внутри выглядит, если до кишок добираться....:) Я так думаю... :)
В общем предлагаю ничью! :)
Будет время и желание попробую свой алгоритм допилить и расширить в плане кол-ва усредняемых данных, если что сделаю, то выложу... :)
Кстати у меня тут еще есть один алгоритм, в стадии разработки, но я пока не готов его продемонстрировать, еще не довел до ума, там другой принцип, в потоке данных выделяются максимальные и минимальные значения и высчитывается их среднее арифметическое, в принципе я его проверял и сравнивал с тем своим и они в принципе показывают одно и тоже.... :)
Traveller
05.06.2024, 15:26
Кстати у меня тут еще есть один алгоритм, в стадии разработки, но я пока не готов его продемонстрировать, еще не довел до ума, там другой принцип, в потоке данных выделяются максимальные и минимальные значения и высчитывается их среднее арифметическое, в принципе я его проверял и сравнивал с тем своим и они в принципе показывают одно и тоже.... :)Ну вот в принципе, вроде получился и как бы даже работает, посмотрите что не так, то что не так и я увидел, ну в первых N тактах ("глубина усреднения") минимальное значение будет нулевым со всеми вытекающими, я полагаю, это можно исправить, но пока лень думать, но зато можно сделать любую глубину в диапазоне возможностей счетчика, а, и еще при достижении диапазона усреднения, на выход записывается последнее значение на входе, пока не понял, критично это или нет... :)
https://owen.ru/forum/attachment.php?attachmentid=76291&stc=1&d=1717590250
Бакдаулет
30.07.2024, 13:06
Добрый день, с помощью какого макроса можно увидеть значения температуры с нпт 3.0.0.1.2 в owen logic ,через пр100, я настроил вход на 4-20мА
kondor3000
30.07.2024, 13:25
Добрый день, с помощью какого макроса можно увидеть значения температуры с нпт 3.0.0.1.2 в owen logic ,через пр100, я настроил вход на 4-20мА
Вам одной темы мало? Зачем вы в 3 темах пишите одновременно? https://owen.ru/forum/showthread.php?t=29744&page=47
Выложите уже наконец скрины , где как и что настроено. Напишите какой у вас датчик и как вы настроили НПТ-3.
Рогов Алексей
30.07.2024, 15:37
Добрый день!
Для статистики может это подойдёт?77705
Добрый день. На этом сайте https://vent.owen.ru/makrosy?tags%5B0%5D=2&page=2 представлено гораздо больше макросов для вентиляции, чем в библиотеке лоджика. Где их можно найти?
Королев Кирилл
15.08.2024, 16:43
Добрый день. На этом сайте https://vent.owen.ru/makrosy?tags%5B0%5D=2&page=2 представлено гораздо больше макросов для вентиляции, чем в библиотеке лоджика. Где их можно найти?
Добрый день. Напишите мне на почту, пожалуйста, какие макросы Вам требуются.
Filter59
11.09.2024, 10:50
не могу найти макрос CTMU. ткните носом!
kondor3000
11.09.2024, 15:20
не могу найти макрос CTMU. ткните носом!
Тут проект с макросом CTMU https://owen.ru/forum/showthread.php?t=36466&page=2
Сергей0308
11.09.2024, 15:55
не могу найти макрос CTMU. ткните носом!
Так там практически готовый расходомер, в смысле зная вес импульса счётчика с импульсным выходом, можно легко пересчитать период следования импульсов в расход, более того, много раз уже подобное делали!
Filter59
11.09.2024, 16:36
премного благодарен!!!
Filter59
11.09.2024, 16:42
Так там практически готовый расходомер, в смысле зная вес импульса счётчика с импульсным выходом, можно легко пересчитать период следования импульсов в расход, более того, много раз уже подобное делали!
не сомневаюсь нисколько, если для вас это профессия и каждодневный труд. а я с этим сталкиваюсь раз в пятилетку, а посему туплю. так что не извольте сердится, моё дело гайки крутить, тут я сам кому хошь советов надаю. принцип я понял, с макросом этим застрял. всё одно спасибо, не смею более отвлекать.))
Так ты для 24 года получил юникс время
А хотел для 2024
Прибавь 2000 к системной переменной с годом
ЗЫ.
https://owen.ru/forum/attachment.php?attachmentid=16915&d=1425224217
ТС убежал, пока отвечал
Удалил. Я перенес сообщение в другую ветку (обсуждение макросов). Прибавление 2000, реализовано у меня в макросе.
heavyprapor
15.10.2024, 08:59
Добрый день!
Подскажите пожалуйста.
Есть задача подключить датчик 50М напрямую к ПР-102. В списке возможных термосопротивлений для настройки аналогового входа 50М нет.
Но есть программный модуль - преобразователь сопротивления в температуру (50М)
Вопрос какая настройка должна быть у аналогового входа в этом случае?
kondor3000
15.10.2024, 09:09
Добрый день!
Подскажите пожалуйста.
Есть задача подключить датчик 50М напрямую к ПР-102. В списке возможных термосопротивлений для настройки аналогового входа 50М нет.
Но есть программный модуль - преобразователь сопротивления в температуру (50М)
Вопрос какая настройка должна быть у аналогового входа в этом случае?
Не надо использовать 50М, 100М с любыми ПР. Погрешность будет +/- 15 градусов. Используйте Pt1000. Либо докупайте ещё модуль ПРМ-3.
А подключить можно поставив измерение сопротивления на входе и макрос 50М.
Настройка - измерение сопротивлений.
Но проблема в том, что погрешность измерений будет огромной и зависеть от температуры проводов (плавать и не поддаваться коррекции).
Предполагаю, что погрешность будет составлять 5-10 C.
Требуйте замены датчика на высокоомный, вроде Pt1000 (не Pt100, а именно 1000 - тысяча). Даже Pt100 даёт неудовлетворительные результаты.
heavyprapor
17.10.2024, 14:59
Спасибо за развёрнутый ответ.
Попробовал на практике с настройкой аналогового входа 300кОм + программный модуль. Получилась (как справедливо замечено) дичь.
Использовалось 2 датчика, измеряли температуру в двух одинаковых ёмкостях. Начальное сопротивление на датчиках было 54.4 Ом. На контроллер приходили значения 50.1 и 51.2
Кроме того после начала нагрева приходящие значения сопротивления вообще начали падать.
Далее эксперимент был признан неудачным и заказаны НПТ-3.
Солнечный заяц
15.11.2024, 10:46
Блок определения максимального числа не работает? Или я что-то не понимаю?
80071
Солнечный заяц
15.11.2024, 11:05
Все нормально
Не понял вас, что нормально? Что ФБ выдает неправильное значение? :)
Да и при чем здесь пузырьковая сортировка? В этом блоке ее нет. Выводиться должно максимальное значение и номер входа с максимальным значением.
Блок определения максимального числа не работает? Или я что-то не понимаю?
80071
Этот блок выдает 0, если будет 2 и более максимальных.
Если будет достаточно значения и индекса 1-го максимального, попробуйте:
function_block MAX10_
var_input
X1 : udint;
X2 : udint;
X3 : udint;
X4 : udint;
X5 : udint;
X6 : udint;
X7 : udint;
X8 : udint;
X9 : udint;
X10 : udint;
end_var
var_output
VMax : udint;
NMax : udint;
end_var
VMax := X1; NMax := 1;
if X2 > VMax then VMax := X2; NMax := 2; end_if
if X3 > VMax then VMax := X3; NMax := 3; end_if
if X4 > VMax then VMax := X4; NMax := 4; end_if
if X5 > VMax then VMax := X5; NMax := 5; end_if
if X6 > VMax then VMax := X6; NMax := 6; end_if
if X7 > VMax then VMax := X7; NMax := 7; end_if
if X8 > VMax then VMax := X8; NMax := 8; end_if
if X9 > VMax then VMax := X9; NMax := 9; end_if
if X10 > VMax then VMax := X10; NMax := 10; end_if
end_function_block
Солнечный заяц
15.11.2024, 11:22
Этот блок выдает 0, если будет 2 и более максимальных.
Да, опасная особенность. Не ожидал такого подвоха. Да, я понимаю, что в описании ФБ есть упоминание этой "фичи", но все же. Впреть буду пользоваться онлайн библиотекой с большей осторожностью.
Солнечный заяц
15.11.2024, 11:43
Если будет достаточно значения и индекса 1-го максимального, попробуйте:
function_block MAX10_
var_input
X1 : udint;
X2 : udint;
X3 : udint;
X4 : udint;
X5 : udint;
X6 : udint;
X7 : udint;
X8 : udint;
X9 : udint;
X10 : udint;
end_var
var_output
VMax : udint;
NMax : udint;
end_var
VMax := X1; NMax := 1;
if X2 > VMax then VMax := X2; NMax := 2; end_if
if X3 > VMax then VMax := X3; NMax := 3; end_if
if X4 > VMax then VMax := X4; NMax := 4; end_if
if X5 > VMax then VMax := X5; NMax := 5; end_if
if X6 > VMax then VMax := X6; NMax := 6; end_if
if X7 > VMax then VMax := X7; NMax := 7; end_if
if X8 > VMax then VMax := X8; NMax := 8; end_if
if X9 > VMax then VMax := X9; NMax := 9; end_if
if X10 > VMax then VMax := X10; NMax := 10; end_if
end_function_block
Да, это не проблема. Я уже сделал свой вариант. Просто в начале поленился, решил использовать готовый блок из библиотеки. Ваша реализация, конечно, намного лучше существующей. Было бы здорово обновить ФБ в библиотеке, это кого-нибудь спасет.
Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.
Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.
Не помню, чтобы пользовательские ФБ можно было вызывать из ST - только системные.
Хотя если переписать ФБ на ST, то - можно.
Полиномы термопреобразователей описаны в ГОСТ - можно взять коэффициенты из него, добавить проверки на обрыв и короткое замыкание.
Помню, что в действующем ГОСТ для термопар для какого-то редкого случая содержится ошибка - все коэффициенты полинома неправильные, обещали исправить в следующих редакциях. Но тут вопрос про термопреобразователях сопротивления, с ними всё в порядке.
Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.
А нафига его вызывать где-то внутри функции? Это ведь преобразователь входной величины - их, обычно, снаружи располагают
Подозреваю, что человек желает сделать универсальный обработчик аналогового входа - изменяется код датчика и программа через if/case выбирает полином.
По крайней мере подобное описано разработчиками Овен, но скачать невозможно
https://vent.owen.ru/makrosy/sensor
Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.
Как-то не сразу осознал НСХ.
Для термопреобразователей сопротивления, включённых по 2-проводной схеме и схемотехники аналоговых входов ПР, гарантируется точность ±15℃. Если она устраивает - я уезжаю из страны в безопасную Сирию.
Всем привет! как пользоваться макросом Pt1000? Если в нем циклическая связь на выходе SEL_FLOAT 2 к t.
Не обращать внимание - макрос проверен и работоспособен.
Всем привет! как пользоваться макросом Pt1000? Если в нем циклическая связь на выходе SEL_FLOAT 2 к t.
Можете его открыть и поправить, установив вместо циклической связи линию задержки. Насколько помню она там уже почти на выходе. И задержка передачи значения на выход в 1 цикл погоды не сделает, а вот желтизну уберет
Доброго времени суток всем, и с наступившим 2025 годом! Возможно дурацкий вопрос и я чего-то не нашел, но: где можно скачать сами макросы? я вижу только описание. Заранее благодарю.
Доброго времени суток всем, и с наступившим 2025 годом! Возможно дурацкий вопрос и я чего-то не нашел, но: где можно скачать сами макросы? я вижу только описание. Заранее благодарю.
Отмечаете нужные, нажимаете кнопку
81213
Спасибо! все оказалось намного проще, чем я думал ))
meridian86
20.01.2025, 11:51
Здравствуйте! Есть проблема с Менеджером компонентов. Доступ к интернету имеется, но списков нет. В чем причина?
81430
kondor3000
20.01.2025, 12:47
Здравствуйте! Есть проблема с Менеджером компонентов. Доступ к интернету имеется, но списков нет. В чем причина?
81430
Доступа к менеджеру нет, только если не создан проект. У меня всё работает OWEN Logic2.8.362 81435
meridian86
20.01.2025, 13:08
Проект создан. Менеджер открывается. Но "наполнения" нет.
meridian86
20.01.2025, 13:32
Заработал.Вопрос снят.
Вопрос, в онлайн базе есть отличные описания макросов, а вот в локальную базу они не попадают, это так и должно быть? Просто очень не удобно когда на выезде работаешь или нет интернета, а описание сильно упрощает работу.
kondor3000
29.01.2025, 08:38
Вопрос, в онлайн базе есть отличные описания макросов, а вот в локальную базу они не попадают, это так и должно быть? Просто очень не удобно когда на выезде работаешь или нет интернета, а описание сильно упрощает работу.
Вы наверное только начали работать с ПР, через год нафик описание не нужно будет. И проект надо на работе писать, а на выезде только настроить.
В биб-ке нет описания, только входы и выходы расписаны.
человек видимо про pdf со справкой по макросу, чтобы они тоже загружались в локальную библиотеку.
Да, меня тоже не радует ситуация, когда "компоненты" недоступны без интернета, а при наличии интернета происходит повторное чтение сведений, которые уже многократно считаны. Да ещё и привязка к Acrobat Reader - пришлось устанавливать, хотя 20 лет пользовался и сейчас продолжаю пользоваться другой программой.
Ладно, хватит о грустном...
Видел на форуме совет, которому следую:
- скачал все макросы и pdf-описания к ним с сервера или последовательно из "компонентов"
- нужный макрос в проект помещаю через меню Файл - импорт макроса из файла, как будто это мой разработанный макрос, которого нет на сервере.
Не совсем понял про работу ), у меня работа там где я. А вот интернет не всегда у нас в Якутии есть на месте. Писать приходится в разных местах под различные задачи. Жаль что такой возможности нет. Получается только вручную описания сохранять
Да, меня тоже не радует ситуация, когда "компоненты" недоступны без интернета, а при наличии интернета происходит повторное чтение сведений, которые уже многократно считаны. Да ещё и привязка к Acrobat Reader - пришлось устанавливать, хотя 20 лет пользовался и сейчас продолжаю пользоваться другой программой.
Ладно, хватит о грустном...
Видел на форуме совет, которому следую:
- скачал все макросы и pdf-описания к ним с сервера или последовательно из "компонентов"
- нужный макрос в проект помещаю через меню Файл - импорт макроса из файла, как будто это мой разработанный макрос, которого нет на сервере.
видимо так и буду делать, спасибо за ответ!
Скажите пожалуйста!!! почему перестала открываться онлайн база макросов?
Скажите пожалуйста!!! почему перестала открываться онлайн база макросов?
Да, проблема остается. Какой прогноз, когда будет работать?
Viktor1981
05.03.2025, 11:32
Всех приветствую! Я новичок, сильно не пинайте: пишу программу в Codesys 2.3 и нужен блок который будет сигнализировать о росте или падении целочисленной переменной, просто в овен лоджик этот макрос есть(VIP) а в Codesys не понимаю как это реализовать? Может кто подсказать? Заранее благодарен!
Viktor1981
05.03.2025, 12:04
Спасибо, попробую!
Viktor1981
05.03.2025, 12:14
Я так понимаю: что блок LIMITALARM ограничен цифрами 32768 ?
Viktor1981
05.03.2025, 12:24
Принято! Огромное спасибо!
84204
Вроде наклевывается работенка на ПР225, забегаю чуть наперед, так как модернизацию еще не утвердили, но хотелось бы разобраться в макросе ПИД-регулятора:
Ua_pwr_min - ставить 0?
Ua_pwr_max - ставить 100?
Ua_pwr_off - ставить 0?
Iv_pause - не совсем понятно для чего
Автонастройки нет?
Если открыть этот макрос через Owen Logic - Компоненты, то подгрузится pdf с описанием макроса.
В крайнем случае, описание можно взять на сервере Овен.
Поэтому перечислять назначение не буду.
Скажу лишь, что Ua_pwr_off не обязательно равен 0 - можно организовать безударный переход в РУЧНОЙ режим и обратно, с установкой выхода при помощи панели оператора или другого способа.
Автонастройки нет, но в большинстве случаев коэффициенты можно вычислить даже до начала программирования, а не то, что наладки.
Traveller
06.06.2025, 19:08
84204
Вроде наклевывается работенка на ПР225, забегаю чуть наперед, так как модернизацию еще не утвердили, но хотелось бы разобраться в макросе ПИД-регулятора:
Ua_pwr_min - ставить 0?
Ua_pwr_max - ставить 100?
Ua_pwr_off - ставить 0?
Iv_pause - не совсем понятно для чего
Автонастройки нет?Автонастройки пока нет, но разработчики говорят что допиливают ФБ для ПР205, ПР225 с режимом автонастройки (https://owen.ru/forum/showthread.php?t=26216&p=464734&viewfull=1#post464734), в общем если им верить, то нужно немного подождать :)
Traveller
06.06.2025, 19:10
84204
Вроде наклевывается работенка на ПР225, забегаю чуть наперед, так как модернизацию еще не утвердили, но хотелось бы разобраться в макросе ПИД-регулятора:
Ua_pwr_min - ставить 0?
Ua_pwr_max - ставить 100?
Ua_pwr_off - ставить 0?
Iv_pause - не совсем понятно для чего
Автонастройки нет?Автонастройки пока нет, но разработчики говорят что допиливают ФБ для ПР205, ПР225 с режимом автонастройки (https://owen.ru/forum/showthread.php?t=26216&p=464734&viewfull=1#post464734), в общем если им верить, то нужно немного подождать :)
что касается вашего вопроса, то я его тоже задавал (https://owen.ru/forum/showthread.php?t=26216&p=464690&viewfull=1#post464690), в общем это фиксация значения на выходе, если его не фиксировать, то оно будет постоянно меняться, в зависимости от влияющих факторов...
что касается вашего вопроса, то я его тоже задавал (https://owen.ru/forum/showthread.php?t=26216&p=464690&viewfull=1#post464690), в общем это фиксация значения на выходе, если его не фиксировать, то оно будет постоянно меняться, в зависимости от влияющих факторов...
Нет, фиксация - побочный эффект.
Главное назначение этого входа - безударный переход при переключении режима РУЧН-АВТ.
Просто Вам ещё не доводилось подобное собирать ни на ПР ни на ПЛК.
Traveller
06.06.2025, 22:25
Нет, фиксация - побочный эффект.
Главное назначение этого входа - безударный переход при переключении режима РУЧН-АВТ.
Просто Вам ещё не доводилось подобное собирать ни на ПР ни на ПЛК.Ну конечно не доводилось, эта функция так сложна как Бином Ньютона :D
84206
Автонастройки нет, но в большинстве случаев коэффициенты можно вычислить даже до начала программирования, а не то, что наладки.
Если не сложно, можете подсказать как? Ранее приходилось до подбирать коэффициенты после пусконаладки или после замены клапана, а так чтобы прям с нулевых значений не доводилось пока
Нет, фиксация - побочный эффект.
Главное назначение этого входа - безударный переход при переключении режима РУЧН-АВТ
Можете хотя бы в кратце описать как это работает - безударный режим?
Если не сложно, можете подсказать как? Ранее приходилось до подбирать коэффициенты после пусконаладки или после замены клапана, а так чтобы прям с нулевых значений не доводилось пока
https://www.phind.com/search/cmblkpemy00003g6wawq44u5e как то так
Можете хотя бы в кратце описать как это работает - безударный режим?
Выход поддерживается равным тому, что был только что в ручном режиме (за счёт записи в интегральную часть).
Уставка приравнивается к текущему значению параметра регулирования.
Эта уставка плавно изменяется к нужной по технологии уставке.
Нужно только проверить, чтобы именно этот макрос приравнивал интегральную часть к значению выхода (заданному со входа). Для ПР не доводилось реализовывать ручной режим, могу лишь догадываться о корректности реализации.
Сейчас со свободным временем туго, попробуйте проверить самостоятельно... всё-таки, это не школьное задание, а часть работы, за которую получаете зарплату.
Артемий W
23.07.2025, 13:34
Добрый день!
Чем отличаются блоки GEN_PWM и PWMG ? На мой взгляд они выполняют одинаковые функции. Какой блок лучше адаптирован к постоянному изменению мощности с выхода ПИД, чтобы преобразовать сигнал 0-100 % в дискретный?
Добрый день!
Чем отличаются блоки GEN_PWM и PWMG ? На мой взгляд они выполняют одинаковые функции. Какой блок лучше адаптирован к постоянному изменению мощности с выхода ПИД, чтобы преобразовать сигнал 0-100 % в дискретный?
Они отличаются только способом задания периода ШИМ. В первом случае период задается в мс, в другом случае - в Гц. В остальном исполнение идентичное, на блоке BLINK
И что за мода один вопрос дублировать в разных темах?
majevgenij
21.08.2025, 20:26
Подскажите, есть пр205. Но в программе овенлоджик нет блока пид. Пришлось скачать из базы. Но в нем нет авто настройки. Есть выход из данной ситуации???
kondor3000
21.08.2025, 22:12
Подскажите, есть пр205. Но в программе овенлоджик нет блока пид. Пришлось скачать из базы. Но в нем нет авто настройки. Есть выход из данной ситуации???
https://owen.ru/forum/showthread.php?t=12264&p=470302&viewfull=1#post470302
Здравствуйте. Может быть есть у кого-то макрос округления целого числа к ближайшему большему. В стандартной онлайн-базе не нашел. Заранее спасибо
Может дробного (с плавающей запятой) к ближайшему большему целому?
function_block Ceiling
var_input
in : REAL;
end_var
var_output
Q : udint;
end_var
Q := real_to_udint(in);
if in > udint_to_real(Q) then Q := Q + 1; end_if
end_function_block
или
85596
Здравствуйте. Может быть есть у кого-то макрос округления целого числа к ближайшему большему. В стандартной онлайн-базе не нашел. Заранее спасибо
Просто прибавьте 0,5 перед тем как добавить xToInt.
Сергей0308
07.09.2025, 02:02
Так он целое округляет, целое и так круглое, короче, ему ничего не надо делать, мне так кажется!
Просто прибавьте 0,5 перед тем как добавить xToInt.
Тогда округление будет к ближайшему целому. А челу надо к ближайшему большему
Belletein
23.09.2025, 16:38
При работе блока PID_AT_F_1 после уменьшения уставки требуемой величины блок выходит в ошибку, сброс не помогает. Есть работоспособные варианты изменения уставок блока? Программу и видео работы залил на облако https://cloud.mail.ru/public/E1Ss/kJdKJZs56
kondor3000
23.09.2025, 17:45
При работе блока PID_AT_F_1 после уменьшения уставки требуемой величины блок выходит в ошибку, сброс не помогает. Есть работоспособные варианты изменения уставок блока? Программу и видео работы залил на облако https://cloud.mail.ru/public/E1Ss/kJdKJZs56
Вот, скачайте проект и разберитесь как работает ПИД регулятор с автонастройкой (АНР), там всё подписано.
Просто уставку не надо ставить больше максимума и запускать работу без АНР.
АНР можно повторить и в симуляторе, плавно меняя вход, до окончания АНР.
У вас в макросе тот же ПИД.
Пример использования ПИД с сохранением настроек_______https://owen.ru/forum/showthread.php?t=17974&page=51#505
При работе блока PID_AT_F_1 после уменьшения уставки требуемой величины блок выходит в ошибку, сброс не помогает. Есть работоспособные варианты изменения уставок блока? Программу и видео работы залил на облако https://cloud.mail.ru/public/E1Ss/kJdKJZs56
Так этот макрос добавили в последний Лоджик. А этот Лоджик вышел корявый. Возможно и на новый ПИД корявость распространяется. Так что, лучше, пишите в тех поддержку
kondor3000
23.09.2025, 19:31
Так этот макрос добавили в последний Лоджик. А этот Лоджик вышел корявый. Возможно и на новый ПИД корявость распространяется. Так что, лучше, пишите в тех поддержку
Да всё работает даже в симуляторе, просто уставку не надо ставить больше максимума и запускать работу без АНР. 85888
Belletein
24.09.2025, 07:40
Да всё работает даже в симуляторе, просто уставку не надо ставить больше максимума и запускать работу без АНР. 85888
День добрый, я не совсем понял, что значит уставку не ставить больше максимума? Минимум и максимум - это выходы PID, в моём случае 0-100%, а уставка задаётся - давление - задаётся в килопаскалях, и может быть и 200, и 300 кПА.
И что значит нельзя запускать работу без АНР, если вручную коэффициенты подобрать не будет работать?
kondor3000
24.09.2025, 07:57
День добрый, я не совсем понял, что значит уставку не ставить больше максимума? Минимум и максимум - это выходы PID, в моём случае 0-100%, а уставка задаётся - давление - задаётся в килопаскалях, и может быть и 200, и 300 кПА.
И что значит нельзя запускать работу без АНР, если вручную коэффициенты подобрать не будет работать?
Где на видео подобраны коэффициенты? Максимум 100, на входе 100 и уставка 200? Что ПИД должен выдать по вашему?
Кому я про пример то писал?
Belletein
24.09.2025, 08:07
Где на видео подобраны коэффициенты? Максимум 100, на входе 100 и уставка 200? Что ПИД должен выдать по вашему?
Кому я про пример то писал?
Так максимум 100 - это Верхнее ограничение выдаваемой мощности, в моём случае это 50 Гц на частотнике насоса.
А на входе 100 - это текущее давление на выкиде насоса, 100 кПа,
А уставка 200 - это 200 кПа, которые я хочу получить.
ПИД должен увеличить выходное значение - до 100 % (максимум).
И он это делает. А потом приходит оператор и ставит уставку 100 килопаскалей и блок ломается.
Коэффициенты я подбираю так :Kp = 1, Ti = 0, Td = 0. Далее прибавляю Kp до появления автоколебаний. Делю Kp/2 и подбираю Ti. На видео Kp=1, Ti= 1. При автонастройке блок выдал Kp = 348...
На примере у вас блок PID для приборов первого поколения, для ПР225 он другой.
85889
kondor3000
24.09.2025, 08:52
Так максимум 100 - это Верхнее ограничение выдаваемой мощности, в моём случае это 50 Гц на частотнике насоса.
А на входе 100 - это текущее давление на выкиде насоса, 100 кПа,
А уставка 200 - это 200 кПа, которые я хочу получить.
При таком изменении уставки на 100-200 единиц, надо выключать Enable, да и коэффициенты изменять тоже.
Может проще давление вместо 100-300 КПа, задавать 0.1-0.3 МПа ?
Тогда ПИД не будет сходить с ума.
Королев Кирилл
24.09.2025, 10:30
При работе блока PID_AT_F_1 после уменьшения уставки требуемой величины блок выходит в ошибку, сброс не помогает. Есть работоспособные варианты изменения уставок блока? Программу и видео работы залил на облако https://cloud.mail.ru/public/E1Ss/kJdKJZs56
Добрый день. Ошибка наблюдается только в симуляции, проверил на приборе - работа корректная. Спасибо за обратную связь, исправим.
P.S. Обратите внимание на привязку выходных переменных (скрин 1). Вся часть с селекторами реализована внутри макроса. Корректнее будет выполнять привязку согласно документации на макрос (скрин 2)
Belletein
24.09.2025, 10:37
Добрый день. Ошибка наблюдается только в симуляции, проверил на приборе - работа корректная. Спасибо за обратную связь, исправим.
P.S. Обратите внимание на привязку выходных переменных (скрин 1). Вся часть с селекторами реализована внутри макроса. Корректнее будет выполнять привязку согласно документации на макрос (скрин 2)
85891
85892
Спасибо за оперативность.
Ссылки не открываются, продублируйте пожалуйста
85893
Королев Кирилл
24.09.2025, 10:46
Спасибо за оперативность.
Ссылки не открываются, продублируйте пожалуйста
85893
Отредактировал исходное сообщение.
Вылезла ошибка "Функциональный блок PID_Reg не поддерживается прибором ПР102-24.2416.06. Макрос нужен для регулятора ГВС и отопления.8599385992
Подскажите, может есть решение...
Королев Кирилл
03.10.2025, 09:48
Вылезла ошибка "Функциональный блок PID_Reg не поддерживается прибором ПР102-24.2416.06. Макрос нужен для регулятора ГВС и отопления.8599385992
Подскажите, может есть решение...
Блок PID_Reg предназначен только для приборов второго поколения.
85995
Для ПР102 можете воспользоваться блоком PID и макросом RegKZR для преобразования в управляющие сигналы больше/меньше.
Самый главный вопрос - почему не используете готовые приборы - КТР-121 или ТРМ1032?
Они позволяют управлять и насосами и клапанами.
Программировать не надо, особенно алгоритмами сомнительного происхождения и программистом неизвестной квалификации. Документация и техподдержка - имеются, даже через 10 лет.
Для заказчика - одно удовольствие.
Для ПР102 можете воспользоваться блоком PID и макросом RegKZR для преобразования в управляющие сигналы больше/меньше.
На мой взгляд, это неправильное решение, т.к. макрос RegKZR имеет неустранимый недостаток - если на его вход поступает 0 или 100, на выходе формируется непрерывный сигнал открытия или закрытия. А это означает, что когда расчётное положение клапана собьётся относительно реального - посреди нормальной работы произойдёт "необъяснимый" акт вандализма - регулятор полностью закроет или откроет клапан.
Возьмите отсюда
https://owen.ru/forum/showthread.php?t=25068&p=430251&viewfull=1#post430251
только из примера с эмулятором - там чуть улучшенная версия
Я проверял его на погодозависимом отоплении с трёхходовым смесительным клапаном - после установившегося выхода на уставку он почти не двигал клапан. Это чистый ПИ регулятор без улучшений в виде обнуления интегральной при пересечении уставки.
Настраивать - да, без автонастройки не каждый сможет. Оценки возможных значений параметров приведены в том же сообщении - это будут предварительные настройки, а дальше сможете улучшить руками.
Можете погонять тестовое приложение в эмуляторе - пообвыкнете к параметрам. Там я эмулировал давление воздуха перед горелкой - в диапазоне от 0 до 4 кПа.
Самый главный вопрос - почему не используете готовые приборы - КТР-121 или ТРМ1032?
Я хочу сам написать программу, т.к. учусь этому. Готовые приборы для тех, кто не хочет думать))
Сергей0308
04.10.2025, 13:13
Самый главный вопрос - почему не используете готовые приборы - КТР-121 или ТРМ1032?
Я хочу сам написать программу, т.к. учусь этому. Готовые приборы для тех, кто не хочет думать))
Не было бы счастья, да несчастье помогло, тогда Вам счастье привалило, в смысле, Вы радоваться должны, напишите и ПИД-регулятор, он входит в состав программы(проекта)!
он входит в состав программы [/QUOTE]
Можете скинуть этот ПИД, который есть в программе с автонастройкой для ПР102?
Я не делал АНР для ПИД - не те вычислительные мощности у ПР, да и ПИД разработал когда язык ST ещё отсутствовал в OL, а на FBD весь код будет выполняться, хотя некоторые участки не будут оказывать влияния на работу - т.е. будет неоправданная нагрузка и замедление машинного цикла.
Кроме того, работаю по профилю полученного образования и отчётливо представляю изученный материал - настройка ПИД не вызывает сложностей.
Поищите методы АНР - их разрабатывают до сих пор.
Суть методов - на первой стадии проводят идентификацию объекта управления, на второй стадии по формулам вычисляют коэффициенты.
Мне попадался справочник по вычислениям коэффициентов для разных представлений ПИД, для разный видов формул идентификации объекта - это как раз второй шаг.
Aidan O'Dwyer. Handbook of PI and PID controller tuning rules.
Когда сделаете АНР - надеюсь, поделитесь с сообществом.
Успехов в учёбе и самообразовании.
66666666
15.10.2025, 09:18
вопросы к макросам битовых масок. битовая маска по 8 входов со сдвигом сделана так, что теряется 0 бит из маски, его невозможно использовать, а битовая маска на 32 входа не вытаскивается на рабочее поле, проверил на проектах для пр200 и пр205. У меня есть самодельные макросы для упаковки, но если эти выложены в менеджер компонентов, то думаю, стоит обратить на это внимание.
kondor3000
15.10.2025, 09:45
вопросы к макросам битовых масок. битовая маска по 8 входов со сдвигом сделана так, что теряется 0 бит из маски, его невозможно использовать, а битовая маска на 32 входа не вытаскивается на рабочее поле, проверил на проектах для пр200 и пр205. У меня есть самодельные макросы для упаковки, но если эти выложены в менеджер компонентов, то думаю, стоит обратить на это внимание.
Очередная пурга, проверил, всё выносится и работает. Просто биты обозначены не 0-7, а 1-8, то есть 1 и есть 0 бит. 86190
У 32 битного тоже самое, биты 1-32, а не 0-31, просто ему надо много места на поле,
если поле маленькое или высоко задрать макрос, он может не встать на поле.
На ПР200 и ПР205 всё работает.
66666666
15.10.2025, 10:07
Просто биты обозначены не 0-7, а 1-8, то есть 1 и есть 0 бит
за подсказку с размером поля спасибо, а эти короткие битовые маски со сдвигом сами можете проверить. подать 1 на 1 вход и на выходе получите 2, а не 1
kondor3000
15.10.2025, 10:09
за подсказку с размером поля спасибо, а эти короткие битовые маски со сдвигом сами можете проверить. подать 1 на 1 вход и на выходе получите 2, а не 1
Я вам скрин выложил, на скрине Mask1 =1
66666666
15.10.2025, 10:17
Я вам скрин выложил, на скрине МАСКА 1 =1
нашел в чем дело, в проекте, который достался по наследству использовался макрос предыдущей версии 1.1, сейчас в менеджере компонентов он уже исправлен и версия 1.2, там упаковывает корректно. вопрос снят, спасибо.
86193
Подскажите макрос для прибора ПР103-230.1610.01.X.0 (первое поколение) ПИД регулятор для дискретного КЗР применяется для данного прибора? В справке на макрос (макросы) есть примечание, что данный макрос поддерживается только приборами второго поколения (за исключением ПР103 М01). Но применить их не могу в проекте ПР103-230.1610.01.X.0 (первое поколение).
86375
Сергей0308
26.10.2025, 09:13
Подскажите макрос для прибора ПР103-230.1610.01.X.0 (первое поколение) ПИД регулятор для дискретного КЗР применяется для данного прибора? В справке на макрос (макросы) есть примечание, что данный макрос поддерживается только приборами второго поколения (за исключением ПР103 М01). Но применить их не могу в проекте ПР103-230.1610.01.X.0 (первое поколение).
86375
Ясно написано, что ваш прибор(ПР103) относится к приборам второго поколения, иначе его не нужно было писать в исключения!
Можно купить любой прибор второго поколения, за исключением вашего(обозначенного в справке), это решит проблему!
kondor3000
26.10.2025, 09:56
Подскажите макрос для прибора ПР103-230.1610.01.X.0 (первое поколение) ПИД регулятор для дискретного КЗР применяется для данного прибора? В справке на макрос (макросы) есть примечание, что данный макрос поддерживается только приборами второго поколения (за исключением ПР103 М01). Но применить их не могу в проекте ПР103-230.1610.01.X.0 (первое поколение).
Для вас, в Менеджере компонентов есть Простой ПИД-регулятор. Версия 1.00
и макрос RegKZR для задвижки или KZR_DO_Sel для клапанов
Подскажите макрос для прибора ПР103-230.1610.01.X.0 (первое поколение) ПИД регулятор для дискретного КЗР применяется для данного прибора? В справке на макрос (макросы) есть примечание, что данный макрос поддерживается только приборами второго поколения (за исключением ПР103 М01). Но применить их не могу в проекте ПР103-230.1610.01.X.0 (первое поколение).
Посмотрите
https://owen.ru/forum/showthread.php?t=25068&p=430251&viewfull=1#post430251
только берите из двух файлов - второй - с эмулятором, это немного подчищенная от лишнего версия.
Там же и рекомендации по настройке - оценочные диапазоны коэффициентов, чтобы не было удивления от того, что Ти=1000 с, потому, что на самом деле Ти это не время, а коэффициент, зависящий от диапазона измерения давления или температуры.
Сообщения форума Овен несколько менее функциональны в части оформления, поэтому могу привести ссылку на идентичную статью в моём блоге - там всё тоже самое, но несколько нагляднее.
Там тоже, нужно брать архив с эмулятором - с обновлённой версией.
https://www.cyberforum.ru/blogs/534277/8438.html
Связку "Аналоговый ПИД" + RegKZR (или его эквиваленты) настоятельно рекомендую не использовать нигде - ни в Owen Logic ни в CoDeSys (там есть их эквиваленты).
Причина - пресловутая "калибровка", т.е. в какой-то момент обязательно окажется ситуация, когда реальное положение клапана где-то посередине, а расчётное из RegKZR равно 0% или 100% и тогда RegKZR выполнит "калибровку", т.е. начнёт вместо требуемого короткого импульса подавать длинный, который реально переместит клапан в крайнее положение. Т.е. внесёт огромную помеху в регулирование.
Наверное, нужно сделать эмуляцию "Аналоговый ПИД" + RegKZR и показать, как ужасна эта связка.
Моделирование работы связки "Аналоговый ПИД" и RegKZR.
В качестве "аналогового ПИД" взял ПИД из компонентов, но подойдёт и какой-нибудь встроенный, только придётся пересчитать коэффициенты настройки.
В качестве объекта управления взял эмулятор с трёхпозиционным управлением (эмуляция и привода и клапана и самого объекта)
https://owen.ru/forum/showthread.php?t=25068&p=447749&viewfull=1#post447749
Представил, что регулирую давление воздуха, поэтому диапазон изменения выхода эмулятора объекта 0...4000 Па.
86393
После включения эмуляции через 3 минуты значение давления стабилизируется возле уставки - 2000 Па.
Теперь можно с дисплея включить периодическую помеху.
Чтобы не ждать излишне долго, подобрал несколько гипертрофированные параметры и клапана и помехи.
Люфт привода при открытии 1 с, при закрытии 2 с.
Помеха это синусоида с периодом 20 с, амплитудой 10% (приведённое к положению клапана эмулятора объекта).
Итак, что наблюдаем и от чего чувствуем беспокойство.
1. через 3 минуты давление стабилизируется возле уставки - это хорошо. А плохо, что расчётное значение положения клапана (это выход ПИД на вход RegKZR) равен 19,13%, а при этом реальное положение клапана равно 19,33%. Вроде бы не очень много, но уже есть
86394
2. с дисплея включаем периодическую помеху и видим, что значение выхода ПИД постепенно уменьшается, хотя положение реального клапана находится около 20%. Это из-за неравномерности люфтов при открытии и закрытии. И, наконец, примерно через 1,5 минуты после включения помехи значение выхода ПИД становится равным 0 и RegKZR начинает калибровку - непрерывное закрытие клапана, т.е. подаёт неоправданно длинный импульс закрытия. И начиная с этого момента каждые 1,5 минуты происходит "калибровка".
86395
Это, конечно, модель с гипертрофированными параметрами, но она очень жизненна. Я такое наблюдал, когда для регулятора разрежения собрал подобную схему (на ПЛК DirectLogic) - потом пришлось переделывать. Причём, на 4 соседних котлах с идентичным оборудованием на некоторых выход ПИД "полз" вверх, а на некоторых - вниз, т.е. никакой закономерности не было. А период составлял около 20 минут.
В этой модели не очень большая инерция (чтобы быстрее показать проблему), но у меня с разрежением инерция была значительнее и после "калибровки" клапан (направляющий аппарат) успевал перейти почти в крайнее положение, что иногда доходило и до отрыва пламени и до срабатывания защит по высокому давлению (уже не разрежению!) в топке.
Именно поэтому призываю старожилов никогда не рекомендовать эту связку "аналоговый ПИД" и RegKZR!
Макрос Pt1000 из базы (Менеджер компонентов) ругается на циклические связи. Что делать с ними / с этим? И почему нельзя в базе поменять, это же готовый макрос?
Макрос Pt1000 из базы (Менеджер компонентов) ругается на циклические связи. Что делать с ними / с этим? И почему нельзя в базе поменять, это же готовый макрос?
Забей, ни на что не влияет
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot