Вход

Просмотр полной версии : Настройка ПИД (PID) регулятора



Dimaes
14.03.2025, 00:37
Здравствуйте, коллеги!
В очередной раз хочу поднять вопрос правильной настройки ПИД регулятора. Может быть общими усилиями получится выработать алгоритм быстрой и правильной настройки регулятора.
Опишу суть вопроса.
Имеется ПИД регулятор из менеджера компонентов, работающий на контроллере ПР205. ПИД регулятор управляет частотным приводом вентилятора драйкуллера, охлаждающго технологическое оборудование.
В качестве заданной температуры принято значение +28 гр.С. Датчик температуры установлен сразу после теплообменника охладителя для уменьшения инерции системы.
Заданы значения Kp=2,0 Ti=4.0 Td=1.1 Пробовал разные значения в интервале от 0,1-10 в разных комбинациях.
При таких как указано параметрах, работа регулятора выглядит следующим образом.
Температура растет примерно со скоростью 0,1 град. в 5-7 сек. Как только температура достигает +28,3 град происходит повышение уровня выхода. Плавность зависит от заданных параметров (но сейчас это не важно).
Температура растет, уровень выхода тоже. Примерно при 30.1 град. уровень выхода достигает 17-20% При этом температура поднимается до 30.5 градусов, при этом мощность вентилятора достаточная, что бы начать понижать температуру и она начинает понижаться. При этом уровень выхода продолжает расти (при понижающейся температуре) и доходит до 25-27%. За счет увеличения мощности вентилятора температура начинает быстро падать, и как только она достигает 27.9 градусов уровень начинает снижаться. При этом инерция системы достаточно для того, что бы температура упала до 23-24 градусов.
Потом цикл повторяется. Т.е. система постоянно повторяет один и тот же алгоритм, без какого либо дифференциального корректирования.
Вопрос, что настроено не так, что не позволяет регулятору прогнозировать уровень своего выхода с учетом возможной скорости изменения температуры. Другими словами, при повышении температуры например с 26-до 28 заранее увеличивать уровень выхода и наоборот, если температура явно динамично повышается уменьшать уровень выхода. Насколько я понимаю за это отвечает Дифференциальная составляющая уравнения и нормальный ПИД регулятор это отрабатывает. В настоящий момент какое либо прогнозирование вообще не работает. Хочется добиться регулирования температуры в диапазоне 28+-0,5 градуса с некоторым уровнем выхода ркгулятора. Сейчас просто качели 0-25%
Как я уже говорил, я пробовал разные значения. И для Td тоже менял их от 0,1 до 10. Но нужного мне эффекта добиться не удалось.
Прошу помочь разобраться в данном вопросе. Спасибо.

cond33
14.03.2025, 01:18
Попробуйте увеличить Kp (до 5 - 10). Ti поставьте 30 - 300 секунд. Td настройте 0, пока не добьетесь стабильной работы (Td в таких системах может нестабильно работать). Если будет продолжать раскачиваться тогда уменьшайте Kp, а Ti оставьте > 100 c.

FPavel
14.03.2025, 07:01
Td плохо работает с зашумлённым сигналом, требуется сглаживание входного сигнала, чтобы отсутствовали "выбросы".

Раз система инерционная, то кроме Kp, Ti, Td можно настраивать параметр "время пересчёта выхода регулятора" - для ПИД из компонентов он находится среди свойств макроса и по умолчанию равен 1000 мс - увеличьте его до 5000 мс или даже до 10'000 мс (при этом немного поплывут настройки).

ПИД как алгоритм плохо работает с инерционными системами. Значение скорости вентилятора поддерживается за счёт интегральной составляющей, а пропорциональная лишь реагирует на отклонения.
Для инерционного процесса лучше выбирать большое значение Ти.
При пуске установки можете включать ПИД вентилятора не сразу, а после достижения температурой значения более 25 градусов - чтобы не было накапливания интегральной составляющей при пуске - при самом сильном рассогласовании.

EFrol
14.03.2025, 08:23
1. Ставлю Kp = 1. Остальное отключаю Ti=0, Td=0. Есть понимание того, что текущая температура должна зафиксироваться на уровне термодинамического равновесия (кол-во приходящего тепла сравняется с количеством уходящего), а это должно произойдет при определенном значении Y > 0. Т.к. Y = (Tуст-Tизм) / Kp, то температура должна зафиксироваться на уровне ниже Tуст. Так вот я сначала подбираю такую Kр, при которой температура растет и фиксируется на определенном значении без образования максимума (горба, вылета и т.д.). Вылет образуется когда теплообменник накопит много тепловой энергии (Y очень большое) и начинает сам греть (какое-то время, пока не остынет до уровня термо-равновесия).
2. Далее ставлю Ti = 300с и смотрю, как Y начинает медленно расти (накапливается интегральная и замещает собой пропорциональную Tуст-Tизм = 0), уменьшаю Ti пока не появится вылет Tизм > Tуст. После чего делаю Ti чуть больше.
3. Если температура теплоносителя прыгает, что конечно сказывается на выход, то добавляю Td = 1 и медленно увеличиваю, пока прыжки не станут влиять на выход. Т.е. уровень выхода тоже будет прыгать, но на Tизм будет только легкий шорох.

Этот процесс очень долгий и нудный. Но если его пройти до конца и записать полученные параметры, то дальше только легкая подстройка.

IVM
14.03.2025, 11:03
1. Ставлю Kp = 1. Остальное отключаю Ti=0, Td=0. Есть понимание того, что текущая температура должна зафиксироваться на уровне термодинамического равновесия (кол-во приходящего тепла сравняется с количеством уходящего), а это должно произойдет при определенном значении Y > 0. Т.к. Y = (Tуст-Tизм) / Kp, то температура должна зафиксироваться на уровне ниже Tуст. Так вот я сначала подбираю такую Kр, при которой температура растет и фиксируется на определенном значении без образования максимума (горба, вылета и т.д.). Вылет образуется когда теплообменник накопит много тепловой энергии (Y очень большое) и начинает сам греть (какое-то время, пока не остынет до уровня термо-равновесия).
2. Далее ставлю Ti = 300с и смотрю, как Y начинает медленно расти (накапливается интегральная и замещает собой пропорциональную Tуст-Tизм = 0), уменьшаю Ti пока не появится вылет Tизм > Tуст. После чего делаю Ti чуть больше.
3. Если температура теплоносителя прыгает, что конечно сказывается на выход, то добавляю Td = 1 и медленно увеличиваю, пока прыжки не станут влиять на выход. Т.е. уровень выхода тоже будет прыгать, но на Tизм будет только легкий шорох.

Этот процесс очень долгий и нудный. Но если его пройти до конца и записать полученные параметры, то дальше только легкая подстройка.

Ti=0 ? А ты формулу ПИД-регулятора посмотри где там Ti стоит, в числителе или знаменателе.

EFrol
14.03.2025, 11:25
Ti=0 ? А ты формулу ПИД-регулятора посмотри где там Ti стоит, в числителе или знаменателе.

Я пользуюсь только нормальными (включая макросы), которые обрабатывают все возможные значения.
82450

Валенок
14.03.2025, 11:41
Ti=0 ? А ты формулу ПИД-регулятора посмотри где там Ti стоит, в числителе или знаменателе.
Ti может быть только в знаменателе т.к. если он - время, т.к. сам интеграл безразмерный и копится он со временем в размерности (*dt). Вот Ti и снимает время с размерности интеграла делением.

Валенок
14.03.2025, 11:53
Dimaes
Вы дали много инфы про амплитуды, но совершенно не дали инфы про периоды

Сейчас просто качели 0-25%
А период-то (между 25% и 25%) какой?




Температура растет примерно со скоростью 0,1 град. в 5-7 сек.
выцепляя такие крошки, то я согласен с

Ti поставьте 30 - 300 секунд.
причем в сторону 300 и больше

EFrol
14.03.2025, 11:53
Ti может быть только в знаменателе т.к. если он - время, т.к. сам интеграл безразмерный и копится он со временем в размерности (*dt). Вот Ti и снимает время с размерности интеграла делением.

Подозреваю, что было желание поймать на недопустимости значения 0, т.к. произойдет "деление на 0".

Валенок
14.03.2025, 12:04
Подозреваю, что было желание поймать на недопустимости значения 0, т.к. произойдет "деление на 0".
Ну так просто Большой взрыв. Может Dimaes так и сделал. На связь то - не выходит))

Dimaes
14.03.2025, 14:05
Добрый день!
весь цикл от тачала роста температуры до окончания падения температуры занимает примерно 3-4 мин.

Dimensy
14.03.2025, 14:07
Ну так просто Большой взрыв. Может Dimaes так и сделал. На связь то - не выходит))

Взрыва не будет - ПИД из менеджера компонентов обрабатывает нулевое значение интегрального коэффициента

Dimaes
14.03.2025, 14:12
Td плохо работает с зашумлённым сигналом, требуется сглаживание входного сигнала, чтобы отсутствовали "выбросы".

Раз система инерционная, то кроме Kp, Ti, Td можно настраивать параметр "время пересчёта выхода регулятора" - для ПИД из компонентов он находится среди свойств макроса и по умолчанию равен 1000 мс - увеличьте его до 5000 мс или даже до 10'000 мс (при этом немного поплывут настройки).

ПИД как алгоритм плохо работает с инерционными системами. Значение скорости вентилятора поддерживается за счёт интегральной составляющей, а пропорциональная лишь реагирует на отклонения.
Для инерционного процесса лучше выбирать большое значение Ти.
При пуске установки можете включать ПИД вентилятора не сразу, а после достижения температурой значения более 25 градусов - чтобы не было накапливания интегральной составляющей при пуске - при самом сильном рассогласовании.

Из вашего ответа я нашел однин очень важный момент на который я не обратил внимание. По поводу шума. Дело в том, что темратура прыгает в пределах +/- 0.1-0.2 градуса. Хотя на входе стоит фильтр на 1 сек. Возможно в этомкроется не корректная работа регулятора. Попробую для начала разобраться с этой проблемой.

IVM
14.03.2025, 14:50
Я пользуюсь только нормальными (включая макросы), которые обрабатывают все возможные значения.
82450

Это на что документ ?

Валенок
14.03.2025, 16:38
весь цикл от тачала роста температуры до окончания падения температуры занимает примерно 3-4 мин.
напрашивается на Ti от 500 и выше для начала. Td не нужен вообще (0)
Все об этом и говорят

Для инерционного процесса лучше выбирать большое значение Ти..



Дело в том, что темратура прыгает в пределах +/- 0.1-0.2

Td плохо работает с зашумлённым сигналом, требуется сглаживание входного сигнала.
Да и не только Td но и просто всё так себе.



Раз система инерционная, то кроме Kp, Ti, Td можно настраивать параметр "время пересчёта выхода регулятора" - для ПИД из компонентов он находится среди свойств макроса и по умолчанию равен 1000 мс - увеличьте его до 5000 мс или даже до 10'000 мс (при этом немного поплывут настройки).
.
А во тут лично я тут не совсем согласен. Если шум сигнала, то редкое выхватывание того же шума - та же амплитуда шума, только период больше.
Для сглаживания лучше взять/сделать (например) скользящее среднее на 10..20 измер/сек
Несложно же. ST-макрос, делов-то


А откуда сама температура - Ai самого ПР ?

Валенок
14.03.2025, 16:48
Это на что документ ?
Да наверно все равно. Имеется в виду, что если Ti в сек и допускается вводить 0, то это спец.значение вне математики - отключающее i-часть, довольно частое решение.

FPavel
14.03.2025, 19:42
Да и не только Td но и просто всё так себе.

А во тут лично я тут не совсем согласен. Если шум сигнала, то редкое выхватывание того же шума - та же амплитуда шума, только период больше.
Для сглаживания лучше взять/сделать (например) скользящее среднее на 10..20 измер/сек
Несложно же. ST-макрос, делов-то
Увеличение периода пересчёта позволяет получить изменение сигнала, которое превосходит шум, т.е. дождаться проявления тенденции после предыдущего управляющего воздействия.

Управляя уровнем воды в паровом котле делал период пересчёта 10-15 секунд.


-------------
По настройкам, как я их вижу.

Для поддержания температуры 28 и отклонения 3-5, которое должно вызвать 0% или 100% мощность вентилятора - получаю

- Кп=1/(6*[3...5])=1/[18...30]=0.03...0.05, а с учётом того, что Кп выражается в %, то Кп=3...5.

- Ти с такой инерцией лучше взять 90-200 с. Но Ти имеет размерность не [c], а [градус/с], и приведение Ти к градусам требует умножения на Кп, т.е. то, что будет подаваться на вход макроса будет [90...200]/[3...5]=[18...70].

Т.е. начало наладки с Кп=3...5, Ти=20...70, а Тд - как повезёт.

Dimaes
14.03.2025, 20:46
Да, температура берется с датчика Pt1000 подключенного ко входу AI контроллера. В данном случае думал увеличить постоянную времени фильтра с 1 до 2 секунд. Не поможет?
Макрос AVG можно использовать для этих целей?

Dimaes
14.03.2025, 21:07
Увеличение периода пересчёта позволяет получить изменение сигнала, которое превосходит шум, т.е. дождаться проявления тенденции после предыдущего управляющего воздействия.

Управляя уровнем воды в паровом котле делал период пересчёта 10-15 секунд.


-------------
По настройкам, как я их вижу.

Для поддержания температуры 28 и отклонения 3-5, которое должно вызвать 0% или 100% мощность вентилятора - получаю

- Кп=1/(6*[3...5])=1/[18...30]=0.03...0.05, а с учётом того, что Кп выражается в %, то Кп=3...5.

- Ти с такой инерцией лучше взять 90-200 с. Но Ти имеет размерность не [c], а [градус/с], и приведение Ти к градусам требует умножения на Кп, т.е. то, что будет подаваться на вход макроса будет [90...200]/[3...5]=[18...70].

Т.е. начало наладки с Кп=3...5, Ти=20...70, а Тд - как повезёт.

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

FPavel
14.03.2025, 21:38
Рост температуры обусловлен какой-то теплогенерацией, которую нужно компенсировать охлаждением при помощи вентилятора.
Значит есть некоторая частота вращения вентилятора, которая приведёт к уравновешиванию этих процессов.

Попробуйте с нулевой Ти - и в теории и на практике увидите эффект статической ошибки П-регулятора. Это просто так - из любви к экспериментам, хочется иногда проверить на практике некоторые тезисы из ТАУ.

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

IVM
14.03.2025, 22:39
Автор темы не первый кто за последнее время не может получить приемлемое качество регулирования из-за неверно установленного Ti. Надо задать Kp = 10, Ti = 700, Td = 0 и процесс войдёт в норму.

IVM
14.03.2025, 22:49
Ti может быть только в знаменателе т.к. если он - время, т.к. сам интеграл безразмерный и копится он со временем в размерности (*dt). Вот Ti и снимает время с размерности интеграла делением.

Иногда Ti стоит в формуле PID в числителе. В этом случае не надо думать что будет при Ti = 0. Размерность Ti в этом случае будет сек. в степени -1.

Валенок
15.03.2025, 00:13
Иногда Ti стоит в формуле PID в числителе. В этом случае не надо думать что будет при Ti = 0. Размерность Ti в этом случае будет сек. в степени -1.
Как то общепринято это называть Ki. Но кто-то в своих доках может называть хоть своим именем, лишь бы указал размерность.Она снимает все вопросы

FPavel
15.03.2025, 07:38
Иногда Ti стоит в формуле PID в числителе. В этом случае не надо думать что будет при Ti = 0. Размерность Ti в этом случае будет сек. в степени -1.
В самом первом сообщении темы автор однозначно назвал конкретный макрос (ФБ) из состава "компонентов" с конкретным набором свойств, которые нет нужды предполагать.
Для макроса PID_ в описании присутствует только ремарка допустимого диапазона входа ua_Ti - предполагается "≥ 0". Нет никаких указаний, что будет при ua_Ti=0, но из исходника видно как для деления выполняются замена знаменателя на 1,0 и обнуление всего слагаемого для дальнейших вычислений.
Т.е. обрабатывается ситуация с нулевым значением этого коэффициента.
Надеюсь, что в данной конкретной теме на этом будет закрыт вопрос о поведении ФБ в такой ситуации - ошибок в работе не будет.

По поводу названия и физического смысла параметра ua_Ti.
Даже сейчас то, что подаётся на вход ua_Ti макроса PID_ является не временем интегрирования, а коэффициентом интегрирования, т.к. слагаемое является частным от деления невязки на этот коэффициент, т.е. коэффициент имеет размерность не времени [с], а [с*[единицы измерения]].
На практике это означает, что для одного объекта регулирования при замене единиц измерения с [МПа] на [бар] (по просьбе заказчика для удобства оператора) придётся пересчитывать ВСЕ параметры ПИД.
Т.е. ua_Ti - интегральный коэффициент независимо от расположения в числителе или знаменателе дроби этого слагаемого.

FPavel
15.03.2025, 08:19
тупо в экселе с простейшим фильтром
У меня нет Exel - он денег стоит. Пользуюсь LibOo, а он хоть и открыл файл, но вычисления по формулам не распознал.
Может, позже установлю бесплатный просмотровщик от MS для Exel...

Ниже - сугубо личные измышления.

Исходя из собственного опыта принял, что ПИД регулятор настраивается 5 основными параметрами - Кп, Ти, Тд, период пересчёта, фильтр переменной процесса - и именно их и настраиваю обязательно. Остальные параметры ПИД - лишь чуть улучшают качество, не более.

Реально проверял работоспособность Тд на инерционных процессах - уровень воды и давление пара в барабане котла (ДЕ и ДКВР) - на одноимпульсных регуляторах (без привлечения расходов воды и пара).
Несмотря на довольно сильное сглаживание фильтром 1-го порядка, на коротких промежутках времени пересчёта (до 10 с) слагаемое с дифференциальной составляющей было не адекватно ситуации, т.к. шумы превосходили тенденцию от предыдущего управляющего воздействия. Только увеличение времени пересчёта до 12-15 с позволило использовать Тд.


Имеется ПИД регулятор из менеджера компонентов, работающий на контроллере ПР205. ПИД регулятор управляет частотным приводом вентилятора драйкуллера, охлаждающго технологическое оборудование.
В качестве заданной температуры принято значение +28 гр.С. Датчик температуры установлен сразу после теплообменника охладителя для уменьшения инерции системы.
Заданы значения Kp=2,0 Ti=4.0 Td=1.1 Пробовал разные значения в интервале от 0,1-10 в разных комбинациях.
При таких как указано параметрах, работа регулятора выглядит следующим образом.
Температура растет примерно со скоростью 0,1 град. в 5-7 сек. Как только температура достигает +28,3 град происходит повышение уровня выхода. Плавность зависит от заданных параметров (но сейчас это не важно).
.........

Из вашего ответа я нашел однин очень важный момент на который я не обратил внимание. По поводу шума. Дело в том, что темратура прыгает в пределах +/- 0.1-0.2 градуса. Хотя на входе стоит фильтр на 1 сек. Возможно в этомкроется не корректная работа регулятора. Попробую для начала разобраться с этой проблемой.

Да, температура берется с датчика Pt1000 подключенного ко входу AI контроллера. В данном случае думал увеличить постоянную времени фильтра с 1 до 2 секунд. Не поможет?
Макрос AVG можно использовать для этих целей?
Считаю, что применительно к ситуации из первого сообщения данной темы (и последующими уточнениями автора), когда с ПР используется Pt1000 по 2-проводной схеме подключения, шумы будут превышать значения 0,1-0,2 градуса. Значит для использования Тд нужно выполнять пересчёт ПИД регулятора когда за это время под воздействием управления температура изменится на такую же или большую величину.

Отсюда и мой совет - увеличить время пересчёта ПИД и оценка возможного диапазона значений.

Можно с ним не соглашаться - настаивать не буду, мне безразлично.

Валенок
15.03.2025, 12:00
По поводу названия и физического смысла параметра ua_Ti....
Т.е. ua_Ti - интегральный коэффициент независимо от расположения в числителе или знаменателе дроби этого слагаемого.
Со всем сказанным согласен.
Хотел бы только уточнить, что ввиду того, что само интегрирование ведется (здесь) - по времени, это значит, что упомянутый коэффициент всегда имеет в своей размерности составную времени. На что как бы намекает сама буква T.
А т.к. результирующая (после умножения на этот коффициент) И-часть ПИД'а не имеет составной времени в своей собственной размерности, то размерность коэффициента обязана содержать составную времени, расположение которой будет прямо означать что математически делает это коэффициент с самим интегралом:
если "что-то * c", то делить интеграл
если "что-то / с" или "что-то * с^-1" (что то же самое) то умножать интеграл
А это, в свою очередь, дает информацию об ожидаемом поведении самого ПИДа при изменения значения данного коэффициента

Валенок
15.03.2025, 12:07
Отсюда и мой совет - увеличить время пересчёта ПИД и оценка возможного диапазона значений.

Можно с ним не соглашаться - настаивать не буду, мне безразлично.
Мне всё не менее безразлично))
Я не говорил что сказанное Вами не улучшит общую часть. УЛУЧШИТ.
Уточню - я имел ввиду (и привел простой пример на рандомах), что при одинаковых временных условиях, фильтрация (сглаживание) самого входа даст больше пользы при условии что хотелка точности TC'ом сравнима с шумом (по его данным)

IVM
15.03.2025, 12:38
Со всем сказанным согласен.
Хотел бы только уточнить, что ввиду того, что само интегрирование ведется (здесь) - по времени, это значит, что упомянутый коэффициент всегда имеет в своей размерности составную времени. На что как бы намекает сама буква T.
А т.к. результирующая (после умножения на этот коффициент) И-часть ПИД'а не имеет составной времени в своей собственной размерности, то размерность коэффициента обязана содержать составную времени, расположение которой будет прямо означать что математически делает это коэффициент с самим интегралом:
если "что-то * c", то делить интеграл
если "что-то / с" или "что-то * с^-1" (что то же самое) то умножать интеграл
А это, в свою очередь, дает информацию об ожидаемом поведении самого ПИДа при изменения значения данного коэффициента

Размерность коэффициента при вычислении интегральной составляющей не имеет никакого значения (в голове ее можно держать). Главное знать где стоит Ti (Ki) в числителе или знаменателе и правильно задать его значение.

Валенок
15.03.2025, 13:23
Размерность коэффициента при вычислении интегральной составляющей не имеет никакого значения (в голове ее можно держать).
Можете держать. Если интеграл по времени - время в размерности есть.


Главное знать где стоит Ti (Ki) в числителе или знаменателе и правильно задать его значение.
Это и показывает место времени в размерности коэффициента. Знать - необязательно.

Dimaes
17.03.2025, 00:38
Здравствуйте, коллеги!
Хотел предоставить отчет о проделанной работе.
1. Поставил в настройках входа аналогового фильтра "постоянную времени фильтра" для тех входов у которых показания не прыгали -2 с, у входа по которому мы анализируем температуру - 8 с. Но все равно температура периодически с интервалом 20-40 сек прыгает. на 0,1-0,3 град. Если переменную убрать прыжки конечно значительно больше. Думаю это связано с длиной кабеля на котором висит датчик (около 28 м). Прошу коллег, кто сможет порекомендовать какой нибудь фильтр (усреднитель) для решения этой проблемы. Думаю в него надо включить возможность отбрасывать показания которые значительно превышаю текущие например более чем на 30%. У меня два датчика 1Wire подключены через через устройство через RS-485 и иногда там приходят значения которые значительно отличаются от текущих. Например при температуре 20 градусов появляется температура 2040 градусов. Думаю при усреднении будет совсем не правильные показания если брать ее в расчет. Может кто нибудь сможет помочь в написании (ссылке) данного макроса. Думаю многие смогут его использовать и будут очень благодарны.
2. Отправил показания параметров в OwenCloud для удобство предоставления и анализа. Получился вот такой график (см. изображение). Ti по рекомендации IVM больше 500 задать не получилось (у меня стоит ограничение в максимальных значениях переменной при редактировании, не думал, что потребуется больше 500, а менять не хотелось), но результат вы можете посмотреть визуально. Понятно, что при визуальном контроле будет легко добиться подбора параметров которые стабилизирует систему, но хочется понять все же алгоритм действий при настройке. Поскольку настройка занимает просто огромное количество времени, которое не всегда есть и даже при его наличии, тратить его не хочется.

Спасибо всем за участие в обсуждении темы и помощь! Еще раз повторю, на мой взгляд тема очень актуальна, по крайне мере для таких вот "продвинутых" пользователь вроде меня.
82499 82501

kondor3000
17.03.2025, 07:53
В каком типе переменных вы получаете значения?
2040, это похоже на целочисленное с 2 знаками после запятой, то есть 20,40 градуса

Dimaes
17.03.2025, 09:58
В каком типе переменных вы получаете значения?
2040, это похоже на целочисленное с 2 знаками после запятой, то есть 20,40 градуса

Нет, дело не в этом. Для полноты картины опишу принятую конфигурацию. Дополнительных датчика 1wire подключены через Преобразователь для цифровых термометров WB-M1W2 v.3 ко второму порту RS-485. Данные с преобразователя приходят в формате s16 я их с помощью макроса преобразую в вещественные данные умножаю на x0.0625, °C. Получаю температуру. По ней вопросов нет. Второй датчик показывает стабильную температуру и все нормально. Думаю проблема в самом датчике. Заменю, узнаем. На всякий случай привожу скринщот.
Я поднял этот вопрос с убиранием явно неправильных значений для того, что бы при создании макроса можно было эти глюки сразу отсеять на стадии фильтрации.
82502

IVM
17.03.2025, 10:28
Здравствуйте, коллеги!
Хотел предоставить отчет о проделанной работе.
1. Поставил в настройках входа аналогового фильтра "постоянную времени фильтра" для тех входов у которых показания не прыгали -2 с, у входа по которому мы анализируем температуру - 8 с. Но все равно температура периодически с интервалом 20-40 сек прыгает. на 0,1-0,3 град. Если переменную убрать прыжки конечно значительно больше. Думаю это связано с длиной кабеля на котором висит датчик (около 28 м). Прошу коллег, кто сможет порекомендовать какой нибудь фильтр (усреднитель) для решения этой проблемы. Думаю в него надо включить возможность отбрасывать показания которые значительно превышаю текущие например более чем на 30%. У меня два датчика 1Wire подключены через через устройство через RS-485 и иногда там приходят значения которые значительно отличаются от текущих. Например при температуре 20 градусов появляется температура 2040 градусов. Думаю при усреднении будет совсем не правильные показания если брать ее в расчет. Может кто нибудь сможет помочь в написании (ссылке) данного макроса. Думаю многие смогут его использовать и будут очень благодарны.
2. Отправил показания параметров в OwenCloud для удобство предоставления и анализа. Получился вот такой график (см. изображение). Ti по рекомендации IVM больше 500 задать не получилось (у меня стоит ограничение в максимальных значениях переменной при редактировании, не думал, что потребуется больше 500, а менять не хотелось), но результат вы можете посмотреть визуально. Понятно, что при визуальном контроле будет легко добиться подбора параметров которые стабилизирует систему, но хочется понять все же алгоритм действий при настройке. Поскольку настройка занимает просто огромное количество времени, которое не всегда есть и даже при его наличии, тратить его не хочется.

Спасибо всем за участие в обсуждении темы и помощь! Еще раз повторю, на мой взгляд тема очень актуальна, по крайне мере для таких вот "продвинутых" пользователь вроде меня.
82499 82501

Уставка температуры какая ?

Dimaes
17.03.2025, 11:50
Уставка температуры какая ?

Уставка температуры 30 грС

IVM
17.03.2025, 13:39
Уставка температуры 30 грС

Стоило задать адекватное значение Ti и все нормализовалось.

IVM
17.03.2025, 14:01
Уставка температуры 30 грС

Там 2 графика.

Dimaes
17.03.2025, 14:51
Нет, одним лишь значением Ti отделаться не удалось, просто уменьшилась амплитуда колебаний. Только после задания Td=5 произошло более менее стабильное управление.

Dimaes
17.03.2025, 14:55
Там 2 графика.

Это один и тот же график, просто первый был сделан вчера, а второй сегодня, с продолжением, показывающем, что температура колеблется в пределах 0,8 град. Не заню удастся ли добиться более точной стабилизации. Но в целом такой уровень приемлемый.

Валенок
17.03.2025, 15:11
Для полноты картины опишу принятую конфигурацию.. WB-M1W2 v.3...
самое время



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

Валенок
17.03.2025, 15:18
А если кроме лихорадочного умножения на 0.0625 еще и обратить внимание на буковы "Error", и посмотреть на результат перемножения 7FFF на 0.0625, то увидится очень интересный результат. Ну совсем не

Например при температуре 20 градусов появляется температура 2040 градусов.

Dimaes
17.03.2025, 15:33
самое время



может вот?

В том то и дело, что не работает фильтр. По умолчанию Коэффициент 16, значит такие значения (2040) должны отбрасываться. Но нет. может это конечно связано с чем то другим. Вопрос в том, что бы такие значения отбрасывались на нашем фильтре.

Dimaes
17.03.2025, 15:42
Ну да загадка высокой температуры раскрыта.
82510

Сергей0308
18.03.2025, 08:24
Ну да загадка высокой температуры раскрыта.
82510

В смысле, вскрытие показало, что смерть наступила в результате вскрытия?

Сергей0308
18.03.2025, 09:06
В том то и дело, что не работает фильтр. По умолчанию Коэффициент 16, значит такие значения (2040) должны отбрасываться. Но нет. может это конечно связано с чем то другим. Вопрос в том, что бы такие значения отбрасывались на нашем фильтре.

Может ограничить диапазон температур, разумными пределами, диапазоном датчика, или рабочим диапазоном температур, в любом случае, эта проблема исчезнет навсегда.

FPavel
18.03.2025, 18:50
Тут более комплексная проблема - недостоверность показаний датчика.

Думаю, что определить появление кодового числа 32566 (или какое-там) можно до преобразования (умножения на коэффициент). Это будет один из признаков недостоверности.
Следующий признак - отсутствие связи ПР с коммутатором датчиков 1-Wire (мне показалось, что датчики температуры подключены к коммутатору, а данные из него и поступают в ПР).
И ещё один признак - слово состояния коммутатора, в котором отслеживается обрыв связи коммутатора с датчиком.

Итак, теперь имеется обобщённый признак недостоверности измерений.
Можно попробовать сделать подмену измеренного недостоверного значения на последнее достоверное при помощи fSEL и "обратной связи".

Далее, поставить фильтр с ограничением изменений. Если приращение измерения превышает заданное, то измерение отбрасывается и остаётся предыдущим. Если отклонение 3 раза подряд - принимаем это измерение правильным. Устройство фильтра можно почитать в описании регуляторов Овен - хорошо описан.
Например, у ТРМ12 https://docs.owen.ru/product/trm12/910/98358#topic-98362

Если недостоверное измерение длится более заданного времени 3-5 секунд - формируем ошибку и останавливаем работу установки с сигнализацией.