Моделирование линейных непрерывных систем в среде LabVIEW
Введение
LabVIEW (Laboratory Virtual Instrument Engineering Workbench) позволяет разрабатывать прикладное программное обеспечение для организации взаимодействия с измерительной и управляющей аппаратурой, сбора, обработки и отображения информации и результатов расчетов, а также моделирования как отдельных объектов, так и автоматизированных систем в целом. Разработчико
м LabVIEW является американская компания National Instruments.
LabVIEW является открытой системой программирования и имеет встроенную поддержку всех применяемых в настоящее время программных интерфейсов, таких как Win32 DLL, COM.net, DDE, сетевых протоколов на базе IP, DataSocket и др. В состав LabVIEW входят библиотеки управления различными аппаратными средствами и интерфейсами, такими как PCI, CompactPCI/PXI, VME, VXI, GPIB (КОП), PLC, VISA, системами технического зрения и др. Программные продукты, созданные с использованием LabVIEW, могут быть дополнены фрагментами, азработанными на традиционных языках программирования, например C/С++, Pascal, Basic, FORTRAN. И наоборот можно использовать модули, разработанные в LabVIEW в проектах, создаваемых в других системах программирования. Таким образом, LabVIEW позволяет разрабатывать практически любые приложения, взаимодействующие с любыми видами аппаратных средств, поддерживаемых операционной системой компьютера.
среда программирование дифференциальное уравнение
Моделирование линейных непрерывных систем
При цифровом моделировании непрерывных систем необходимо обеспечить близость процессов в моделируемой непрерывной системе и в ее цифровой модели. Несовпадение этих процессов связано с двумя причинами:
1) заменой непрерывного входного процесса цифровым и 2) использованием численных методов анализа. Ошибки, связанные с заменой непрерывного процесса цифровым, были рассмотрены в предыдущей лабораторной работе. Остановимся на второй причине.
Математическая модель непрерывной системы представляет собой или нелинейное дифференциальное уравнение или совокупность соединенных между собой линейных и нелинейных блоков. В зависимости от принятой математической модели используются различные подходы к формированию цифровой модели.
Численное решение дифференциальных уравнений
Разработано большое количество методов численного решения дифференциальных уравнений. Рассмотрим, как производится численное решение на примере нелинейного дифференциального уравнения первого порядка
du/dt = f (u,x,t). (1)
Здесь x = x (t) - независимая функция (входной процесс), u = u (t) - решение уравнения (выходной процесс).
Численное решение находится для дискретных значений аргумента t, отличающихся на шаг интегрирования Dt. В одношаговых разностных методах для нахождения следующего значения uк = u (tк) требуется информация только об одном предыдущем шаге. Из одношаговых методов наибольшую известность получили методы Рунге-Кутта. В основу метода Рунге-Кутта первого порядка, называемого также явным или прямым методом Эйлера, положено разложение функции u (t) в ряд Тейлора в окрестности точки A (tk-1,, uk-1):
u (t) = S0 + S1 (t - tk - 1) + S2 (t - tk - 1) 2 + …, (5.2)
где S0 = u (tk - 1) = uk - 1,Si = (1/i!) du (t) /dt при t = tk - 1.
В методах Эйлера (и Рунге-Кутта тоже) ограничиваются только двумя первыми членами разложения в ряд. Запишем значение uk = u (tk), приняв в выражении (5.2) t = tk и ограничившись двумя первыми членами ряда:
uk = uk - 1 + S1 (tk - tk - 1) = uk - 1 + S1Δt
Учитывая, что производная du (t) /dt равна правой части дифференциального уравнения (1), имеем S1 = f (uk - 1, xk - 1, tk - 1) и окончательно получим:
uk = uk - 1 + Δt f (uk - 1, xk - 1, tk - 1). (3)
Это выражение является приближенным решением дифференциального уравнения (1) прямым методом Эйлера. Оно рекуррентное и позволяет найти значение выходного процесса uk по значениям выходного и входного процессов в предыдущем такте.
На рис. 1 а) проиллюстрировано решение прямым методом Эйлера.
|
|
а) |
б) |
Рис.1 |
Видим, что при использовании этого метода используется линейная экстраполяция и тангенс угла наклона экстраполирующей прямой равен производной функции u (t) в точке А. Экстраполированное значение uk отличается от точного на величину ошибки.
Неявный (обратный) метод Эйлера основан на разложении функции u (t) в ряд Тейлора в окрестности точки В (uk,, tk) (см. рис.1 б):
u (t) = uk + S1 (t - tk) + S2 (t - tk) 2 + …,
Приняв в этом выражении t = tk - 1 и ограничившись двумя первыми членами ряда, получим
uk - 1 = uk - Δt f (uk, xk, tk).
Откуда
uk = uk - 1 + Δt f (uk, xk, tk). (5.4)
Искомое значение процесса uk входит и в левую, и в правую части уравнения, и если не удается найти uk в явном виде, то приходится использовать приближенные методы решения этого уравнения.
Применим методы Эйлера для расчета переходной характеристики интегрирующей цепи. Передаточная функция интегрирующей цепи:
K (p) = 1/ (1 + pT).
Отсюда дифференциальное уравнение в операторной форме:
(pT + 1) y = x
и в канонической форме:
Tdy/dt + y = x.
Перепишем его в виде (1):
dy/dt = (1/T) (x - y).
Запишем рекуррентную формулу для прямого метода Эйлера в соответствии с (5.3)
yk = yk - 1 + (Δt/T) (xk - 1 - yk - 1), (5.5) или yk = (1 - Δt/T) yk - 1 + Δt/T xk - 1.
Формула для обратного метода Эйлера запишется в соответствии с (4)
yk = yk - 1 + (Δt/T) (xk - yk).
Так как уравнение линейное, то значение yk вычисляется в явной форме:
yk = (yk - 1 + (Δt/T) xk) / (1 + Δt/T). (6)
Методы Эйлера обладают низкой точностью. В более точных методах используются различные способы определения угла наклона экстраполирующей прямой, чтобы она прошла ближе к точному решению. Хорошей точностью обладает метод Рунге-Кутта четвертого порядка, который обычно и используется. Программы для численного решения дифференциальных уравнений имеются практически в любом пакете прикладных программ, в том числе и в LabVIEW.
Для вычислений по формулам (5.5) и (5.6) используем структуру Formula Node. Внутри этой структуры запишем точное выражение для переходной характеристики:
z= 1 - e-iΔt/T,
и выражения для переходной характеристики, полученные прямым методом Эйлера:
y = y1 + (Δt/T) (1 - y1)
и обратным методом Эйлера:
v = (v1 + (Δt/T)) / (1 + Δt/T)
при нулевых начальных условиях: y (0) = 0, v (0) = 0.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности