На самом деле, я не знаю как правильно обозвать все, что я хочу донести в этом посте, но пусть будет так как я и написал в заголовке.Речь идет об автоматизации технологическими процессами, а именно функция RAMP (Линейно-временная функция) которая подает задание на исполнительный механизм плавно, то есть с ускорениями и замедлениями. То есть когда требуется раскрутить двигатель с нуля до 1000 оборотов, например, ему не дают сразу задание 1000, а постепенно раскручивают до этого значения. Можно подавать каждую секунду на 100 оборотов больше предыдущего и тогда через 10 секунд двигать будет крутиться при нужной частоте вращения. Т.е. сначала 0, потом 100, 200, 300 и т.д. до 1000. Для двигателя рампа настраивается чаще всего в частотном преобразователе, а вот для пропорциональных клапанов частотника нет, и чтобы плавно подавать задание на клапан нужно задействовать специальную функцию рампы, о чем я и хочу написать.
В данном случае рампа не совсем рампа, потому что в классическом смысле это наклонная прямая (с английского ramp переводится как уклон, скат, трап), а у нас получается экспоненциальная зависимость. Чтобы было проще понять, вот график:
Если прибавлять каждую секунду по 100 оборотов, то получится красная рампа, если прибавлять по 200, то зеленая - которая достигает задание в 2 раза быстрее красной. Во всех этих функциях достаточно задать цель, то есть конечное задание к которому мы стремимся, и коэффициент наклона рампы, то есть время за которое нужно достичь цели. По идее нужна простая формула Y=Y+P, то есть с каждым вызовом функции (каждый скан) выход Y будет увеличиваться на P единиц пока не станет равным заданной цели. В той формуле которую я подсмотрел у китайцев, и потом уже сам воссоздал немного в другом виде, тоже используется только 2 параметра, но в ней самой уже отражена цель T (target), а параметр P задается в долях, а не в условных единицах. Хотя можно ввести и в условных единицах, но просто разделить их на Т чтобы получились доли. В общем вот таблица чтобы было хоть что-то понятно
В данном случае рампа не совсем рампа, потому что в классическом смысле это наклонная прямая (с английского ramp переводится как уклон, скат, трап), а у нас получается экспоненциальная зависимость. Чтобы было проще понять, вот график:
Если прибавлять каждую секунду по 100 оборотов, то получится красная рампа, если прибавлять по 200, то зеленая - которая достигает задание в 2 раза быстрее красной. Во всех этих функциях достаточно задать цель, то есть конечное задание к которому мы стремимся, и коэффициент наклона рампы, то есть время за которое нужно достичь цели. По идее нужна простая формула Y=Y+P, то есть с каждым вызовом функции (каждый скан) выход Y будет увеличиваться на P единиц пока не станет равным заданной цели. В той формуле которую я подсмотрел у китайцев, и потом уже сам воссоздал немного в другом виде, тоже используется только 2 параметра, но в ней самой уже отражена цель T (target), а параметр P задается в долях, а не в условных единицах. Хотя можно ввести и в условных единицах, но просто разделить их на Т чтобы получились доли. В общем вот таблица чтобы было хоть что-то понятно
Эта таблица заполнена значениями выхода для коэффициентов Т = 10, и Р = 0,5. Сначала по первым двум столбцам Y(n-1) - это значение Y на предыдущем шаге, а Y с большой формулой - это уже то что подается на выход. На первом шаге у нас подается 5, то есть 50% (или 0,5) от 10. Второй шаг уже 7,5, то есть 5 + 50% от 5. И так далее, каждый раз увеличивая выход на 50% от ошибки (разница между значением на текущем шаге заданием T). Что касается последнего столбца то это это формула для построения графика, например тут Графики онлайн
Или вот картинка для того же графика 10(1-(0.5)^x):
По нему хорошо видно что на первом шаге подается 50% на втором 75% и т.д.
На самом деле такое поведение больше подошло бы для регулятора, а не для рампы, я чуть позднее проанализирую это, а сейчас хотел бы как раз и написать об этом свойстве регулятора для такой функции. Дело в том, что если подавать на вход не 50% а 70%, то он доберется до задания конечно же быстрее, но если подать 120% что произойдет? а произойдет такое:
На первом шаге сразу дается задание 120%, но на втором уже оп, и 96, потом снова чуть больше 100, а потом меньше, и так уже около 100, то есть автоматически выравнивается - по-моему это круто. Правда график по той формуле не рисуется при Р>1, поэтому наглядно показать колебания не получится, но по цифрам хорошо видно. Все это конечно же не имеет особого смысла, т.к. функция рампы используется уже после регулятора перед подачей окончательного сигнала на исполнитель, и предназначена для разгона и торможения исполнителя.
Ну и под конец хочу сказать почему такая рампа - это не совсем рампа. Во-первых, как уже говорилось, само по себе понятие предполагает линейно изменяющуюся функцию, во-вторых, как мне кажется, даже если использовать нелинейное изменение, то для рампы было бы наоборот лучше вначале давать для разгона меньше задание, и под конец увеличивать. Но у нас было сделано так, и плюс ко всему еще и функция вызывалась с частотой времени скана, то есть в первую секунду задание доходило до 80% от максимума, что в принципе нивелировало назначение такого блока - на пропорциональный клапан практически сразу с нуля подавалось 80% от необходимого задания, почти без разгона как предполагалось. Конечно, это все-равно лучше чем сразу 100% но быстродействие клапана, думаю не настолько большое, чтобы прочувствовать эти почти моментальные изменения задания.
Комментариев нет:
Отправить комментарий