Вход

Просмотр полной версии : Применение ФБ PID (Util.lib) - при Ти=0 в "ручном" режиме не меняется выход



FPavel
09.06.2022, 22:17
Здравствуйте, уважаемые специалисты.

При отладке кода для ПЛК110-32[M02] столкнулся со странным поведением ФБ PID из Util.lib.

По логике программы в режиме ожидания пуска оборудования управление ПЧВ следующее:
- ФБ PID: вход bManual=true
- при положении переключателя Р-О-А в "А", сигнал "Пуск ПЧВ"=false, вход YManual=0, ПЧВ выключен
- при положении переключателя Р-О-А в "Р", сигнал "Пуск ПЧВ"=true, вход YManual изменяется от кнопок со щита, таким образом проверяется работа ПЧВ

Т.к. программа на этапе создания, то параметры Кп, Ти, Тд - вводимые с панели оператора - временно остаются нулевыми.

По идее, в ручном режиме при bManual=true значение YManual должно передаваться на выход ФБ PID без изменений. Но, заметил, что при Ти=0, значение выхода не изменяется, сохраняя последнее значение, которое было при Ти<>0.

Если это так и задумано разработчиками CoDeSys - почему об этом ничего в документации нет?
https://help.codesys.com/webapp/o2pf-m4Nz7ZPrBsrPW-xdt6Wid4%2FPID;product=Util;version=3.5.17.0

Чтобы не быть голословным - сегодня ещё раз перепроверил:
1. При Ти=100 со щита изменил входное значение YManual=9,0 при этом изменился и выход Y=9,0
2. Изменил значение Ти=0
3. Изменил значение YManual=16,8 при этом выход остался Y=9,0
61139

Данные ПЛК

PLCInfo
PLC model MODEL PLC 110-32
Версия ПО метр: 2.0
Binary VERSION 1.2.42
Need Target version >= 3.12
Compiled: 14:36:54 Feb 8 2021
STM32 binary version 115
MAC E4:1E:0A:01:F8:D9
IP 10.0.6.10
GATE 10.0.6.1
MASK 255.255.255.0
targets_v3.3_for_plc1xx_m02 файлы скачал в апреле, firmware не обновлял (предлагалась та же версия v.1.2.42_plc110_m02).

IVM
10.06.2022, 10:35
Ты формулу ПИД посмотри. Tи (Tn) не может быть равным 0.

FPavel
10.06.2022, 11:11
Так и режим работы MANUAL=true, т.е. не вычисления, а трансляция входа Y_MANUAL на выход Y.

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

В документации не отражено такое поведение, нет указаний на Ти>0. Что остановит киповца при донастройке уменьшить до 0 этот параметр? Сейчас в программе приму меры по ограничению диапазона. Но сколько можно узнавать экспериментально?!

IVM
10.06.2022, 11:16
Деление на 0 невозможно. Из-за этого проблема. Если необходимо нивелировать интегральную составляющую, то надо сделать Ти максимально большой.

IVM
10.06.2022, 11:23
При правильной настройке ПИД работает как положено.

IVM
10.06.2022, 11:30
А при не правильной настройке ПИД не работает как положено. ;)

petera
10.06.2022, 11:36
Так и режим работы MANUAL=true, т.е. не вычисления, а трансляция входа Y_MANUAL на выход Y.

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

В документации не отражено такое поведение, нет указаний на Ти>0. Что остановит киповца при донастройке уменьшить до 0 этот параметр? Сейчас в программе приму меры по ограничению диапазона. Но сколько можно узнавать экспериментально?!

Выбрось "защиту от дурака" и будет так, как ты хочешь
61158

По тому, как при Ти=0 или Кп=0, дальше первой строки код не выполняется. И плевать, что MANUAL=true

FPavel
10.06.2022, 12:32
Спасибо, за советы.

Как-то не сообразил открывать lib-файл, всё было бы проще. Хотя и пометка в документации была бы нелишней.

Спасибо.

Именно с Овен ПЛК опыта недостаёт и на ощупь перемещаюсь. Основные проблемы - по внутренним элементам ПЛК (связь с модулями, библиотечные блоки).
Жаль времени уже мало - переделал бы свой ПИД для КЗР на основе ФБ PID.

IVM
10.06.2022, 14:26
Как-то не сообразил открывать lib-файл, всё было бы проще. Хотя и пометка в документации была бы нелишней.

Лазить в lib-файл и забивать себе голову вообще не надо. Там все верно сделано. Достаточно было посмотреть на формулу ПИД и понять что TN не может быть равен 0.