а что было по ссылке о " Регулирование на основе SIMATIC"
книга Мюллера Юргена? или статья ?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
ПИД регулятор
Модератор: kirillio
-
- почётный участник форума
- Сообщения: 1746
- Зарегистрирован: 18 янв 2009, 12:25
- Имя: Дмитрий
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 143 раза
Re: ПИД регулятор
Там была книга. Сейчас она здесь http://iadt.siemens.ru/assets/files/inf ... ATIC_r.pdf
"Умные люди обсуждают идеи, средние - события, а глупые - людей" Л.Н. Толстой
-
- здесь недавно
- Сообщения: 22
- Зарегистрирован: 28 дек 2013, 20:24
- Имя: Ковалев Антон Русланович
- Страна: РФ
- город/регион: Екатеринбург
- Поблагодарили: 1 раз
Re: ПИД регулятор
Файлк то убрали. Если кто качал прошу поделитесь сюды: [email protected]Marrenoloth писал(а): Если интересно, сходите на http://code.google.com/p/s7-facility/, скачайте ПИД...
Спасибо
-
- read only
- Сообщения: 42
- Зарегистрирован: 30 окт 2012, 04:14
- Имя: Олд Белл
- Страна: Германия
- город/регион: Киль
- Благодарил (а): 14 раз
- Забанен: Бессрочно
Re: ПИД регулятор
решаю задачу по поддержанию постоянного давления в системе
компрессор
частотный преобразователь, диапазон выходной частоты 20 Герц- 50 Герц. 20 Герц минимально разрешенная частота для компрессора
контролер S7-300
величина задания частоты частотному преобразователю 0-16384, вместо 0 будет число соответствующее минимально разрешенной частоте.
сейчас смысла нет указывать, так как 16384 может соответствовать и 750 об в мин или 3000 об в мин. Зависит от настроек частотного преобразователя.
частота опроса сигнала с датчика не ограничена, например, 10 раз в секунду
расчет ошибки регулирования производится с частотой равной частоте опроса датчика
а вот выдача сигнала регулирования растянута во времени, ограничение 1 Герц в секунду, быстрее изменять в сторону повышения не разрешено.
полагаю, что PID в данном случае не справится, но для того, что бы подтвердить это математически, мне необходима информация,
что в моем случае
1. время реакции системы регулирования
как я понимаю, время отработки от минимально разрешенной частоты, до максимально разрешенной. или от 0 до 100 процентов для отвлеченной регулируемой величины
2. запаздывание системы..
если честно, то разницы не вижу с первым пунктом.
Но согласно научным фолиантам разница имеется.
для определения возможности применения PID регулятора для какой либо системы, нужно взять отношение первого ко второму.
если величина лежит в диапазоне 1/2 -1/4 то PID справится с задачей.
пока вижу такой способ регулирования.
Эл. мотор 3000 об мин
Fmin- min Частота= 20 Hz = 1200 об в мин
Fmax-max Частота = 50 Hz = 3000 об в мин
Out_min- величина задания частотному преобразователю Fmin = (16384/50 Hz)*20 Hz =~ 6555
Out_max-величина задания частотному преобразователю Fmax = 16384
ADD_Out_S -разрешенное приращение выходной величины регулирования в секуду, 16384/50 Hz=~333
SUB_Out_S- сделаем равное по времени уменьшение величины регулирования в секунду = ~ 333
Out_S- выходная величина, задание частотному преобразователю
Err- ошибка
Err_old- предыдущая ошибка
SP-set point величина задания- например, 100
AP-actual point текущая величина регулируемого параметра, например, 90
TZ- мертвая зона= 10, или разрешенная выходная величина 100+-5
KP- коэффициент пропорциональности, подбирается методом ДОСААФа, 0,5 - 1,0
Out_temp- временная переменная для вычислений величины зада
Out_S_old- предыдущее задание частоты
вызов функции будет производится в OB, вызываемом 10 раз в секунду. 10 ms-OB
------------пробовал тег code, плохо читается
инициализация
Err=0
Err_old=0
Out_S=6555
Out_S_old=6555
ADD_Out_S=33 (333/10)
SUB_Out_S=33 (333/10)
Out_S_min= 6555
Out_S_max=16384
TZ=5
BEGIN
Err=SP-AP
If I ErrI <= TZ then JUMP // если текущая ошибка по модулю меньше или равна "мертвой зоне" переходим на метку Jump
Out_temp= I 1/(KP*Err) I // берем по модулю, величина лежит в пределах 0-1, только одно не понятно, делить на ноль нельзя
if Err > 0 then Out_S=)Out_temp * 16384) +ADD_Out_S // Если ошибка положительная, то приращиваем значение. 16384 - Fmax задание
else
Out_S=(Out_temp * 16384) - SUB_Out_S // Если ошибка отрицательная, уменьшаем выходное значение
end if
if Out_S < Out_S-min then Out_S=Out_S_min // если задание меньше разрешенной величины задания, то выход равен минимуму
else If Out_S > Out_S_max then Out_S=Out_S_max // выходная величина не может быть больше разрешенной
: Jump
Out_S=Out_S
Out_S_old=Out_S
END
----------------------------------------
компрессор
частотный преобразователь, диапазон выходной частоты 20 Герц- 50 Герц. 20 Герц минимально разрешенная частота для компрессора
контролер S7-300
величина задания частоты частотному преобразователю 0-16384, вместо 0 будет число соответствующее минимально разрешенной частоте.
сейчас смысла нет указывать, так как 16384 может соответствовать и 750 об в мин или 3000 об в мин. Зависит от настроек частотного преобразователя.
частота опроса сигнала с датчика не ограничена, например, 10 раз в секунду
расчет ошибки регулирования производится с частотой равной частоте опроса датчика
а вот выдача сигнала регулирования растянута во времени, ограничение 1 Герц в секунду, быстрее изменять в сторону повышения не разрешено.
полагаю, что PID в данном случае не справится, но для того, что бы подтвердить это математически, мне необходима информация,
что в моем случае
1. время реакции системы регулирования
как я понимаю, время отработки от минимально разрешенной частоты, до максимально разрешенной. или от 0 до 100 процентов для отвлеченной регулируемой величины
2. запаздывание системы..
если честно, то разницы не вижу с первым пунктом.
Но согласно научным фолиантам разница имеется.
для определения возможности применения PID регулятора для какой либо системы, нужно взять отношение первого ко второму.
если величина лежит в диапазоне 1/2 -1/4 то PID справится с задачей.
пока вижу такой способ регулирования.
Эл. мотор 3000 об мин
Fmin- min Частота= 20 Hz = 1200 об в мин
Fmax-max Частота = 50 Hz = 3000 об в мин
Out_min- величина задания частотному преобразователю Fmin = (16384/50 Hz)*20 Hz =~ 6555
Out_max-величина задания частотному преобразователю Fmax = 16384
ADD_Out_S -разрешенное приращение выходной величины регулирования в секуду, 16384/50 Hz=~333
SUB_Out_S- сделаем равное по времени уменьшение величины регулирования в секунду = ~ 333
Out_S- выходная величина, задание частотному преобразователю
Err- ошибка
Err_old- предыдущая ошибка
SP-set point величина задания- например, 100
AP-actual point текущая величина регулируемого параметра, например, 90
TZ- мертвая зона= 10, или разрешенная выходная величина 100+-5
KP- коэффициент пропорциональности, подбирается методом ДОСААФа, 0,5 - 1,0
Out_temp- временная переменная для вычислений величины зада
Out_S_old- предыдущее задание частоты
вызов функции будет производится в OB, вызываемом 10 раз в секунду. 10 ms-OB
------------пробовал тег code, плохо читается
инициализация
Err=0
Err_old=0
Out_S=6555
Out_S_old=6555
ADD_Out_S=33 (333/10)
SUB_Out_S=33 (333/10)
Out_S_min= 6555
Out_S_max=16384
TZ=5
BEGIN
Err=SP-AP
If I ErrI <= TZ then JUMP // если текущая ошибка по модулю меньше или равна "мертвой зоне" переходим на метку Jump
Out_temp= I 1/(KP*Err) I // берем по модулю, величина лежит в пределах 0-1, только одно не понятно, делить на ноль нельзя
if Err > 0 then Out_S=)Out_temp * 16384) +ADD_Out_S // Если ошибка положительная, то приращиваем значение. 16384 - Fmax задание
else
Out_S=(Out_temp * 16384) - SUB_Out_S // Если ошибка отрицательная, уменьшаем выходное значение
end if
if Out_S < Out_S-min then Out_S=Out_S_min // если задание меньше разрешенной величины задания, то выход равен минимуму
else If Out_S > Out_S_max then Out_S=Out_S_max // выходная величина не может быть больше разрешенной
: Jump
Out_S=Out_S
Out_S_old=Out_S
END
----------------------------------------
-
- read only
- Сообщения: 42
- Зарегистрирован: 30 окт 2012, 04:14
- Имя: Олд Белл
- Страна: Германия
- город/регион: Киль
- Благодарил (а): 14 раз
- Забанен: Бессрочно
Re: ПИД регулятор
Попробовал реализовать задуманное, но скомпилировать не получается.
в строках
компилятор версии 5.3 определяет ошибки, а я не могу распознать
строка 33 место 28 за последней скобкой
строка 36 место 24 за знаком * умножение
строка 38 место 24 указатель отсутствует..
в прикрепленных PDF в цвете, с нумерацией строк.
в строках
компилятор версии 5.3 определяет ошибки, а я не могу распознать
строка 33 место 28 за последней скобкой
строка 36 место 24 за знаком * умножение
строка 38 место 24 указатель отсутствует..
в прикрепленных PDF в цвете, с нумерацией строк.
Код: Выделить всё
FUNCTION_BLOCK FB112
VAR_INPUT
SetPoint : REAL;
ActualPoint : REAL;
Err: REAL;
Err_old: REAL;
OutSold: REAL ;
ADDOutS: REAL ; // 33 как 330/10 10 это время в миллисекундах, частота вызова блока
SUBOutS: REAL ;
OutSmin: REAL ;
OutSmax: REAL ;
KP : REAL ;
TZ: REAL ;
END_VAR
VAR_OUTPUT
OutS: REAL;
END_VAR
VAR_TEMP
OutTemp : REAL;
END_VAR
LABEL
END ;
END_LABEL
BEGIN
Err := SetPoint-ActualPoint ;
IF ABS (Err) <= TZ THEN
GOTO END ;
END_IF;
OutTemp = 1 /(KP * Err); // строка 33 место 28 за последней скобкой
IF Err > 0 THEN
OutS := (Out_temp * 16384) + ADDOutS ; // строка 36 место 24 за знаком *
ELSE // строка 38 место 24 указатель отсутствует
OutS := (Out_temp * 16384) - SUBOutS ;
END_IF;
IF OutS < OutSmin THEN
OutS := OutSmin;
END_IF;
IF OutS > OutSmax THEN
OutS := OutSmax ;
END_IF;
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- read only
- Сообщения: 42
- Зарегистрирован: 30 окт 2012, 04:14
- Имя: Олд Белл
- Страна: Германия
- город/регион: Киль
- Благодарил (а): 14 раз
- Забанен: Бессрочно
ПИД регулятор
отпишусь здесь, раз тема попала на глаза.
сдача в эксплуатацмю была сделана во время. в основе остался же этот код.
немного изменял позже. но вот не понял, отчего первое время все было плачевно.
возможно в памяти переменные пересекались или софт барахлил. я работал с двумя компами PG и HP офисный.
ПОмню постоянно лезли ошибки временного штампа.
к сожалению все выветрелось за время работы на другом месте.
сдача в эксплуатацмю была сделана во время. в основе остался же этот код.
немного изменял позже. но вот не понял, отчего первое время все было плачевно.
возможно в памяти переменные пересекались или софт барахлил. я работал с двумя компами PG и HP офисный.
ПОмню постоянно лезли ошибки временного штампа.
к сожалению все выветрелось за время работы на другом месте.