Поддержка процедур анализа в K2-ядре

ABCD-идентификация компьютерных моделей

Большая группа процедур анализа математических моделей использует в качестве первичной информации коэффициенты ABCD-матриц линеаризованного образа модели. Чтобы получить их математическое ядро K2.SimKernel активирует процедуру идентификации компьютерной модели.

Идентификация компьютерной модели
Алгоритмическая процедура, в результате выполнения которой моделирующая программа получает численные значения коэффициентов модели, структура которой и параметры были выбраны пользователем произвольно. Искомые коэффициенты представляются в форме ABCD-матриц. Цель поиска коэффициентов состоит в предоставлении исходных данных для частотного, корневого и других видов анализа.

Исторически, коэффициенты ABCD-матриц ассоциируются с одной из форм записи дифференциальных уравнений (ДУ) систем автоматического регулирования (САР), которая называется "Пространством состояний". Особенность ABCD-матриц, идентифицируемых K2-ядром, в том, что они составляются относительно всех основных решателей, а не только относительно интеграторов. В частности, в матрицы попадают коэффициенты: разностных уравнений, уравнений с запаздывающим аргументом, дифференциальных уравнений, уравнений записанных относительно экстраполяторов нулевого порядка, алгебраических уравнений и уравнений, связывающих координаты системы с теми, что отмечены как входная и выходные.

Сказанное иллюстрирует рисунок справа. К подобной форме представления можно свести любую модель. Правая шина образует матрицу координат системы [u]. Левая шина — это левая часть системы уравнений. Её образуют: [u z] — решетчатые координаты следующего такта [u[n+1]]; [u e] — координаты с опережающим аргументом [u(t+τ)]; [u s] — первые производные координат [du/dt]; [u sTe/(e-1)] — входные координаты экстраполяторов нулевого порядка; координаты сводимые в итерационном процессе к нулю; и координаты помеченные как выходные для SIMO-системы. Где: SIMO-система — система с одним входом и вектором выходов; z — оператор дискретного домена; s — оператор Лапласа; e — оператор запаздывания — в полной записи равен exp(sτ); 1/e — звено чистого запаздывания. Правая и левая шины, в общем случае, связаны нелинейной функциональной зависимостью [F([u])]. Линеаризация функции [F([u])] и ее представление в виде матрицы коэффициентов [ABCD] и есть задача идентификации компьютерной модели.

Для того, что бы было проще разобраться в процедуре идентификации коэффициентов ABCD-матрицы можно упростить взаимосвязи в решателях. Напомним, что все решатели: 1/z, 1/e, 1/s, — это блоки с эффектом памяти, которые отличаются тем, что для синтеза выходного значения на текущем шаге ими используется лишь историческая информация о входном сигнале (в действительности для (E)DIRK-методов интегрирования это не верно). Другими словами сигналы на входах решателей ни как не влияют на их выходные значения. Т.е. соответствующие блоки (1/z, 1/e, 1/s), образно, можно разрезать на пары — генератор и приемник, как это сделано для блоков алгебраического решателя — unknown и constraint (=0). Подобное упрощение разрывает все петли, которыми через решатели, в графическом представлении моделей, связаны входные и выходные координаты функции [F([u])]. Об экстраполяторах нулевого порядка (блоках S&H) умолчим.

Итак, мы имеем нелинейную матричную функцию [F([u])], которая не имеет внутри обратных связей. Задача ее идентификации проста. Поочередно, для каждой координаты ui во входном векторе [u] устанавливается приращение ui+Δ (оно же, но в векторе [u+Δi]); и вычисляется вектор приращений выходных координат [Fi([u+Δi])]-[F([u])]. n векторов приращений выходных координат, будучи отмасштабированы (поделены на величину приращения Δ входных координат [u]) составляют объединенную ABCD-матрицу линеаризованного образа модели.

Внутри математического ядра, описанная процедура идентификации реализуется следующим образом. В некоторый произвольный момент времени пользователь останавливает процедуру симуляции и активирует процедуру идентификации модели. Обратим внимание, что текущему моменту времени соответствует вектор координат системы [u], чьи значения отличаются от начальных. Это важно в случае, если функция [F([u])] действительно нелинейная. Т.е. идентификация линеаризованного образа модели выполняется для текущего состояния системы, который пользователь выбирает по своему усмотрению. Уточним, что внутри математического ядра модель представляет собой массив указателей на математические функции, см. листинг 1.

Листинг 1

    // Разворачивание массива объектов - математических функций:
    MathBlock[0] = new CBlkTemplate::CLibEl_701(0,1,2); // объект-функция 1(t-dT)
    MathBlock[1] = new CBlkTemplate::CLibEl_100(2,1,2); // объект-функция Sum
    MathBlock[2] = new CBlkTemplate::CLibEl_107(2,1,0); // объект-функция gain
    MathBlock[3] = new CBlkTemplate::CLibEl_957(2,1,2); // объект-функция 1/z+clk
    MathBlock[4] = new CBlkTemplate::CLibEl_150(0,1,2); // объект-функция pulsTrain
    // ...

    // Процедура исполнения шага симуляции
    for (i=0; i < numBlock; i++) {
        MathBlock[i]->Calc(); // вызов математических функций составляющих модель
    }
    

Алгоритм идентификации сканирует массив MathBlock[i], и, находя блоки: 1/z, 1/e, 1/s, unknown, constraint, S&H, Inp, Out, — переключает их указатель MathBlock[i]->Calc() с математической функции &CLibEl_XXX::Calc на функцию поддерживающую алгоритм идентификации &CLibEl_XXX::Identification. Далее активируется n+1 цикл вызова массива блоков MathBlock[i]->Calc(), в результате исполнения которого функции &CLibEl_XXX::Identification поочередно устанавливают требуемое приращение Δi координате в векторе [u] и заполняют, в выделенной области памяти, искомую ABCD-матрицу по столбцам. Можно лишь уточнить, что все блоки с эффектом памяти всегда вызываются дважды. Во время первого вызова одна из функций &CLibEl_XXX::Identification устанавливает требуемое приращение (блоки решателей работают как генераторы сигналов), во время второго вызова все функции заполняют соответствующий столбец в ABCD-матрице (блоки решателей работают как приемники сигналов). По завершении цикла заполнения ABCD-матрицы алгоритм идентификации возвращает модифицированные указатели MathBlock[i]->Calc() в прежнее состояние, чтобы пользователь, при желании, мог продолжить процедуру симуляции.

Перечислим правила практического использования процедуры ABCD-идентификации. Интерфейс графического представления математической модели это программный модуль, который функционирует не зависимо от математического ядра. Расчетная модель конфигурируется только в момент запуска симуляции. Поэтому нет смысла активировать функции анализа пока модель не существует в ядре. Если модель является параметрической или динамически перестраивает свою структуру, то для разных моментов времени результаты ABCD-идентификации совпадать не будут. Пользователь должен планировать временные точки идентификации. В случае если модель содержит стробируемые внешней синхропоследовательностью решатели, например блоки 1/z+clk или S&H, то к моменту времени ABCD-идентификации должен пройти период синхроимпульсов. Информация о периоде сохраняется, например, для последующего частотного анализа. Напомним, что соответствующий z-оператору частотный оператор равен exp(jωT); где T - период стробирования регистра задержки. Последняя из особенностей процедуры заключена в том, что для оценки величин коэффициентов ABCD-матрицы, а точнее для линеаризации функции [F([u])] используется приращение Δ той же величины, что устанавливает пользователь в свойствах симуляции итерационному решателю для оценки Якобиана.

Шаблон ABCD-матрицы компьютерной модели

Результат идентификации модели, генерируемый математическим ядром K2.SimKernel может быть представлен интерфейсом пользователя в виде таблицы коэффициентов, шаблон которой демонстрирует рисунок 2. Сетка таблицы делится на зоны. С первой ячейки (левый верхний угол) таблица заполняется коэффициентами квадратной матрицы [A]. Предпоследний столбец по правой границе матрицы [A] заполняется коэффициентами матрицы [B]. Математическое ядро K2.SimKernel поддерживает идентификацию SIMO-систем — систем с одним входом, поэтому матрицы [B] и [D] всегда состоят из одного столбца. Ниже матриц [A] и [B] располагаются матрицы [C] и [D] соответственно. Количество строк в этих матрицах определено количеством выходов SIMO-системы. Последний столбец заполняется условными обозначениями решателей, чьи входы "подключены" к соответствующим строкам матриц [A] и [B].

a11         b1 1/z
          b2 1/e
    [A]     b3 1/s
          b.. S&H
        ann bn =0
c11 c21 c31 c..1 cn1 d1 Out1
c12 c22 c32 c..2 cn2 d2 Out2

Рис. 2. Шаблон ABCD-матрицы SIMO-системы

Существуют методы анализа систем, первичной информацией для которых является характеристическое уравнение или характеристическая система. Поэтому K2-ядро поддерживает процедуру идентификации в ситуации, когда пользователь не пометил в модели входную и выходные координаты. В этом случае итоговая матрица будет урезана. В сравнении с шаблоном (см. рис. 2) в ней не будет матриц [B], [C], [D] и меток Out.

Частотный анализ компьютерных моделей

Частотные методы анализа моделей, поддерживаемые математическим ядром K2.SimKernel, в качестве первичной информации используют либо матрицу [A], либо весь набор матриц [ABCD] пространства состояний. Поэтому предварительная процедура идентификации модели является обязательной. Интерфейс пользователя моделирующей программы скрывает этот этап при построении годографов Михайлова, Найквиста, Найквиста-Федосова, ЛАЧХ & ЛФЧХ, и пр. Все особенности процедуры линеаризации при идентификации моделей распространяются на частотные методы анализа.

Годограф Михайлова

Для построения годографа характеристической части системы уравнений D(ω) необходима лишь матрица коэффициентов [A]. Расчёт точек выполняется по формуле:

D(ω) = det ( [ω] - [A] )

где: [ω] — квадратная матрица частотных операторов, полученная из единичной путем умножения диагональных элементов на соответствующий типу решателя (1/z | 1/e | 1/s | S&H | ...) частотный оператор, размер матрицы соответствует размеру матрицы [A], см. рис. 3.

ejωT         1/z
  ejωτ       1/e
        1/s
      F(jω)   S&H
        0 =0

Рис. 3. Шаблон матрицы частотных операторов [ω]

Частотный оператор для экстраполятора нулевого порядка S&H составлен по модели широко известного линеаризованного аппроксиматора этого устройства, которому соответствует передаточная функция W(s) = (1-exp(-sτ)) / (sτ) .

Частотные характеристики

Для построения частотных характеристик всех видов математическое ядро вычисляет комплексный коэффициент передачи Wk(ω) для каждой заданной частоты.

Wk(ω) = Yk / X = [C]k × (([ω] - [A])-1 × [B]) + Dk

где: k — номер выхода SIMO-системы; [ω] — квадратная матрица частотных операторов.

K2-ядро поддерживает анализ для SIMO-систем. Библиотеки анализа других математических программ ориентированы на анализ SISO-систем.  Причиной нововведения являются некоторые упрощения в работе с интерфейсом графического представления гибридных моделей, состоящих из математических блок-схем и схем физических принципиальных. Результаты же анализа, традиционно, связаны с одним входом и с одним выходом.

Частотная характеристика связывает спектры входного и выходного сигналов. Поэтому необходимо предварительно пометить соответствующие координаты системы. Для решения этой задачи пользователю библиотеки SimLib4Visio рекомендуется воспользоваться блоками Inp и Out. В одной модели можно установить только одну пару этих блоков. Блок Inp следует установить в разрыв любого направленного проводника, а входы блока Out следует подключить либо к выходам математических блоков, либо к выходам датчика тока и разности потенциалов моделей RLC или EJ-элементов. Будучи установлены в модель, блоки Inp и Out не оказывают никакого влияния на результаты симуляции во временном домене.





Рис. 4. Демонстрационная модель, имеющая легко вычисляемые аналитически частотные свойства. Щелчок мышью по обозначениям технических устройств (в том числе по узлам) вызовет открытие окон с соответствующими схемами замещения или блок-схемами

На рисунке 4 представлена модель, состоящая из двух, включенных последовательно, модулей: блок-схемы дифференцирующего звена с замедлением и колебательного звена в виде схемы на операционном усилителе. Известно, какими должны быть их частотные характеристики. Опираясь на эту информацию и на интерактивную модель, поясним настройки диалогового окна для процедуры частотного анализа. Ключевым является параметр "SIMO W1/W2", требующий уточнения двух чисел. Эти числа — порядковые номера входов блока Out. При построении частотной характеристики, соответствующий алгоритм составлен исходя из априорного положения о том, что выход блока Inp и два указанных в диалоговом окне входа блока Out связаны передаточными функциями W1 и W2. Для каждой заданной частоты, алгоритм вычислят два комплексных коэффициента передачи, делит первый на второй W1/W2 (отсюда название параметра "SIMO W1/W2"), и использует результат для построения одной ЧХ. Поскольку демонстрируемая модель состоит из последовательно включенных модулей, манипулируя параметром "SIMO W1/W2" можно получить: общую ЧХ системы, ЧХ апериодического звена, ЧХ колебательного звена, а так же их обратные ЧХ. Выполните процедуру симуляции системы, нажатием одноименной кнопки в нижней части рисунка 4. За тем попробуйте активировать процедуры построения ЧХ. Проверьте соответствие результатов. Заметим, что если для парного параметра "SIMO W1/W2" указать один и тот же вход блока Out дважды, то алгоритм не дублирует вычисление комплексного коэффициента передачи и не производит операцию деления W1/W2 — просто строит ЧХ соответствующей SISO-системы.

14.11.2006