Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Carel C.suite. Ошибка в библиотеке
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
DimanVIP
Здравствуйте.

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

Carel c.strategy (Build 4.0.36)
Библиотека: PID_Adv_2 [1.0.0]

При настройке как на скриншоте "bug.png" регулятор ПИД уходит в бесконечный цикл.
Описание: После достижения максимального значения на выходе "Output", равного 100%, регулятор сбрасывается на минимальное значение, и цикл регулирования начинается снова с минимального значения. Это явно ошибка.

Исправление: Глубокого изучения исходного кода модуля я не проводил, но ошибку удалось исправить заменив оператор "<" на оператор "<>" в строке 117.
(на скриншоте "Fix.png" показано сравнение исходного и исправленного кода).
На скриншоте "Fix_result.png" показан результат исправления. Как видно, оригинальный регулятор сбрасывается, и начинает регулирования с начала, в то время как исправленный продолжает оставаться на максимальном значении.

Во вложении, кроме скриншотов, проект с ошибочным и исправленным регулятором.
svintus

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

А вот прямое указание на корректное использование. Так что расслабьтесь, никто ничего фиксить не будет, это вам не немцы какие-нибудь.

Нажмите для просмотра прикрепленного файла
DimanVIP
Видимо я этот документ по-диагонали пролистал, что глаз за этот момент даже не зацепился.

Но могли бы тогда хоть проверку входного значения сделать.

P.S.: Эххх, а я то надеялся что "огороды с переворачивалками" остались в прошлом вместе с 1тулом.
svintus
1. Carel нацелен исключительно на общение с OEM-производителем, что, по его мнению, предполагает наличие профессиональных программистов в штате. Не в обиду, по поводу проверки значения. Я любитель, просто очень внимательно читаю доки.

2. Из общения с Израилем, там предпочитают 1Tool до сих пор почему-то. Как по мне, c.pCO платформа востребована, начиная с c.pCOmini Enhanced из-за встроенного драйвера униполярного ExV для решений с Power+. Для вентиляции вряд ли, китайцы на коленке такие делают девайсы, что скоро и S******s будет в пролете.
dopi
Цитата(DimanVIP @ 19.5.2017, 9:07) *
P.S.: Эххх, а я то надеялся что "огороды с переворачивалками" остались в прошлом вместе с 1тулом.


а чего там переворачивать??
переменную Setpoint на вход Input, переменную Input на вход Setpoint

и всё.

в коде Error:=Input-SetP
будет просто наоборот
Нажмите для просмотра прикрепленного файла
ktulu
"а чего там переворачивать??
переменную Setpoint на вход Input, переменную Input на вход Setpoint"

.."оо, а месье знает толк в извращениях"(ц)

..интересно что будет при обрыве/аварии датчика
dopi
Цитата(ktulu @ 13.6.2017, 2:27) *
.."оо, а месье знает толк в извращениях"(ц)

..интересно что будет при обрыве/аварии датчика


будет тоже самое, что и при обычном подключении. только разность Error:=Input-SetP будет с другим знаком

пид никак не сможет определить обрыв.
для определения обрыва нужны другие блоки типа PrbAlrm
и по сигналу от него выводить клапан на 0, 10 или 100%.
в зависимости от местных условий
CrazyDen
Тема устарела, но может будет полезно.
Кому нужно заставить работать блок на "нагрев" вместо "охлаждения"
Выделяйте блок в вашей программе, жмите F12, откроется исходный код.
там 80ая строка Error:=Input-SetP; меняем на Error:=SetP-Input; Всё.

Если в программе несколько ПИДов работающих в разных режимах, то этот переименуйте функциональный блок в какой-нить PID_heat

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

Изменения же в FBD схеме, типа поменять setpoint и input местами могут иметь последствия, такие как неверная работа ограничений и неверная отработка интегрального переполнения. Это надо проверять на практике, но чую, что что-то вылезет.
Igorchello
Цитата(CrazyDen @ 24.2.2019, 17:09) *
Тема устарела, но может будет полезно.
Кому нужно заставить работать блок на "нагрев" вместо "охлаждения"
Выделяйте блок в вашей программе, жмите F12, откроется исходный код.
там 80ая строка Error:=Input-SetP; меняем на Error:=SetP-Input; Всё.

Если в программе несколько ПИДов работающих в разных режимах, то этот переименуйте функциональный блок в какой-нить PID_heat

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

Изменения же в FBD схеме, типа поменять setpoint и input местами могут иметь последствия, такие как неверная работа ограничений и неверная отработка интегрального переполнения. Это надо проверять на практике, но чую, что что-то вылезет.


А можно просто выход умножить на -1. Это тоже в документации расписано)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.