2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Реализация передаточных функций в системах управления
Сообщение23.03.2008, 22:28 
Существует ли какая-то простая методика перевода законов регулирования,
определенных своими передаточными функциями, в обычную программу?
Скажем, эта программа циклически вызывается с каким-то определенным периодом. Или необходимо обязательно вникать в операционное исчисление
для такого перевода в программу, даже если передаточные функции уже
кем-то определены?

 
 
 
 
Сообщение24.03.2008, 09:42 
ПИД и прочие регуляторы. Там надо примерно знать передаточную функцию, а, зачастую, можно вообще ничего не знать о системе. Естественно, при переходных процессах будут отклонения от оптимального закона управления.

 
 
 
 
Сообщение24.03.2008, 19:51 
Может я не совсем ясно выразился: проблема не в нахождении передаточной функции, а в ее реализации. Передаточные функции, как правило, уже заданы, и необходима методика их реализации: ведь формула передаточной функции - это не есть арифметическое выражение, которое надо вычислять циклически?

 
 
 
 
Сообщение26.03.2008, 20:51 
Всё это с успехом реализуется в системе MatLAB. Если тебе надо регулировать какой-то объект через порт, MatLAB также позволяет это делать. Программу для этого писать не обязательно. Достаточно использовать стандартные средства модуля Simulink - там блоксхемой всё что нужно сделать можно .

 
 
 
 
Сообщение26.03.2008, 22:13 
Проблема немного сложнее - в нашей конторе мною разработан язык технологического программирования а-ля Си (так называемый ТехноСи), в котором реализованы стандартные ПИД-алгоритмы (функции их реализации были написаны другим человеком до меня). Однако читая литературу по системам технологического управления, я убедился, что существует довольно много других более оптимальных законов регулирования (для которых известны и описаны передаточные функции). И так как я далек от теории систем управления (т. е. чистый программист, способный без проблем реализовать систему компиляции, скажем, для Windows CE промышленных контроллеров, но не способный адекватно превратить теоретическую передаточную функцию в реальную программу на Си), то и хотелось бы услышать рекомендации знающих людей по такому адекватному превращению - именно в программу на языке Си...

 
 
 
 
Сообщение26.03.2008, 22:24 
Передаточную функцию можно представить в виде отношения многочленов. После этого можно перейти к дифференциальному уравнению, к которому применить какую-нибудь разностную схему по-удачнее, чтобы сходилась, и получить СЛАУ, которую и решать в режиме реального времени с разными правыми частями. Математику написать могу, а что до программы, так я уже не писал лет 5 на сях и иже с ними ничего серьёзного, только матлаб.

 
 
 
 
Сообщение26.03.2008, 22:31 
Метод решения СЛАУ не подходит (когда в задаче сотни регуляторов - будут сплошные тормоза). Если посмотреть на доставшуюся мне реализацию ПИД - так там есть пара значений для хранения состояний регулятора от предыдущего цикла задачи и идут самые обычные арифметические выражения (но по своему виду очень далекие от вида передаточной функции, заявленной в комментариях), реализующие как раз разностную схему - но никаких СЛАУ.

 
 
 
 
Сообщение26.03.2008, 22:40 
Разностная схема неявно подразумевает решение СЛАУ ) Просто там структура матрицы очень приятная - 3 или 5 диагоналей, смотря какой порядок схемы брать (выше 2-го смысла нет). Если СЛАУ решать приближенными методами типа GMRES или BCGStab, то проще её сразу предобусловить как следует, чтобы вообще 3 диагонали осталось (по этой теме много есть статей с готовыми алгоритмами, как вариант Шурина, Баландин "Методы решения СЛАУ больший размерностей" или что-то в этом духе). Так что никаких тормозов не будет.

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group