- •Основы моделирования систем
- •Введение в дисциплину "Основы моделирования систем"
- •Проблематика, задачи и цели моделирования
- •Технологии функционирования моделирующих программ
- •Обзор и классификация моделирующих программ
- •Решатели моделирующих программ
- •Понятие о структурном и мультидоменном физическом моделировании
- •Идея мультидоменного физического моделирования
- •Введение в технологию моделирования на основе направленных графов
- •Принцип поточного исполнения блок-схем (моделей)
- •Библиотеки блоков графических языков
- •Блоки обладающие эффектом памяти
- •Понятие о начальных условиях модели (Initial Condition)
- •Понятие о параметрах модели
- •Понятие о методах интегрирования
- •Выбор шага симуляции и метода интегрирования
- •Каскадные алгебраические петли
- •Каскодные алгебраические петли
- •Введение в технологию мультидоменного физического моделирования с применением ненаправленных графов
- •Принципы построения графа схемы физической принципиальной
- •Элементы ненаправленного графа
- •Пассивные элементы ненаправленного графа (потребители энергии)
- •Активные элементы ненаправленного графа (источники энергии)
- •Узлы ненаправленного графа
- •Рекомендации к использованию библиотеки элементов
- •Об альтернативном построении графа схемы физической принципиальной
- •Основы построения моделей на базе гибрида из направленных и ненаправленных графов при мультидоменном физическом моделировании
- •Связывание направленных и ненаправленных графов. Особенности условных графических обозначений пограничных элементов
- •Ситуации, требующие соблюдения условно-положительного направления тока энергетической материи для пассивных rlc-элементов
- •Понятие о датчике потенциала – w-элементе
- •Пример гибридно-графовой модели транзисторного усилителя с элементами инкапсуляции графов
- •Обзор методов анализа моделей, систем и сигналов
- •Идентификация моделей
- •Символьный анализ математического описания моделей
- •Частотный анализ моделей и систем
- •Литература
- •Обзор архитектурного построения программ математического моделирования динамических систем Введение
- •Модульная структура программ математического моделирования динамических систем
- •Архитектура математического ядра моделирующих программ с поточной моделью управления
- •Графический интерфейс программ математического моделирования динамических систем
- •Шлюз Visio2SimKernel
- •Xml хранилище модели
- •Литература
- •Что же с тоэ? или о структурном кризисе в методике преподавания блока дисциплин связанных с расчетом цепей преобразования энергий
- •Уровни сложности задач расчета цепей преобразования энергий
- •О том, как программы мультидоменного математического моделирования динамических систем "выкинули на помойку" учебники по теоретическим основам цепей
- •Сценарий изменения методики преподавания "Теоретических основ цепей" и обзор затруднений
Xml хранилище модели
Анализ графических примитивов и правил, используемых для выполнения рисунков блок-схем, позволяет выявить ряд объектов и принадлежащих им атрибутов, которые требуется сохранять в файле модели. Отношения между объектами демонстрирует показанная на рис. 4 схема данных. Очевидно, что для поддержания подобной информационной структуры требуется реляционная СУБД с мощными механизмами масштабирования, поиска, сортировки, обеспечения целостности данных и сохранения.
Рис.
4. Схема данных хранилища модели
К большому сожалению разработчики моделирующих программ предпочитают реализовывать собственные СУБД. Судя по функционированию программ, для большинства эта задача оказывается сложной. Вторым досадным моментом является несовместимость хранилищ (рабочих файлов) разных производителей и невозможность их непосредственного восприятия человеком. Как было упомянуто ранее, проблему может снять бесплатный движок реляционной базы данных фирмы Microsoft – COM-сервер msxml*.dll [7], последние версии которого включены в платформу .NET.
Если ориентироваться на Visio, то данный пакет уже использует этот движок для сохранения рисунков. Однако схема данных хранилища объектов Visio отличается от представленной на рис. 4. Это означает, что она не будет оптимальной (речь о нормализации базы данных) для хранения моделей и, в частности, блок-схем. Следует так же отметить, что схема данных для хранения объектов направленного графа (блок-схемы) не подойдет для хранения объектов ненаправленного графа (схемы физической принципиальной). Но различия не существенны, поэтому последнюю не рассматриваем. Более того, при использовании хранилищ с XML-разметкой, производители моделирующих программ могут придерживаться собственных схем данных – это не ограничит пользователя. Таже СУБД предоставляет механизмы XSLT-трансформаций, позволяющие без привлечения производителей переформатировать рабочие файлы одной моделирующей программы (их структуру и синтаксис) в рабочие файлы другой программы.
Одна из возможных XML-схем хранилища направленного графа (блок-схемы) представлена в виде листинга 4 (атрибуты не показаны). Большинство реляционных отношений схемы данных (рис. 4) кодируется инкапсуляцией описания соответствующих объектов внутри тегов объектов-владельцев. Лишь отношение между таблицей входов и таблицей связей задается парными атрибутами тегов <input/> и <wire/>. При отрисовке блок-схем широко используется механизм иерархической инкапсуляции повторяющегося фрагмента модели в одном составном блоке. В хранилище такие блоки имеют тег <space/>. Принцип описания инкапсуляции можно отследить по положению тегов <block/>.
Листинг 4
<!-- XML-схема хранилища направленного графа (рисунка блок-схемы) -->
<!-- Created by ModelStoreGate.WSC.1.00 -->
<directed_bond_graph>
<block>
<space>
<block>...</block>
<block>...</block>
...
<input />
...
<output>
<wire />
...
</output>
...
</space>
<param />
...
<input />
...
<output>
<wire />
...
</output>
...
<model>
<name />
<simproperties />
<autor />
<data />
<description />
<ico />
<library />
</model>
</block>
</directed_bond_graph>
Для создания хранилища и записи его на диск под управлением СУБД msxml*.dll требуется промежуточный COM-сервер, который допустимо написать на скриптах VBScript или JScript [6], но лучше на VB. Листинг 5 демонстрирует порядок использования объекта ModelStoreGate.WSC из этого сервера для экспорта блок-схемы. Сравнение листингов 2 и 5 позволяет выявить их подобие, из которого следует возможность использования шлюза Visio2SimKernel не только для программирования математического ядра, но и для экспорта рисунка блок-схемы в рабочий файл модели той или иной моделирующей программы.
Листинг 5
/* ************************* Head ***************************** */
// Определяем имя рабочего файла блок-схемы
NameMakingFile = "MDL_01c.XML";
// Создаём из COM-сервера объект для работы с хранилищем
var Store = new ActiveXObject("ModelStoreGate.WSC");
Store.reConnectToLibrary("1stSim_Lib_V2b.xml");
Store.ModelName = "K/(1+Ts) on SUB_1/S";
Store.ModelTimeStart = 0;
Store.ModelTimeStep = 0.01;
Store.ModelTimeEnd = 1;
Store.ModelSimMode = 0;
Store.Autor = "Nikolay Klinachyov";
Store.Date = "10.11.2003";
Store.Description = "Модель апериодического звена "
+ "на субмодели дискретного квазианалога интегратора";
Store.Ico = "apper.ico";
// Создаем корневой составной блок
// Определяем указатель на субобласть составного блока
rtB = Store.addBlock("L001", null);
/* ************************* Begin **************************** */
// Создаем блоки внутри корневого составного блока
Store.addBlock("L701", rtB); // 1(t-dT)
Store.addBlock("L101", rtB); // summingJunction
Store.addBlock("L100", rtB); // gain
Store.addModel("SUB_1S.XML", rtB); // 1/S: 6+1 блок
Store.addBlock("L800", rtB); // export
// Добавляем дополнительные входы и выходы блокам
// Store.addInput(2);
// Store.addOutput(0);
// Устанавливаем параметры блоков и начальные условия
Store.setParam( 1, 1, 1.0);
Store.setParam( 1, 2, 0.05);
Store.setParam( 2, 2, -1.0);
Store.setParam( 3, 1, 4.0);
// Создаем связи между блоками (схему передачи аргументов)
Store.addWire( 1, 1, 1, 2);
Store.addWire( 2, 1, 1, 3);
Store.addWire( 3, 1, 1, 4);
Store.addWire( 4, 1, 2, 2);
Store.addWire( 2, 1, 1,11);
Store.addWire( 4, 1, 2,11);
/* ************************* End ****************************** */
// Сохраняем хранилище в файле
Store.save( NameMakingFile );
// WScript.Echo("File " + NameMakingFile + " successfully created");
// Store.visualizationInMSIE( NameMakingFile );
Фактически, объект ModelStoreGate.WSC отвечает за трансформацию линейного потока команд в иерархическое хранилище. Безусловно, при считывании рабочего файла в целях визуализации редактором векторной графики или же для прямого программирования математического ядра требуется обратное преобразование. Оно может быть выполнено одной процедурой с соответствующими параметрами, примером которой является командный скрипт XML2SimKernelGate.WSF см. рис. 2.
Резюме
В статье описана модульная структура программ математического моделирования динамических систем. К основными компонентам отнесены: редактор векторной графики, СУБД, математическое ядро, серверы визуализации и Online-воздействий.
Представлен обзор программных решений, которые, с высокой степенью вероятности, положены в основу математических ядер моделирующих программ с поточной моделью управления. Предпринята попытка сформировать пользовательский спрос на математические ядра выполненные в виде COM-серверов.
Продемонстрирована возможность интеграции математических ядер разных производителей с редактором векторной графики Visio. Указано на неустойчивость рынка моделирующих программ, по причине наличия у корпорации Microsoft трех из четырех технологий, необходимых для выхода на этот рынок и его захвата.
Сформулированы задачи, которые должны решать модули стыковки основных компонент программ математического моделирования динамических систем. Предложена схема данных и XML-схема хранилища направленного графа (рисунка блок-схемы), что может вызвать интерес у разработчиков.
