Моделирование линейных непрерывных систем в среде 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.

Страница:  1  2  3  4 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы