Смекни!
smekni.com

Моделирование линейных непрерывных систем в среде LabVIEW (стр. 1 из 3)

Содержание

Введение

Моделирование линейных непрерывных систем

Численное решение дифференциальных уравнений

Замена непрерывной передаточной функции дискретной

Моделирование линейных замкнутых систем

Заключение

Список литературы


Введение

LabVIEW (LaboratoryVirtualInstrumentEngineeringWorkbench) позволяет разрабатывать прикладное программное обеспечение для организации взаимодействия с измерительной и управляющей аппаратурой, сбора, обработки и отображения информации и результатов расчетов, а также моделирования как отдельных объектов, так и автоматизированных систем в целом. Разработчиком 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 + Δtf (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 - Δtf (uk, xk, tk).

Откуда

uk= uk - 1 + Δtf (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/Txk - 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) используем структуру FormulaNode. Внутри этой структуры запишем точное выражение для переходной характеристики:

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.

В этих выражениях использованы различные обозначения для выходных переменных и принято x= 1 (t) = 1, так как t> 0.


На рис.2 показана эта структура. В формулах Δtобозначена как dt.

Рис.2 Рис.3

Напомним, что для образования входных и выходных терминалов нужно щелкнуть ПКМ на границе структуры в предполагаемом месте терминала и в раскрывшемся меню выбрать AddInputили AddOutput.

Для формирования массивов выходных переменных структура FormulaNodeпомещается внутрь структуры ForLoop, при этом задержанные на интервал дискретизации отсчеты выходных переменных y1 и v1 получаются с помощью регистра сдвига (рис.3).

Прямой метод Эйлера при большом интервале дискретизации может дать неустойчивое решение. Это случится, если отклонение решения от входного процесса xk - 1 - yk - 1 (см формулу (5)) даст такое значение yk. что отклонение на следующем шаге xk - ykбудет той же величины, что и предыдущее, но обратным по знаку. Решение будет колебательным незатухающим.

Рис.4

В предыдущих лабораторных работах развертка графического индикатора Graphосуществлялась автоматически в соответствии с типом данных, подаваемых на вход графического индикатора. В этой работе мы сформируем данные так, чтобы по горизонтальной оси откладывалось время. Для этого надо сформировать кластер, куда кроме массива данных будет входить информация о времени. Используем ВП Bundle (Объединить), который находится в подпалитре Cluster (Кластер). На его входы elementподаются (см. рис.4): на верхний - время начала развертки - 0; на средний - интервал дискретизации - Δt; на нижний - массив данных