Добрый вечер, форумчане. Я написала ПИД-регулятор на контроллере Delta DVP20SX2, и возникли некоторые проблемы, которые не удается решить. Буду признательна, если кто-нибудь подскажет, в чем может заключаться проблема и направит на ее решение. Буду очень благодарна.
Описываю проблему. В качестве уставки ( Set value SV) задается одна из написанных мной функций: единичная, синусоидальная, экспоненциальная или просто константа. В качестве обратной связи Present value PV и выхода регулятора Output value MV я взяла нулевой аналоговый выход (соответсвующий ему регистр D1116), имитируя замкнутую систему. Изменения уставки и значения на выходе регулятора выводятся на панели серии DVP-B на графике (на фотографиях синим - уставка, белым - выход регулятора ). Регулятор при подобранных коэффициентах отрабатывает эти функции хорошо, но при переключении с единичной функции на синусоидальную выход регулятора начинает очень сильно колебаться. Никакое изменение коэффициентов ПИДа или их обнуление не помогает. Есть только два варианта: перезапустить плк, либо снова выставить единичную функцию и дождаться, пока она не выставится в ноль, и тогда все нормализуется. Дело не в накапливаемой интегральной сумме, если обнулить интегральную и дифференциальную часть, все равно происходит все то же самое. Регулятор реализуется в прерывании по времени (2мс)
Прикрепила в документе скрины нетворков только с пропорциональной частью и результат ее работы на панели.
P.S: простите студентку)
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
ПИД-регулятор
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 31 янв 2017, 19:54
- Имя: Овсянникова Яна
- Страна: Россия
- город/регион: Санкт-Петербург
-
- почётный участник форума
- Сообщения: 5633
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 600 раз
- Поблагодарили: 758 раз
ПИД-регулятор
Так...
Скажите, Яна, а период периодической функции на Set value SV у Вас какой получается?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- почётный участник форума
- Сообщения: 5633
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 600 раз
- Поблагодарили: 758 раз
ПИД-регулятор
И потом...
Конечно, для Вашего случая, может и не важно, что Вы прогоняете через масштабирование дважды одно и то же число, туда и обратно...
И всякий раз переопределяете массив параметров операции масштабирования, НО откуда у нас может быть уверенность, что массив параметров непрерывен?
Т.е. насколько мы можем быть уверены, что компилятор оттранслировал переменные
minsourse => D1 (D0+1)
maxdest => D2 (D0+2)
mindest => D3 (D0+3)
раз уж для обеих API-203 SCLP начало массива параметров указано как D0 ?
Конечно, для Вашего случая, может и не важно, что Вы прогоняете через масштабирование дважды одно и то же число, туда и обратно...
И всякий раз переопределяете массив параметров операции масштабирования, НО откуда у нас может быть уверенность, что массив параметров непрерывен?
Т.е. насколько мы можем быть уверены, что компилятор оттранслировал переменные
minsourse => D1 (D0+1)
maxdest => D2 (D0+2)
mindest => D3 (D0+3)
раз уж для обеих API-203 SCLP начало массива параметров указано как D0 ?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 31 янв 2017, 19:54
- Имя: Овсянникова Яна
- Страна: Россия
- город/регион: Санкт-Петербург
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 31 янв 2017, 19:54
- Имя: Овсянникова Яна
- Страна: Россия
- город/регион: Санкт-Петербург
ПИД-регулятор
на графике показаны изменения этих переменных (уставки и выхода регулятора), они как раз и масштабируются. Но, да, вы правы, лучше не переопределять параметры масштабирования.. теперь указала другую область памяти для этого
-
- почётный участник форума
- Сообщения: 5633
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 600 раз
- Поблагодарили: 758 раз
ПИД-регулятор
Яна, а не могли бы выложить исходник *.isp (наверное, в архиве будет лучше)и указать версию Вашего пакета ISPSoft?
Не очень-то удобно разбираться по картинкам в Word-е.
Не очень-то удобно разбираться по картинкам в Word-е.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 31 янв 2017, 19:54
- Имя: Овсянникова Яна
- Страна: Россия
- город/регион: Санкт-Петербург
ПИД-регулятор
Версия 3.02, в архиве еще .dps файл для панелиRyzhij писал(а):Яна, а не могли бы выложить исходник *.isp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- почётный участник форума
- Сообщения: 5633
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 600 раз
- Поблагодарили: 758 раз
ПИД-регулятор
Яна, при входе в программу обработки прерываний сохраняйте значение флага M1081 (указатель режима преобразования для FLT), а по окончании подпрограммы восстанавливайте его.
Возможно, что проблема в этом.
Вообще-то, кошерным считается сохранять и восстанавливать все математические флаги.
По-пробуйте.
Удачи!
Возможно, что проблема в этом.
Вообще-то, кошерным считается сохранять и восстанавливать все математические флаги.
По-пробуйте.
Удачи!
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 31 янв 2017, 19:54
- Имя: Овсянникова Яна
- Страна: Россия
- город/регион: Санкт-Петербург