PDA

Просмотр полной версии : Макросы в онлайн базе OWEN Logic



Страницы : 1 2 3 [4]

petera
03.01.2023, 12:55
64993

Ну или чтобы совсем хорошо было

64994

ЗЫ.
По моему такой макрос был, только называется не регистр защелка, а типа память

Ну да так и есть
64996

Newcomer
03.01.2023, 13:06
По моему такой макрос был, только называется не регистр защелка, а типа память

Работает. Спасибо.

Newcomer
03.01.2023, 13:07
Ну да так и есть
64996

Это в какой версии OL есть такой макрос ? Нашел.

petera
03.01.2023, 13:24
Это в какой версии OL есть такой макрос ?...
От версии не зависит, т.к. с сервера взял http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/OnlineMacroes/Analog%20conversion/
64999

Newcomer
03.01.2023, 13:42
От версии не зависит, т.к. с сервера взял

А что это там так много наворочено, если на SEL все можно сделать ?

petera
03.01.2023, 14:41
А что это там так много наворочено, если на SEL все можно сделать ?

Наверно оператора SEL тогда еще не было

ахметыч
22.01.2023, 00:45
Приветствую, подскажите пожалуйста ОЛ достаточно давно существует но пид регулятора для управления кзр так и нет ? или я не могу найти ?
если у кого есть поделитесь пожалуйста.

Dimensy
22.01.2023, 11:06
Приветствую, подскажите пожалуйста ОЛ достаточно давно существует но пид регулятора для управления кзр так и нет ? или я не могу найти ?
если у кого есть поделитесь пожалуйста.

В разделе "Для вентиляции" макрос KZR_DO_Sel . Если полный обвес не нужен, то вытягиваете из него макрос RegKZR

ахметыч
22.01.2023, 22:24
В разделе "Для вентиляции" макрос KZR_DO_Sel . Если полный обвес не нужен, то вытягиваете из него макрос RegKZR

на реальном объекте реализовывали ? как работает? или все же мучатся и самому делать ?

Ruslanadm
24.01.2023, 00:06
Вот хорошая тема для подобного вопроса - https://owen.ru/forum/showthread.php?t=34012

А вот мой макрос по мотивам этой темы (идея Keldish)

65383

65384

Pwr, % - это выход стандартного PID-регулятора из библиотеки компонентов
Остальные входы и выходы, я думаю, понятны.

Макрос трудится на нескольких объектах, регулирует теплосети и ГВС

Dorus
12.03.2023, 18:56
Как кстати подключиться к ФТП серверу обычным клиентом типа Тотал Командер а не через вэб интерфейс

FPavel
15.03.2023, 19:15
Никак - это не 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
Сергей, спасибо большое за ответ и помощь.

CFC-ST
23.04.2023, 17:59
добрый день! подскажите -как работает макрос SelChgF 67487.
Не пойму, почему линии задержки в левой части сплошные?
Откуда берется сама переменная на выходе, если в середин она "теряется"?
отдельные элементы понятны, а вместе не понятно. Пробовал формулы написать, но опять же умножение на 0 - даёт ноль.
просьба пояснить

Сергей0308
23.04.2023, 18:59
добрый день! подскажите -как работает макрос SelChgF 67487.
Не пойму, почему линии задержки в левой части сплошные?
Откуда берется сама переменная на выходе, если в середин она "теряется"?
отдельные элементы понятны, а вместе не понятно. Пробовал формулы написать, но опять же умножение на 0 - даёт ноль.
просьба пояснить

Во-первых надо определится как правильно сравнивать значения переменных с плавающей запятой, эти значения приблизительной(не абсолютной) точности, в смысле, мне кажется будет правильным определять изменение переменных с неким допуском(дельтой), для душевного спокойствия, так сказать!
Короче, примерно как-то так:

67490

Dimensy
23.04.2023, 19:26
добрый день! подскажите -как работает макрос SelChgF 67487.
Не пойму, почему линии задержки в левой части сплошные?
Откуда берется сама переменная на выходе, если в середин она "теряется"?
отдельные элементы понятны, а вместе не понятно. Пробовал формулы написать, но опять же умножение на 0 - даёт ноль.
просьба пояснить

Этот макрос уже устарел. Сейчас можно проще сделать

67491

И в середине переменная не теряется - ведь есть обратная связь. А по поводу отображения линий задержки - это фичи Лоджика

CFC-ST
23.04.2023, 20:10
Этот макрос уже устарел. Сейчас можно проще сделать

67491

И в середине переменная не теряется - ведь есть обратная связь. А по поводу отображения линий задержки - это фичи Лоджика

спасибо. Как этот работает понятно. А есть он в базе или самому создать надо?

Dimensy
24.04.2023, 05:53
спасибо. Как этот работает понятно. А есть он в базе или самому создать надо?

самому делать надо

bayk
24.04.2023, 07:29
Добрый день. Подскажите, где можно достать макрос FLOAT-INT и INT-FLOAT. 66693

А зачем собственно? Или речь именно о чистом 16 битном int? Чем встроенные блоки не гожи?

7in
26.07.2023, 13:27
С этим макросом постоянно вопросы, он попал в базу как часть макросов от разработчиков макросов для СУНА, и там он использовался в каком-то хитром алгоритме, все что по нему есть в описании. Используйте 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

Либо интернет медленный ( долго загружается), либо в строке Поиска набита какая то фигня, типа ъъъъ ( Поиск, рядом с кнопкой Загрузить в библиотеку, растяните вправо средний столбец)

Pvalp
16.08.2023, 09:59
Здравствуйте!
Подскажите пожалуйста почему у меня в программе пустая онлайн база макросов?
69592

Такая же фигня.

melky
16.08.2023, 11:20
у меня все присутствует, открывается сразу. Ставите WireShark, и смотрите , только нужен точный адрес, ip и т.д. от Овен, чтобы проверить.
Либо в логах Firewall смотреть. Вроде больше блокировать некому.

cky2k
23.10.2023, 11:01
Здравствуйте, на сайте vent.owen.ru есть макрос "Recuper_1.00 (Управление рекуператором)" с описанием от ОВЕН. Подскажите, где его можно скачать?

capzap
23.10.2023, 11:12
Здравствуйте, на сайте 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

Dimensy
23.10.2023, 11:59
Хотел бы обсудить работы макроса PID_ так как на ПР205 Друва пида нет . Время дискретизации 100 МС регулятор с П и И частью работает прекрасно . Когда Ввожу Дчасть она работает не правильно как будто д Часть зависит от ошибки а не от задания и на него влияет тоже время дискретизации что и на И часть что не очень удобно .
Вот график где с сначала Д Часть 0 потом Д Часть 5 потом 10 я не считаю что Д часть правильно работает 71110

Все правильно, диф. часть зависит от ошибки и от времени дискретизации

Danila Kholkin
23.10.2023, 14:38
Все правильно, диф. часть зависит от ошибки и от времени дискретизации

Да неплохо бы было сделать 2 времени дискретизации для И и для Д а то график с иголками получается

FPavel
23.10.2023, 19:15
Чтобы работала Д составляющая нужно:
1. или сгладить измеренный сигнал (увеличить время фильтра) - но это "потянет" за собой проблемы замедления измерения
2. или увеличить время пересчёта ПИД регулятора - в свойствах этого конкретного макроса.

Идеала нет, чем-то придётся жертвовать.

Для другого контроллера при управлении котлом делал время пересчёта регуляторов:
- давление пара, уровень воды в котле - 10-15 с
- давление воздуха, разрежение в топке - 1-5 с

В том же случае время сглаживания было для разных параметров 1-5 с

cky2k
24.10.2023, 14:42
Спасибо за ответ. Удалось получить макрос. Я запросил макрос "Recuper_1.00 (Управление рекуператором)" в техподдержке support@owen.ru и специалист, поинтересовавшись для чего он мне нужен, прислал мне этот макрос.

Steadfast
25.10.2023, 07:14
Здравствуйте, помогите пожалуйста, прибор ипп 120 выполняет функцию на производственной мойке колёсных пар, прибор показывал время до конца мойки и температуру раствора, в данный момент всё работает но на экране ошибка памяти, обновление не помогло, я прочитал что нужно за нового загрузить проект, но у меня его нет и как сделать его я без понятия, может есть у вас уже готовый?

1exan
25.10.2023, 07:58
Здравствуйте, помогите пожалуйста, прибор ипп 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

Понял. Спасибо. Не очень интуитивно это. Все другие сбросы на других блоках работают не так. Но понятно. Вопрос решен.

NIK-85
31.10.2023, 15:34
Здравствуйте! Не подскажете где можно найти макрос ПИД регулятора, с дискретными выходами(открыть, закрыть)?

Dimensy
31.10.2023, 15:48
Здравствуйте! Не подскажете где можно найти макрос ПИД регулятора, с дискретными выходами(открыть, закрыть)?

Было много разных предложений, например
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

ilka.xd
15.02.2024, 15:06
Добрый день, если я всё правильно понял, то у ПИД-регулятора для ПР205 нет автоматической настройки. Может у кого-то есть макрос для реализации этой автонастройки?
Также я хочу из ПЛК периодически опрашивать внешний сервис по HTTP с GET и POST запросами. Может у кого-то есть макрос или пример как это реализовать?

melky
15.02.2024, 15:19
ilka.xd ПР и HTTP ? вам точно не в ПР, они такого не умеют.

ilka.xd
15.02.2024, 15:32
Я видел библиотеки для Codesys, в которых ПЛК обращаются к веб-серверу (если что он в локальной сети виден), подумал, может и тут такое есть.
А макроса для автонастройки в ПР205 у Вас, случайно, нет?)

melky
15.02.2024, 16:33
В ПР205 вроде нет встроенного PID, вроде только он был с автонастройкой. А на счет софтовых не в курсе.

askaev
22.02.2024, 10:03
Нет ли у кого фильтра аналогового сигнала? 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 (среднее арифметическое) не очень помогает.

Можно попробовать увеличить постоянную времени фильтра, есть такая настройка у аналогового входа ПР! Это не может не работать, в смысле, находят компромисс между быстродействием и степенью сглаживания!
Универсального способа не существует, в смысле важен и сам процесс!
Если уровень воды плавает в ёмкости вверх-вниз относительно реального значения это одно, если температуру не верно показывает(с запозданием) в результате неверного выбора датчика или неверного места установки датчика - это совсем другое!
В смысле, лучше не наводить тень на плетень и если чего накосячили, сразу поправить!
Короче, бывают случаи когда не касаясь процесса не получится нормально обработать сигнал, чтобы показывало то, что можно использовать дальше.

Mishqa
26.03.2024, 12:47
Вопрос,на пр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.

Mishqa
26.03.2024, 14:54
Понял,спасибо

halava
23.04.2024, 16:01
Здравствуйте подскажите применил макрос 2PosUPReg Сигнализатор вх/вых величины за границы из менеджера компонентов ,при работе макроса дребезжит реле на выходе ОВЕН ПР200 .

halava
23.04.2024, 16:07
Здравствуйте подскажите применил макрос 2PosUPReg Сигнализатор вх/вых величины за границы из менеджера компонентов ,при работе макроса дребезжит реле на выходе ОВЕН ПР200 .Да при подходе к границам дельты.

Dimensy
23.04.2024, 16:38
Здравствуйте подскажите применил макрос 2PosUPReg Сигнализатор вх/вых величины за границы из менеджера компонентов ,при работе макроса дребезжит реле на выходе ОВЕН ПР200 .Да при подходе к границам дельты.

Ну, если у вас значение плавает в районе границы, то и будет щелкать.
Можно попробовать увеличить постоянную времени аналогового входа. Или на выход поставить TON с задержкой, скажем 1 сек

halava
23.04.2024, 17:16
Извините за вопрос разобрался.

Traveller
03.06.2024, 11:32
Доброго времени суток!
В базе Owen Logic есть такой замечательный макрос "AVG", так то вроде все понятно его назначение, но непонятно как он работает в том смысле он будет усреднять по тому кол-ву значений которое определено на входе "N" при условии что на входе En стоит разрешение, затем он авто-сбросился и пошел усреднять заново или усреднение происходит непрерывно по последним значениям кол-во которых определяет значение на входе "N"

Traveller
03.06.2024, 11:34
deleted message

Dimensy
03.06.2024, 12:15
Доброго времени суток!
В базе Owen Logic есть такой замечательный макрос "AVG", так то вроде все понятно его назначение, но непонятно как он работает в том смысле он будет усреднять по тому кол-ву значений которое определено на входе "N" при условии что на входе En стоит разрешение, затем он авто-сбросился и пошел усреднять заново или усреднение происходит непрерывно по последним значениям кол-во которых определяет значение на входе "N"

Там же в описании все написано.
Макрос усредняет N входящих значений, потом фиксирует (защелкивает) полученный результат на выходе, сбрасывается и начинает считать заново

Сергей0308
03.06.2024, 12:38
Там же в описании все написано.
Макрос усредняет N входящих значений, потом фиксирует (защелкивает) полученный результат на выходе, сбрасывается и начинает считать заново

В смысле, находит среднее арифметическое за определённый период: суммирует значения с определённым периодом и делит на количество измерений, потом сумма сбрасывается и процесс повторяется или высчитывает среднее арифметическое скользящим окном: с определённым периодом значения пишутся в стек, значения всех разрядов стека суммируются и делятся на количество разрядов? Количеством разрядов стека умноженное на период записи определяют ширину скользящего окна в масштабе времени.

Dimensy
03.06.2024, 13:09
В смысле, находит среднее арифметическое за определённый период: суммирует значения с определённым периодом и делит на количество измерений, потом сумма сбрасывается и процесс повторяется или высчитывает среднее арифметическое скользящим окном: с определённым периодом значения пишутся в стек, значения всех разрядов стека суммируются и делятся на количество разрядов? Количеством разрядов стека умноженное на период записи определяют ширину скользящего окна в масштабе времени.

находит среднее арифметическое за определённый период: суммирует значения с определённым периодом и делит на количество измерений, конечный полученный результат фиксируется на выходе, потом сумма сбрасывается и процесс повторяется

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

Вы же пишите значения в стек с определённым периодом, например равным двум циклам программы, я могу и каждый цикл программы писать значения, короче это и будет периодом обновления!
В одной из тем "капзап" предлагал упрощённый алгоритм вычисления среднего значения скользящим окном, в смысле когда стек полностью заполнен, при каждом последующем такте записи в стек у нас к сумме стека прибавляется самое новое значение и отнимается самое старое, поэтому алгоритм можно упростить в разы, надеюсь понятно написал?

Получается, что стек и не нужен, в смысле, достаточно сумматора и ширину окна можно сделать практически любую без усложнения алгоритма!

Dimensy
03.06.2024, 16:00
Вы же пишите значения в стек с определённым периодом, например равным двум циклам программы, я могу и каждый цикл программы писать значения, короче это и будет периодом обновления!
В одной из тем "капзап" предлагал упрощённый алгоритм вычисления среднего значения скользящим окном, в смысле когда стек полностью заполнен, в каждом последующем такте записи в стек у нас к сумме стека прибавляется самое новое значение и отнимается самое старое, поэтому алгоритм можно упростить в разы, надеюсь понятно написал?

Получается, что стек и не нужен, в смысле, достаточно сумматора и ширину окна можно сделать практически любую без усложнения алгоритма!

А как без стека, нам ведь, по-любому, нужно помнить старые значения?

Сергей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

И, для увеличения ширины окна достаточно стек расширить до нужной глубины(разрядности).
Ну вот это уже предметный разговор, тока это ни фига не проще того что я нарисовал, а может даже и сложнее, все эти упаковки, распаковки и то что между, ну в общем зачет, но мне такого не нать... :)
Уж простите, это не оптимизация, это просто другой путь, на мой взгляд несколько более тернистый... :)

Ща пока не до этого, но у меня есть мысли как это дело действительно оптимизировать, т.е. свести к миниму кол-во дискретных элементов, как взгрустнеца может чё и придумаю, но не обещаю... :)
Ежели что сделаю, то выложу... :)

1exan
04.06.2024, 13:15
Ну вот это уже предметный разговор, тока это ни фига не проще того что я нарисовал, а может даже и сложнее, все эти упаковки, распаковки и то что между, ну в общем зачет, но мне такого не нать... :)
Уж простите, это не оптимизация, это просто другой путь, на мой взгляд несколько более тернистый... :)

Ща пока не до этого, но у меня есть мысли как это дело действительно оптимизировать, т.е. свести к миниму кол-во дискретных элементов, как взгрустнеца может чё и придумаю, но не обещаю... :)
Ежели что сделаю, то выложу... :)

Вариант на 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

PhK
15.08.2024, 16:33
Добрый день. На этом сайте 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
Так там практически готовый расходомер, в смысле зная вес импульса счётчика с импульсным выходом, можно легко пересчитать период следования импульсов в расход, более того, много раз уже подобное делали!

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

petera
10.10.2024, 10:08
Так ты для 24 года получил юникс время
А хотел для 2024
Прибавь 2000 к системной переменной с годом

ЗЫ.
https://owen.ru/forum/attachment.php?attachmentid=16915&d=1425224217
ТС убежал, пока отвечал

Gena72
10.10.2024, 10:11
Удалил. Я перенес сообщение в другую ветку (обсуждение макросов). Прибавление 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М.

FPavel
15.10.2024, 09:12
Настройка - измерение сопротивлений.

Но проблема в том, что погрешность измерений будет огромной и зависеть от температуры проводов (плавать и не поддаваться коррекции).
Предполагаю, что погрешность будет составлять 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
Все нормально
Не понял вас, что нормально? Что ФБ выдает неправильное значение? :)
Да и при чем здесь пузырьковая сортировка? В этом блоке ее нет. Выводиться должно максимальное значение и номер входа с максимальным значением.

EFrol
15.11.2024, 11:08
Блок определения максимального числа не работает? Или я что-то не понимаю?
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

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

novinky
10.12.2024, 09:21
Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.

EFrol
10.12.2024, 17:29
Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.

Не помню, чтобы пользовательские ФБ можно было вызывать из ST - только системные.
Хотя если переписать ФБ на ST, то - можно.

FPavel
10.12.2024, 18:41
Полиномы термопреобразователей описаны в ГОСТ - можно взять коэффициенты из него, добавить проверки на обрыв и короткое замыкание.

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

Dimensy
10.12.2024, 20:03
Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.

А нафига его вызывать где-то внутри функции? Это ведь преобразователь входной величины - их, обычно, снаружи располагают

FPavel
11.12.2024, 19:25
Подозреваю, что человек желает сделать универсальный обработчик аналогового входа - изменяется код датчика и программа через if/case выбирает полином.
По крайней мере подобное описано разработчиками Овен, но скачать невозможно
https://vent.owen.ru/makrosy/sensor


Покажите пожалуйста пример как вызвать макрос Pt100 в ST функции
Так же 50М.
Как-то не сразу осознал НСХ.

Для термопреобразователей сопротивления, включённых по 2-проводной схеме и схемотехники аналоговых входов ПР, гарантируется точность ±15℃. Если она устраивает - я уезжаю из страны в безопасную Сирию.

s.black
25.12.2024, 22:25
Всем привет! как пользоваться макросом Pt1000? Если в нем циклическая связь на выходе SEL_FLOAT 2 к t.

FPavel
25.12.2024, 23:04
Не обращать внимание - макрос проверен и работоспособен.

bayk
05.01.2025, 04:34
Всем привет! как пользоваться макросом Pt1000? Если в нем циклическая связь на выходе SEL_FLOAT 2 к t.
Можете его открыть и поправить, установив вместо циклической связи линию задержки. Насколько помню она там уже почти на выходе. И задержка передачи значения на выход в 1 цикл погоды не сделает, а вот желтизну уберет

valphar
09.01.2025, 14:14
Доброго времени суток всем, и с наступившим 2025 годом! Возможно дурацкий вопрос и я чего-то не нашел, но: где можно скачать сами макросы? я вижу только описание. Заранее благодарю.

1exan
09.01.2025, 14:16
Доброго времени суток всем, и с наступившим 2025 годом! Возможно дурацкий вопрос и я чего-то не нашел, но: где можно скачать сами макросы? я вижу только описание. Заранее благодарю.

Отмечаете нужные, нажимаете кнопку
81213

valphar
09.01.2025, 15:19
Спасибо! все оказалось намного проще, чем я думал ))

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
Заработал.Вопрос снят.

sepo
29.01.2025, 03:18
Вопрос, в онлайн базе есть отличные описания макросов, а вот в локальную базу они не попадают, это так и должно быть? Просто очень не удобно когда на выезде работаешь или нет интернета, а описание сильно упрощает работу.

kondor3000
29.01.2025, 08:38
Вопрос, в онлайн базе есть отличные описания макросов, а вот в локальную базу они не попадают, это так и должно быть? Просто очень не удобно когда на выезде работаешь или нет интернета, а описание сильно упрощает работу.

Вы наверное только начали работать с ПР, через год нафик описание не нужно будет. И проект надо на работе писать, а на выезде только настроить.
В биб-ке нет описания, только входы и выходы расписаны.

melky
29.01.2025, 09:00
человек видимо про pdf со справкой по макросу, чтобы они тоже загружались в локальную библиотеку.

FPavel
29.01.2025, 20:19
Да, меня тоже не радует ситуация, когда "компоненты" недоступны без интернета, а при наличии интернета происходит повторное чтение сведений, которые уже многократно считаны. Да ещё и привязка к Acrobat Reader - пришлось устанавливать, хотя 20 лет пользовался и сейчас продолжаю пользоваться другой программой.

Ладно, хватит о грустном...

Видел на форуме совет, которому следую:
- скачал все макросы и pdf-описания к ним с сервера или последовательно из "компонентов"
- нужный макрос в проект помещаю через меню Файл - импорт макроса из файла, как будто это мой разработанный макрос, которого нет на сервере.

sepo
30.01.2025, 16:08
Не совсем понял про работу ), у меня работа там где я. А вот интернет не всегда у нас в Якутии есть на месте. Писать приходится в разных местах под различные задачи. Жаль что такой возможности нет. Получается только вручную описания сохранять

sepo
30.01.2025, 16:09
Да, меня тоже не радует ситуация, когда "компоненты" недоступны без интернета, а при наличии интернета происходит повторное чтение сведений, которые уже многократно считаны. Да ещё и привязка к Acrobat Reader - пришлось устанавливать, хотя 20 лет пользовался и сейчас продолжаю пользоваться другой программой.

Ладно, хватит о грустном...

Видел на форуме совет, которому следую:
- скачал все макросы и pdf-описания к ним с сервера или последовательно из "компонентов"
- нужный макрос в проект помещаю через меню Файл - импорт макроса из файла, как будто это мой разработанный макрос, которого нет на сервере.

видимо так и буду делать, спасибо за ответ!

Евений
22.02.2025, 22:24
Скажите пожалуйста!!! почему перестала открываться онлайн база макросов?

zemliak
23.02.2025, 08:54
Скажите пожалуйста!!! почему перестала открываться онлайн база макросов?

Да, проблема остается. Какой прогноз, когда будет работать?

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
Принято! Огромное спасибо!

EVGEN_
06.06.2025, 17:37
84204
Вроде наклевывается работенка на ПР225, забегаю чуть наперед, так как модернизацию еще не утвердили, но хотелось бы разобраться в макросе ПИД-регулятора:
Ua_pwr_min - ставить 0?
Ua_pwr_max - ставить 100?
Ua_pwr_off - ставить 0?
Iv_pause - не совсем понятно для чего

Автонастройки нет?

FPavel
06.06.2025, 18:51
Если открыть этот макрос через 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), в общем это фиксация значения на выходе, если его не фиксировать, то оно будет постоянно меняться, в зависимости от влияющих факторов...

FPavel
06.06.2025, 19:24
что касается вашего вопроса, то я его тоже задавал (https://owen.ru/forum/showthread.php?t=26216&p=464690&viewfull=1#post464690), в общем это фиксация значения на выходе, если его не фиксировать, то оно будет постоянно меняться, в зависимости от влияющих факторов...
Нет, фиксация - побочный эффект.

Главное назначение этого входа - безударный переход при переключении режима РУЧН-АВТ.

Просто Вам ещё не доводилось подобное собирать ни на ПР ни на ПЛК.

Traveller
06.06.2025, 22:25
Нет, фиксация - побочный эффект.

Главное назначение этого входа - безударный переход при переключении режима РУЧН-АВТ.

Просто Вам ещё не доводилось подобное собирать ни на ПР ни на ПЛК.Ну конечно не доводилось, эта функция так сложна как Бином Ньютона :D
84206

EVGEN_
07.06.2025, 04:42
Автонастройки нет, но в большинстве случаев коэффициенты можно вычислить даже до начала программирования, а не то, что наладки.

Если не сложно, можете подсказать как? Ранее приходилось до подбирать коэффициенты после пусконаладки или после замены клапана, а так чтобы прям с нулевых значений не доводилось пока

EVGEN_
07.06.2025, 04:45
Нет, фиксация - побочный эффект.

Главное назначение этого входа - безударный переход при переключении режима РУЧН-АВТ
Можете хотя бы в кратце описать как это работает - безударный режим?

capzap
07.06.2025, 04:48
Если не сложно, можете подсказать как? Ранее приходилось до подбирать коэффициенты после пусконаладки или после замены клапана, а так чтобы прям с нулевых значений не доводилось пока

https://www.phind.com/search/cmblkpemy00003g6wawq44u5e как то так

FPavel
08.06.2025, 00:51
Можете хотя бы в кратце описать как это работает - безударный режим?
Выход поддерживается равным тому, что был только что в ручном режиме (за счёт записи в интегральную часть).
Уставка приравнивается к текущему значению параметра регулирования.
Эта уставка плавно изменяется к нужной по технологии уставке.

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

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

Артемий W
23.07.2025, 13:34
Добрый день!
Чем отличаются блоки GEN_PWM и PWMG ? На мой взгляд они выполняют одинаковые функции. Какой блок лучше адаптирован к постоянному изменению мощности с выхода ПИД, чтобы преобразовать сигнал 0-100 % в дискретный?

Dimensy
23.07.2025, 16:49
Добрый день!
Чем отличаются блоки 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

Alex87
05.09.2025, 08:56
Здравствуйте. Может быть есть у кого-то макрос округления целого числа к ближайшему большему. В стандартной онлайн-базе не нашел. Заранее спасибо

EFrol
05.09.2025, 09:44
Может дробного (с плавающей запятой) к ближайшему большему целому?



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

Alex87
05.09.2025, 13:12
Да, спасибо большое

bayk
07.09.2025, 01:38
Здравствуйте. Может быть есть у кого-то макрос округления целого числа к ближайшему большему. В стандартной онлайн-базе не нашел. Заранее спасибо
Просто прибавьте 0,5 перед тем как добавить xToInt.

Сергей0308
07.09.2025, 02:02
Так он целое округляет, целое и так круглое, короче, ему ничего не надо делать, мне так кажется!

Dimensy
07.09.2025, 02:24
Просто прибавьте 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

Dimensy
23.09.2025, 19:22
При работе блока 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

Отредактировал исходное сообщение.

SeraX
03.10.2025, 09:33
Вылезла ошибка "Функциональный блок 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 для преобразования в управляющие сигналы больше/меньше.

FPavel
03.10.2025, 18:26
Самый главный вопрос - почему не используете готовые приборы - КТР-121 или ТРМ1032?
Они позволяют управлять и насосами и клапанами.
Программировать не надо, особенно алгоритмами сомнительного происхождения и программистом неизвестной квалификации. Документация и техподдержка - имеются, даже через 10 лет.
Для заказчика - одно удовольствие.

Для ПР102 можете воспользоваться блоком PID и макросом RegKZR для преобразования в управляющие сигналы больше/меньше.
На мой взгляд, это неправильное решение, т.к. макрос RegKZR имеет неустранимый недостаток - если на его вход поступает 0 или 100, на выходе формируется непрерывный сигнал открытия или закрытия. А это означает, что когда расчётное положение клапана собьётся относительно реального - посреди нормальной работы произойдёт "необъяснимый" акт вандализма - регулятор полностью закроет или откроет клапан.

Возьмите отсюда
https://owen.ru/forum/showthread.php?t=25068&p=430251&viewfull=1#post430251
только из примера с эмулятором - там чуть улучшенная версия

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

Можете погонять тестовое приложение в эмуляторе - пообвыкнете к параметрам. Там я эмулировал давление воздуха перед горелкой - в диапазоне от 0 до 4 кПа.

SeraX
04.10.2025, 11:42
Самый главный вопрос - почему не используете готовые приборы - КТР-121 или ТРМ1032?

Я хочу сам написать программу, т.к. учусь этому. Готовые приборы для тех, кто не хочет думать))

Сергей0308
04.10.2025, 13:13
Самый главный вопрос - почему не используете готовые приборы - КТР-121 или ТРМ1032?

Я хочу сам написать программу, т.к. учусь этому. Готовые приборы для тех, кто не хочет думать))

Не было бы счастья, да несчастье помогло, тогда Вам счастье привалило, в смысле, Вы радоваться должны, напишите и ПИД-регулятор, он входит в состав программы(проекта)!

SeraX
04.10.2025, 18:19
он входит в состав программы [/QUOTE]

Можете скинуть этот ПИД, который есть в программе с автонастройкой для ПР102?

FPavel
04.10.2025, 18:56
Я не делал АНР для ПИД - не те вычислительные мощности у ПР, да и ПИД разработал когда язык 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

GooDz
26.10.2025, 07:32
Подскажите макрос для прибора ПР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 для клапанов

FPavel
26.10.2025, 14:25
Подскажите макрос для прибора ПР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 и показать, как ужасна эта связка.

FPavel
26.10.2025, 19:25
Моделирование работы связки "Аналоговый ПИД" и 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!

starmos
15.12.2025, 09:55
Макрос Pt1000 из базы (Менеджер компонентов) ругается на циклические связи. Что делать с ними / с этим? И почему нельзя в базе поменять, это же готовый макрос?

petera
15.12.2025, 10:13
Макрос Pt1000 из базы (Менеджер компонентов) ругается на циклические связи. Что делать с ними / с этим? И почему нельзя в базе поменять, это же готовый макрос?

Забей, ни на что не влияет