Введение


Мир технических систем разнообразен. Однако математика и физика выявили простые параллели в этом сложном мире. Можно выделить ряд энергетических доменов, которым принадлежат те или другие системы или их модули. Это электрический, магнитный, термальный, гидравлический, акустический, механический и ротационный домены. Так же существуют два фундаментальных постулата. Первый постулат гласит, что материя не может появиться ни откуда и не может исчезнуть в никуда. Второй постулат утверждает то же самое в отношении энергетического потенциала. Эти постулаты имеют частные формулировки для каждого энергетического домена. Например, для электрического домена это первый и второй законы Кирхгофа. Каждый из энергетических доменов характеризуется двумя физическими величинами первого и второго рода. В случае электрического домена - это электрические ток и напряжение соответственно. Эти парные физические величины, в каждом энергетическом домене, связаны между собой законом Ома в соответствующей формулировке (существуют: электрическое, магнитное, термальное, гидравлическое, акустическое, механическое и ротационное сопротивления). Так же следует отметить, что произведение физических величин первого и второго рода всегда есть мощность.
Представленная система параллелей позволяет понять, что математическое описание процессов движения координат систем принадлежащих разным энергетическим доменам подобно, и может быть предметом изучения одной науки, которая называется "Теория систем автоматического регулирования". Более того, в последние годы, приобретен успешный опыт применения методов этой теории при решении задач управления в экономических, финансовых и других нетехнических системах.
Самоучитель по Flash-games тут


Введение в технологию мультидоменного физического моделирования с применением ненаправленных графов


Главной задачей, решаемой программами математического моделирования динамических систем, является симуляция движения их координат. Сегодня можно выделить два эволюционных этапа развития решателей этих программ. На первом этапе в программах появляется явный решатель. Это библиотека классических подпрограмм (функций), которые реализуют операцию интегрирования. Таким образом, используя дискретные квази-аналоги интеграторов, пользователь может решать дифференциальные уравнения. Лишь на втором этапе в моделирующих программах появляется неявный решатель. Это библиотека классических подпрограмм, которые предназначены для итерационного поиска корней алгебраических уравнений.
Если моделирующая программа может грамотно использовать неявный решатель, то из программы для моделирования систем автоматического регулирования она может перейти в разряд программ для мультидоменного моделирования физических систем, с применением схем физических принципиальных (например, электрических).
Основу представляемой технологии моделирования составляют модели девяти примитивов, которые используются при составлении схем замещений. Упомянутым примитивам (моделям) присвоены условные графические обозначения, заимствованные из схем электрических принципиальных, но суть моделей распространяется на любой из семи энергетических доменов: электрический, магнитный, тепловой, гидравлический, акустический, механический и ротационный.


Цель работы


Приобретение навыков работы с моделирующими программными пакетам VisSim и Electronics Workbench. Ознакомление с главными этапами моделирования. Определение общих методов представления результатов. Выяснение сути задания параметров моделирования и начальных условий состояния системы.


Цель работы


Исследование взаимосвязей между параметрами типовых динамических звеньев и их характеристиками. Идентификация реальных технических устройств - схем на операционных усилителях с типовыми звеньями (т.е. с математическим описанием). Приобретение навыков использования типовых возмущающих воздействий и инструментов частотного анализа для исследования систем.


Цель работы


Приобретение навыков использования критериев устойчивости Михайлова и Найквиста. Исследование влияний параметров систем на их устойчивость. Изучение методики применения D-разбиения.
Введение в цифровую фотографию тут


Цель работы


Ознакомление с основными группами критериев качества (оценивающими точность, устойчивость, быстродействие и обобщенные свойства САР). Изучение методики использования интегральных оценок качества при исследовании ошибок систем в типовых режимах движения. Приобретение навыков оценки качества по переходной характеристике и по АЧХ замкнутой системы.
Противостояние форматов DVD-R-RW и DVD+RW тут


Цель работы


Освоение основных методов повышения точности САР: 1) увеличения коэффициента усиления разомкнутой цепи, 2) регулирования по производным от ошибки с увеличением контурного коэффициента усиления, 3) повышения степени астатизма, 4) применения неединичных обратных связей или масштабирующих устройств на входе / выходе, 5) введения комбинированного управления.


Цель работы


Освоение основных методов повышения запаса устойчивости (коррекции) САР: 1)демпфирования с подавлением высоких частот, 2) демпфирования с подавлением средних частот, 3) демпфирования с подавлением низких частот. Приобретение навыков решения типовых задач коррекции схем на операционных усилителях. Ознакомление с основными видами корректирующих обратных связей: 1) гибкими ООС, 2) жесткими ООС, 3) положительными (изодромное звено на апериодическом звене).


Цель работы


Приобретение навыков использования метода логарифмических частотных характеристик и метода корневых годографов для синтеза САР.


Цель работы


Идентификация влияния временного запаздывания на устойчивость и точностные параметры систем. Ознакомление с различными моделями-аппроксиматорами звена временного запаздывания. Приобретение навыков обоснования применения моделей с допущениями.


Цель работы


Приобретение навыков составления программ для ЦВМ реализующих дискретные передаточные функции. Уяснение технических различий между непосредственным, последовательным и параллельным алгоритмами программной реализации дискретных фильтров.


DT = sampleRate


Частота дискретизации фильтра. Определяется как обратная величина от периода времени dT, через который цифровая вычислительная машина способна выполнять подпрограмму, рассчитывающую соответствующее разностное уравнение (4)


Объектно-ориентированная разработка программ



1.1. Объектно-ориентированная разработка программ

Объектно-ориентированная разработка программного обеспечения связана с применением объектно-ориентированных моделей при разработке программных систем и их компонентов. Говоря об объектно-ориентированной разработке, я имею в виду:
  • объектно-ориентированные методологии (технологии) разработки программных систем;
  • инструментальные средства, поддерживающие эти технологии.
Объектно-ориентированная разработка может начаться на самом первом этапе жизненного цикла; она не связана с языком программирования, на котором предполагается реализовать разрабатываемую программную систему: этот язык может и не быть объектно-ориентированным. На этапе разработки объекты - это некоторые формальные конструкции (например, прямоугольники с закругленными углами, с помощью которых они изображаются на схемах), никак пока не связанные с их будущей реализацией на одном из языков программирования. Объектно-ориентированная разработка программного обеспечения связана с применением объектно-ориентированных методологий (технологий). Обычно эти объектно-ориентированные методологии поддерживаются инструментальными программными средствами, но и без таких средств они полезны, так как позволяют хорошо понять различные аспекты и свойства разрабатываемой программной системы, что в последующем существенно облегчает ее реализацию, тестирование, сопровождение, разработку новых версий и более существенную модификацию. Различные объектно-ориентированные методологии разработки программного обеспечения рассматриваются в разделах 2, 3 и 4. Наиболее подробно рассматривается объектно-ориентированная методология OMT (Object Modeling Technique) (разделы 2 и 3), которая поддерживает две первые стадии жизненного цикла программных систем. Эта методология выбрана для демонстрации объектно-ориентированного подхода, потому что является одной из наиболее продвинутых и популярных объектно-ориентированных методологий. Более того, ее графический язык (система обозначений для диаграмм) получил достаточно широкое распространение и используется в некоторых других объектно-ориентированных методологиях, а также в большинстве публикаций по объектно-ориентированным методологиям. Методология OMT поддерживается системой Paradigm+, одной из наиболее известных инструментальных систем объектно-ориентированной разработки. Будут рассмотрены и некоторые другие объектно-ориентированные методологии разработки программных систем в сравнении с методологией OMT (раздел 4):
  • SA/SD (Structured Analysis/Structured Design);
  • JSD (Jackson Structured Development);
  • OSA (Object-Oriented System Analysis).


Объектно-ориентированные языки программирования



1.2. Объектно-ориентированные языки программирования

Вопросы реализации программного обеспечения, разработка которого велась с применением одной из объектно-ориентированных методологий, рассматриваются в разделе 5. Реализация программного обеспечения связана с использованием одного из языков программирования. Показано, что наиболее удобными для реализации программных систем, разработанных в рамках объектно-ориентированного подхода, являются объектно-ориентированные языки программирования, хотя возможна реализация и на обычных (не объектно-ориентированных) языках (например, на языке C и на языке Fortran). Объектно-ориентированные языки программирования пользуются в последнее время большой популярностью среди программистов, так как они позволяют использовать преимущества объектно-ориентированного подхода не только на этапах проектирования и конструирования программных систем, но и на этапах их реализации, тестирования и сопровождения. Первый объектно-ориентированный язык программирования Simula 67 был разработан в конце 60-х годов в Норвегии. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время. Однако современники (программисты 60-х годов) оказались не готовы воспринять ценности языка Simula 67, и он не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran). Прохладному отношению к языку Simula 67 способствовало и то обстоятельство, что он был реализован как интерпретируемый (а не компилируемый) язык, что было совершенно неприемлемым в 60-е годы, так как интерпретация связана со снижением эффективности (скорости выполнения) программ. Но достоинства языка Simula 67 были замечены некоторыми программистами, и в 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования: например, языки CLU, Alphard, Concurrent Pascal и др. Эти языки так и остались экспериментальными, но в результате их исследования были разработаны современные объектно-ориентированные языки программирования: C++, Smalltalk, Eiffel и др. Наиболее распространенным объектно-ориентированным языком программирования безусловно является C++. Свободно распространяемые коммерческие системы программирования C++ существуют практически на любой платформе. Широко известна свободно распространяемая система программирования G++, которая дает возможность всем желающим разобрать достаточно хорошо и подробно прокомментированный исходный текст одного из образцовых компиляторов языка C++. Завершается работа по стандартизации языка C++: последний Draft стандарта C++ выпущен в июне 1995 г. (он доступен по Internet). Разработка новых объектно-ориентированных языков программирования продолжается. С 1995 года стал широко распространяться новый объектно-ориентированный язык программирования Java, ориентированный на сети компьютеров и, прежде всего, на Internet. Синтаксис этого языка напоминает синтаксис языка C++, однако эти языки имеют мало общего. Java интерпретируемый язык: для него определены внутреннее представление (bytecode) и интерпретатор этого представления, которые уже сейчас реализованы на большинстве платформ. Интерпретатор упрощает отладку программ, написанных на языке Java, обеспечивает их переносимость на новые платформы и адаптируемость к новым окружениям. Он позволяет исключить влияние программ, написанных на языке Java, на другие программы и файлы, имеющиеся на новой платформе, и тем самым обеспечить безопасность при выполнении этих программ. Эти свойства языка Java позволяют использовать его как основной язык программирования для программ, распространяемых по сетям (в частности, по сети Internet).


Сквозной пример



1.3. Сквозной пример

В качестве сквозного примера будет рассмотрена задача о разработке программного обеспечения банковской сети (рисунок 1.3). В состав этой сети входит центральный компьютер, принадлежащий объединению банков (консорциуму), компьютеры банков, к которым непосредственно (минуя центральный компьютер) присоединены кассовые терминалы, обслуживаемые кассирами, и сеть терминалов для клиентов банка (банкоматов).


Основные понятия объектно-ориентированного подхода



1. Основные понятия объектно-ориентированного подхода

Объектно-ориентированный подход основан на систематическом использовании моделей для языково-независимой разработки программной системы, на основе из ее прагматики. Последний термин нуждается в пояснении. Прагматика определяется целью разработки программной системы: для обслуживания клиентов банка, для управления работой аэропорта, для обслуживания чемпионата мира по футболу и т.п. В формулировке цели участвуют предметы и понятия реального мира, имеющие отношение к разрабатываемой программной системе (см. рисунок 1.1). При объектно-ориентированном подходе эти предметы и понятия заменяются их моделями, т.е. определенными формальными конструкциями, представляющими их в программной системе.


Предварительное домашнее задание


2.1.Составить уравнения и вывести передаточные функции W(p) для всех блоков файла zvenya.vsm. Сравнить полученные передаточные функции с типовыми, идентифицировать блоки по названиям.


Предварительное домашнее задание


2.1.Составить передаточные функции W(p) для всех блоков структурных схем рабочих файлов.


Предварительное домашнее задание


Приравнивая в структурной схеме (файл err_ast3.vsm) коэффициенты усиления (KI1 & KI2 & KI3), или (KI2 & KI3) или (KI3) к нулю, можно получить модели САР с астатизмом от нулевого до третьего порядков (считая исходную).
2.1. Начальные значения коэффициентов усиления установить в соответствии с вариантом (см. табл.). Вывести передаточные функции по ошибке Фx(p) для четырех моделей САР при астатизме от нулевого до третьего порядка.
Вариант 1 2 3 4 5
KI1; KI2; KI3 25; 50; 60 30; 50; 70 35; 50; 80 45; 50; 90 50; 50; 100
2.2. Для тех же моделей вывести формулы расчёта первых четырёх коэффициентов ошибки и определить их числовые значения.
2.3. Описать суть интегральной и улучшенной интегральной оценок качества.
2.4. Составить функцию цены из блоков пакета VisSim, подсчитывающую количество переходов через ноль ошибки САР в переходном процессе.


Предварительное домашнее задание


2.1. Дано пять систем. Каждая обладает совокупностью уникальных свойств (см. табл.). В работе изучается пять методов повышения точности САР. Выбрать наиболее эффективный или единственно возможный метод повышения точности для каждой САР. Выбор обосновать.
Свойства САР (состоящих из минимально фазовых звеньев)
Метод,
файл
1 САР статическая. Контурный коэффициент мал (<10). Объект и чувствительный элемент являются одним конструктивным элементом (нет возможности изменить вид ЛАЧХ прямого канала)
ИЛИ: ЛАЧХ разомкнутой системы в области низких частот имеет наклон -20 или -40 дб/дек. При этом либо в измерительном канале (на входе, вне контура регулирования) неединичный коэффициент передачи, либо в цепи обратной связи установлен делитель сигнала
2 Объект моделируется двумя звеньями: колебательным (с большим подавлением) и апериодическим. Сопрягающая частота апериодического звена на две декады меньше резонансной частоты колебательного звена
3 ЛАЧХ разомкнутой системы имеет вид 20-0-20-40 (участок с нулевым наклоном не продолжителен). Предъявлены требования: минимально возможное перерегулирование, и малые собственные шумы САР. В точке единичного усиления фаза, уменьшаясь, пересекает значение -90 градусов с небольшим приращением
4 Объект моделируется двумя звеньями: колебательным (с большим подавлением) и апериодическим. Сопрягающая частота апериодического звена на две декады больше резонансной частоты колебательного звена
5 ЛАЧХ разомкнутой системы в области низких частот имеет наклон 0 дб/дек. Контурный коэффициент объекта не стабилен в той же полосе частот (в области низких частот); или предъявлено требование равенства нулю первой или первой и второй составляющих ошибки


Предварительное домашнее задание


2.1. Дано четыре системы. Каждая обладает совокупностью уникальных свойств (см. табл.). Подобрать наиболее оптимальное или единственно возможное, последовательное корректирующее звено для каждой САР (апериодическое, пассивное дифференцирующее, пассивное интегрирующее, пассивное интегро-дифференцирующее). Выбор обосновать.
Свойства САР (состоящих из минимально фазовых звеньев)
метод,
звено,
файл
1 ЛФЧХ разомкнутой системы чуть ниже частоты среза (в пределах декады) меняет свое значение от -90 до -270 градусов. Допустима минимально возможная потеря частотных свойств (площади ограниченной ЛАЧХ и осью частот)
2 ЛАЧХ разомкнутой САР соответствует трехкаскадному операционному усилителю без внутренней коррекции (звено с большим коэффициентом усиления и три апериодических звена с близкими сопрягающими частотами), и пересекает ось частот с наклоном -60 дб/дек. Допустима существенная потеря полосы пропускания
3 ЛФЧХ системы вплоть до частоты среза приобретает значения около -180 градусов. Для исключения условий, при которых возможно появление неустойчивости в большом, дополнительные отрицательные фазовые сдвиги не допустимы
4 Вблизи частоты среза и ниже по частоте более декады наклон ЛАЧХ разомкнутой системы составляет -40 дб/дек. Допустима минимально возможная потеря частотных свойств
2.2. Составить структурную схему и построить ЛАЧХ & ЛФЧХ для передаточной функции корректирующего звена: W(p)=1/(1+T1p)+(0,1)+T2p/(1+T2p); T1=0,1; T2=0,0001. Определиться с его названием. Разобраться, какие изменения в структурной схеме звена надо сделать, чтобы получить: апериодическое, или пассивное дифференцирующее или пассивное интегрирующее звено.


Предварительное домашнее задание


2.1.В соответствии с вариантом (см. табл.) построить располагаемую ЛАЧХ объекта регулирования. Учитывая требования к точности и к устойчивости, нанести на график низкочастотную и высокочастотную запретные области.
Параметры Значения
Вариант
Располагаемая передаточная функция
объекта
Wo(p) = 100 1
w1.vsm
1+0,33p p2/30002+2*0,04p/3000+1
1, 2
Wo(p) = 100 40 1
w2.vsm p
1+0,0033p p2/30002+2*0,04p/3000+1
3, 4 Требования
к точности Vm =10 ед./с; Em = 100 ед./с2; Xm =0,01 ед. 1, 3 wK = 0,3 рад/с; Dj = 0,573e-3 град; d = 9e-6 % 2, 4 к устойчивости M < 1,16 1,2,3,4 2.2. Определить передаточные функции последовательных (возможно последовательно-параллельных) корректирующих устройств, которые рекомендуется разбить на типовые звенья. Составить структурную схему системы с устройствами коррекции.


Предварительное домашнее задание


2.1.Рассчитать критическое запаздывание для системы (файл e^(-pt)2.vsm) (по вариантам).
2.2. Построить асимптотические ЛАЧХ & ЛФЧХ для звена с передаточной функцией W(p)=(1-Tp)/(1+Tp).
Деньги, банки, кредит тут


Предварительное домашнее задание


2.1.Выбрать язык программирования для выполнения лабораторной работы - Pascal или Си++. Ознакомится с технологией создания внешних dll-моделей для моделирующей программы VisSim (см. прил. 1, 2).
2.2. Адаптировать предложенный шаблон программы для реализации рекурсивного цифрового фильтра второго порядка. По умолчанию можно выбрать произвольные значения для коэффициентов фильтра, но они должны быть доступны для изменения пользователем. Фильтр должен иметь дополнительный вход для сигнала синхронизации выполнения программы. Если номер варианта 1, 2, 5, 6, ..., то нужно воспользоваться непосредственным алгоритмом с одним буфером; если - 3, 4, 7, 8, ..., то тем же алгоритмом, но с двумя буферами (см. Рисунок 1, 2).


Содержание работы


2.1.Выяснить порядок запуска используемых программных пакетов VisSim и Electronics Workbench.
2.2. Просмотреть демонстрацию работы программы VisSim (файл csd_new.scm - control system design demo). Выявить а) назначение программы, б) основные этапы работы с программой.
2.3. Запустить программу VisSim. Ознакомиться с содержанием меню. Загрузить файл rlc.vsm с моделью "RLC"-цепи и изучить модель. Записать уравнение модели. Определить параметры моделируемых элементов и начальные условия в схеме. Изменить начальные условия и параметры модели по собственному усмотрению.
2.4. Запустить программу Electronics Workbench. Ознакомиться с содержанием меню. Составить "RLC"-цепь получить переходный процесс подобный полученному в пакете VisSim.
2.5. По вариантам (см. табл.) спроектировать модели источников периодического сигнала в пакете VisSim. Измерить и при необходимости компенсировать постоянную составляющую в сигнале. Использовать блок plot для осциллографирования.
Вариант Форма сигнала
Частота, кГц Амплитуда, ед.
1 Прямоугольный скважность 1:2 10 10
2 Треугольный 20 20
3 Линейно нарастающий 30 30
4 Нарастающий по параболе 40 40
5 Модуль синусоиды 50 50


Множественное наследование



2.1.10. Множественное наследование

Множественное наследование позволяет классу иметь более одного суперкласса, наследуя свойства (атрибуты и операции) всех своих суперклассов. Класс, имеющий несколько суперклассов, называется объединенным классом. Свойства класса-предка, встречающегося более, чем один раз, в графе наследования, наследуются только в одном экземпляре. Конфликты между параллельными определениями порождают двусмысленности, которые должны разрешаться во время реализации. На практике следует избегать таких двусмысленностей или плохого понимания даже в тех случаях, когда конкретный язык программирования, выбранный для реализации системы, предоставляет возможность их разрешения, используя приоритеты или какие-либо другие средства. Пример множественного наследования приведен на рисунке 2.20, на котором рассмотрена классификация транспортных средств. Класс транспортное средство имеет два подкласса сухопутное_ТС и водное_ТС (зачерненный треугольник, используемый для обозначения наследования, означает, что подклассы имеют непустое пересечение). Класс амфибии имеет два суперкласса сухопутное_ТС и водное_ТС, наследуя все свойства (атрибуты и операции) как класса сухопутное_ТС, так и класса водное_ТС.


Связь объектов с базой данных



2.1.11. Связь объектов с базой данных

В объектно-ориентированном проектировании мы имеем дело с множествами взаимосвязанных объектов. Каждый объект может рассматриваться как переменная или константа структурного типа (при таком рассмотрении методы, описываемые в объекте, трактуются как адреса функций, которые разрешено применять к этому объекту). Следовательно, множество объектов - это множество взаимосвязанных данных, т.е. нечто очень похожее на базу данных. Поэтому применение понятий баз данных часто оказывается полезным при объектно-ориентированном анализе и объектно-ориентированном проектировании прикладных программных систем. Рассмотрим на примерах некоторые особенности применения указанных понятий. Метаданные Метаданными называются данные, описывающие другие данные. Например, определение класса - это метаданные, так как класс описывает другие данные - объекты этого класса. Модели являются метаданными, так как они описывают моделируемые объекты. Еще одним примером метаданных является абстрактный класс (см. раздел 2.1.9). Определение абстрактного и конкретного классов может быть представлено с помощью объектной модели, изображенной на рисунке 2.25.


Объекты и классы



2.1.1. Объекты и классы

Объекты По определению будем называть объектом понятие, абстракцию или любую вещь с четко очерченными границами, имеющую смысл в контексте рассматриваемой прикладной проблемы. Введение объектов преследует две цели:
  • понимание прикладной задачи (проблемы);
  • введение основы для реализации на компьютере.
Примеры объектов: форточка, Банк "Империал", Петр Сидоров, дело № 7461, сберкнижка и т.д. Цель разработки объектной модели - описать объекты, составляющие в совокупности проектируемую систему, а также выявить и указать различные зависимости между объектами. Декомпозиция проблемы на объекты - творческий, плохо формализуемый процесс. Все объекты могут быть отличены один от другого: пусть у нас есть два яблока, имеющие одинаковый цвет, форму, вес и вкус; все равно это два яблока (а не одно), в чем легко убедиться, съев одно из них (другое останется). Между объектами можно установить отношение тождества: объекты, удовлетворяющие этому отношению, одинаковы (тождественны), как вышеупомянутые яблоки. В случае с яблоками иногда говорят о двух экземплярах объекта яблоко. Мы будем считать здесь, что объект и экземпляр объекта - это одно и то же. Классы Два яблока из предыдущего примера принадлежат одному и тому же классу объектов (именно с этим связана их одинаковость). Цвет, форма, вес и вкус яблока - это его атрибуты: совокупность атрибутов и их значений (например, красное, овальное, стограммовое, кисло-сладкое) характеризует объект. Все объекты одного и того же класса характеризуются одинаковыми наборами атрибутов. Однако объединение объектов в классы определяется не наборами атрибутов, а семантикой. Так, например, объекты конюшня и лошадь могут иметь одинаковые атрибуты: цена и возраст. При этом они могут относиться к одному классу, если рассматриваются в задаче просто как товар, либо к разным классам, что более естественно.


Атрибуты объектов



2.1.2. Атрибуты объектов

Атрибут - это значение, характеризующее объект в его классе. Примеры атрибутов: категория, баланс, кредит (атрибуты объектов класса счет); имя, возраст, вес (атрибуты объектов класса человек) и т.д. Среди атрибутов различаются постоянные атрибуты (константы) и переменные атрибуты. Постоянные атрибуты характеризуют объект в его классе (например, номер счета, категория, имя человека и т.п.). Текущие значения переменных атрибутов характеризуют текущее состояние объекта (например, баланс счета, возраст человека и т.п.); изменяя значения этих атрибутов, мы изменяем состояние объекта. Атрибуты перечисляются во второй части прямоугольника, изображающего класс (см. рисунок 2.1). Иногда указывается тип атрибутов (ведь каждый атрибут - это некоторое значение) и начальное значение переменных атрибутов (совокупность начальных значений этих атрибутов задает начальное состояние объекта). Следует отметить, что, говоря об объектах и их классах, мы не подразумеваем никакого объектно-ориентированного языка программирования. Это, в частности, выражается в том, что на данном этапе разработки программной системы следует рассматривать только такие атрибуты, которые имеют смысл в реальности (все атрибуты объектов класса счет - рисунок 2.1 - обладают этим свойством). Атрибуты связаны с особенностями общей реализации. Например, если известно, что будет использоваться база данных, в которой каждый объект имеет уникальный идентификатор, то включать этот идентификатор в число атрибутов объекта на данном этапе не следует. Дело в том, что, вводя такие атрибуты, мы ограничиваем возможности реализации системы. Так, вводя в качестве атрибута уникальный идентификатор объекта в базе данных, мы уже в самом начале проектирования отказываемся от использования СУБД, которые такой идентификатор не поддерживают.


Операции и методы



2.1.3. Операции и методы

Операция - это функция (или преобразование), которую можно применять к объектам данного класса. Примеры операций: проверить, снять, поместить (для объектов класса счет - рисунок 2.1), открыть_на_чтение, читать, закрыть (для объектов класса файл - рисунок 2.2) и т.п.


Зависимости между классами (объектами)



2.1.4. Зависимости между классами (объектами)

С каждым объектом связана структура данных, полями которой являются атрибуты этого объекта и указатели функций (фрагментов кода), реализующих операции этого объекта (отметим, что указатели функций в результате оптимизации кода обычно заменяются на обращения к этим функциям). Таким образом, объект - это некоторая структура данных, тип которой соответствует классу этого объекта. Между объектами можно устанавливать зависимости по данным. Эти зависимости выражают связи или отношения между классами указанных объектов. Примеры таких зависимостей изображены на рисунке 2.6 (первые две зависимости - бинарные, третья зависимость - тренарная). Зависимость изображается линией, соединяющей классы над которой надписано имя этой зависимости, или указаны роли объектов (классов) в этой зависимости (указание ролей - наиболее удобный способ идентификации зависимости).


Атрибуты зависимостей



2.1.5. Атрибуты зависимостей

Зависимости, как и классы, могут иметь атрибуты: например, при организации доступа пользователя к файлу разрешение_на_доступ является атрибутом зависимости доступен: см. рисунок 2.10, на котором атрибут зависимости обозначается прямоугольником, связанным дугой с прямой, изображающей зависимость. Такое обозначение атрибутов зависимостей принято в технологии OMT. Отметим, что разрешение на доступ связано как с пользователем, так и с файлом, и не может быть атрибутом ни пользователя, ни файла в отдельности.


Имена ролей, квалификаторы



2.1.6. Имена ролей, квалификаторы

Роль определяет одну сторону зависимости. В бинарной зависимости определены две роли. Имя роли однозначно определяет одну сторону зависимости. Роли дают возможность рассматривать бинарную зависимость как связь между объектом и множеством зависимых объектов: каждая роль является обозначением объекта или множества объектов, связанных зависимостью с объектом на другом конце зависимости. Имя роли можно рассматривать как производный атрибут, множеством значений которого является множество связанных с этой ролью объектов. В бинарной зависимости пара имен ролей может использоваться для идентификации этой зависимости. На рисунке 2.11 имена начальник и сотрудник в зависимости руководит - это имена ролей; как уже было отмечено, эту зависимость удобнее назвать начальник-сотрудник. Еще один пример имен ролей показан на рисунке 2.13.


Агрегация



2.1.7. Агрегация

Агрегация - это зависимость между классом составных объектов и классами, представляющими компоненты этих объектов (отношение "целое"-"часть"). Агрегация обозначается ромбиком: на рисунке 2.15 приведен пример агрегации; этот пример интерпретируется следующим образом: документ состоит из нескольких (нуля, или более) абзацев; каждый абзац состоит из нескольких (нуля, или более) предложений.


Обобщение и наследование



2.1.8. Обобщение и наследование

Обобщение и наследование позволяют выявить аналогии между различными классами объектов, определяют многоуровневую классификацию объектов. Так, в графических системах могут существовать классы, определяющие обрисовку различных геометрических фигур: точек, линий (прямых, дуг окружностей и кривых, определяемых сплайнами), многоугольников, кругов и т.п. (рисунок 2.17). Основы фотографии тут


Абстрактные классы



2.1.9. Абстрактные классы

Рассмотрим пример, представленный на рисунке 2.19. В нем рассмотрена операция подсчет выплат для различных категорий служащих фирмы: временных служащих с почасовой оплатой труда, постоянных служащих с понедельной оплатой труда и руководящих работников фирмы с помесячной оплатой. Каждая из категорий служащих представлена своим подклассом класса служащий, от которого они наследуют атрибут годовой_доход и операцию подсчет_выплат. Но подсчет выплат для каждой категории служащих производится по-своему, с учетом значений их собственных (неунаследованных) атрибутов; поэтому в каждом из подклассов операция подсчет_выплат переопределяется. Следовательно, в суперклассе операция подсчет_выплат может быть определена произвольным образом, так как она никогда не будет выполняться. В то же время сигнатуры всех операций подсчет_выплат в суперклассе и в подклассах должны быть одинаковыми (иначе это будут разные операции). Из сказанного следует, что в суперклассе можно задать только сигнатуру операции подсчет_выплат, это обеспечит одинаковые сигнатуры этой операции во всех подклассах. Методы, реализующие операцию подсчет_выплат, достаточно определить только в подклассах класса служащий. Суперкласс, в котором заданы только атрибуты и сигнатуры операций, но не определены методы, реализующие его операции, называется абстрактным классом. Методы, реализующие операции абстрактного класса, определяются в его подклассах, которые называются конкретными классами.


Объектная модель системы



2.1. Объектная модель системы

Объектная модель описывает структуру объектов, составляющих систему, их атрибуты, операции, взаимосвязи с другими объектами. В объектной модели должны быть отражены те понятия и объекты реального мира, которые важны для разрабатываемой системы. В объектной модели отражается прежде всего прагматика разрабатываемой системы, что выражается в использовании терминологии прикладной области, связанной с использованием разрабатываемой системы.


Определение классов



2.2.1. Определение классов

Анализ внешних требований к проектируемой прикладной системе позволяет определить объекты и классы объектов, связанные с прикладной проблемой, которую должна решать эта система. Все классы должны быть осмыслены в рассматриваемой прикладной области; классов, связанных с компьютерной реализацией, как например список, стэк и т.п. на этом этапе вводить не следует. Начать нужно с выделения возможных классов из письменной постановки прикладной задачи (технического задания и другой документации, предоставленной заказчиком). Следует иметь в виду, что это очень сложный и ответственный этап разработки, так как от него во многом зависит дальнейшая судьба проекта. При определении возможных классов нужно постараться выделить как можно больше классов, выписывая имя каждого класса, который приходит на ум. В частности, каждому существительному, встречающемуся в предварительной постановке задачи, может соответствовать класс. Поэтому при выделении возможных классов каждому такому существительному обычно сопоставляется возможный класс. Далее список возможных классов должен быть проанализирован с целью исключения из него ненужных классов. Такими классами являются:
  • избыточные классы: если два или несколько классов выражают одинаковую информацию, следует сохранить только один из них;
  • нерелевантные (не имеющие прямого отношения к проблеме) классы: для каждого имени возможного класса оценивается, насколько он необходим в будущей системе (оценить это часто бывает весьма непросто); нерелевантные классы исключаются;
  • нечетко определенные (с точки зрения рассматриваемой проблемы) классы (см. примеры таких классов в п. 2.3.1);
  • атрибуты: некоторым существительным больше соответствуют не классы, а атрибуты; такие существительные, как правило, описывают свойства объектов (например, имя, возраст, вес, адрес и т.п.);
  • операции: некоторым существительным больше соответствуют не классы, а имена операций (например, телефонный_вызов вряд ли означает какой-либо класс);
  • роли: некоторые существительные определяют имена ролей в объектной модели (например, владелец, водитель, начальник, служащий; все эти имена связаны с ролями в различных зависимостях объектов класса человек);
  • реализационные конструкции: именам, больше связанным с программированием и компьютерной аппаратурой, не следует на данном этапе сопоставлять классов, так как они не отражают особенностей проектируемой прикладной системы; примеры таких имен: подпрограмма, процесс, алгоритм, прерывание и т.п.
После исключения имен всех ненужных (лишних) возможных классов будет получен предварительный список классов, составляющих проектируемую систему.


Подготовка словаря данных



2.2.2. Подготовка словаря данных

Отдельные слова имеют слишком много интерпретаций. Поэтому необходимо в самом начале проектирования подготовить словарь данных, содержащий четкие и недвусмысленные определения всех объектов (классов), атрибутов, операций, ролей и других сущностей, рассматриваемых в проекте. Без такого словаря обсуждение проекта с коллегами по разработке и заказчиками системы не имеет смысла, так как каждый может по-своему интерпретировать обсуждаемые термины. Пример такого словаря см. в п. 2.3.2.


Определение зависимостей



2.2.3. Определение зависимостей

На следующем этапе построения объектной модели определяются зависимости между классами. Прежде всего из классов исключаются атрибуты, являющиеся явными ссылками на другие классы; такие атрибуты заменяются зависимостями. Смысл такой замены в том, что зависимости представляют собой абстракцию того же уровня, что и классы, и потому не оказывают непосредственного влияния на будущую реализацию (ссылка на класс лишь один из способов реализации зависимостей). Аналогично тому, как имена возможных классов получались из существительных, встречающихся в предварительной постановке прикладной задачи, имена возможных зависимостей могут быть получены из глаголов или глагольных оборотов, встречающихся в указанном документе. Так обычно описываются: физическое положение (следует_за, является_частью, содержится_в), направленное действие (приводит_в_движение), общение (разговаривает_с), принадлежность (имеет, является_частью) и т.п. Пример выделения явных и неявных глагольных оборотов из предварительной постановки конкретной прикладной задачи рассмотрен в п. 2.3.3. Затем следует убрать ненужные или неправильные зависимости, используя следующие критерии:
  • зависимости между исключенными классами должны быть исключены, либо переформулированы в терминах оставшихся классов (см. пример в п. 2.3.3);
  • нерелевантные зависимости и зависимости, связанные с реализацией, должны быть исключены (см. пример в п. 2.3.3);
  • действия: зависимость должна описывать структурные свойства прикладной области, а не малосущественные события (см. примеры в п. 2.3.3);
  • тренарные зависимости: большую часть зависимостей между тремя или большим числом классов можно разложить на несколько бинарных зависимостей, используя в случае необходимости квалификаторы (см. примеры в п. 2.3.3); в некоторых (очень редких) случаях такое разложение осуществить не удается; например, тренарная зависимость "Профессор читает курс в аудитории 628" не может быть разложена на бинарные без потери информации;
  • производные зависимости: нужно исключать зависимости, которые можно выразить через другие зависимости, так как они избыточны (см. пример в п. 2.3.3); при исключении избыточных (производных) зависимостей нужно быть особенно осторожным, так как не все дублирующие одна другую зависимости между классами избыточны; в некоторых случаях другие зависимости позволяют установить только существование еще одной производной зависимости, но не позволяют установить кратность этой зависимости; например, в случае, представленном на рисунке 2.36, фирма имеет много служащих и владеет многими компьютерами; каждому служащему предоставлено для персонального использования несколько компьютеров, кроме того, имеются компьютеры общего пользования; кратность зависимости предоставлен_для_использования не может быть выведена из зависимостей служит и владеет; хотя производные зависимости и не добавляют новой информации, они часто бывают удобны; в этих случаях их можно указывать на диаграмме, пометив косой чертой.


Уточнение атрибутов



2.2.4. Уточнение атрибутов

На следующем этапе уточняется система атрибутов: корректируются атрибуты классов, вводятся, в случае необходимости, новые атрибуты. Атрибуты выражают свойства объектов рассматриваемого класса, либо определяют их текущее состояние. Атрибуты обычно соответствуют существительным; например цвет_автомобиля (свойство объекта), позиция_курсора (состояние объекта). Атрибуты, как правило, слабо влияют на структуру объектной модели. Не следует стремиться определить как можно больше атрибутов: большое количество атрибутов усложняет модель, затрудняет понимание проблемы. Необходимо вводить только те атрибуты, которые имеют отношение к проектируемой прикладной системе, опуская случайные, малосущественные и производные атрибуты. Наряду с атрибутами объектов необходимо ввести и атрибуты зависимостей между классами (связей между объектами). При уточнении атрибутов руководствуются следующими критериями:
  • Замена атрибутов на объекты. Если наличие некоторой сущности важнее, чем ее значение, то это объект, если важнее значение, то это атрибут: например, начальник - это объект (неважно, кто именно начальник, главное, чтобы кто-то им был), зарплата - это атрибут (ее значение весьма существенно); город - всегда объект, хотя в некоторых случаях может показаться, что это атрибут (например, город как часть адреса фирмы); в тех случаях, когда нужно, чтобы город был атрибутом, следует определить зависимость (скажем, находится) между классами фирма и город.
  • Квалификаторы. Если значение атрибута зависит от конкретного контекста, его следует сделать квалификатором (см. примеры в п. 2.3.4).
  • Имена. Именам обычно лучше соответствуют квалификаторы, чем атрибуты объектов; во всех случаях, когда имя позволяет сделать выбор из объектов некоторого множества, его следует сделать квалификатором (см. примеры в п. 2.3.4).
  • Идентификаторы. Идентификаторы объектов связаны с их реализацией. На ранних стадиях проектирования их не следует рассматривать в качестве атрибутов.
  • Атрибуты связей. Если некоторое свойство характеризует не объект сам по себе, а его связь с другим объектом (объектами), то это атрибут связи, а не атрибут объекта.
  • Внутренние значения. Атрибуты, определяющие лишь внутреннее состояние объекта, незаметное вне объекта, следует исключить из рассмотрения.
  • Несущественные детали. Атрибуты, не влияющие на выполнение большей части операций, рекомендуется опустить.
История информационных технологий тут


Организация системы классов, используя наследование



2.2.5. Организация системы классов, используя наследование

Далее необходимо постараться найти суперклассы для введенных классов. Это полезно, так как проясняет структуру модели и облегчает последующую реализацию. Соответствующий пример рассмотрен в п. 2.3.5.


Дальнейшее исследование и усовершенствование модели



2.2.6. Дальнейшее исследование и усовершенствование модели

Лишь в очень редких случаях построенная объектная модель сразу же оказывается корректной. Модель должна быть исследована и отлажена. Некоторые ошибки могут быть найдены при исследовании модели без компьютера, другие - при ее интерпретации совместно с динамической и функциональной моделями на компьютере (эти модели строятся после того, как объектная модель уже построена). Здесь мы рассмотрим приемы бескомпьютерного поиска и исправления ошибок в объектной модели. В их основе лежат внешние признаки, по которым можно находить ошибки в модели; эти признаки могут быть объединены в следующие группы. Признаки пропущенного объекта (класса):
  • несимметричности связей и обобщений (наследований); для исправления ошибки необходимо добавить пропущенные классы;
  • несоответствие атрибутов и операций у класса; для исправления ошибки необходимо расщепить класс на несколько других классов, так чтобы атрибуты и операции новых классов соответствовали друг другу;
  • обнаружена операция, не имеющая удовлетворительного целевого класса; для исправления ошибки необходимо добавить пропущенный целевой класс;
  • обнаружено несколько зависимостей с одинаковыми именами и назначением; для исправления ошибки необходимо сделать обобщение и добавить пропущенный суперкласс.
Признаки ненужного (лишнего) класса:
  • нехватка атрибутов, операций и зависимостей у некоторого класса; для исправления ошибки необходимо подумать, не следует ли исключить такой класс.
Признаки пропущенных зависимостей:
  • отсутствуют пути доступа к операциям; для исправления ошибки необходимо добавить новые зависимости, обеспечивающие возможности обслуживания соответствующих запросов.
Признаки ненужных (лишних) зависимостей:
  • избыточная информация в зависимостях; для исправления ошибки необходимо исключить зависимости, не добавляющие новой информации, или пометить их как производные зависимости;
  • не хватает операций, пересекающих зависимость; для исправления ошибки необходимо подумать, не следует ли исключить такую зависимость.
Признаки неправильного размещения зависимостей:
  • имена ролей слишком широки или слишком узки для их классов; для исправления ошибки необходимо переместить зависимость вверх или вниз по иерархии классов.
Признаки неправильного размещения атрибутов:
  • нет необходимости доступа к объекту по значениям одного из его атрибутов; для исправления ошибки необходимо рассмотреть нужно ли ввести квалифицированную зависимость.
Примеры практического применения описанных признаков см. в п. 2.3.6.


Построение объектной модели



2.2. Построение объектной модели

Теперь у нас есть все необходимые понятия, чтобы описать процесс построения объектной модели. Этот процесс включает в себя следующие этапы:
  • определение объектов и классов;
  • подготовка словаря данных;
  • определение зависимостей между объектами;
  • определение атрибутов объектов и связей;
  • организация и упрощение классов при использовании наследования;
  • дальнейшее исследование и усовершенствование модели.


Определение объектов и классов



2.3.1. Определение объектов и классов

В пункте 1.3 сформулирована задача и приведена схема сети банковского обслуживания (рисунок 1.3). Анализируя эту постановку задачи, можно выделить возможные классы, сопоставив их существительным, упомянутым в ее предварительной формулировке; получится следующий список возможных имен классов (в алфавитном порядке):
ATM (банкомат) кассир программное обеспечение
банк кассовый терминал система
банковская сеть квитанция проверка безопасности
данные проводки клиент служба ведения записей
данные счета компьютер банка счет
деньги консорциум цена
доступ пользователь центральный компьютер
карточка проводка
Исследуем этот список, исключая из него имена классов в соответствии с рекомендациями п. 2.2.1:
  • избыточные классы: ясно, что клиент и пользователь означают одно и то же понятие; для банковской системы более естественно оставить класс клиент;
  • нерелевантные классы: таким классом является класс цена (он не имеет непосредственного отношения к работе банковской сети);
  • нечетко определенные классы: такими классами являются служба_ведения_записей и проверка безопасности (эти службы входят в состав проводки), система (в нашем случае непонятно, что это такое), банковская_сеть (вся наша программная система будет обслуживать банковскую сеть);
  • атрибуты: данные проводки, данные счета, деньги (имеются в виду реальные деньги, выдаваемые клиенту кассиром или банкоматом, либо принимаемые кассиром), квитанция (выдается клиенту вместе с деньгами) более естественно иметь в качестве атрибутов;
  • реализационные конструкции выражают такие имена как программное_обеспечение и доступ; их тоже следует исключить из списка имен возможных классов.
После исключения всех лишних имен возможных классов получаем следующий список классов, составляющих проектируемую систему банковского обслуживания (эти классы представлены на рисунке 2.5):
ATM (банкомат) кассовый терминал проводка
банк клиент счет
карточка компьютер банка центральный компьютер
кассир консорциум


Подготовка словаря данных



2.3.2. Подготовка словаря данных

Приведем часть словаря данных, содержащую определения классов, используемых в проекте. ATM (банкомат) - терминал, который дает возможность клиенту осуществлять свою собственную проводку, используя для идентификации свою карточку. ATM (банкомат) взаимодействует с клиентом, чтобы получить необходимую информацию для проводки, посылает информацию для проводки центральному_компьютеру, чтобы он проверил ее и в дальнейшем использовал при выполнении проводки и выдает деньги и квитанцию клиенту. Предполагается, что ATM (банкомату) не требуется работать независимо от сети. Банк - финансовая организация, которая содержит счета своих клиентов и выпускает карточки, санкционирующие доступ к счетам через сеть ATM (банкоматов). Карточка - пластиковая карточка, врученная банком своему клиенту, которая санкционирует доступ к счетам через сеть ATM (банкоматов). Каждая карточка содержит код банка и номер карточки, закодированные в соответствии с национальными стандартами на банковские карточки. Код_банка однозначно идентифицирует банк внутри консорциума. Номер_карточки определяет счета, к которым карточка имеет доступ. Карточка не обязательно обеспечивает доступ ко всем счетам клиента. Каждой карточкой может владеть только один клиент, но у нее может существовать несколько копий, так что необходимо рассмотреть возможность одновременного использования одной и той же карточки с разных ATM (банкоматов). Кассир - служащий банка, который имеет право осуществлять проводки с кассовых_ терминалов, а также принимать и выдавать деньги и чеки клиентам. Проводки, деньги и чеки, с которыми работает каждый кассир должны протоколироваться и правильно учитываться. Кассовый_терминал - терминал, с которого кассир осуществляет проводки для клиентов. Когда кассир принимает и выдает деньги и чеки, кассовый_терминал печатает квитанции. Кассовый_терминал взаимодействует с компьютером_банка, чтобы проверить и выполнить проводку. Клиент - держатель одного или нескольких счетов в банке. Клиент может состоять из одного или нескольких лиц, или организаций. То же самое лицо, держащее счет и в другом банке рассматривается как другой клиент. Компьютер_банка - компьютер, принадлежащий банку, который взаимодействует с сетью ATM (банкоматов) и собственными кассовыми_терминалами банка. Банк может иметь свою внутреннюю компьютерную сеть для обработки счетов, но здесь мы рассматриваем только тот компьютер_банка, который взаимодействует с сетью ATM. Консорциум - объединение банков, которое обеспечивает работу сети ATM (банкоматов). Сеть передает в консорциум проводки банков. Проводка - единичный интегрированный запрос на выполнение некоторой последовательности операций над счетами одного клиента. Было сделано предположение, что ATM (банкоматы) только выдают деньги, однако для них не следует исключать возможности печати чеков или приема денег и чеков. Хотелось бы также обеспечить гибкость системы, которая в дальнейшем обеспечит возможность одновременной обработки счетов разных клиентов, хотя пока этого не требуется. Различные операции должны быть правильно сбалансированы. Счет - единичный банковский счет, над которым выполняются проводки. Счета могут быть различных типов; клиент может иметь несколько счетов. Центральный_компьютер - компьютер, принадлежащий консорциуму, который распределяет проводки и их результаты между ATM (банкоматами) и компьютерами_банков. Центральный_компьютер проверяет коды банков, но не выполняет проводок самостоятельно.


Определение зависимостей



2.3.3. Определение зависимостей

Следуя рекомендациям п. 2.2.3, выделяем явные и неявные глагольные обороты из предварительной постановки задачи и рассматриваем их как имена возможных зависимостей. Из постановки задачи о банковской сети (см. п. 1.3) можно извлечь следующие обороты: Глагольные обороты (явные и неявные):
Банковская сеть включает кассиров и ATM'ы
Консорциум распределяет результаты проводок по ATM
Банк владеет компьютером банка
Компьютер банка поддерживает счета
Банк владеет кассовыми терминалами
Кассовый терминал взаимодействует с компьютером банка
Кассир вводит проводку над счетом
ATM'ы взаимодействуют с центральным компьютером во время проводки
Центральный компьютер взаимодействует с компьютером банка
ATM принимает карточку
ATM общается с пользователем
ATM выдает наличные деньги
ATM печатает квитанции
Система регулирует коллективный доступ
Банк предоставляет программное обеспечение
Консорциум состоит из банков
Консорциум владеет центральным компьютером
Система обеспечивает протоколирование
Система обеспечивает безопасность
Клиенты имеют карточки
Карточка обеспечивает доступ к счету
В банке служат кассиры Затем исключаем ненужные или неправильные зависимости, используя критерии, сформулированные в п. 2.2.3:
  • зависимости между исключенными классами: исключаются следующие зависимости: Банковская сеть включает кассиров и ATM'ы (класс банковская_сеть исключен), ATM печатает квитанции (класс квитанция исключен), ATM выдает наличные деньги (класс деньги исключен), Система обеспечивает протоколирование проводок (класс служба_ведения_записей исключен), Система обеспечивает безопасность ведения счетов (класс служба_безопасности исключен), Банки предоставляют программное обеспечение (класс программное_обеспечение исключен);
  • нерелевантные зависимости и зависимости, связанные с реализацией: зависимость "Система регулирует коллективный доступ" исключается как связанная с реализацией;
  • действия описываются такими зависимостями как "ATM принимает карточку" и "ATM общается с пользователем"; мы исключаем эти зависимости;
  • тренарные зависимости: зависимость "Кассир вводит проводку над счетом" раскладывается на две бинарные зависимости "Кассир вводит проводку" и "Проводка относится к счету". Зависимость "ATM'ы взаимодействуют с центральным компьютером во время проводки" раскладывается на "ATM'ы взаимодействуют с центральным компьютером" и "Проводка начинается с ATM";
  • производные зависимости: зависимость "Консорциум распределяет ATM'ы" является следствием зависимостей "Консорциум владеет центральным компьютером" и "ATM'ы взаимодействуют с центральным компьютером".
Удалив избыточные зависимости, получим следующий список зависимостей:
Банк владеет компьютером банка
Компьютер банка поддерживает счета
Банк владеет кассовыми терминалами
Кассовый терминал взаимодействует с компьютером банка
Кассир вводит проводку
Проводка относится к счету
ATM'ы взаимодействуют с центральным компьютером
Проводка начинается с ATM
Центральный компьютер взаимодействует с компьютером банка
Консорциум состоит из банков
Консорциум владеет центральным компьютером
Клиенты имеют карточки
Карточка обеспечивает доступ к счету
В банке служат кассиры Уточним семантику оставшихся зависимостей следующим образом:
  • переименуем неверно названные зависимости, чтобы смысл их стал более понятен; так зависимость Компьютер_банка поддерживает счета удобнее заменить зависимостью Банк держит счета.
  • имена ролей можно не использовать, так как они ясны из имен классов, участвующих в зависимости, как например, для зависимости ATM'ы взаимодействуют с центральным компьютером;
  • неучтенные зависимости: Проводка начинается с кассового_терминала, Клиенты имеют счета, Проводка регистрируется карточкой следует добавить в модель.
После уточнения зависимостей можно составить исходную версию объектной диаграммы. Для рассматриваемой задачи она будет иметь вид, представленный на рисунке 2.37.


Уточнение атрибутов



2.3.4. Уточнение атрибутов

Применяя критерии, сформулированные в п. 2.2.4, получим: Карточка содержит код_банка и код_карточки; их можно считать атрибутами объектов класса карточка, но удобнее использовать в качестве квалификаторов, так как код_банка обеспечивает выбор банка, сокращая кратность зависимости консорциум - банк; для аналогичного использования кода_карточки необходимо добавить зависимость Банк выпускает карточки, квалификатором которой будет код_карточки. После внесения перечисленных изменений диаграмма примет вид, представленный на рисунке 2.38.


Организация системы классов с использованием наследования



2.3.5. Организация системы классов с использованием наследования

В рассматриваемом примере естественно определить суперклассы для объектов, определяющих различные терминалы: кассовый_терминал и ATM (банкомат), и для объектов, определяющих проводки: проводка_кассира и удаленная_проводка (с банкомата). Внеся соответствующие изменения, получим объектную диаграмму, представленную на рисунке 2.39.


Дальнейшее усовершенствование модели



2.3.6. Дальнейшее усовершенствование модели

Карточка выступает в двух сущностях: как регистрационная единица в банке (сберкнижка), обеспечивающая клиенту доступ к его счетам, и как структура данных, с которой работает ATM. Поэтому удобно расщепить класс карточка на два класса: регистрация_карточки и карточка; первый из этих классов обеспечивает клиенту доступ к его счетам в банке, а второй определяет структуру данных, с которой работает ATM. Класс проводка удобно представить как агрегацию классов изменение, так как проводка - это согласованная последовательность внесения изменений в счета и другие банковские документы; при работе с банковскими документами рассматривается три вида изменений: снятие, помещение и запрос. Класс банк естественно объединить с классом компьютер_банка, а класс консорциум - с классом центральный_компьютер.


Пример объектной модели



2.3. Пример объектной модели

Рассмотрим процесс построения объектной модели для системы банковского обслуживания (см. п. 1.3) в процессе анализа требований и предварительного проектирования этой системы. Для построения объектной модели рассматриваемой системы нам необходимо выполнить все этапы, перечисленные в п 2.2.


Понятие подсистемы



2.4.1. Понятие подсистемы

Итак, прикладная система представляет собой множество взаимозависимых объектов (см. п. 2.1). Каждый объект характеризуется набором атрибутов, значения которых определяют состояние объекта, и набором операций, которые можно применять к этому объекту. При разработке прикладных систем удобно считать, что все атрибуты объектов являются закрытыми (т.е. они не доступны вне объекта, и для того, чтобы в некотором объекте узнать значение атрибута другого объекта, или изменить его, необходимо воспользоваться одной из открытых операций этого объекта, если, конечно, такая операция определена). Операции объектов могут быть как открытыми, так и закрытыми. Таким образом, каждый объект имеет строго определенный интерфейс, т.е. набор открытых операций, которые можно применять к этому объекту. Все объекты одного класса имеют одинаковый интерфейс. Интерфейс класса (а, следовательно, и каждого объекта этого класса) задается списком сигнатур его открытых (общедоступных) операций (и реализующих их методов); сигнатуры закрытых операций в интерфейс объектов соответствующего класса не входят. Объектная модель системы задает множество взаимозависимых объектов, составляющих систему, и, следовательно, определяет набор интерфейсов, доступных внутри системы. Все возможности по обработке данных внутри системы (т.е. в каждом объекте, входящем в состав системы) определяются этим набором интерфейсов, который определяет внутреннее окружение (или среду) системы. Наряду с внутренним окружением системы можно определить ее внешнее окружение. Оно определяется функциями (операциями), реализованными в составе системного программного обеспечения (т.е. операционной системы, системы программирования, различных редакторов, системы управления базами данных и т.п.), а также в других прикладных системах и библиотеках, используемых совместно с системой. Объекты и операции, составляющие внешнее окружение системы, тоже могут быть доступны внутри системы. Чтобы не упустить этого из виду, можно было бы добавить в объектную модель еще один объект, интерфейс которого представлял бы возможности внешнего окружения, используемые в системе (такой интерфейс обычно представляет лишь часть возможностей внешнего окружения). Но это было бы не совсем точно, так как внешнее окружение реализуется не одним, а несколькими объектами. С другой стороны внутри системы нет резона рассматривать структуру ее внешнего окружения. Выход из указанного противоречия во введении в рассмотрение еще одной сущности - подсистемы. Подсистема - это набор объектов и подсистем, обеспечивающих некоторую функциональность, и взаимодействующих между собой в соответствии с их интерфейсами. Интерфейс подсистемы представляет собой подмножество объединения интерфейсов всех объектов и подсистем, составляющих эту подсистему. В состав подсистемы может входить один, или более взаимозависимых объектов и/или подсистем. Множество интерфейсов объектов (и подсистем), которые в своей совокупности составляют некоторую подсистему, составляет внутреннее окружение этой подсистемы. В состав каждой подсистемы должна быть включена подсистема окружение, представляющая внешнее окружение этой подсистемы. Подсистема окружение для системы банковского обслуживания, рассматриваемой в качестве сквозного примера представлена на рисунке 2.41. Интерфейс подсистемы окружение определяет в каком программном окружении будет работать проектируемая система и какие возможности этого окружения будут использоваться во время ее работы (это важно, когда возникает потребность модификации или замены отдельных компонентов окружения). Отметим, что подсистема окружение представляет только интерфейс системы банковского обслуживания с ее внешним окружением. Внешнее окружение системы банковского обслуживания состоит из нескольких подсистем и библиотек, и для него тоже может быть разработана объектная модель, которая может содержать и разрабатываемую систему (в этой объектной модели она будет одной из подсистем). Объектную модель системы банковского обслуживания и ее системного (внешнего) окружения тоже можно изобразить в виде объектной диаграммы (правда, в состав этой объектной диаграммы будут входить не объекты, а только подсистемы; каждая подсистема изображается на диаграмме в виде прямоугольника с двойными вертикальными сторонами). Зависимости между подсистемами, изображенные на этой объектной диаграмме (рисунок 2.42), отражают взаимодействие проектируемой системы банковского обслуживания и соответствующих подсистем в процессе работы системы. Тем самым определяются требования проектируемой системы к ее системному окружению.


Интерфейсы и окружения



2.4.2. Интерфейсы и окружения

Объекты и подсистемы, составляющие подсистему более высокого уровня, будем называть компонентами последней. Как уже было отмечено, для каждого компонента, входящего в состав объектной модели подсистемы, определен его интерфейс, т.е. набор открытых (общедоступных) операций, которые можно применять к этому компоненту (объекту или подсистеме). Интерфейс объекта определяется интерфейсом соответствующего класса и задается списком сигнатур его открытых операций (методов). Интерфейс подсистемы определяется через итерфейсы составляющих ее объектов и подсистем следующим образом: операция может быть включена в интерфейс подсистемы, если в составе этой подсистемы имеется объект (подсистема), интефейс которого содержит эту операцию. Интерфейсы описываются на языке описания интерфейсов IDL (Interface Definition Language). Все возможности по обработке данных внутри подсистемы (т.е. в каждом компоненте, входящем в ее состав) определяются набором интерфейсов ее компонентов, который определяет внутреннее окружение подсистемы. Если для некоторой подсистемы оказывается, что ни один ее компонент не содержит операции, которую желательно включить в ее интерфейс, в ее состав можно добавить объект, реализующий такую операцию. Такой объект называется интерфейсным объектом. Интерфейсные объекты позволяют согласовать внешний интерфейс подсистемы с ее внешним окружением, т.е. с интерфейсами других объектов и подсистем, которые вместе с рассматриваемой подсистемой составляют подсистему более высокого уровня. Поясним введенные понятия на примере системы банковского обслуживания. В ее составе можно выделить подсистему банк (на самом деле в системе будет несколько экземпляров подсистемы банк - по одной для каждого банка, входящего в консорциум). При этом объектная модель системы примет вид, изображенный на рисунке 2.43.


События, состояния объектов и диаграммы состояний



2.5.1. События, состояния объектов и диаграммы состояний

Текущее состояние объекта характеризуется совокупностью текущих значений его атрибутов и связей. Во время работы системы составляющие ее объекты взаимодействуют друг с другом, в результате чего изменяются их состояния. Единицей влияния является событие: каждое событие приводит к смене состояния одного или нескольких объектов в системе, либо к возникновению новых событий. Работа системы характеризуется последовательностью происходящих в ней событий. События Событие происходит в некоторый момент времени (нередко оно используется для определения соответствующего момента времени). Примеры событий: старт ракеты, старт забега на 100 м, начало проводки (в банковской сети), выдача денег и т.п. Событие не имеет продолжительности (точнее, оно занимает пренебрежимо малое время). Одно из событий может логически предшествовать другому, либо следовать за другим, либо они могут быть независимыми; примерами логически (причинно) связанных событий являются старт и финиш одного забега, начало проводки и выдача денег клиенту (в результате этой проводки), примерами независимых событий - старт ракеты и финиш забега, проводки, запущенные с разных ATM, и т.п. Если события не имеют причинной связи (т.е. они логически независимы), они называются независимыми (concurrent); такие события не влияют друг на друга. Независимые события не имеет смысла упорядочивать, так как они могут происходить в произвольном порядке. Модель распределенной системы обязательно должна содержать независимые события и активности. События передают информацию с одного объекта на другой. Существуют классы событий, которые просто сигнализируют о том, что что-то произошло или происходит (примеры: загорание лампочки лифта, гудок в телефонной трубке). В программировании рассматриваются исключительные события (иногда их называют исключениями), которые сигнализируют о нарушениях работы аппаратуры, либо программного обеспечения. Сценарии и трассы событий Сценарием называется последовательность событий, которая может иметь место при конкретном выполнении системы. Сценарии могут иметь разные области влияния: они могут включать все события, происходящие в системе, либо только события, возникающие и влияющие только на определенные объекты системы. На рисунке 2.44 приведен пример сценария пользования телефонной линией. Каждое событие в этом сценарии передает информацию с одного объекта на другой; например событие начинается длинный гудок передает сигнал от телефонной линии к вызывающему (пользователю). При анализе динамики работы системы необходимо составить и рассмотреть несколько сценариев, отражающих типичные варианты ее работы. вызывающий снимает трубку начинается длинный гудок вызывающий набирает цифру (9) гудок прекращается вызывающий набирает цифру (3) вызывающий набирает цифру (9) вызывающий набирает цифру ( ) вызывающий набирает цифру ( ) вызывающий набирает цифру ( ) вызывающий набирает цифру ( ) вызванный телефон начинает звонить вызывающий слышит гудки вызванный телефон отвечает гудки прекращаются телефоны соединены вызванный по телефону вешает трубку телефоны разъединены вызывающий вешает трубку


Условия



2.5.2. Условия

Условие - это логическая (булева) функция от значений объектов, как например, карточку удалось прочитать, температура ниже нуля и т.п. Условие может выполняться в течение некоторого отрезка времени; событие, в отличие от условия, происходит мгновенно и не имеет продолжительности во времени. Условия могут использоваться как ограничения на переходы: условный переход выполняется только тогда, когда и произошло соответствующее событие, и выполнено условие этого перехода (диаграмма состояний, представленная на рисунке 2.47, демонстрирует это на примере автомобильного движения по магистралям "Север-Юг" и "Запад-Восток"). На диаграммах состояний условия записываются вслед за событиями в квадратных скобках.


Активности и действия



2.5.3. Активности и действия

Диаграмма состояний была бы не очень полезной, если бы она содержала только переходы (безусловные и условные), соответствующие генерируемым во время работы системы событиям. Являясь описанием поведения объекта, диаграмма состояний должна описывать, что делает объект в ответ на переход в некоторое состояние или на возникновение некоторого события. Для этого в диаграмму состояний включаются описания активностей и действий. Активностью называется операция, связанная с каким-либо состоянием объекта (она выполняется, когда объект попадает в указанное состояние); выполнение активности требует определенного времени. Примеры активностей: выдача картинки на экран телевизора, телефонный звонок, считывание порции файла в буфер и т.п.; иногда активностью бывает просто приостановка выполнения программы (пауза), чтобы обеспечить необходимое время пребывания в соответствующем состоянии (это бывает особенно важно для параллельной асинхронной программы). Активность связана с состоянием, поэтому на диаграмме состояний она обозначается через "do: имя_активности" в узле, описывающем соответствующее состояние (см. рисунок 2.48).


Одновременные события. Синхронизация



2.5.4. Одновременные события. Синхронизация

На рисунке 2.50 представлена диаграмма состояний составного объекта: он состоит из четырех параллельно и независимо работающих компонентов (состояние каждого компонента не зависит от состояний остальных компонентов). Состояние такого объекта определяется как кортеж, членами которого являются состояния каждого из составляющих объектов. Диаграмма состояний при этом распадается на четыре независимые диаграммы состояний каждого из компонентов. В системах, состоящих из нескольких параллельно работающих объектов, иногда бывает необходимо согласовать (синхронизировать) работу двух или более объектов. Для этого тоже используются события, так как синхронизация по существу состоит в необходимости задержать переход одного из синхронизируемых объектов в очередное состояние, пока другой объект не придет в некоторое фиксированное состояние, а переходы из состояния в состояние управляются событиями. Синхронизирующее событие может вырабатываться в любом из синхронизируемых объектов, либо в каком-либо третьем объекте.


Вложенные диаграммы состояний



2.5.5. Вложенные диаграммы состояний

Диаграмма состояний компонента трансмиссия (рисунок 2.50) имеет узел (состояние) вперед, который сам является диаграммой состояний (вложенная диаграмма состояний). Интерпретация этой диаграммы следующая: трансмиссия имеет три состояния: нейтральное, назад и вперед; состояние вперед имеет три подсостояния (они уточняют состояние вперед): первая, вторая и третья. На диаграммах состояний суперсостояние изображается как прямоугольник с закругленными углами, внутрь которого помещаются все его подсостояния.


Динамическая модель банковской сети



2.5.6. Динамическая модель банковской сети

В качестве примера применения рассмотренных принципов построения динамической модели построим динамическую модель банковской сети. Начнем с составления и изучения сценариев. ATM просит клиента вставить карточку клиент вставляет карточку ATM принимает карточку и читает ее номер ATM просит ввести пароль клиент вводит "1234." ATM передает номер и пароль в консорциум, консорциум проверяет номер и пароль, определяет код банка - "39" и сообщает ATM, что запрос принят ATM просит клиента (с помощью меню на экране) выбрать вид проводки (снятие, вклад, перевод, запрос) клиент выбирает снятие ATM спрашивает клиента какова требуемая сумма клиент вводит $100 ATM убеждается, что введенная сумма в пределах лимита и просит консорциум выполнить проводку, консорциум передает запрос в банк, банк выполняет проводку и возвращает новое значение баланса счета ATM выдает сумму и просит клиента взять ее клиент берет деньги ATM спрашивает не нужно ли клиенту чего еще клиент вводит нет ATM печатает счет, выдает карточку и просит клиента взять их клиент берет счет и карточку ATM просит (другого) клиента ввести карточку


Динамическая модель системы или подсистемы



2.5. Динамическая модель системы или подсистемы

Объектная модель представляет статическую структуру проектируемой системы (подсистемы). Однако знания статической структуры недостаточно, чтобы понять и оценить работу подсистемы. Необходимо иметь средства для описания изменений, которые происходят с объектами и их связями во время работы подсистемы. Одним из таких средств является динамическая модель подсистемы. Она строится после того, как объектная модель подсистемы построена и предварительно согласована и отлажена. Динамическая модель подсистемы состоит из диаграмм состояний ее объектов и подсистем.


Диаграммы потоков данных



2.6.1. Диаграммы потоков данных

Функциональная модель представляет собой набор диаграмм потоков данных (далее - ДПД), которые описывают смысл операций и ограничений. ДПД отражает функциональные зависимости значений, вычисляемых в системе, включая входные значения, выходные значения и внутренние хранилища данных. ДПД - это граф, на котором показано движение значений данных от их источников через преобразующие их процессы к их потребителям в других объектах. ДПД содержит процессы, которые преобразуют данные, потоки данных, которые переносят данные, активные объекты, которые производят и потребляют данные, и хранилища данных, которые пассивно хранят данные. Процессы Процесс преобразует значения данных. Процессы самого нижнего уровня представляют собой функции без побочных эффектов (примерами таких функций являются вычисление суммы двух чисел, вычисление комиссионного сбора за выполнение проводки с помощью банковской карточки и т.п.). Весь граф потока данных тоже представляет собой процесс (высокого уровня). Процесс может иметь побочные эффекты, если он содержит нефункциональные компоненты, такие как хранилища данных или внешние объекты. На ДПД процесс изображается в виде эллипса, внутри которого помещается имя процесса; каждый процесс имеет фиксированное число входных и выходных данных, изображаемых стрелками (см. рисунок 2.60).


Описание операций



2.6.2. Описание операций

Процессы ДПД в конце концов должны быть реализованы как операции объектов. Каждый процесс нижнего (базового) уровня, так же как и процессы верхних уровней, в состав которых входят процессы более нижних уровней, реализуются как операции. При этом реализация процессов верхних уровней может отличаться от их представления на ДПД, так как при реализации обычно производится их оптимизация: в результате оптимизации процессы нижних уровней, составляющие процесс более высокого уровня могут "слиться", после чего они станут невидимы. Все операции должны быть специфицированы. Спецификация операции содержит ее сигнатуру (имя операции, количество, порядок и типы ее параметров, количество, порядок и типы возвращаемых ею значений) и описание ее эффекта (действия, преобразования). Для описания эффекта операции можно использовать:
  • математические формулы;
  • табличные функции: таблицы, сопоставляющие выходные значения входным;
  • уравнения, связывающие входные и выходные значения;
  • аксиоматическое определение операций с помощью пред- и пост-условий;
  • таблицы принятия решений;
  • псевдокод;
  • естественный язык.
Пример описания операции (эффект ее описан на естественном языке) приведен на рисунке 2.65. изменить_счет (счет, сумма, вид_проводки) -> деньги, квитанция если сумма снимается и больше баланса счета, то "отменить_проводку" если сумма снимается и меньше баланса счета, то "дебетовать_счет" и "выдать_деньги" если сумма вносится на счет то "кредитовать_счет" если запрос то "выдать_запрос" во всех случаях: квитанция должна содержать номер ATM, дату, время, номер счета, вид проводки, сумму проводки (если она есть), новый баланс счета


Ограничения



2.6.3. Ограничения

Ограничение указывает на зависимость между соответственными значениями двух объектов, либо между различными значениями одного объекта. Ограничение может быть выражено в виде некоторой функции (количественное ограничение), либо отношения (качественное ограничение). Нас интересуют ограничения на атрибуты объектов, а также на состояния и события. Важным видом ограничений являются инварианты: утверждения о том, что значение некоторой функции от атрибутов, состояний и событий остается постоянным при функционировании объекта.


Функциональная модель банковской сети



2.6.4. Функциональная модель банковской сети

Функциональная модель показывает как вычисляются значения в системе и как они зависят одно от другого. Для конструирования функциональной модели необходимо выполнить следующее:
  • определить входные и выходные значения;
  • построить ДПД, показывающие функциональные зависимости;
  • описать функции;
  • описать ограничения;
  • сформулировать критерии оптимизации;
  • уточнить набор операций в объектной модели.
Выполним все эти шаги, чтобы построить функциональную модель банковской сети (ATM). Определение входных и выходных значений Начнем с определения входных и выходных значений. Эти значения являются параметрами событий между системой и окружающим ее миром. Входные и выходные значения банковской сети показаны на рисунке 2.66 (пунктирная линия показывает границу системы).


Функциональная модель подсистемы



2.6. Функциональная модель подсистемы

Функциональная модель описывает вычисления в системе. Она показывает, каким образом выходные данные вычисляются по входным данным, не рассматривая порядок и способ реализации вычислений. Функциональная модель состоит из набора диаграмм потока данных, которые показывают потоки значений от внешних входов через операции и внутренние хранилища данных к внешним выходам. Функциональная модель описывает смысл операций объектной модели и действий динамической модели, а также ограничения на объектную модель. Неинтерактивные программы (например, компиляторы) имеют тривиальную динамическую модель: их цель состоит в вычислении значения некоторой функции. Основной моделью таких программ является функциональная модель (хотя если программа имеет нетривиальные структуры данных, для нее важна и объектная модель).


Заключительные замечания к разделу



2.7. Заключительные замечания к разделу

Цель анализа - обеспечить правильную постановку и адекватное понимание рассматриваемой прикладной задачи, помочь убедиться, что предварительно спроектированная прикладная система сможет удовлетворить заказчика. Хороший анализ охватывает все существенные особенности задачи, не внося каких-либо реализационных особенностей в предварительный проект системы. Тем самым обеспечивается свобода реализационных решений на этапе реализации. Объектная модель показывает статическую структуру проблемной области, для которой разрабатывается система. Сначала определяются классы объектов, затем зависимости между объектами, включая агрегацию. Для упрощения структуры классов используется наследование. Объектная модель должна содержать краткие комментарии на естественном языке. Динамическая модель показывает поведение системы, в особенности последовательность взаимодействий. Сначала готовятся сценарии типичных сеансов взаимодействия с системой, затем определяются внешние события, отражающие взаимодействие системы с внешним миром; после этого строится диаграмма состояний для каждого активного объекта, на которой представлены образцы событий, получаемых системой и порождаемых ею, а также действий, выполняемых системой. Построенные диаграммы состояний сравниваются между собой, чтобы убедиться в их непротиворечивости. На этом построение динамической модели заканчивается. Функциональная модель показывает функциональный вывод значений безотносительно к тому, когда они вычисляются. Сначала определяются входные и выходные значения системы как параметры внешних событий. Затем строятся диаграммы потоков данных, показывающие как вычисляется каждое выходное значение по входным и промежуточным значениям. Диаграммы потоков данных выявляют взаимодействие с внутренними объектами системы, которые служат хранилищами данных в периоды между сеансами работы системы. В заключение определяются ограничения и критерии оптимизации.


Первая фаза жизненного цикла...



2. Первая фаза жизненного цикла - анализ требований и предварительное проектирование системы. Объектно-ориентированное моделирование

Как известно, проектирование прикладной программной системы начинается с анализа требований, которым она должна будет удовлетворять. Такой анализ проводится с целью понять назначение и условия эксплуатации системы настолько, чтобы суметь составить ее предварительный проект. При объектно-ориентированном подходе анализ требований к системе сводится к разработке моделей этой системы. Моделью системы (или какого-либо другого объекта или явления) мы называем формальное описание системы, в котором выделены основные объекты, составляющие систему, и отношения между этими объектами. Построение моделей - широко распространенный способ изучения сложных объектов и явлений. В модели опущены многочисленные детали, усложняющие понимание. Моделирование широко распространено и в науке, и в технике. Модели помогают:
  • проверить работоспособность разрабатываемой системы на ранних этапах ее разработки;
  • общаться с заказчиком системы, уточняя его требования к системе;
  • вносить (в случае необходимости) изменения в проект системы (как в начале ее проектирования, так и на других фазах ее жизненного цикла).
В настоящее время существует несколько технологий объектно-ориентированной разработки прикладных программных систем, в основе которых лежит построение и интерпретация на компьютере моделей этих систем. Мы подробно ознакомимся с одной из таких технологий - OMT (Object Modeling Techniques). Эта технология оказала большое влияние на других разработчиков объектно-ориентированных технологий, а книга, в которой она описана, является одной из наиболее часто цитируемых книг по данному направлению. Более того, система обозначений (графический язык) для описания моделей, предложенная в этой книге, широко применяется в других технологиях и в статьях по объектно-ориентированной разработке программных систем. В технологии OMT проектируемая программная система представляется в виде трех взаимосвязанных моделей:
  • объектной модели, которая представляет статические, структурные аспекты системы, в основном связанные с данными;
  • динамической модели, которая описывает работу отдельных частей системы;
  • функциональной модели, в которой рассматривается взаимодействие отдельных частей системы (как по данным, так и по управлению) в процессе ее работы.
Эти три вида моделей позволяют получить три взаимно-ортогональных представления системы в одной системе обозначений. Совокупность моделей системы может быть проинтерпретирована на компьютере (с помощью инструментального программного обеспечения), что позволяет продемонстрировать заказчику характер работы с будущей системой и существенно упрощает согласование предварительного проекта системы. Модели, разработанные и отлаженные на первой фазе жизненного цикла системы, продолжают использоваться на всех последующих его фазах, облегчая программирование системы, ее отладку и тестирование, сопровождение и дальнейшую модификацию. Как будет показано в дальнейшем, модели системы не связаны с языком программирования, на котором будет реализована система.


Методические указания к моделированию и рекомендации к содержанию отчета


3.1. Кратко описать принципы функционирования программных пакетов VisSim и Electronics Workbench.
3.2. Привести распечатки, подтверждающие выполнение всех пунктов экспериментальной части и текстовые пояснения к ним. Для модели "RLC"-цепи записать уравнение, подставить в него параметры элементов и начальные условия, а также полностью охарактеризовать переходный процесс.
3.3. Для измерения постоянной составляющей (см. пп. 2.5) следует составить блок-схему соответствующую магнитоэлектрическому измерительному механизму, который реагирует на среднее значение. Главный блок в модели измерительного преобразователя - интегратор.
3.4. Выводы.
Программное обеспечение Lotus тут


Содержание работы


3.1. В программе VisSim ознакомиться с моделями единичной ступенчатой функции - 1(t) и дельта-функции - 1'(t) (файл zvenya.vsm). Выявить положенные допущения (неидеальности) в моделях.
3.2. В программе VisSim (файл zvenya.vsm) выполнить исследование типовых динамических звеньев (см. п. "Методические указания к моделированию и рекомендации к содержанию отчета"). По ходу работы необходимо изменить постоянные времени, коэффициенты затухания и усиления по своему усмотрению. Убедится, что дифференцирование переходной функции звена - h(t) дает его функцию веса - w(t); и наоборот, интегрирование функции веса звена - w(t) дает его переходную функцию - h(t).
3.3. Выполнить измерения виртуальными приборами (анализатор, осциллограф) в схемах на операционных усилителях (файлы *.ca4 для программы Electronics Workbench) с целью идентификации моделей с типовыми динамическими звеньями. Настроить схемы по совпадению вида ЛАЧХ & ЛФЧХ, а так же реакций подобных переходной функции и функции веса. Допустимо несовпадение только коэффициентов усиления.
3.4. Подавая на вход типовых динамических звеньев синусоидальный сигнал, убедиться, что изменение коэффициента усиления вне полосы пропускания за одну декаду составляет либо 20 дб (10 раз), либо 40 дб (100 раз).


Содержание работы


3.1. Изучить параметры сигнала задания g(t) в файле open.vsm. (определить интервалы, где координата задания постоянна, меняется с постоянной скоростью или с постоянным ускорением).
3.2. Включая каналы типового ПИД-регулятора по очереди, изучить, как формируется сигнал воздействия на объект - u(t) из первичной информации - x(t) (файл open.vsm).
3.3. В файлах open.vsm и closed.vsm коэффициенты усиления регуляторов оптимально настроены для управления объектом в соответствии с принципами Понселе (без ОС) и Ползунова-Уатта (с ОС). По своему усмотрению изменить параметры объекта и вновь настроить регуляторы.
3.4. Оценить степень влияния изменений параметров объекта на ошибку регулирования для обоих вариантов управления. При анализе следует учесть, что статическую составляющую ошибки определяет нестабильность коэффициента усиления объекта, а динамическую - его постоянная времени.
3.5. Изучить реализацию ПИД-регулятора на ОУ (файл pid.ca4).


Содержание работы


3.1.Изучить сигнал задания g(t) спроектированный для введения систем в режимы типового движения (файл err_ast3.vsm). Заполнить таблицу.
Временной промежуток постоянства параметров сигнала
Параметр сигнала и его значение
3.2. Измерить значения первых четырех установившихся ошибок по: положению q0, скорости qu, ускорению qe, и приращению ускорения qg''' для систем с астатизмом от нулевого до третьего порядков (файл err_ast3.vsm). Параметры моделей должны соответствовать расчетному заданию. Опираясь на экспериментальные данные определить коэффициент усиления систем в области низких частот K, а так же добротности по скорости Ku, ускорению Ke и приращению ускорения Kg'''. Определить численные значения коэффициентов ошибок по положению, скорости, ускорению и приращению ускорения - c0, c1, c2, c3. Заполнить таблицу.
Система \ Ошибки q0 & K & c0 qu & Ku & c1 qe & Ke & c2 qg''' & Kg''' & c3
W(p)=1/p^0 * ...
W(p)=1/p^1 * ...
W(p)=1/p^2 * ...
W(p)=1/p^3 * ...
3.3. Изучить влияние (качественно) на вид переходной функции h(t) систем с астатизмом первого второго (и третьего по указанию преподавателя) порядков возмущающего воздействия f(t). В качестве f(t) использовать сигнал задания g(t) спроектированный для изучения типовых режимов движения систем. Возмущающее воздействие подавать до и после интегрирующих элементов, менять его знак и подбирать амплитуду так, чтобы ошибка от возмущения в установившемся режиме составляла 10...30 % от h(t) и была наглядна при визуальном наблюдении (информацию удобно представить в режиме перекрытия графиков).
3.4. Минимум три раза оптимально настроить ПИД-регулятор для модели системы регулирования (файл err_s^-1.vsm), используя разные функции цены - интегральные оценки качества. Для каждого случая заполнить таблицу.
KP KI KD
Функция цены и переходная характеристика h(t)
3.5. Оценить запас устойчивости и быстродействие по переходным характеристикам системы при различных настройках ПИД-регулятора, используя показатели качества: перерегулирование s, длительность переходного процесса tП, частота колебаний f, допустимое число колебаний, время запаздывания tЗ, время нарастания tН. Величиной допустимых отклонений 2D для определения длительности переходного процесса задаться самостоятельно.
3.6. Для тех же вариантов настроек ПИД-регулятора, используя АЧХ замкнутой системы |Ф(jw)| определить показатель колебательности М и показатели быстродействия: резонансную частоту wР, полосу пропускания wП, частоту среза wС, и эквивалентную полосу пропускания wЭ.
3.7. Для тех же случаев, определить запас устойчивости по амплитуде (модулю) L и по фазе m, используя АФХ (годограф Найквиста). Повторить определение по ЛАЧХ & ЛФЧХ.


Содержание работы


3.1.Ознакомиться с предложенными моделями, идентифицировать их с описаниями в таблице.
3.2. Определить цель применения изучаемых методов повышения точности для каждой модели (повышение точности в установившихся режимах, увеличение запаса устойчивости или повышение быстродействия).
3.3. Повысить точность систем в соответствии с выбранными методами.
3.4. Качественно описать результаты применения методов повышения точности. Рекомендуется использовать переходную функцию h(t). Графическую информацию удобно представить в режиме наложения (перекрытия) результатов моделирования.
3.5. Используя инструменты частотного исследования систем (ЛАЧХ & ЛФЧХ) сформулировать ограничения в применении каждого метода повышения точности.
3.6. Выполнить количественное исследование результатов применения методов повышения точности САР на основе исследований (измерений) ошибки x(t). Можно измерить значения первых установившихся составляющих ошибки по: положению q0, скорости qu, ... - до и после применения методов повышения точности. По необходимости рекомендуется использовать тест-сигналы задания g(t): единичную ступенчатую функцию 1(t), синусоидальный, меняющийся с постоянной скоростью или ускорением (см. сигнал g(t) в файле err_ast3.vsm). Для измерений ошибки рекомендуется использовать: датчики скорости и ускорения (дифференцирующие звенья), преобразователи построенные в соответствии с интегральными оценками качества, а так же измерители действующего или средневыпрямленного значений (см. файл rms_ex.vsm). Выбор схемы измерения ошибки x(t) следует обосновать.
3.7. Рассмотреть все блоки (звенья), которые применялись для повышения точности. Назвать техническое устройство их практической реализации. Рассмотрев все модифицированные модели САР, указать необходимые диапазоны для подстраиваемых параметров этого устройства.


Содержание работы


3.1.Ознакомиться с первыми четырьмя предложенными моделями систем, идентифицировать их с описаниями в таблице. Изменить параметры моделей так, чтобы их логарифмические частотные характеристики сместились вдоль частотной шкалы.
3.2. Скорректировать системы в соответствии с выбранными методами (ввести соответствующие корректирующие звенья в контур и настроить их, добиваясь устойчивости в замкнутом состоянии).
3.3. Дать количественную характеристику результатам коррекции, оценивая: полученный запас устойчивости (L & m или M), потери точности (K или Ku или Ke), и уменьшение быстродействия (wП, wС).
3.4. По указанию преподавателя, для одной из исследуемых моделей составить подобную на операционных усилителях в пакете Electronics Workbench.
3.5. Изучить модели *.ca4, в которых рассмотрены стандартные задачи коррекции схем на операционных усилителях. Описать суть способов коррекции. Дать количественную характеристику результатам, оценивая их аналогично пп. 3.3.
3.6. В соответствии с вариантом (см. табл.), составить подобную схеме на операционном усилителе модель из блоков пакета VisSim.
Вариант,
модель
Описание типовых задач коррекции схем на ОУ
1
kor_ou3.ca4
Выходное сопротивление ОУ и паразитная емкость монтажа выходных цепей образуют третий полюс ЛАЧХ, ведущий к неустойчивости. Модель можно рассматривать как схему на трехкаскадном ОУ без или с частичной внутренней коррекцией
2
kor_c_in.ca4
Паразитная емкость монтажа входных цепей ОУ и большое сопротивление обратной связи образуют апериодическое звено первого порядка, которое может привести к неустойчивости схем на ОУ
3
kor_cout.ca4
Необходимость работы ОУ на емкостную нагрузку приводит к тому, что выходное сопротивление ОУ и емкость нагрузки образуют третий полюс ЛАЧХ, ведущий к неустойчивости. Малое сопротивление емкости нагрузки на высоких частотах может перегрузить выход ОУ
4
kor_2_ou.ca4
Стремление получить в схемах высокую точность и быстродействие приводит к необходимости использования двух ОУ (точного и быстродействующего). Но простое последовательное включение приводит к неустойчивости схемы, поскольку минимальное фазовое запаздывание для двух, даже корректированных ОУ составляет 180 градусов
5
kor_derv.ca4
Построение дифференциатора на ОУ вызывает затруднения: а) в петле ОС ОУ оказывается включенным апериодическое звено с большой постоянной времени, что увеличивает результирующее запаздывание по фазе свыше значения 180 градусов и приводит к неустойчивости схемы; б) входное емкостное сопротивление дифференциатора может вызвать неустойчивость и в предыдущем каскаде на ОУ; в) коэффициент усиления схемы по высокой частоте велик и это ухудшает соотношение сигнал/шум
3.7. Ознакомиться с тремя наиболее часто используемыми видами корректирующих обратных связей (файл kor_ooc.vsm). Определить, какими последовательными корректирующими звеньями можно добиться тех же результатов.


Содержание работы


3.1. Дополнить структурные схемы в рабочих файлах рассчитанными последовательными корректирующими звеньями. Проверить, имеет ли ЛАЧХ системы желаемый вид.
3.2. Пустые блоки "1" и "2" определяют места возможного подключения средств коррекции к реальной системе. Заменить часть последовательных корректирующих устройств эквивалентной обратной связью, в соответствии с заданной структурой системы.
3.3. Точно настроить устройства коррекции и выполнить измерения, подтверждающие верность результатов синтеза, подавая тест сигналы с необходимыми параметрами.
3.4. Используя корневой годограф, определить параметр затухания z для сопряженных комплексных корней передаточной функции синтезированной системы при единичной обратной связи. А также определить во сколько раз должен увеличиться контурный коэффициент усиления (добротность по скорости), чтобы система оказалась на границе устойчивости (проверить по переходной функции).


Содержание работы


3.1. Ознакомиться с процессом симуляции в звене временного запаздывания, построенном на буфере (блок "timeDelay"). Изучить структурное построение двух предложенных линеаризовананных моделей-аппроксиматоров звена временного запаздывания (файл e^(-pt).vsm).
3.2. Оценить адекватность получаемых результатов при использовании каждой из трех альтернатив звена в моделях систем, если ставятся задачи: а) симуляции движения (файл e^(-pt).vsm); б) оценки точности (файл e^(-pt)2.vsm); в) оценки запаса устойчивости (файл e^(-pt)2.vsm).


Содержание работы


Изучаемая методика построения цифровых регуляторов или устройств коррекции предполагает переход к дискретным реализациям от непрерывных аналогов. Нечетные варианты должны реализовать цифровой ПИД-регулятор (файл err_s^-1.vsm), четные - цифровое корректирующее устройство (файл k3.vsm). Далее по тексту для четных вариантов вместо названия "ПИД-регулятор" следует читать "корректирующее устройство".
3.1. В рабочем файле *.vsm настроить ПИД-регулятор определив качественные показатели по своему усмотрению. Изменить параметры системы так, чтобы ЛАЧХ & ЛФЧХ сместились вдоль частотной шкалы в пределах двух декад.
3.2. Заменить структурную схему ПИД-регулятора одним блоком "transferFunction" с эквивалентными параметрами. Проконтролировать неизменность переходного процесса.
3.3. Несколько раз осуществить переход от непрерывной передаточной функции ПИД-регулятора (transferFunction) к дискретной, отыскивая наибольший период дискретизации, при котором качество переходного процесса не ухудшается значительно.
3.4. Перенести коэффициенты дискретной передаточной функции регулятора в подготовленный текст программы, выполнить её компиляцию и подключить полученную динамически загружаемую библиотеку (файл *.dll) к рабочему файлу посредствам блока "userFunction". Убедиться в схожести переходного процесса.
3.5. Разложить дискретную передаточную функцию регулятора на множители и на элементарные дроби, для написания разделённых программ в соответствии с последовательным и параллельным алгоритмами. В соответствии с этими алгоритмами в рабочем файле регулятор должен состоять из блоков "userFunction" включенных последовательно или параллельно.


Разбиение системы на модули



3.1.1. Разбиение системы на модули

Первое, что необходимо сделать, начиная этап разработки системы, определить ее разбиение на некоторое количество компонентов - модулей. Модуль не является ни объектом, ни функцией; модуль - это набор (пакет) классов и отдельных объектов, подсистем, зависимостей, операций, событий и ограничений, которые взаимосвязаны и имеют достаточно хорошо определенный и по возможности небольшой интерфейс с другими модулями. Часто модуль включает одну подсистему, являясь ее реализацией. Модуль (подсистема) обычно определяется через службы, которые он обеспечивает. Службой называется набор взаимосвязанных функций, которые совместно обеспечивают какую-либо функциональность, например, выполнение ввода-вывода, отрисовку картинок, выполнение арифметических действий. Подсистема определяет согласованный способ рассмотрения одной из сторон прикладной задачи, для решения которой разрабатывается рассматриваемая система. Например, система файлов - подсистема операционной системы; она обеспечивает набор взаимосвязанных абстрактных операций, которые в большой степени (но не полностью) независимы от абстрактных операций, обеспечиваемых другими подсистемами. Эта подсистема может быть реализована в виде отдельного модуля. Как уже отмечалось, каждая подсистема имеет хорошо определенный (внешний) интерфейс с остальной частью системы (другими подсистемами). Этот интерфейс определяет форму всех взаимодействий с подсистемой и все потоки данных через ее границы, но не специфицирует внутреннюю структуру и внутреннее окружение подсистемы, а также особенности ее реализации. Поэтому каждая подсистема может разрабатываться независимо от остальных подсистем. Подсистемы должны определяться таким образом, чтобы большая часть взаимодействий оставалась внутри подсистем, для уменьшения глобальных потоков данных и сокращения зависимостей между подсистемами. Подсистем должно быть не очень много (в пределах десятка). Некоторые подсистемы могут быть в свою очередь подразделены на подсистемы. Две подсистемы могут взаимодействовать друг с другом либо как клиент и поставщик (клиент-сервер), либо как равноправные партнеры (сопрограммы). В первом случае клиент вызывает сервер, который выполняет некоторый запрос клиента и возвращает результат; клиент должен знать интерфейс сервера, но сервер может не знать интерфейсов клиента, так как все взаимодействия инициируются клиентом. В случае сопрограммного взаимодействия обе подсистемы вызывают друг друга. Обращение подсистемы к другой подсистеме не обязательно связано с немедленным получением ответа. Сопрограммное взаимодействие является более сложным, так как обе подсистемы должны знать интерфейсы друг друга. Поэтому нужно стараться, чтобы большая часть подсистем взаимодействовала как клиент и сервер. Подсистемы (и реализующие их модули) могут образовывать в системе уровни, либо разделы. Уровни Уровневая система может рассматриваться как упорядоченное множество виртуальных миров, каждый из которых построен на основе понятий, поддерживаемых его подсистемами; подсистемы одного уровня обеспечивают реализацию подсистем следующего уровня. Объекты каждого уровня могут быть независимыми, хотя нередко объекты разных уровней могут соответствовать друг другу. Каждая подсистема знает о подсистемах более низких уровней и ничего не знает о более высоких уровнях. Зависимость клиент-сервер существует между более верхним (клиент) и более нижними уровнями (серверы). При этом каждый уровень может иметь свой собственный набор классов и операций. Каждый уровень реализуется через операции объектов и подсистем более нижних уровней. Уровневые архитектуры бывают двух видов: открытые и замкнутые. В замкнутой архитектуре каждый уровень строится на базе непосредственно следующего за ним уровня. Это сокращает зависимости между уровнями и упрощает внесение изменений. В открытой архитектуре каждый уровень строится на базе всех следующих за ним уровней. Это уменьшает потребность в переопределении операций на каждом уровне и приводит к более эффективному и компактному коду. Однако открытая архитектура не удовлетворяет принципу упрятывания информации, поскольку изменения в какой-либо подсистеме могут потребовать соответствующих изменений в подсистемах более высоких уровней. Обычно лишь подсистемы самого верхнего и самого нижнего уровней могут быть выведены из постановки задачи: самый верхний уровень - это требуемая система, а самый нижний уровень - это доступные ресурсы: аппаратура, операционная система, имеющиеся библиотеки. Промежуточные уровни вводятся разработчиком системы. Система с уровневой архитектурой при переносе на другую платформу требует переписывания только одного (самого нижнего) уровня. Пример системы с уровневой архитектурой представлен на рисунке 3.1.


Выявление асинхронного параллелизма



3.1.2. Выявление асинхронного параллелизма

В анализируемой модели, как и в реальном мире и в программном обеспечении все объекты независимы и должны работать асинхронно. Однако в реализации не все объекты должны работать независимо и асинхронно, так как несколько объектов может выполняться на одном процессоре, если известно, что они не могут быть одновременно активными. Одна из важнейших целей разработки системы выяснить, какие объекты должны быть активными одновременно (параллельно), а какие бывают активными только в разное время. Эти последние объекты могут быть связаны в одну нить управления (задачу). Для определения асинхронности (параллельного существования) объектов используется динамическая модель. Два объекта являются существенно асинхронными, если они могут получать события в одно и то же время, не взаимодействуя друг с другом. Если события не синхронизируются, такие объекты не могут быть связаны в одну нить управления. От асинхронных объектов нужно отличать полностью независимые объекты, которые не только выполняются независимо, но и не обмениваются данными в процессе своей работы. Полностью независимые системы удобны тем, что их можно поместить на разные аппаратные устройства, исключив при этом коммуникационные затраты. Асинхронные объекты могут выполняться и на одном устройстве (процессоре), если оно имеет систему прерываний и поддерживает режим разделения времени. Во многих случаях необходимость выполнять объекты на разных устройствах следует из постановки задачи. Так например, в задаче о банковской сети заранее ясно, на каких устройствах должны работать соответствующие объекты.


Распределение модулей и подсистем по процессорам и задачам



3.1.3. Распределение модулей и подсистем по процессорам и задачам

Каждый асинхронный (независимый) объект (модуль или подсистема) должен быть приписан к одному из устройств аппаратуры: универсальному процессору или специализированному функциональному устройству. Разработчик системы должен:
  • оценить требуемую производительность и требуемые ресурсы;
  • выбрать способ реализации подсистем (аппаратный или программный);
  • распределить программные подсистемы по процессорам, стремясь удовлетворить их требования по производительности и в то же время сократить межпроцессорные коммуникации.
Оценка требуемых ресурсов Решение использовать несколько процессоров обычно бывает связано с потребностью иметь более высокую производительность, чем производительность одного процессора. Количество требуемых процессоров зависит от объема вычислений и производительности компьютера. Разработчик системы может оценить требуемую производительность процессоров, вычисляя постоянную нагрузку как произведение количества транзакций в секунду на время выполнения одной транзакции (в примере с банковской сетью транзакция это проводка). Такая оценка не учитывает накладных расходов, связанных со случайными изменениями нагрузки и некоторыми другими факторами. Ее следует уточнить. Замена программ аппаратурой Аппаратуру следует рассматривать как неизменяемое тщательно оптимизированное программное обеспечение. Каждое устройство может рассматриваться как объект, который работает параллельно с другими объектами. Разработчик может принять решение о замене некоторых объектов подходящими аппаратными устройствами. Обычно такое решение принимается по следующим причинам:
  • требуемые устройства легко доступны; в наше время легче купить процессор с плавающей арифметикой, чем реализовать соответствующую библиотеку;
  • требуется более высокая производительность, чем производительность имеющихся процессоров, а производительность специализированных устройств всегда выше.
Распределение модулей и подсистем по процессорам При распределении модулей и подсистем по процессорам следует иметь в виду следующее:
  • некоторые задачи нужно выполнять на определенных устройствах; например, обработку банковской карточки следует выполнять на ATM;
  • время ответа или скорость информационного потока превышает пропускную способность канала между процессором и программой; например, высокоскоростные графические устройства требуют спаренных контроллеров;
  • скорости вычислений слишком высоки для одного процессора, и задачи нужно разместить на нескольких процессорах; подсистемы, которые часто взаимодействуют, нужно поместить на одном процессоре.


Управление хранилищами данных



3.1.4. Управление хранилищами данных

Внутренние и внешние хранилища данных являются четкими точками раздела между подсистемами с хорошо определенными интерфейсами. В качестве хранилищ данных могут использоваться базы данных, файлы и другие структуры данных, размещенные во внешней или основной памяти. Выбор вида хранилища данных зависит от ситуации. В базах данных обычно размещают данные, удовлетворяющие одному из следующих условий:
  • данные, для которых требуется доступ на высоком уровне детализации со стороны многих пользователей;
  • данные, которые могут эффективно управляться командами СУБД;
  • данные, которые должны переноситься на многие платформы;
  • данные, для которых требуется доступ со стороны нескольких прикладных программ.
В файлах удобно размещать данные, удовлетворяющие одному из следующих условий:
  • данные, которых много, но которые плохо поддаются структуризации;
  • данные с низкой информационной плотностью (например, дампы);
  • "сырые" данные, подготавливаемые для баз данных;
  • "летучие" данные, которые хранятся короткое время, а потом удаляются.


Управление глобальными ресурсами



3.1.5. Управление глобальными ресурсами

Необходимо определить глобальные ресурсы и разработать механизмы управления доступом к ним. Глобальными ресурсами могут быть: процессоры, устройства внешней памяти, экран рабочей станции, логические имена (идентификаторы объектов, имена файлов, имена классов), доступ к базам данных и т.п.


Реализация управления программным обеспечением



3.1.6. Реализация управления программным обеспечением

Во время анализа все взаимодействия представляются в виде событий. Управление аппаратурой соответствует этой модели, но необходимо выбрать метод управления программным обеспечением системы. Существует два класса методов управления программным обеспечением: методы внешнего управления и методы внутреннего управления. Известны три метода внешнего управления:
  1. последовательное управление процедурами,
  2. последовательное управление событиями,
  3. параллельное асинхронное управление.
При последовательном управлении процедурами в каждый момент времени действует одна из процедур; это наиболее легко реализуемый способ управления. При последовательном управлении событиями управлением занимается монитор (диспетчер). При параллельном асинхронном управлении этим заведует несколько управляющих объектов (мониторов). Внутреннее управление связано с потоками управления в процессах. Оно существует только в реализации и потому не является только последовательным или параллельным. В отличие от внешних событий, внутренние передачи управления, как например, вызовы процедур или обращения к параллельным задачам контролируются программой и могут быть структурированы в случае необходимости. Здесь мы рассматриваем, в основном, процедурное программирование, но, конечно, возможны и другие парадигмы, как например, логические программные системы, функциональные программные системы и другие виды непроцедурных программных систем. В этом курсе такие системы не рассматриваются.


Пограничные ситуации



3.1.7. Пограничные ситуации

Необходимо предусмотреть поведение каждого объекта и всей системы в пограничных ситуациях: инициализации, терминации и обвале. Инициализация. Перед тем, как начать работать, система (объект) должна быть приведена в фиксированное начальное состояние: должны быть проинициализированы все константы, начальные значения глобальных переменных и параметров, задачи и, возможно, сама иерархия классов. Во время инициализации, как правило, бывает доступна лишь часть возможностей системы. Терминация. Терминация состоит в освобождении всех внешних ресурсов, занятых задачами системы. Обвал. Обвал - это незапланированная терминация системы. Обвал может возникнуть в результате ошибок пользователя, нехватки ресурсов, или внешней аварии. Причиной обвала могут быть и ошибки в программном обеспечении системы.


Обзор архитектур прикладных систем



3.1.8. Обзор архитектур прикладных систем

Существует несколько типов архитектур, обычно используемых в существующих системах. Каждая из них хорошо подходит к определенному типу систем. Проектируя систему одного из нижеперечисленных типов, имеет смысл использовать соответствующую архитектуру. Мы рассмотрим следующие типы систем:
  • системы пакетной обработки - обработка данных производится один раз для каждого набора входных данных;
  • системы непрерывной обработки - обработка данных производится непрерывно над сменяющимися входными данными (рисунок 3.5);
  • системы с интерактивным интерфейсом - системы, управляемые внешними воздействиями (рисунок 3.6);
  • системы динамического моделирования - системы, моделирующие поведение объектов внешнего мира;
  • системы реального времени - системы, в которых преобладают строгие временные ограничения;
  • системы управления транзакциями - системы, обеспечивающие сортировку и обновление данных; имеют коллективный доступ;
  • типичной системой управления транзакциями является СУБД.
При разработке системы пакетной обработки необходимо выполнить следующие шаги:
  • Разбиваем полное преобразование на фазы, каждая из которых выполняет некоторую часть преобразования; система описывается диаграммой потока данных, которая строится при разработке функциональной модели.
  • Определяем классы промежуточных объектов между каждой парой последовательных фаз; каждая фаза знает об объектах, расположенных на объектной диаграмме до и после нее (эти объекты представляют соответственно входные и выходные данные фазы).
  • Составляем объектную модель каждой фазы (она имеет такую же структуру, что и модель всей системы в целом: фаза разбивается на подфазы); разрабатываем каждую подфазу.


Разработка архитектуры системы



3.1. Разработка архитектуры системы

Во время анализа требований к системе основное внимание уделялось выяснению того, что должно быть сделано, вне зависимости от того, как это сделать. На этапе разработки системы решается вопрос, как реализовать решения, принятые на этапе анализа. Сначала разрабатывается общая структура (архитектура) системы. Архитектура системы определяет ее разбиение на модули, задает контекст, в рамках которого принимаются проектные решения на следующих этапах разработки. Приняв решения о структуре системы в целом, разработчик системы производит ее разбиение на относительно независимые в реализации части (модули), разделяя разработку между разработчиками выделенных модулей, что дает возможность расширить фронт работ, подключить к разработке системы новых исполнителей. На этапе конструирования системы ее разработчик должен принять следующие решения:
  • определить разбиение системы на модули;
  • выявить асинхронный параллелизм в системе;
  • определить состав вычислительного комплекса, на котором будет работать система;
  • распределить компоненты системы по процессорам вычислительного комплекса и независимым задачам;
  • организовать управление хранилищами данных;
  • организовать управление глобальными ресурсами;
  • выбрать принципы реализации управления программным обеспечением;
  • организовать управление пограничными ситуациями.


Архитектура системы управления банковской сетью



3.2. Архитектура системы управления банковской сетью

Система управления банковской сетью, рассматриваемая нами в качестве примера, является гибридной системой: это, во-первых, система с интерактивным интерфейсом (интерактивные воздействия осуществляются с помощью кассовых терминалов и ATM), а, во-вторых, это система управления транзакциями, так как она обеспечивает выполнение проводок, которые и есть транзакции. Архитектура системы управления банковской сетью показана на рисунке 3.7. Система имеет три основных подсистемы: подсистему обслуживания ATM, подсистему консорциум и подсистему банк. Система имеет топологию звезды, в центре которой - подсистема консорциум, а на лучах - подсистемы ATM и банк (ясно, что в состав системы входит одна подсистема консорциум и по несколько подсистем ATM и банк).


Совместное рассмотрение трех моделей



3.3.1. Совместное рассмотрение трех моделей

В результате анализа мы получаем три модели: объектную, динамическую и функциональную. При этом объектная модель составляет базу, вокруг которой осуществляется дальнейшая разработка. При построении объектной модели в ней не всегда указываются операции над объектами, так как с точки зрения объектной модели объекты это, прежде всего, структуры данных. Поэтому разработка системы начинается с сопоставления действиям и активностям динамической модели и процессам функциональной модели операций и внесения этих операций в объектную модель. С этого начинается процесс разработки программы, реализующей поведение, которое описывается моделями, построенными в результате анализа требований к системе. Поведение объекта задается его диаграммой состояния; каждому переходу на этой диаграмме соответствует применение к объекту одной из его операций; можно каждому событию, полученному объектом, сопоставить операцию над этим объектом, а каждому событию, посланному объектом, сопоставить операцию над объектом, которому событие было послано. Активности, запускаемой переходом на диаграмме состояний, может соответствовать еще одна (вложенная) диаграмма состояний. Результатом этого этапа проектирования является уточненная объектная модель, содержащая все классы проектируемой программной системы, в которых специфицированы все операции над их объектами.


Разработка алгоритмов, реализующих полученные операции



3.3.2. Разработка алгоритмов, реализующих полученные операции

Каждой операции, определенной в уточненной объектной модели, должен быть сопоставлен алгоритм, реализующий эту операцию. При выборе алгоритма можно руководствоваться следующими соображениями:
  • вычислительная сложность алгоритма: для алгоритмов, применяемых к достаточно большим массивам данных, важно, чтобы оценка их вычислительной сложности была разумной; например, вряд ли имеет смысл избегать косвенности в ссылках, особенно когда введение косвенности существенно упрощает понимание программы; в то же время замена пузырьковой сортировки с оценкой сложности n2 на алгоритм сортировки с оценкой n´log n всегда резко ускоряет вычисления;
  • понятность алгоритма и легкость его реализации: для достижения этого можно даже пойти на небольшое снижение эффективности; например, введение рекурсии всегда снижает скорость выполнения программы, но упрощает ее понимание (рисунок 3.8);
  • гибкость: большая часть программ рано или поздно должна быть модифицирована; как правило, высокоэффективный алгоритм труден для понимания и модификации; одним из выходов является разработка двух алгоритмов выполнения операции: простого, но не очень эффективного, и эффективного, но сложного; при модификации в этом случае изменяется более простой алгоритм, что обеспечивает работоспособность системы на период разработки более эффективного модифицированного алгоритма.


Оптимизация разработки



3.3.3. Оптимизация разработки

Объектная модель, построенная на этапе анализа требований к программной системе, содержит информацию о логической структуре системы; на этапе разработки объектная модель уточняется и пополняется: в нее добавляются детали, связанные с необходимостью обеспечить более эффективный доступ к информационным структурам во время работы системы. Цель оптимизации разработки - заменить семантически корректную, но недостаточно эффективную модель, построенную на этапе анализа, более эффективной. В процессе оптимизации разработки выполняются следующие преобразования:
  • добавляются избыточные зависимости, чтобы минимизировать потери, связанные с доступом к данным, и максимизировать удобство работы с ними;
  • изменяется порядок вычислений для достижения большей эффективности;
  • сохраняются производные атрибуты, чтобы устранить необходимость перевычисления сложных выражений.
На этапе анализа требований к программной системе избыточные зависимости нежелательны, так как они не вносят в модель новой информации. Однако на этапе разработки мы должны приспособить структуру объектной модели к требованиям эффективной реализации системы. Пример использования избыточной (производной) зависимости для повышения эффективности поиска представлен на рисунке 3.9: на рисунке 3.9(а) показаны зависимости из исходной объектной модели; добавление производной (и, следовательно, избыточной) зависимости (рисунок 3.9(б)) позволяет резко ускорить поиск сотрудников, говорящих по-китайски.


Реализация управления



3.3.4. Реализация управления

Реализация управления связана с реализацией динамической модели объектов системы. Известны три подхода к реализации динамической модели:
  • процедурное управление: состоянию соответствует определенный фрагмент программы;
  • управление через события: явная реализация конечного автомата;
  • использование параллельных независимых задач.
Процедурное управление является традиционным способом реализации динамической модели; в этом случае состояние объекта определяется текущим оператором программы, а каждому переходу соответствует оператор ввода: следующее состояние определяется по текущему состоянию и вводимому имени события. Пример практического использования процедурного управления представлен на рисунке 3.12.


Уточнение наследования классов



3.3.5. Уточнение наследования классов

Уточняя определения классов и операций, стараемся увеличить степень наследуемости: чем больше классов находятся в отношении наследования, тем меньше функций, реализующих операции этих классов необходимо будет запрограммировать. Для увеличения степени наследуемости следует:
  • Перестроить классы и операции.
  • Выявить одинаковые (или взаимно однозначно соответствующие) операции и атрибуты классов и определить для этих классов абстрактный суперкласс.
  • Использовать делегирование операций, когда наследование семантически некорректно.
Иногда одна и та же операция бывает определена в нескольких классах, что позволяет ввести общий суперкласс для этих классов, в котором и реализуется эта операция. Но чаще операции в разных классах бывают похожими, но не одинаковыми. В таких случаях нужно попытаться внести несущественные изменения в определения этих операций, чтобы они стали одинаковыми, т.е. имели одинаковый интерфейс и семантику. При этом можно использовать следующие приемы:
  • Если операции имеют одинаковую семантику, но разное число формальных параметров, можно добавить отсутствующие параметры, но игнорировать их при выполнении операции; например, операция отрисовки изображения на монохромный монитор не требует параметра цвет, но его можно добавить и не принимать во внимание при выполнении операции.
  • Некоторые операции имеют меньше параметров потому, что они являются частными случаями более общих операций; такие операции можно не реализовывать, сведя их к более общим операциям с соответствующими значениями параметров; например, добавление элемента в конец списка есть частный случай вставки элемента в список.
  • Одинаковые по смыслу атрибуты или операции разных классов могут иметь разные имена; такие атрибуты (операции) можно переименовать и перенести в класс, являющийся общим предком рассматриваемых классов.
  • Операция может быть определена не во всех классах некоторой группы классов; можно тем не менее вынести ее в их общий суперкласс, переопределив ее в подклассах как пустую там, где она не нужна.
Использование делегирования операций можно пояснить на следующем примере (рисунок 3.13). Класс стек близок классу список, причем операциям стека push и pop соответствуют очевидные частные случаи операций списка add и remove. Если реализовать класс стек как подкласс класса список, то придется применять вместо операций push и pop более общие операции add и remove, следя за их параметрами, чтобы избежать записи или чтения из середины стека; это неудобно и чревато ошибками. Гораздо лучше объявить класс список телом класса стек (делегирование), обращаясь к операциям списка через операции стека. При этом, не меняя класса список, мы заменяем его интерфейс интерфейсом класса стек.


Разработка зависимостей



3.3.6. Разработка зависимостей

Зависимости - это "клей" объектной модели: именно они позволяют рассматривать модель как нечто целое, а не просто как множество классов. Односторонние зависимости можно реализовать с помощью ссылок (указателей) (см. рисунок 3.14). При этом, если кратность зависимости равна единице, ей соответствует один указатель, если кратность больше единицы, то множество указателей.


Разработка объектов



3.3. Разработка объектов

Разработав архитектуру системы, переходим к разработке объектов (классов), составляющих систему. Часть объектов была выявлена на этапе анализа системы, эти объекты могут рассматриваться как основа системы. На рассматриваемом этапе разработки системы необходимо выбрать способ их реализации, стремясь минимизировать количество потребляемых ими ресурсов (времени их выполнения, используемой памяти и др.). При реализации объектов классы, атрибуты и зависимости должны быть реализованы в виде соответствующих структур данных, операции - в виде функций. При этом может возникнуть необходимость введения новых классов (объектов) для промежуточных данных. Разработка объектов предполагает выполнение следующих шагов:
  • Рассматривая совместно три модели, получаем операции над классами.
  • Разрабатываем алгоритмы, реализующие полученные операции.
  • Оптимизируем пути доступа к данным.
  • Реализуем управление взаимодействиями с внешними объектами.
  • Уточняем структуру классов, чтобы повысить степень наследования.
  • Разрабатываем зависимости.
  • Определяем представления объектов.


Вторая фаза жизненного цикла - конструирование системы



3. Вторая фаза жизненного цикла - конструирование системы

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


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. Привести названия и графики использованных типовых возмущающих воздействий. Описать изменения в реакции типовых звеньев на варьирование параметров воздействий.
4.2. Для каждого звена привести: а) название звена; б) структурную схему (подписав входную величину, выходную, сигнал ошибки и обратной связи); в) вывод передаточной функции (подставить коэффициенты усиления и постоянные времени; проверить соответствие с линеаризованной передаточной функцией, которую рассчитывает программа VisSim (Analyze, Transfer Function Info); записать координаты корней и полюсов функции); г) список параметров с описанием характера влияния (на ЛАЧХ & ЛФЧХ, переходные процессы, ...); д) переходную функцию; е) функцию веса; ж) ЛАЧХ & ЛФЧХ (определить достигает ли фаза значения -180 градусов в диапазоне частот и если да, то имеет ли звено на данной частоте коэффициент усиления больший единицы); з) диаграмму Найквиста (определить охватывает ли АФХ точку (-1, j0); отметить траектории для положительных и отрицательных частот; точки, в которых частота стремится к нулю и к бесконечности); и) корневой годограф (определить имеются ли нулевой, положительные, или чисто мнимые корни; если есть парные корни с мнимой частью, то по мнимой части определить собственную частоту колебаний звена и сравнить с колебаниями переходной функции или функции веса, сделать вывод об устойчивости звеньев).
4.3. Указать на неидеальности, присущие свойствам, которыми обладают реальные дифференцирующие устройства и их компьютерные дискретные модели. Пояснить причину неидеальности в дискретных моделях.
4.4. Кроме осциллограмм, ЛАЧХ & ЛФЧХ подтверждающих результаты настройки схем по пп. 3.3 необходимо привести схемы проведения измерений (включая источники тест-сигналов) и дать пояснения к ним.


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. Привести общее описание типового ПИД-регулятора (структурная схема, дифференциальное уравнение или передаточная функция, основные параметры).
4.2. Описать принципиальные отличия в формировании сигнала воздействия на объект u(t) каналами типового ПИД-регулятора (сравнительный анализ): а) при малых возмущениях в первичной информации x(t), и при больших; б) при постоянстве входной координаты, при движении её с постоянной скоростью и с постоянным ускорением. Привести поясняющие графические зависимости.
4.3. Привести переходные процессы: а) при оптимальных настройках регуляторов для разных принципов регулирования объектом; б) для тех же случаев, с теми же настройками, но при отклонениях параметров объекта. Дать пояснения.
4.4. Построить два семейства зависимостей приведенной статической погрешности от изменения коэффициента усиления объекта при разных коэффициентах передачи пропорционального канала регулятора. В первом случае - для управления с ОС, во втором - без ОС. Первое семейство погрешностей привести к сигналу задания 1(t), второе - к среднему значению коэффициента усиления для каждой вариации (семейство вырождается в один график). Пояснить результаты.
4.5. Определить для модели ПИД-регулятора на ОУ коэффициенты усиления каждого канала. Для интегрального и дифференциального каналов необходимо указать граничные (сопрягающие) частоты или соответствующие постоянные времени. Нанести значения параметров на ЛАЧХ & ЛФЧХ регулятора. Выявить соответствие между параметрами и элементами схемы. Описать, какие ограничения накладывает частотная характеристика типового ОУ на параметры ПИД-регулятора. Продемонстрировать изменения сдвига фаз сигналов на характерных участках частотных характеристик, используя сигнал синусоидальной формы. При выполнении экспериментов следует учитывать, что данный ПИД-регулятор инвертирует сигнал.


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. Исследование точности в типовых режимах (пп. 3.1, 3.2, 3.3) следует проиллюстрировать временными зависимостями с подробными пояснениями. Внесенные в таблицы данные, должны быть отражены на графиках. Рекомендуется использовать режим графического наложения результатов моделирования при изменении знака и точки ввода воздействий.
4.2. Сравнить экспериментальные значения коэффициентов ошибки с расчетными.
4.3. В основе функций цены для итерационного процесса оптимизации должны быть: интегральная оценка качества; улучшенная интегральная оценка; и оценка дополнительно использующая параметры переходного процесса - перерегулирование или количество колебаний. Сравнить эффективность оценок, качественно характеризуя принципиально достижимые результаты.
4.4. Показатели качества найденные в пп. 3.5 и 3.7, нанести на переходные характеристики h(t), АЧХ замкнутой системы |Ф(jw)|, АФХ и ЛАЧХ & ЛФЧХ разомкнутой системы соответственно. Сравнить качество настроек ПИД-регулятора в трех случаях. АЧХ замкнутой системы |Ф(jw)| - это ее ЛАЧХ, у которой ось модуля не логарифмическая (снимите соответствующую галочку в свойствах графика). При определении ЛАЧХ & ЛФЧХ разомкнутой системы следует выделить требуемые блоки структурной схемы и отметить точки входа и выхода сигнала (Select Input/Output Points).


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. Готовые звенья для изменений в структурных схемах моделей находятся в блоке Instruments. Только требуемое звено и соответствующий регулятор настройки нужно перенести и подключить к модели. Изменения в структурных схемах отразить в отчете.
4.2. Если моделирование занимает много времени (10...20 с, VisSim 1.2), то отключите второстепенные визуализирующие приборы - такие как блок Display. Синхронный с разверткой вывод на экран информации на каждом шаге расчёта растягивает последний на 1/50 секунды.
4.3. В случае применения неединичных обратных связей или масштабирующих устройств на входе / выходе или комбинированного управления использование выходного сигнала чувствительного элемента системы (сумматора) для исследования ошибки x(t) не имеет смысла. Необходимо вычесть выходной сигнал y(t) из входного g(t) дополнительным сумматором.


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. Определить ЛАЧХ & ЛФЧХ разомкнутой системы в пакете VisSim можно без размыкания контура - необходимо выделить все блоки файла, а за тем отменить выделение только для источника сигнала и сумматора. Если САР неустойчива, то нужно разорвать контур. Для описанного выделения выполните два действия: а) установите мышь на свободное место и нажмите Shift+[правая клавиша мыши] (выделение всей схемы), б) повторная отметка указанной комбинацией любого элемента схемы отменит выделение для него. В некоторых случаях потребуется принудительно отметить вход и выход. Далее - стандартно.
4.2. При составлении моделей по пп. 3.4, допускается произвольная инверсия сигналов в схемах на операционных усилителях, но следует обратить внимание на результирующий фазовый сдвиг от инверсии.
4.3. Схемотехника инвертирующих включений операционных усилителей предполагает введение входного сигнала в корректирующую цепь. Если при построении моделей в пакете VisSim по пп. 3.6 это вызывает затруднения, то можно перейти к неинвертирующему включению операционного усилителя.
4.4. В пакете Electronics Workbench методика использования виртуального прибора - анализатора сильно упрощена. На практике, подобные подключения прибора не позволят снять частотную характеристику операционного усилителя с разорванной обратной связью. Дайте пояснения.
4.5. В файле kor_ooc.vsm корректирующие обратные связи должны включатся не одновременно.


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. При синтезе низкочастотных корректирующих устройств следует полагать, что подъём ЛАЧХ от запретной области не допустим, по причине возможного возрастания влияния помех и наводок на входе.
4.2. При выполнении измерений, цель которых - определить точность замкнутой системы, следует подавать синусоидальные сигналы как на участках границы запретной области с разным наклоном, так и на сопрягающей частоте. Только фазовую ошибку Dj допустимо измерить, прибегая к функциям частотного анализа (необходимо задаваться очень узким частотным диапазоном).
4.3. При точной настройке системы по показателю колебательности M следует помнить, что второй пик АЧХ замкнутой системы |Ф(jw)| так же не должен достигать уровня M.
4.4. Для построения годографа корней в пакете VisSim нужно выделять разомкнутую систему W(p).
4.5. VisSim строит годограф корней - 1+KocW(p)=0 - характеристического уравнения замкнутой системы Ф(p) с варьируемым коэффициентом передачи в цепи обратной связи Koc, для выделенных блоков, которые принимает за разомкнутую систему W(p):
  1. Если Kос=0, то корни уравнения 1+KocW(p)=0 устремляются к корням-полюсам W(p), которые отмечены крестами (только при Kос=0!).
  2. Если Kос стремится к бесконечности, то часть корней уравнения 1+KocW(p)=0 устремляется к корням-нулям W(p), а часть - к бесконечности.
  3. Если Kос=1, то характеристическое уравнение соответствует единичной обратной связи.

4.6. Если уточнять координаты корней на траекториях годографов, то дополнительно будут высвечиваться три соответствующие корню параметра: 1) Koc; 2) параметр затухания - z (в программе VisSim - z); 3) угловая частота свободных колебаний - w. По значению Koc, можно оценить: при каких значениях контурного коэффициента усиления K*Kос система станет не устойчивой, а также быстродействие системы. Степень быстродействия определяется по самому ближнему к мнимой оси корню на траекториях при заданном значении Koc. Параметр затухания - z и угловую частоту свободных колебаний - w легко интерпретировать, если вспомнить, что передаточная функция замкнутой системы с комплексными корнями Ф(p) часто может быть аппроксимирована колебательным звеном.


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. При использовании линеаризованных моделей-аппроксиматоров звена временного запаздывания наиболее схожими переходные процессы будут в случае использования простейших методов интегрирования - Эйлера, и трапециидального. В пакете VisSim все функции анализа для блока "timeDelay" не доступны.
4.2. Выполняя пункт 3.1, следует назвать звенья составляющие модели-аппроксиматоры звена временного запаздывания и указать, каким образом следует изменить их структуру для более точной аппроксимации.
4.3. Оценить адекватность симуляции движения (пп. 3.2.а) необходимо исходя из положений: а) сигнал на входе системы имеет широкий спектр (может меняться с большими скоростями и ускорениями); б) сигнал на входе звена, в силу инерционных свойств системы, имеет ограниченный спектр.
4.4. Оценить адекватность результатов при исследовании точностных параметров систем (пп. 3.2.б) необходимо для двух методик. Первая предполагает измерение ошибок в типовых режимах движения (см. л.р. No 5). Вторая - изучение параметров ЛАЧХ в области низких частот (см. л.р. No 8).
4.5. Оценить адекватность результатов при исследовании запасов устойчивости систем (определении критического запаздывания), (пп. 3.2.в) необходимо для двух методик. Первая предполагает подбор запаздывания при симуляции движения до получения переходного процесса соответствующего границе устойчивости. Вторая базируется на изучении частотных свойств разомкнутой системы в области частоты среза либо по ЛАЧХ & ЛФЧХ, либо по АФХ (годограф Найквиста).
4.6. Выводы по работе должны содержать рекомендации о том, каким из аналогов звена временного запаздывания наиболее целесообразно пользоваться и для каких целей.


Методические указания к моделированию и рекомендации к содержанию отчета


4.1. При выполнении работы рекомендуется использовать простейший метод интегрирования - Эйлера.
4.2. При настройке ПИД-регулятора рекомендуется убедиться в отсутствии комплексных нулей у его передаточной функции. Если таковые имеются, следует поднять коэффициент в пропорциональном канале.
4.3. Получить коэффициенты полиномов числителя и знаменателя, а также значения их корней для выделенной части структурной схемы можно воспользовавшись пунктами меню "Analyze", "Transfer Function Info".
4.4. Для осуществления перехода от непрерывной передаточной функции к дискретной, на вкладке свойств блока "transferFunction" следует нажать кнопку "Convert S->Z" и ввести период дискретизации больший, чем шаг моделирования.
4.5. При манипуляциях с коэффициентами полиномов числителя и знаменателя дискретных фильтров следует воздержаться от округлений - переход от изображения Лапласа к Z-изображению описывается свертыванием правой полуплоскости "устойчивых" корней в несравнимо малую окружность единичного радиуса, т.е. точность позиционирования корня должна быть эквивалентно выше.
4.6. Разложение на множители и на элементарные дроби не обязательно выполнять для дискретной передаточной функции, можно выполнить его и для непрерывной, а потом уже перейти к дискретным фильтрам первого порядка. При этом возможности пакета VisSim освобождают от расчетов.
4.7. Для выявления других технических особенностей каждого из трех алгоритмов следует попытаться идентифицировать частотные свойства для разделенных блоков, составляющих ПИД-регулятор (см. пп. 3.5) и выявить параметры, которые отвечают за его настройки.
Создание условных графических обозначений электрорадиоэлементов средствами редактора P-CAD тут


Методология OMT



4.1. Методология OMT

Методология OMT (Object Modeling Technique), достаточно подробно рассмотренная в разделах 2 и 3, поддерживает две первые стадии разработки программных систем. Эта методология опирается на программный продукт OMTTool, который позволяет разрабатывать модели проектируемой программной системы в интерактивном режиме с использованием многооконного графического редактора и интерпретатора наборов диаграмм, составляемых при анализе требований к системе и ее проектировании с использованием методологии OMT. Таким образом, как только получен достаточно полный набор диаграмм проектируемой программной системы, его можно проинтерпретировать и предварительно оценить различные свойства будущей реализации системы. В настоящее время OMTTool входит в состав системы Paradigm+.


Методология SA/SD



4.2. Методология SA/SD

Методология SA/SD (Structured Analysis/Structured Design) содержит несколько вариантов систем обозначений для формальной спецификации программных систем. На этапе анализа требований и предварительного проектирования для логического описания проектируемой системы используются спецификации (формальные описания) процессов, словарь данных, диаграммы потоков данных, диаграммы состояний и диаграммы зависимостей объектов. Диаграммы потоков данных (они подробно рассмотрены в п. 2.5.1), составляющие основу методологии SA/SD, моделируют преобразования данных при их прохождении через систему. Методология SA/SD состоит в последовательном рассмотрении процессов, входящих в состав ДПД, с представлением каждого процесса через ДПД, содержащую в своем составе более простые процессы. Эта процедура представления более сложных процессов через ДПД начинается с ДПД всей системы и заканчивается, когда все полученные ДПД содержат достаточно элементарные процессы. Для каждого процесса самого нижнего уровня составляется спецификация; спецификация описывается с помощью псевдокода, таблиц принятия решений и т.п. Детали, не учтенные в наборе ДПД, содержатся в словаре данных, который определяет потоки и хранилища данных, а также семантику различных имен. Набор диаграмм состояния процессов играет ту же роль, что и динамическая модель в методологии OMT. Диаграммы зависимостей объектов отражают зависимости между хранилищами данных. Эти диаграммы аналогичны объектной модели методологии OMT. Так в методологии SA/SD организован этап структурного анализа (SA). После структурного анализа начинается этап структурного конструирования (SD), в процессе которого разрабатываются и уточняются более тонкие детали проектируемой системы. Таким образом, мы видим, что у методологий SA/SD и OMT много общего: обе методологии используют похожие конструкции для моделирования и поддерживают три взаимно-ортогональных представления проектируемой системы. Методологии SA/SD и OMT можно рассматривать как два способа использования инструментального средства - OMTTool. Но в методологии SA/SD ведущей является функциональная модель (набор ДПД), на втором месте по важности стоит динамическая модель и на последнем месте - объектная модель. Таким образом, в методологии SA/SD проектируемая система описывается с помощью процедур (процессов), что несколько противоречит объектно-ориентированному подходу. Методология OMT гораздо ближе к нему: в ней моделирование концентрируется вокруг объектной модели, т.е. вокруг объектов, из которых строится проектируемая система. Процедурная ориентированность методологии SA/SD является ее недостатком: системы, спроектированные по этой методологии, имеют менее четкую структуру, так как разбиение процесса на подпроцессы во многом произвольно, зависит от реализации и плохо отражает структуру проектируемой системы. В то же время методология SA/SD является одним из первых хорошо продуманных формальных подходов к разработке программных систем.


Методология JSD



4.3. Методология JSD

Методология JSD (Jackson Structured Development) предлагает свой стиль разработки программных систем; он отличается от стиля, принятого в методологиях SA/SD или OMT. Методология JSD, разработанная Майклом Джексоном в середине 80-х годов, особенно популярна в Европе. В методологии JSD не делается различий между этапом анализа требований к системе и этапом ее разработки; оба этапа объединяются в один общий этап разработки спецификаций проектируемой системы. На этом этапе решается вопрос "что должно быть сделано"; вопрос "как это должно быть сделано" решается на следующем этапе - этапе реализации системы. Методология JSD часто применяется для проектирования систем реального времени. Как и другие методологии, методология JSD использует систему графических обозначений, хотя эта методология и менее ориентирована на графику, чем методологии SA/SD и OMT. Разработка модели JSD начинается с изучения объектов реального мира. Целью системы является обеспечение требуемой функциональности, но Джексон понимает, что сначала следует убедиться, что эта функциональность согласуется с реальным миром. Модель JSD описывает реальный мир в терминах сущностей (объектов), действий и порядка выполнения действий. Разработка системы по методологии JSD включает следующие шесть фаз:
  • разработка действий и объектов;
  • разработка структуры объектов;
  • разработка исходной модели;
  • разработка функций;
  • разработка временных ограничений;
  • реализация системы.
На фазе разработки действий и объектов разработчик, руководствуясь внешними требованиями к проектируемой системе, составляет перечень сущностей (объектов) и действий реального мира, связанных с этой системой. Так например, проектируя систему управления двумя лифтами в шестиэтажном доме, можно выделить два объекта "лифт" и "кнопка" и три действия - "нажатие кнопки", "лифт приходит на этаж n" и "лифт покидает этаж n". И объекты, и действия взяты из реального мира, а не искусственно введены в рассмотрение проектировщиком. Все действия являются атомарными (неразложимыми на поддействия) и происходят в фиксированные моменты времени. На фазе разработки структуры объектов действия каждого объекта частично упорядочиваются во времени. Так, в рассматриваемом примере действия "лифт приходит на этаж n" и "лифт покидает этаж n" должны чередоваться: два действия "лифт приходит на этаж n" не могут идти одно за другим. Фаза разработки исходной модели связывает реальный мир с абстрактной моделью, устанавливая соответствие между вектором состояния и потоком данных. Вектор состояния обеспечивает "развязку" по управлению; так в примере с лифтами первая же нажатая кнопка вверх установит значение переключателя (флажка) "вверх" после чего лифт не будет реагировать на дальнейшие нажатия кнопок вверх, так что нажатие кнопки вверх один или пять раз приведет к одинаковому результату. Аналогично, поток данных позволяет обеспечить "развязку" по данным: примером может служить буфер файла. На фазе разработки функций с помощью специального псевдокода устанавливаются выходные данные каждого действия. Для системы управления лифтами примером функции является переключение лампочек на панели лифта при прибытии лифта на очередной этаж. На фазе разработки временных ограничений решается вопрос о допустимых временных отклонениях системы от реального мира. В результате получается множество временных ограничений. В примере с лифтами одним из временных ограничений будет решение вопроса о том, как долго нужно нажимать на кнопку лифта, чтобы добиться его реакции. Наконец, на фазе реализации системы решаются проблемы управления процессами и распределения процессов по процессорам. Методология JSD может быть названа объектно-ориентированной с большой натяжкой: в ней почти не рассматривается структура объектов, мало внимания уделяется их атрибутам. Некоторые действия в смысле методологии JSD являются, по существу, зависимостями между объектами в смысле методологии OMT. Тем не менее, методология JSD может успешно применяться для проектирования и реализации следующих типов прикладных программных систем:
  • Параллельные асинхронные программные системы, в которых процессы могут взаимно синхронизировать друг друга.
  • Программные системы реального времени; методология JSD ориентирована именно на такие системы.
  • Программные системы для параллельных компьютеров; парадигма, принятая в методологии JSD может здесь оказаться полезной.
Методология JSD плохо приспособлена для решения следующих проблем:
  • Высокоуровневый анализ: методология JSD не обеспечивает широкого понимания проблемы; она неэффективна для абстракции и упрощения проблем.
  • Разработка баз данных: это слишком сложная проблема для методологии JSD.


Методология OSA



4.4. Методология OSA

Методология OSA (Object-Oriented System Analysis) обеспечивает объектно-ориентированный анализ программных систем и не содержит возможностей, связанных с поддержкой этапа разработки. Методологии объектно-ориентированного анализа нередко критикуются за то, что они являются больше реализационно-ориентированными, чем проблемно-ориентированными, обеспечивая больше предварительную разработку, чем анализ требований к системе. Действительно, все рассмотренные методологии (такие, как OMT, SA/SD, JSD) поддерживают прежде всего предварительную разработку программных систем, а не анализ требований к ним. Это следует из таблиц 4.1 и 4.2, в которых рассмотрены возможности различных методологий, поддерживающие процесс анализа (таблица 4.1) и процесс разработки (таблица 4.2). Таблица 4.1. Аналитические возможности сравниваемых методологий объектно-ориентированного анализа
Возможность OSA OMT SA/SD JSD
Объекты: должны иметь индивидуальное и независимое состояние и поведение++++
Классы объектов: должны определять свойства своих членов и должны иметь место в памяти++++
Множества связей: множества соединений объектов++++
Реляционные классы объектов: рассматривают связи как объекты++-+
Полностью интегрированные подмодели: допускают произвольную интеграцию подмоделей анализа; знак "-" в таблице означает, что подмодели, представленные, например, блок-схемами, не могут комбинироваться с другими видами подмоделей (например, моделями поведения)+--+
Агрегация: часто используемый механизм абстракции, который представляет взаимосвязи между системами и их частями++++
Обобщение/наследование: механизм абстракции: если A есть специализация B, то свойства A подразумевают свойства B++-+
Полномасштабные ограничения мощности связей: допускают мощности связей, являющихся произвольными множествами неотрицательных целых чисел (не только 1-1, 1-M, M-1, M-M)+---
Синонимы и омонимы: допускают несколько имен для одной конструкции и многократное использование одного имени для различных конструкций; полезно при интеграции моделей+---
Полная система триггеров: допускаются только условия, только события, или комбинации условий и событий++--
Действия: описывают поведение, которое завершается++++
Недетерминированное поведение: описание поведения, которое при отсутствии внешних воздействий может и не завершиться++--
Межобъектный параллелизм: более одного объекта могут быть активными одновременно++++
Внутриобъектный параллелизм: в одном объекте допускается одновременное активное существование двух или более трэдов++--
Исключения: допускается обнаружение и обработка условий ошибок+---
Временные ограничения: обеспечивают средства ограничения времени на какое-либо действие+-++
Темпоральные условия: поддерживают возможность формулировать условия, ссылающиеся на события в прошлом, настоящем и будущем+---
Метамодель: определяет правильный экземпляр модели+---
Родовой класс: параметризация классов - механизм абстракции, помогающий осуществлять анализ, хотя иногда его считают особенностью языка----
Взаимодействие данных и событий: обеспечивает возможность объектам посылать и принимать данные и события+++-
Унифицированные взаимодействия: разрешают взаимодействие и по данным, и по событиям одновременно; многие модели разделяют взаимодействия по данным (поток данных) и по событиям+---
Детализация взаимодействий: показывает когда и почему объект взаимодействует с другими объектами+---
Непрерывные взаимодействия: допускает непрерывный поток информации+---
Взаимодействия по бродкастингу: разрешает иметь много приемников для одной передачи данных или события; бродкастинг разрешен только для данных, но не для событий+---
Общее число аналитических возможностей 29 13 8 9
Таблица 4.2.Возможности сравниваемых методов объектно-ориентированного анализа, используемые на этапе разработки системы
Возможность OSA OMT SA/SD JSD
Значения: имеют состояние, но не имеют поведения и индивидуальности; хотя значения можно считать постоянными объектами, во многих подходах существует различие между пространствами значений и объектов-+++
Атрибуты и/или методы: определяют классы объектов в терминах атрибутов и/или методов, аналогично тому, как классы объектов определяются в объектно-ориентированных языках-+++
Шаблоны классов объектов: шаблоны, по которым создаются экземпляры классов объектов, что подразумевает, что свойства экземпляра объекта определяет класс, а не свойства объекта определяют его класс-+-+
Абстрактные классы: шаблоны, которые определяют свойства, но не разрешают создавать экземпляры-+++
Псевдонаследование: разрешает, чтобы атрибуты и сигнатуры методов подкласса совпадали с атрибутами и сигнатурами методов суперкласса-+++
Тождественность по значениям: множества атрибутов (их обычно называют возможными ключами), используемые для определения тождественности объектов-++-
Изменение семантики: разрешает переопределять в подклассе семантику методов суперкласса-++-
Императивный вызов операций: позволяет вызов метода в отношении клиент-сервер---+
Общее число возможностей по разработке 0 7 6 6
Методология OSA сосредоточена только на проблемах анализа, предлагая ряд интересных соображений, связанных с объектно-ориентированным анализом систем и специально исключая из рассмотрения особенности, характерные для разработки. Предлагая удобные и тонкие методы анализа систем, методология OSA обеспечивает интерпретацию моделей на компьютере на самых ранних этапах анализа системы: OSA реализована в системе программирования C++ на рабочей станции Hewlett-Packard 700 под управлением ОС HP-UX 9.01. Методология OSA, как и другие методологии, поддерживает три взаимно-ортогональных представления (модели) проектируемой системы:
  • модель зависимостей между объектами;
  • модель поведения объектов;
  • модель взаимодействия объектов.
Модель зависимостей между объектами аналогична объектной модели методологии OMT. В ней рассматриваются объекты, множества отношений между объектами и различные ограничения. Для ее представления используются диаграммы, которые, как видно из рисунке 4.1, очень похожи на диаграммы для представления объектной модели методологии OMT.


Сравнительный анализ объектно-ориентированных методологий разработки программных систем



4. Сравнительный анализ объектно-ориентированных методологий разработки программных систем

Разработка программных систем охватывает первые две стадии их жизненного цикла: стадию анализа требований и предварительной разработки, на которой будущая программная система рассматривается только в аспекте ее прагматики (никакие аспекты, связанные с ее будущей реализацией не принимаются во внимание), и стадию проектирования (конструирования), на которой принимаются основные решения, связанные с реализацией проектируемой программной системы, а ее структура, разработанная на первой стадии, изменяется с учетом требований ее эффективности. Методология OMT (Object Modeling Technique), которая была подробно рассмотрена в разделах 2 и 3, поддерживает две первые стадии жизненного цикла программных систем. Это не единственная объектно-ориентированная методология разработки программных систем. Она была выбрана для демонстрации объектно-ориентированного подхода, потому что является одной из наиболее продвинутых и популярных объектно-ориентированных методологий. Более того, графический язык (система обозначений для диаграмм) методологии OMT получил достаточно широкое распространение и используется в некоторых других объектно-ориентированных методологиях, а также в большинстве публикаций по объектно-ориентированным методологиям. В этом разделе мы рассмотрим другие объектно-ориентированные методологии разработки программных систем. Они будут сравниваться с методологией OMT. В последнее время интерес к объектно-ориентированным методологиям разработки программных систем продолжает возрастать: много публикаций в журналах, докладов на конференциях и т.д. Программное обеспечение объектно-ориентированных методологий стало настолько популярным, что все интересные инструментальные и CASE-системы давно исчезли из public domain и распространяются только как коммерческие системы. Наиболее известной такой системой является система Paradigm+, которая поддерживает восемь объектно-ориентированных методологий, и в том числе, методологию OMT. В этом разделе будут рассмотрены следующие объектно-ориентированные методологии анализа и разработки программных систем: OMT (Object Modeling Technique), SA/SD (Structured Analysis/Structured Design), JSD (Jackson Structured Development), OSA (Object-Oriented System Analysis), Проклос (Проектирование в кластерной среде).


Объектно-ориентированный стиль программирования



5.1. Объектно-ориентированный стиль программирования

Правильно разработанные программы должны не только удовлетворять своим функциональным требованиям, но и обладать такими свойствами, как:
  • повторная используемость;
  • расширяемость;
  • устойчивость к неправильным данным;
  • системность.
Правильный объектно-ориентированный стиль программирования обеспечивает наличие этих свойств. Поясним это на примере свойства системности. Программа обладает свойством системности, если она применима в качестве обобщенного оператора при "крупноблочном программировании". Крупноблочное программирование - это систематическое использование ранее разработанных крупных программных единиц (таких, как классы, подсистемы, или модули) при разработке новых программных систем. Следующие рекомендации могут помочь разрабатывать классы, обладающие свойством системности.
  • Методы должны быть хорошо продуманы.
  • Методы должны быть понятны всем, кто их прочитает.
  • Методы должны быть легко читаемы.
  • Имена должны быть такими же, как и в модели.
  • Методы должны быть хорошо документированы.
  • Спецификации методов должны быть доступны.
Естественно, что к этим и им подобным "рекомендациям" следует относиться с известной долей юмора. Но выполнять их, тем не менее, полезно.


Объектно-ориентированные системы программирования



5.2. Объектно-ориентированные системы программирования

Рассмотрим проблемы реализации проекта, разработанного с использованием методологии OMT, в системах программирования объектно-ориентированных языков. В качестве примеров таких систем программирования будут рассмотрены системы программирования известных объектно-ориентированных языков C++, Eiffel и Smalltalk. Все три модели методологии OMT, разработанные на этапе анализа требований к системе и уточненные на этапе ее проектирования, используются на этапе реализации программного обеспечения системы. Объектная модель определяет классы, атрибуты, иерархию наследования, зависимости. Динамическая модель определяет стратегию управления, которая будет принята в системе (процедурно-управляемая, событийно-управляемая, или многозадачная). Функциональная модель содержит функциональность объектов, которая должна быть воплощена в их методах.


Реализация классов



5.3.1. Реализация классов

Реализация прикладной программной системы, спроектированной с помощью объектно-ориентированной методологии (например, методологии OMT), на языке C++ начинается с определения классов, разработанных на этапе проектирования, на этом языке. При этом желательно сохранение имен и, по возможности, других обозначений, введенных на этапе проектирования. Рассмотрим в качестве примера, как реализовать на языке C++ класс Window, показанный на рисунке 5.1. Отметим, что реализация класса на языке C++ содержательно мало отличается от его представления в объектной модели OMT. class Window { public: // конструктор Window (Length x0, Length y0, Length width, Length height); // деструктор ~Window (); // методы void add_box (Length x, Length y, Length width, Length height); void add_circle (Length x, Length y, Length radius); void clear_selections (); void cut_selections (); Group* group_selections (); void move_selections (Length deltax, Length deltay); void redraw_all (); void select_item (Length x, Length y); void ungroup_selections (); private: Length xmin; Length ymin; Length xmax; Length ymax; void add_to_selections (Shape* shape); }; В определении класса на языке C++ и атрибуты, и методы называются членами этого класса; их определения могут следовать в тексте определения класса в произвольном порядке. Члены класса могут быть общедоступными (public), или приватными (private); вне класса определен доступ только к его общедоступным членам, а приватные члены доступны только методам своего класса. В рассматриваемом примере все атрибуты являются приватными, а все методы (кроме метода add_to_selections) - общедоступными, так что прочитать или изменить значение каждого атрибута можно только с помощью соответствующего метода; это рекомендуемая, хотя и не обязательная дисциплина программирования на языке C++ (определение всех атрибутов класса как приватных называется инкапсуляцией данных). Тип Length должен быть определен пользователем (обычно такие определения делаются в одном из файлов-заголовков, вставляемых в программу по #include). Для определения типа используется оператор typedef. Например: typedef float Length; или typedef int Length;


Порождение объектов



5.3.2. Порождение объектов

В каждом классе языка C++ могут быть определены специальные методы (один, или несколько), обращение к которым приводит к порождению нового объекта этого класса. Такие методы называются конструкторами. Конструкторы могут иметь параметры, что позволяет определить начальное состояние объекта при его порождении. Конструкторы имеют то же имя, что и имя класса, в котором они определены, так что если класс имеет несколько конструкторов, то они должны различаться числом и типом своих параметров. В качестве примера рассмотрим конструктор класса Window (см. рисунок 5.1): Window::Window (Length x0, Length y0, Length width, Length height) { xmin = x0; ymin = y0; xmax = x0 + width; ymax = y0 + height; } При обращении к этому конструктору порождается новое окно с координатами нижнего левого угла (x0,y0), шириной width и высотой height. Наряду с рассмотренным в этом классе могут быть определены и другие конструкторы: Window (Length x0, Length y0);//берутся стандартные размеры окна Window (); //берутся стандартные размеры и положение окна В языке C++ поддерживается три вида выделения памяти для размещения объектов: в фиксированной глобальной памяти (статическая память, static), в системном стеке (автоматическая память, automatic), в "куче" (динамическая память, dynamtic). Чтобы разместить объект в статической памяти достаточно либо объявить его вне какой-либо функции, либо при его объявлении указать ключевое слово static. Статическая память выделяется компилятором во время компиляции программы и не меняется во время ее выполнения. Конструктор можно использовать для инициализации объектов, размещаемых в статической памяти (для выделения статической памяти под объект без его инициализации достаточно просто объявить его). Объявление Window main_window = Window(0.0, 0.0, 8.5, 11.0) определяет статический объект main_window (основное окно), проинициализированный значениями параметров конструктора. Локальные объекты, объявляемые внутри функций, размещаются в автоматической памяти (системном стеке). Их тоже можно инициализировать с помощью конструктора. Наконец, обращение к конструктору в операторе new в процессе выполнения программы порождает объект, размещаемый в динамической памяти. Например: Window *window = new Window (0.0, 0.0, 8.5, 11.0); При этом выражение new Window (0.0, 0.0, 8.5, 11.0) имеет своим значением указатель на порожденный динамический объект. Для терминации объектов можно использовать специальный метод, являющийся одним из членов класса и называемый деструктором. Как и конструктор, он имеет то же имя, что и имя класса, в котором он определен, но первым символом имени деструктора является тильда (~): Window::~Window (); { //убрать окно и перекрасить освободившуюся область } Наконец, для освобождения динамической памяти от объектов, которые уже не нужны, используется операция delete, например: delete window; Необходимость использования операции delete связана с тем, что в системе C++ не производится сборки мусора, и программист должен сам заботиться об освобождении динамической памяти от ненужных объектов, чтобы избежать ее переполнения (в более современной системе программирования Java обеспечивается автоматическая сборка мусора, что существенно упрощает программирование).


Вызов операций



5.3.3. Вызов операций

В языке C++ операция (метод) определяется как один из членов класса. При вызове операции используются те же обозначения, что и при обращении к атрибутам: операция выбора члена "->" применяется к соответствующему указателю: Shape* shape; shape->move(dx,dy); Параметрами операции могут быть значения одного из встроенных типов (int, float, char и т.п.), либо значения типов, определенных с помощью typedef, либо объекты некоторых классов, либо указатели переменных и констант перечисленных типов, либо указатели объектов. Имя атрибута или операции, используемое в качестве идентификатора в реализации метода неявно ссылается на соответствующие члены объекта, к которому применяется операция. В следующем примере x и y являются атрибутами объекта класса Shape, к которому будет применена операция move: void Shape::move (Length deltax, Length deltay) { x = x + deltax; y = y + deltay; } Это эквивалентно применению неявного параметра this, значением которого всегда является указатель объекта, к которому применяется операция. Следующий фрагмент программы эквивалентен предыдущему: void Shape::move (Length deltax, Length deltay) { this->x = this->x + deltax; this->y = this->y + deltay; } Ссылка на любой другой объект в описании операции должна обязательно быть квалифицированной (содержать указатель соответствующего объекта): window->xmin = x1;


Использование наследования



5.3.4. Использование наследования

В языке C++ наследование устанавливается только при составлении программы и не может быть изменено в процессе ее выполнения. Поведение каждого объекта полностью определяется классом этого объекта и одинаково для всех объектов данного класса. Все характеристики наследования одинаковы для всех объектов каждого класса. Список суперклассов (если он не пуст) указывается в начале определения каждого класса; подкласс называется также производным классом. В следующем примере приведено описание класса Item, а также описания подкласса Shape класса Item и подклассов Box и Circle класса Shape: class Item { public: virtual void cut (); virtual void move (Length deltax, Length deltay) = 0; virtual Boolean pick (Length px, Length py) = 0; virtual void ungroup () = 0; }; class Shape: public Item { protected: Length x; Length y; public: void cut (); void draw () {write (COLOR_FOREGROUND);}; void erase (); {write (COLOR_BACKGROUND);}; void move (Length deltax, Length deltay); Boolean pick (Length px, Length py) = 0; void ungroup () { }; virtual void write (Color color) = 0; }; class Box: public Shape { protected: Length width; Length height; public: Box (Length x0, Length y0, Length width0, Length height0); Boolean pick (Length px, Length py); void write (Color color); }; class Circle: public Shape { protected: Length radius; public: Circle (Length x0, Length y0, Length radius0); Boolean pick (Length px, Length py); void write (Color color); }; Члены суперкласса (атрибуты и операции) наследуются его подклассами (члены, определенные в суперклассе, имеются у всех его подклассов). Члены суперкласса, определенные в нем как private, недоступны для операций его подклассов; для операций подклассов доступны члены суперкласса, определенные в нем protected и как public. Методы, определенные в суперклассе, могут быть переопределены в (некоторых) его подклассах, если они определены как виртуальные (virtual). Например, метод write класса Shape может быть переопределен в его подклассах Box и Circle, поэтому он определен как виртуальный; методы и в подклассах не переопределяются, поэтому их можно не объявлять как виртуальные. Если в определении виртуального метода указана его "инициализация" к 0 (virtual void write (Color color) = 0;), то он обязательно должен быть переопределен в каждом его подклассе (такой метод называется абстрактным). Класс, содержащий хотя бы один абстрактный метод, также называется абстрактным. Для абстрактных классов нельзя порождать объекты (объекты определены только для его подклассов). Если все методы класса определены как абстрактные, то говорят, что такой (абстрактный) класс определяет интерфейс, реализуемый в его подклассах. В языке C++ поддерживается множественное наследование: каждый класс может иметь один или несколько суперклассов.


Реализация зависимостей



5.3.5. Реализация зависимостей

Зависимости в языке C++ реализуются с помощью указателей или с помощью специальных объектов. Например, зависимость "много-к-одному" между классами Item и Group реализована через указатели: class Item{ public: virtual void cut (); virtual void move (Length deltax, Length deltay) = 0; virtual Boolean pick (Length px, Length py) = 0; virtual void ungroup () = 0; private: Group* group; friend Group::add_item (Item*); friend Group::remove_item (Item*); public: Group* get_group () {return group;}; }; class Group: public Item { public: void cut (); void move (Length deltax, Length deltay); Boolean pick (Length px, Length py) = 0; void ungroup () { }; private: ItemSet* items; public: void add_item (Item*); void remove_item (Item*); ItemSet* get_items () {return items;} }; Каждый раз, когда к зависимости добавляется (или из нее удаляется) связь, оба указателя должны быть изменены: void Group::add_item (Item* item) { item->group = this; items->add (item); } void Group::remove_item (Item* item); { item->group = 0; items->remove (item); } Методы Group::add_item и Group::remove_item могут изменять приватные (private) атрибуты класса Item, хотя они определены в его подклассе Group, так как они определены как дружественные (friends) для класса Item. В рассмотренном примере опущены проверки:
  1. не является ли включаемый в группу графический объект уже членом этой группы: в этом случае его незачем еще раз включать в группу;
  2. не является ли включаемый в группу графический объект членом какой-либо другой группы: в этом случае его нельзя включать в группу и необходимо выдать на экран соответствующее сообщение.
Иногда связанные между собой (зависимые) объекты включают в так называемые коллективные классы. В качестве примера такого класса рассмотрим класс ItemSet (набор объектов): class ItemSet { public: ItemSet(); //создать пустой набор объектов ~ItemSet(); //уничтожить набор объектов void add(Item*); //включить объект в набор void remove(Item*); //исключить объект из набора Boolean includes(Item*); //проверить наличие объекта в наборе int size(Item*); //определить количество объектов в наборе }; Коллективные классы часто используются в библиотеках классов. При работе с коллективными классами удобно использовать итераторы, т.е. объекты, с помощью которых можно "просмотреть" коллектив. Зависимости между классами можно реализовать и с помощью специальных классов (каждый объект такого класса описывает связь между объектами соответствующих классов). В этом случае атрибуты класса соответствуют атрибутам описываемой им зависимости.


Шаблоны в языке C++



5.3.6. Шаблоны в языке C++

В языке C++ возможно и параметрическое программирование (программирование с использованием родовых компонентов). Родовые (параметризованные) компоненты обладают свойством адаптивности к конкретной ситуации, в которой такой компонент используется, что позволяет разрабатывать достаточно универсальные и в то же время высокоэффективные компоненты программ (в частности, объекты). Параметрическое программирование в языке C++ реализовано с помощью шаблонов (template). В C++ определено два вида шаблонов: шаблоны-классы и шаблоны-функции. Шаблоны-классы могут использоваться многими способами, но наиболее очевидным является их использование в качестве адаптивных объектов памяти. Шаблоны-функции могут использоваться для определения параметризованных алгоритмов. Основное отличие шаблона-функции от шаблона-класса в том, что не нужно сообщать компилятору, к каким типам параметров применяется функция, он сам может определить это по типам ее формальных параметров. Возможность параметрического программирования на языке C++ обеспечивается стандартной библиотекой шаблонов STL (Standard Template Library). Она включена в последнюю предварительную версию Стандарта языка C++. Библиотека подробно описана в книге D.R.Musser, A.Saini "STL Tutorial and Reference Guide. C++ Programming with the Standard Template Library" Addison-Wesley, 1996 (книга доступна также по http://www.aw.com/cp/musser-saini.html). Документация по текущей версии STL доступна по http://weber.u.washington.edu/~bytewave/bytewave_stl.html или http://www.ualberta.ca/~nyu/stl/stl.html. Наконец, реализация текущей версии STL доступна по ftp://ftp.cs.rpi.edu/pub/stl.


Реализация на языке C++



5.3. Реализация на языке C++

Язык C++ является наиболее распространенным объектно-ориентированным языком программирования. Поэтому рассмотрение вопросов реализации начнем с этого языка. Поскольку язык C++ хорошо известен и достаточно широко распространен (это один из самых популярных языков программирования), здесь приводится лишь краткий обзор некоторых свойств и конструкций этого языка. В настоящее время издано огромное количество учебных пособий, справочников и других руководств по языку C++. Одним из наиболее полных, изданных на русском языке, является книга Ирэ Пол. Объектно-ориентированное программирование с использованием C++. // DiaSoft Ltd., Киев -- 1995.


Реализация классов



5.4.1. Реализация классов

Определение класса Window на языке Eiffel мало отличается от соответствующего определения на языке C++ (сравните с п. 5.3.1): class WINDOW export add_box, add_circle, clear_selections, cut_selections, group_selections, move_selections, redraw_all, select_item, ungroup_selections feature xmin, ymin, xmax, ymax: REAL; Create (x0, y0, width, height: REAL) is body end; add_box (x, y, width, height: REAL) is body end; add_circle (x, y, radius: REAL) is body end; add_to_selections (ashape: SHAPE) is body end; clear_selections is body end; cut_selections is body end; group_selections: Group is body end; move_selections (deltax, deltay: REAL) is body end; redraw_all is body end; select_item (x, y: REAL) is body end; ungroup_selections is body end; end -- class WINDOW Все свойства (feature) класса (соответствуют членам класса в языке C++) считаются приватными, если только они не объявлены явно как общедоступные: все общедоступные свойства перечисляются в разделе export. Свойство Create (аналог конструктора класса в языке C++) всегда является общедоступным. Остальные особенности синтаксиса понятны и без пояснений. Язык Smalltalk является языком интерпретируемого типа: программа в системе Smalltalk не компилируется, а переводится в интерпретируемое специальным интерпретатором внутреннее представление. Это позволило сделать систему Smalltalk интерактивной: программист имеет доступ к программе (может, например, изменять ее) во время ее интерпретации, что очень удобно при разработке и отладке программы, но, как известно, уменьшает ее эффективность, так как интерпретация программы сопряжена с дополнительными накладными расходами. Определение класса Window на языке Smalltalk имеет следующий вид: class name Window superclass Object instance variables xmin, ymin, xmax, ymax: REAL class methods instantiating createAt aPoint ofWidth: width ofHeigt: heigt instance methods adding shapes addboxAt aPoint ofWidth: width ofHeigt: heigt addCircleAt aPoint ofRadius: radius refreshing window redrawAll manipulating selections clearSelections cutSelections groupSelections moveSelectionsBy: deltaPoint selectItemAt: aPoint ungroupSelections private addToSelections: aShape Все классы языка Smalltalk являются подклассами системного класса Object, что позволяет использовать принадлежащие им по наследованию системные операции системы Smalltalk, определенные в классе Object. Строки в описании класса, выделенные курсивом, определяют категории методов. Они служат только для структурирования набора методов. Методы, включенные в категорию private, являются приватными и не доступны извне класса. Чтобы сделать атрибуты приватными, следует не определять методы для запроса и установки значений атрибутов. В системе Smalltalk определен системный метод @, который объединяет пару числовых значений в одно составное значение. Это позволило вместо двух переменных x и y (координат точки) использовать в нашем примере одну переменную aPoint, представляющую обе координаты точки(x,y). Операция присваивания значения (3,4) переменной aPoint с использованием метода @ имеет вид: aPoint <- 3 @ 4


Порождение объектов



5.4.2. Порождение объектов

В языке Eiffel объявление переменной (в этом языке вместо термина "переменная" используется термин сущность (entity)) отделено от порождения соответствующего объекта. Объявление сущности определяет имя, значением которого может быть (объектная) ссылка на объект объявленного типа, но эта ссылка при объявлении получает неопределенное значение (void), т.е. не ссылается ни на какой объект. Пример объявления переменной: w: WINDOW В результате этого объявления создается переменная w, значением которой может быть ссылка на окно, но которая пока не ссылается ни на какое окно. Все объекты языка Eiffel - динамические: они создаются с помощью операции Create; например, следующий оператор создает окно с соответствующими параметрами и присваивает ссылку на него переменной w: w.Create (0.0, 0.0, 8.5, 11.0); В каждом классе неявно определена операция Create без параметров, которая создает новый объект этого класса с нулевыми значениями его атрибутов. Можно переопределить неявную операцию Create; например, для окон эту операцию можно определить следующим образом: class WINDOW ... feature Create (x0, y0, width, height: REAL) is do xmin := x0; ymin := y0; xmax := x0 + width; ymax := y0 + height; end ... end -- class WINDOW Кроме операции Create, определена операция создания копий уже существующего объекта - Clone. В языке Eiffel невозможно явным образом уничтожить объект (в нем отсутствует операция, подобная операции delete языка C++). Операция Forget убирает объектную ссылку из соответствующей сущности, но не уничтожает сам объект. Объект, на который нет ни одной объектной ссылки, уничтожается во время "чистки мусора", которая, если она не отключена программистом (для этого имеется специальная системная операция), выполняется автоматически. Все объекты языка Smalltalk - динамические и размещаются в динамической памяти - куче. Удаление объектов осуществляется автоматически подсистемой чистки мусора. Все переменные не имеют типа и могут содержать объекты любого класса. Порождение объектов осуществляется операцией new, определенной в системном классе Object (все классы языка Smalltalk - наследники класса Object). Например, порождение окна со стандартными параметрами (определяемыми по умолчанию) осуществляется операцией: w <- Window new Операция new является одним из методов уровня класса. С ее помощью можно определить еще один метод порождения окна (уже с параметрами): w <- Window createAt: 0 @ 0 ofWidth: 8.5 ofHeight: 11.0 Этот метод может быть определен следующим образом: class name Window ... class methods createAt: aPoint ofWidth: width ofHeigt: heigt | w | w <- self new. w initialize: aPoint ofWidth: width ofHeigt: heigt. |w instance methods initialize: aPoint ofWidth: width ofHeigt: heigt. xmin <- aPoint x. ymin <- aPoint y. xmax <- xmin + width. ymax <- ymin + height Отметим, что метод уровня класса не имеет непосредственного доступа к атрибутам объектов. Поэтому для инициализации окна потребовалось определить метод уровня объекта initialize.


Вызов операций



5.4.3. Вызов операций

В языке Eiffel методы называются подпрограммами (routines). При вызове этих подпрограмм им передаются параметры, которые могут иметь простой тип (REAL, INTEGER, BOOLEAN, или CHARACTER) или быть объектами классов, определенных программистом. В подпрограмме не разрешается изменять значения формальных параметров путем присваивания им новых значений или применения к ним операции (такие, как Create, Clone, или Forget), которые могут менять значение объектной ссылки. В то же время остальные операции могут быть применены к объектам, являющимся формальными параметрами, что вызовет изменение состояния указанных объектов. Синтаксис вызова операции в языке Eiffel такой же, как в языке C++, причем операция '.' языка Eiffel соответствует операции '->' языка C++: local aShape: SHAPE; dx, dy: REAL do ... aShape.move (dx, dy); end В языке Eiffel определен неявный доступ к свойствам целевого объекта по имени соответствующего свойства. Идентификаторы x и y являются именами атрибутов целевого объекта SHAPE: move (deltax, deltay: REAL) is -- move a shape by delta do x = x + deltax; y = y + deltay end В языке Eiffel имеется предопределенный идентификатор Current, который именует целевой объект операции (он аналогичен идентификаторам this языка C++ и self языка Smalltalk). Поэтому предыдущий фрагмент программы можно записать следующим эквивалентным образом: move (deltax, deltay: REAL) is -- move a shape by delta do Current.x = Current.x + deltax; Current.y = Current.y + deltay end В языке Smalltalk все параметры и переменные являются объектами; все операции являются методами, связанными с этими объектами. Применить операцию к объекту - значит послать этому объекту сообщение, состоящее из имени операции и списка значений ее параметров. Сообщение связывается с объектом во время выполнения программы (динамически), рассматривается класс соответствующего объекта и находится соответствующая операция в этом классе или в его предках (по наследованию). Формальные параметры метода запрещено изменять внутри метода с помощью присваиваний. Синтаксис обращения к операции (посылки сообщения) следующий: aShape moveDelta: aPoint Этот метод можно реализовать следующим образом: class name Shape instance variables x y instance methods moveDelta: aPoint x <- x + aPoint x y <- y + aPoint y Внутри метода разрешен непосредственный доступ по имени к атрибутам целевого объекта операции (в языке Smalltalk атрибуты называются переменными объекта (instance variables)). Как уже упоминалось, в языке Smalltalk предопределена псевдо-переменная self, именующая целевой объект (получатель сообщения).


Реализация наследования



5.4.4. Реализация наследования

В языке Eiffel список наследования помещается вслед за ключевым словом inherit: class ITEM export cut, move, pick, ungroup feature cut is deferred end; move (deltax, deltay: REAL) is deferred end; pick (x, y: REAL): BOOLEAN is deferred end; ungroup () is deferred end class SHAPE export cut, draw, erase, move, pick, ungroup, write inherit ITEM feature * x, y: REAL; cut is end; draw is end; erase is end; move (deltax, deltay: REAL) is end; pick (x, y: REAL): BOOLEAN is end; ungroup is end; write (acolor: COLOR) is deferred end; end classrBOX export pick, write inherit SHAPE redefine pick, write feature width, height: REAL; Create (x0, y0, width0, height0:*REAL) is end; pick (x, y: REAL): BOOLEAN is end; write (acolor: COLOR) is end end class CIRCLE export pick, write inherit SHAPE redefine pick, write feature radius: REAL; Create (x0, y0, radius0: REAL) is end; pick (x, y: REAL): BOOLEAN is end; write (acolor: COLOR) is end end Для обозначения абстрактных операций используется ключевое слово deferred; такие операции должны быть реализованы во всех подклассах. Переопределение свойств класса в подклассе отмечается в разделе redefine. В языке Smalltalk описание класса Item, его подкласса Shape, а также подклассов Box и Circle класса Shape может иметь следующий вид: class name Item superclass Object class name Shape superclass Item instance variables x y instance methods cut draw erase move: aPoint ungroup class name Box superclass Shape instance variables width height instance methods pick: aPoint write: aColor class methods createAt: aPoint width: widthSize length: lengthSize class name Circle superclass Shape instance variables radius instance methods pick: aPoint write: aColor class methods createAt: aPoint radius: radiusSize Все атрибуты суперкласса доступны всем его потомкам. Все методы могут быть переопределены в подклассах. Множественное наследование не поддерживается.


Реализация зависимостей



5.4.5. Реализация зависимостей

В языке Eiffel для реализации зависимостей применяются конструкции, аналогичные соответствующим конструкциям языка C++. Поддерживаются параметризованные (родовые (generic)) контейнерные объекты (обычно эти объекты параметризуются относительно типов объектов, которые они содержат). Базовая библиотека классов системы Eiffel содержит контейнерный класс LINKED_LIST, который можно использовать для реализации зависимости типа "много к одному" между классами ITEM и GROUP: class ITEM export get_group -- выборочный экспорт в класс GROUP set_group(GROUP), forget_group(GROUP) feature get_group: GROUP is do Result := mygroup end; set_group(g:GROUP) is do mygroup := g end; forget_group is do forget(mygroup) end; end --ITEM class GROUP export add_item, remove_item, get_items inherit ITEM feature items: LINKED_LIST[ITEM]; --параметризованный тип Create is do items.Create end; add_item(value:ITEM) is do items.finish; items.insert_right(value); value.set_group(Current) end; remove_item(value:ITEM) is do items.search(value,l); items.delete; value.forget_group end; get_items(number:INTEGER):ITEM is do Result := items end; end --GROUP Язык Eiffel обеспечивает выборочный экспорт относительно любого свойства. В рассматриваемом примере в класс GROUP экспортируются свойства set_group и forget_group класса ITEM. Это поддерживает инкапсуляцию путем ограничения доступа по записи данных в объекты классов, участвующих в зависимости между ITEM и GROUP. Операция forget языка Eiffel предназначена для освобождения памяти; она освобождает память, занимаемую объектом, который является ее операндом, а также присваивает объектной ссылке неопределенное значение. В языке Smalltalk большую часть зависимостей помогает реализовать богатая системная библиотека классов. Например, для реализации зависимости типа "много-к-одному" между графическими объектами (Item) и группой, в которую они входят (Group) можно использовать библиотечный класс Set: class name Item superclass Object class name Shape superclass Item instance variables group instance methods cut draw erase move: aPoint ungroup --дополнительные методы getGroup |group --приватные методы putGroup: aGroup group <- aGroup class name Group superclass Item instance variables items class methods new |((super new)putItems:(Set new)) instance methods pick: aPoint write: aColor addItem: anItem items add: anItem. anItem putGroup: self removeItem items remove: anItem. anItem putGroup: nil getItems |items copy --приватные методы putItems: aSet items <- aSet Ввиду того, что в системе Smalltalk не производится контроль типов, нет никаких ограничений на тип объектов, которые можно добавить в группу: любой объект, который соответствует сообщению putGroup:, допустим. Строка приватные методы является комментарием, сообщающим программисту, что методы, перечисленные после этой строки лучше использовать как приватные; если он не последует этому совету, система все равно не зафиксирует ошибку, так как Smalltalk не поддерживает приватности методов и данных, и на самом деле все методы общедоступны.


Другие объектно-ориентированные системы программирования



5.4. Другие объектно-ориентированные системы программирования

Язык C++ является сейчас наиболее распространенным объектно-ориентированным языком. Однако существуют и другие популярные объектно-ориентированные языки и системы программирования. Здесь мы кратко рассмотрим языки Eiffel и Smalltalk.


Преобразование классов в структуры данных



5.5.1. Преобразование классов в структуры данных

В языке C класс можно рассматривать как тип структуры, определенный в этом языке: поля структуры соответствуют атрибутам класса (при этом каждый атрибут может иметь простой, либо составной тип, т.е. тип структуры или массива). В таком случае каждый объект некоторого класса будет представлен конкретной структурой, экземпляром соответствующего типа структуры. Методы реализуются в виде набора функций, описания которых можно указать в комментарии при определении типа структуры, определяющего описываемый класс. Программист должен сам следить за тем, чтобы при работе с экземплярами этого типа структуры использовались для доступа к ее полям только функции, перечисленные в указанном комментарии. В языке C++ это автоматически отслеживается компилятором и его подсистемой поддержки выполнения программ. Все функции, соответствующие методам, имеют дополнительный параметр, определяющий экземпляр структуры (объект), к которому применяется метод. В языке C++ этот параметр автоматически подставляется компилятором. Например, класс Window можно представить как следующую структуру (struct) языка C: struct Window { /* структура соответствует классу * class Window * для которого определены следующие методы (все методы имеют * дополнительный параметр, Window* this, определяющий экземпляр * структуры (объект), к которому применяется метод): * public: * Window(Length x0, Length y0, Length width, Length height, * Window* this); * D_Window (Window* this); -- соответствует деструктору ~Window() * void add_box (Length x, Length y, Length width, Length height, * Window* this); * void add_circle (Length x, Length y, Length radius, Window* this); * void clear_selections (Window* this); * void cut_selections (Window* this); * Group* group_selections (Window* this); * void move_selections (Length deltax, Length deltay, Window* this); * void redraw_all (Window* this); * void select_item (Length x, Length y, Window* this); * void ungroup_selections (Window* this); * private: * void add_to_selections (Shape* shape, Window* this); */ Length xmin; Length ymin; Length xmax; Length ymax; }; При этом предполагается, что тип Length введен через typedef floast Length; Ссылки на объекты класса Window реализуются как указатели языка C: struct Window* window; Length x1 = window->xmin; Объект может быть при этом размещен статически, автоматически (в стеке), или динамически (в куче).


Передача параметров методам



5.5.2. Передача параметров методам

Дополнительный параметр каждого метода, определяющий экземпляр структуры (класса), к которому следует применить этот метод, рекомендуется реализовывать как указатель. Хотя в языке C и допускаются параметры, имеющие тип структуры, передача значения структуры в качестве параметра связана с переписыванием значения этой структуры в автоматическую память соответствующей функции, что не только связано с потерей эффективности, но и семантически неверно, когда структура определяет объект, так как применение метода должно изменить значения соответствующих полей этой структуры (они представляют атрибуты объекта). Пример передачи параметров одному из методов (этот метод входит в список методов, приведенный в комментарии к определению структуры Window): add_to_selections (shape, self) struct Window* self; struct Shape* shape;


Размещение объектов в памяти



5.5.3. Размещение объектов в памяти

Объекты, определенные в программе на языке C могут размещаться в памяти программы (статические глобальные объекты), в стеке (автоматически размещаемые локальные объекты), или в куче (динамические объекты). Время жизни статических объектов - это все время выполнения программы. Они используются для хранения глобальных переменных и констант, но при объектно-ориентированной разработке программ стараются использовать как можно меньше глобальных объектов, так как они нарушают модульную структуру программы. Глобальные объекты в языке C объявляются на внешнем уровне программного файла, вне составляющих его функций; инициализация таких объектов обычно производится при их порождении во время компиляции программы. Пример объявления статического (глобального) объекта: static struct Window outer_window = {0.0, 0.0, 8.5, 11.0}; При вызове методов, использующих объявленную глобальную переменную, им следует передавать ее адрес (&outer_window). Промежуточные временные данные обычно размещаются в стеке. Удобство использования таких данных в том, что они размещаются в памяти и удаляются из нее автоматически. При этом программист сам должен следить, чтобы при выходе из блока не оставалось бы указателей на автоматические объекты этого блока, являющихся значениями объектов (или их частей), которые остаются в памяти после выхода из блока. Объекты, живущие дольше функций, в которых они порождаются, не следует размещать в переменных, автоматически размещаемых в стеке; это может привести к изощренным ошибкам в программе, которые очень трудно обнаружить. Динамически размещаемые объекты необходимо использовать, когда во время компиляции программы неизвестно их количество. Такие объекты размещаются в куче по запросу (функции malloc или сalloc) во время выполнения программы. Будучи размещенным в памяти динамический объект сохраняется в ней до тех пор, пока не будет явным образом отменен (функция free). Пример функции размещения и инициализации динамического объекта: struct Window* create_window(xmin, ymin, width, height); Length xmin, ymin, width, height; { struct Window* window; /*размещение объекта*/ window = (struct Window*)malloc(sizeof(struct Window)); /*инициализация объекта*/ window-> xmin = xmin; window-> ymin = ymin; window-> xmax = xmin + width; window-> ymax = ymin + height; return window; }; Перед удалением динамического объекта с помощью функции free необходимо удостовериться, что не осталось указателей на этот объект.


Реализация наследования



5.5.4. Реализация наследования

Наследование в языке C реализуются через указатели. Рассмотрим, например, конкретные подклассы Box и Circle абстрактного класса Shape. На языке C их можно представить следующим образом: struct Shape { struct ShapeClass* class; Length x; Length y; }; struct Box { struct BoxClass* class; Length x; Length y; Length width; Length height; }; struct Circle { struct CircleClass* class; Length x; Length y; Length radius; }; Указатель на структуры Box или Circle можно передать функции, ожидающей указатель на Shape, так как первые несколько членов структур Box и Circle идентичны первым членам структуры Shape (это позволяет привести тип указателя на структуру Box или Circle привести к типу указателя на структуру Shape).


Выбор методов для операций



5.5.5. Выбор методов для операций

В объектно-ориентированных языках одна и та же операция нередко реализуется одновременно несколькими методами (полиморфизм). Выбор нужного метода осуществляется в объектно-ориентированных окружениях автоматически, и в этом одно из главных преимуществ объектно-ориентированных языков. Если программа, разработанная по объектно-ориентированной методологии, реализуется на языке, не являющемся объектно-ориентированным, то проблема выбора методов обычно решается во время выполнения программы. Методы, выбор которых возможен во время компиляции, на языке C могут быть реализованы как непосредственные вызовы соответствующих функций. Это прежде всего относится к тем операциям, которые реализуются только одним методом, что снимает проблему выбора. Например, все методы в классе Window уникальны (единственны). Однако наиболее общий подход состоит в определении для каждого класса дескриптора, содержащего указатели на все методы для каждой операции, видимой из этого класса, включая унаследованные операции. Каждый дескриптор класса является структурой языка C, элементами которой являются все операции, определенные в этом классе или унаследованные им от суперкласса. Следующий фрагмент программы содержит определения дескрипторов класса для классов Item, Shape, Box и Circle: struct ItemClass { char* class_name; void(* cut)(); void(* move)(); Boolean(* pick)(); void(* ungroup)(); }; struct ShapeClass { char* class_name; void(* cut)(); void(* move)(); Boolean(* pick)(); void(* ungroup)(); void(* write)(); }; struct BoxClass { char* class_name; void(* cut)(); void(* move)(); Boolean(* pick)(); void(* ungroup)(); void(* write)(); }; struct CircleClass { char* class_name; void(* cut)(); void(* move)(); Boolean(* pick)(); void(* ungroup)(); void(* write)(); }; В дескрипторе класса определены операции, видимые в этом классе, но остается необходимость определить и проинициализировать дескрипторы класса для каждого класса: в каждом поле дескриптора класса должно стоять имя функции, которая реализует метод, определенный в этом классе или унаследованный им (например, класс Box наследует операцию move у класса Shape, но заменяет операции pick и write своими собственными методами: struct BoxClass BoxClass = { "Box", Shape__cut, Shape__move, Box__pick, Shape__ungroup, Box__write, }; struct CircleClass CircleClass = { "Circle", Shape__cut, Shape__move, Circle__pick, Shape__ungroup, Circle__write, }; Если у класса есть атрибуты уровня класса, их тоже можно запомнить в дополнительных полях дескриптора класса. Например, можно поместить в дескриптор класса имя этого класса и использовать его во время отладки, или каким-либо другим образом. Отметим, что дескриптор класса не нужен абстрактному классу (например, Shape). Когда порождается новый объект, указатель на его дескриптор класса помещается в поле Class структуры, представляющей этот объект: struct Circle * create_circle(x0,y0,radius0) Length x0,y0,radius0; { struct Circle * new_circle; new_circle = (struct Circle*)malloc(sizeof(struct Circle)); new_circle->class = &CircleClass; new_circle->x = x0; new_circle->y = y0; new_circle-> radius = radius0; return new_circle; }; Если выбор метода для операции должен быть сделан во время выполнения программы, то для определения нужной функции используется дескриптор класса. Например, вызов операции pick для формы (Shape), определяемой во время выполнения программы, требует следующего кода: struct Shape* shape; Length x,y; Boolean status; status = (*shape->class->pick)(shape,x,y); Динамический выбор метода требует двух дополнительных обращений к памяти по сравнению с непосредственным вызовом функции.


Реализация зависимостей



5.5.6. Реализация зависимостей

Для реализации зависимостей есть те же две возможности, что и в случае объектно-ориентированных окружений: отображение зависимостей на указатели (ссылки), или реализация зависимостей с помощью вспомогательных объектов. Если зависимости отображаются на указатели (наиболее традиционный подход для бинарных зависимостей), для этих указателей предусматриваются дополнительные поля в структурах (записях), представляющих объекты взаимно-зависимых классов; если зависимость множественная (хотя бы в одну из сторон), то представляющий ее указатель ссылается не на класс, а на последовательность (в смысле STL) указателей объектов соответствующего класса. Поскольку все зависимости двусторонние, каждый объект из указанной последовательности тоже должен иметь указатель, определяющий рассматриваемую зависимость. С помощью вспомогательных объектов обычно реализуются зависимости, которые трудно представить через указатели (например, зависимости между несколькими классами). В качестве примера первого способа реализации зависимостей рассмотрим реализацию зависимости (типа "много к одному") между классами Item и Group: struct Item { struct ItemClass* class; struct Group* group; }; struct Group { struct GroupClass* class; int item_count; struct Item** items; };


Объектно-ориентированное программирование на Фортране



5.5.7. Объектно-ориентированное программирование на Фортране

Объектно-ориентированное программирование на Фортране связано с большими техническими трудностями в связи с отсутствием в этом языке структур (записей) и динамических объектов. Но поскольку все еще имеется много любителей Фортрана, следует хотя бы кратко рассмотреть основные принципы реализации на Фортране проекта, разработанного по объектно-ориентированной методологии. Реализация классов с помощью массивов языка Фортран. В Фортране определен всего один структурный тип данных - массив, так что структуры (записи) тоже следует моделировать. Класс представляется как неявный набор массивов, по одному для каждого атрибута класса. Массивы должны иметь одинаковый размер, который должен быть достаточным для включения всех объектов этого класса, которые будут существовать во время выполнения программы, так как Фортран не поддерживает динамического распределения памяти. Значения индекса массивов представляют уникальный идентификатор объекта внутри соответствующего класса. При этом идентификаторы объектов разных классов будут иметь одинаковые значения, так что программист должен сам следить за тем, какому классу принадлежит объект (впрочем реализация механизма наследования, описываемая ниже, может несколько облегчить это). Все массивы одного и того же класса можно объединить в общий блок. Например, память для тысячи окон из рассматриваемого в этом разделе примера может быть организована следующим образом: COMMON/WINDOW/XMIN,YMIN,XMAX,YMAX,WINDOW REAL XMIN(1000),YMIN(1000),XMAX(1000),YMAX(1000),WINDOW(1000) INTEGER NWINDOW Программист должен организовать счетчик порожденных объектов данного класса (NWINDOW), и присваивать его значения уникальным идентификаторам вновь порождаемых объектов. В Фортране нет средств определения новых типов данных, поэтому нет возможности определить тип Length: данные этого типа должны иметь один из определенных в Фортране типов (INTEGER, REAL, COMPLEX, LOGICAL и CHARACTER). В Стандарте Фортрана ограничена длина идентификаторов, однако большая часть компиляторов поддерживают идентификаторы в 32 и более символов. В примерах фрапгментов фортранных программ предполагается, что допустимы достаточно длинные идентификаторы, которые могут содержать символ подчеркивания ("_"). Если компилятор не поддерживает длинных имен, все идентификаторы из примеров следует заменить более короткими, что, естественно, ухудшит читаемость программ. Таким образом, в объектной программе на Фортране каждый объект некоторого класса может быть представлен индексом атрибутных массивов этого класса, причем указанный индекс определяет доступ к атрибутам этого объекта: INTEGER AWINDOW REAL X1 X1 = XMIN(AWINDOW) При передаче параметров методам объект может передаваться как соответствующий ему индекс атрибутных массивов соответствующего класса: SOUBROUTINE WINDOW__ADD_TO_SELECTIONS (SELF, SHAPE) INTEGER SELF, SHAPE Объект, значение которого запрашивается, но не изменяется, может быть в случае необходимости передан как список значений его атрибутов, хотя, конечно, индекс обычно короче, и его передавать удобнее. FUNCTION CIRCLE__PICK(X0, Y0, RADIUS, X, Y) LOGICAL CIRCLE__PICK REAL X0, Y0, RADIUS, X, Y Размещение объектов в памяти. Обычно размещение новых объектов производится в заранее определенные массивы. Если требуется динамическое распределение памяти, необходимо самому смоделировать управление кучей в своей программе: FUNCTION CREATE_WINDOW(X1, Y1, WIDTH, HEIGHT) COMMON/WINDOW/XMIN,YMIN,XMAX,YMAX,WINDOW REAL XMIN(1000),YMIN(1000),XMAX(1000),YMAX(1000),WINDOW(1000) INTEGER NWINDOW INTEGER CREATE_WINDOW REAL X1, Y1, X2, Y2 NWINDOW = NWINDOW + 1 XMIN(NWINDOW) = X1 YMIN(NWINDOW) = Y1 XMAX NWINDOW) = X1 + WIDTH YMAX NWINDOW) = Y1 + HEIGHT CREATE_WINDOW = NWINDOW RETURN END Реализация наследования. В Фортране нет записей (структур) и тем более вариантных записей. Поэтому наследование при программировании на Фортране можно реализовать либо в виде универсальной записи, либо моделируя вариантные записи. Первый способ связан с излишними затратами памяти, его следует применять, когда вариантная часть записей сравнительно невелика. При этом подходе организуется универсальная запись, содержащая все атрибуты корневого класса и все атрибуты всех наследующих ему классов. При работе с конкретным классом из рассматриваемой иерархии классов те атрибуты, которые для него не определены, просто игнорируются. Универсальная запись реализуется, как и раньше, через набор массивов одинаковой длины, по одному на каждое поле записи: COMMON/SHAPE/XMIN,YMIN,XMAX,YMAX,WINDOW,RADIUS,NSHAPE REAL XMIN(1000),YMIN(1000),XMAX(1000),YMAX(1000),WINDOW(1000) REAL RADIUS(1000) INTEGER NSHAPE Второй способ более экономен. Он состоит в представлении класса как набора подклассов, каждый из которых реализован как самостоятельный класс со своим набором массивов и индексами объектов. Каждый класс представляется парой целых массивов: один из этих массивов содержит код подкласса, другой - индексы объектов в соответствующем массиве подкласса. В следующем примере определен класс ITEM, который имеет подклассы SHAPE (содержит не более 1000 объектов) и GROUP (содержит не более 100 объектов). Общий блок CLASSES определяет целочисленный код для каждого класса. COMMON/ITEM/ITEM_CLASS,ITEM_ID,NITEM INTEGER ITEM_CLASS(1100),ITEM_ID(1100) INTEGER NITEM/0/ COMMON/CLASSES/GROUP,BOX,CIRCLE INTEGER GROUP/1/,BOX/2/,CIRCLE/3/ Когда создается новый объект, значение индекса должно выбираться как из суперкласса, так и из соответствующего подкласса. Например, следующий код создает новый круг (CIRCLE): FUNCTION CREATE_CIRCLE(X0,Y0,RADIUS0) COMMON/WINDOW/XMIN,YMIN,XMAX,YMAX,WINDOW сюда следует поместить описания общих блоков ITEM, SHAPE и CLASSES INTEGER CREATE_CIRCLE NSHAPE = NSHAPE + 1 X(NSHAPE) = X0 Y(NSHAPE) = Y0 RADIUS(NSHAPE) = RADIUS0 NITEM = NITEM + 1 ITEM_CLASS(NITEM) = CIRCLE ITEM_ID(NITEM) = NSHAPE CREATE_CIRCLE = NITEM RETURN END Резолюция методов. Вызовы методов для объектов, класс которых известен во время компиляции, осуществляются как непосредственные вызовы соответствующих фортранных подпрограмм. Остальные объекты должны содержать номер класса (см. выше общий блок CLASSES). Для каждой операции можно составить управляющую подпрограмму, которой в качестве параметров передаются номер класса и индекс объекта. Управляющая подпрограмма содержит оператор перехода по вычислению, который позволяет вызывать требуемый метод: FUNCTION PICK(CLASS,ID,PX,PY) LOGICAL PICK LOGICAL GROUP_PICK,BOX_PICK,CIRCLE_PICK INTEGER CLASS,ID GOTO(100,200,300) CLASS PICK = .FALSE. RETURN 100 PICK = GROUP_PICK(ID,PX,PY) RETURN 200 PICK = BOX_PICK(ID,PX,PY) RETURN 300 PICK = CIRCLE_PICK(ID,PX,PY) RETURN END


Чем неудобны не объектно-ориентированные системы программирования



5.5.8. Чем неудобны не объектно-ориентированные системы программирования

Различия между не объектно-ориентированными и объектно-ориентированными системами программирования в основном связаны не с возможностью выразить в программе требуемую функциональность (согласно теории алгоритмов любая функциональность может быть выражена на каждом языке программирования, либо не может быть выражена ни на одном языке программирования), а с выразительностью языка программирования, удобством составления программ, их отладки и сопровождения. Целесообразность использования объектно-ориентированных систем программирования связана со следующими обстоятельствами:
  • Выразительность: как было показано на примерах, в не объектно-ориентированной системе программирования программисту необходимо самому отображать операции над объектами (вызовы методов, или объявления подклассов) в явные вызовы соответствующих функций (при использовании объектно-ориентированных окружений это обеспечивается системой программирования).
  • Удобство: в не объектно-ориентированной системе программирования программист вынужден вручную отслеживать иерархию классов при вызове методов и передаче им параметров; при изменениях в иерархии классов, он должен вручную внести соответствующие изменения в программу.
  • Защита от ошибок: в не объектно-ориентированной системе программирования программист должен каждый раз проверять правильность управления методами и объектами, инициализировать новые объекты, предотвращать доступ к приватным атрибутам и методам (в объектно-ориентированных окружениях все это обеспечивает система программирования).
  • Поддержка целостности: при внесении изменений в объявления объектов в не объектно-ориентированном окружении программист должен сам определить влияние этих изменений на программу и соответствующим образом изменить ее (объектно-ориентированные системы программирования обеспечивают это автоматически).
Тем не менее даже в случае разработки прикладных программных систем в не объектно-ориентированных системах программирования использование методологии объектно-ориентированного проектирования этих систем, описанной в данном курсе, существенно упрощает их реализацию и последующее сопровождение.


Не объектно-ориентированные системы программирования



5.5. Не объектно-ориентированные системы программирования

Прикладную программную систему, спроектированную по методологии OMT, совсем не обязательно реализовывать на объектно-ориентированном языке. Рассмотрим, как объектно-ориентированный проект можно реализовать на языке C (как известно, он не является объектно-ориентированным). Проще всего это сделать, отобразив объектно-ориентированные конструкции на язык C (для объектно-ориентированных языков такое отображение автоматически реализуется компилятором). Реализация состоит в выполнении следующих шагов:
  • Представить классы с помощью других структур данных (если языком реализации является C, то классы удобно представлять как структуры языка C).
  • Обеспечить передачу параметров методам.
  • Реализовать наследование.
  • Обеспечить механизм выбора нужного метода.
  • Реализовать зависимости.
  • Реализовать синхронизацию параллельных процессов.
  • Обеспечить упрятывание (инкапсуляцию) внутренних деталей реализации классов.
Рассмотрим, как можно выполнить перечисленные шаги при реализации на языке C, на примере реализации графического редактора (см. п. 5.2).


Третья фаза жизненного цикла - реализация объектно-ориентированного проекта



5. Третья фаза жизненного цикла - реализация объектно-ориентированного проекта

Третья фаза жизненного цикла программной системы состоит в реализации разработанных программных единиц (классов, функций, библиотек), которые в совокупности составляют разрабатываемую программную систему. Реализация каждой программной единицы может осуществляться как на объектно-ориентированном, так и на не объектно-ориентированном языке программирования, с использованием ранее разработанных программ, библиотек и баз данных. Каждый язык программирования имеет средства для выражения трех сторон спецификации разрабатываемой прикладной системы: структур данных, потоков управления и функциональных преобразований. В этом разделе будут рассмотрены проблемы, решаемые на этапе реализации объектно-ориентированного проекта, разработанного с использованием методологии OMT.


Абстрактный класс



Абстрактный класс


Абстрактный класс не может иметь объектов, так как в нем не определены операции над объектами; объекты должны принадлежать конкретным подклассам абстрактного класса. Абстрактные классы используются для спецификации интерфейсов операций (методы, реализующие эти операции впоследствии определяются в подклассах абстрактного класса). Абстрактные классы удобны на фазе анализа требований к системе, так как они позволяют выявить аналогию в различных, на первый взгляд, операциях, определенных в анализируемой системе.


Агрегация



Агрегация


Наиболее важным свойством отношения агрегации является его транзитивность (если A есть часть B, а B есть часть C, то A есть часть C): так, из рисунка 2.15 можно заключить, что документ состоит из нескольких (нуля, или более) предложений. Легко видеть, что отношение агрегации антисимметрично (если A есть часть B, то B не есть часть A). Отметим также, что часть свойств целого может быть перенесена и на его части, возможно, с несущественными изменениями (например, контекст каждого оператора некоторой функции совпадает с внутренним контекстом всей функции). Дальнейшие примеры агрегации показаны на рисунке 2.16. Отметим, что обе агрегации, показанные на рисунке 2.16(а), следует рассматривать не как зависимости между пятерками классов, а как четверки зависимостей между парами классов. Только при таком рассмотрении можно говорить о транзитивности и антисимметричности отношения агрегации.


Аккумулирующий (материю) узел


Структурная схема аккумулирующего узла существенно проще (см. Рисунок ) и особых комментариев не требует.



Активные элементы ненаправленного графа (источникиэнергии)


Источники энергий определяют само существование энергетических доменов. В разных энергетических доменах нам известно разное количество источников. Функционирование известных нам источников может быть описано одной из двух идеализированных моделей. Первая модель имеет название "Источник движущей силы", поскольку в рабочем режиме создает разность энергетических потенциалов неизменной величины. Вторая модель – "Источник потока" – отличается тем, что генерирует постоянный по величине поток материи (рабочего тела).


Активные объекты (экторы)



Активные объекты (экторы)


Хранилища данных Хранилище данных - это пассивный объект в составе ДПД, в котором данные сохраняются для последующего доступа. Хранилище данных допускает доступ к хранимым в нем данным в порядке, отличном от того, в котором они были туда помещены. Агрегатные хранилища данных, как например, списки и таблицы, обеспечивают доступ к данным в порядке их поступления, либо по ключам. Примеры хранилищ данных приведены на рисунке 2.63.


Алгоритмы идентификации частотных характеристик систем на основе технологий распознавания образов


Идея алгоритмов идентификации ЧХ систем на основе технологий распознавания образов заключена в уточнении априорных предположений о порядке системы и порядке её астатизма. Согласно сценарию, алгоритм создает образ идентифицируемой системы (модель), и, в итерационном процессе, так подгоняет положение асимптот его частотной характеристики, дабы реакции идентифицируемой системы и образа на произвольные сигналы совпадали.
Простейшие алгоритмы данной группы обеспечивают погрешности идентификации не превышающие трети декады и 6 дБ, что вполне приемлемо при проектировании систем управления. В целях снижения погрешностей для идентификации выбирают фрагменты осциллограмм сигналов с наиболее широким спектром (переходные режимы функционирования).
Безусловно, группа измерительных алгоритмов в любых случаях более предпочтительна. Но в условиях, когда возможность вывода системы из производственного процесса для исследований отсутствует, или же невозможно подать на систему требуемые измерительные воздействия выбора нет – нужно использовать те сигналы, которые есть.


Алгоритмы программ цифровых фильтров


Существует три основных алгоритма программной реализации дискретных передаточных функций (z-ПФ):
Алгоритм Требуемое быстродействие Объём памяти
Непосредственный
а) с двумя буферами
б) с одним буфером
24(m+k+1) / Tц
надо
9m+9k+12
уточнить
52k / Tц 20k+10
50k / Tц 19k+8
Дискретную ПФ можно представить в любой из форм:
W(z) =
Y(z) b0+b1z-1+...+bmz-m - стандартная форма
для дискретных ПФ
X(z) a0+a1z-1+...+akz-k
W(z) =
Y(z) K 1+e2z-1 1+ekz-1 - разложение z-ПФ
на множители [1]
X(z) 1+d1z-1 1+d2z-1 1+dkz-1
W(z) =
Y(z) P1 P2 Pk - разложение z-ПФ
на элементарные
дроби [1]
X(z) 1+d1z-1 1+d2z-1 1+dkz-1
где: ei - нули z-ПФ; di - полюса z-ПФ; a0 - не равно нулю; Pi - коэффициенты разложения
Этим формам представления z-ПФ соответствуют структурные схемы изображенные на Рисунок 1.

Рисунок 1
  • Разложения делают параметры z-ПФ независимыми, позволяют контролировать ряд дополнительных фазовых координат: x1[n], x2[n], ..., xk-1[n]; или y1[n], y2[n], ..., yk[n] - что удобно при отладке систем.
  • Последовательная структура
  • Параллельная структура
  • Разложение z-ПФ на элементарные дроби

Перечисленные факторы определяют выбор алгоритма программы для ЦВМ.
После разложений, каждый из множителей в форме следует представить в стандартной форме соответствует разностное уравнение (РУ):

по которому и составляется программа. Поскольку текущее значение выходной координаты y[n] рассчитывается по предыдущим значениям y[n-1], y[n-2], y[n-k] - данное РУ называется рекурсивным.
Изобразим структурную схему цифрового фильтра для этого уравнения (см. Рисунок 2). Ее можно преобразовать, объединив два буфера (см. Рисунок 3). Цепочки элементов z-1 в программах будут соответствовать буферам из ячеек памяти, данные в которых сдвигаются на каждом такте дискретизации. Обе структурные схемы можно составить из простейших блоков программы VisSim.

Структурной схеме соответствует алгоритм
Условие физической реализуемости - а0 № 0
Рисунок 2

Структурной схеме соответствует алгоритм
Условие физической реализуемости - а0 № 0
Рисунок 3
Если выбран последовательный алгоритм, то структура каждого множителя или элементарной дроби первого порядка (см. Рисунок 1) будет иметь более простой вид (см. Рисунок 4).

Рисунок 4
Согласно структурной схеме Рисунок 2, составим процедуру реализующую дискретную ПФ второго порядка:
function y_zW(x) { y=( k * (x*b0+xz_1*b1+xz_2*b2) - ( yz_1*a1+yz_2*a2) ) / a0; xz_2=xz_1; xz_1=x; yz_2=yz_1; yz_1=y; return y; }; где: xz_2, xz_1 и yz_2, yz_1 - ячейки двух буферов, т.е. регистры задержки - z -1.
Выберем коэффициенты z-ПФ для расчета переходной характеристики и построим ее:
K=
b0= b1= b2=
a0= a1= a2=



Амплитуднофазовая характеристика (годограф Найквиста)


h3 style="clear: right">Логарифмические ЧХ - ЛАЧХ & ЛФЧХ Построение ЛАЧХ & ЛФЧХ производится по выражениям:
L(w) = 20 lg |W(jw)| = 20 lg A(w), [дБ]; j(w) = arg(W(jw)), [рад].
Числитель и знаменатель ПФ САР могут быть представлены либо в виде отношения полиномов:
,
либо в виде отношения их разложений на элементарные множители:
(1)

Постановка s¬jw позволяет перейти в частотный домен. При наличии ЭВМ построение ЛАЧХ & ЛФЧХ не составит труда в любом случае. Однако разложенная на множители ПФ (1) позволяет построить асимптотические ЛАЧХ & ЛФЧХ практически без вычислительной работы. Каждый линейный множитель ее числителя и знаменателя есть комплексное число. Найдем модуль каждого (как гипотенузу прямоугольного треугольника), и перейдем к логарифмическому масштабу:

Для упрощения дальнейших построений избавимся от операции умножения, заменив ее операцией сложения в логарифмическом домене:
(2)

Легко понять, что каждое слагаемое выражения (2) есть либо прямая линия, либо асимптотически приближается к прямым линиям при устремлении частоты к нулю и к бесконечности. Наклон аппроксимирующих прямых всегда кратен 20 дБ за декаду.
Для построения ЛФЧХ необходимо найти фазу каждого множителя числителя и знаменателя частотной ПФ, как арктангенс отношения его противолежащего катета к прилежащему (напомним, что при произведении комплексных чисел (в экспоненциальной форме) фазы (показатели степени) складываются, а при делении - вычитаются). Таким образом, построение ЛФЧХ производится по выражению:

Отметим так же, что одному Белу соответствует увеличение мощности в 10 раз. Поскольку A - это физическая величина либо первого, либо второго рода, а не их произведение (т.е. не мощность); увеличение ее в 10 раз соответствует увеличению мощности в 100 раз, что соответствует двум Белам или 20 дБ.


Аналитический расчет квадратичных ИТоценок


Для аналитического расчета можно воспользоваться теоремой Парсеваля:
.
Если ошибка x(t)= yҐ - y(t), то ее изображение:

Для нахождения I и I' мы должны подавать сигналы 1(t) и 1'(t). Их изображения Фурье соответственно равны:

Тогда установившиеся значения выходной координаты и, соответственно, значения ПФ для этих режимов:
yҐ = 1, F(0) = 1 и yҐ = 0, F(0) = 0.
В итоге изображения ошибок:

А квадратичные ИТ-оценки:



Аппроксимация звена чистого запаздывания


Сравним переходные функции апериодического звена с запаздывающим аргументом и апериодического звена 2-ого порядка:

Поскольку они существенно похожи, в приближенных расчетах можно осуществлять подмены передаточных функций звеньев.


Если N®Ґ, то в пределе получим W(s)»e-ts. Уже при N=8..10 степень приближения высока. Ряд будет более точно соответствовать разложению в ряд функции e-ts, если его представлять не апериодическими, а фазосдвигающими звеньями.


Архитектура системы управления банковской сетью



Архитектура системы управления банковской сетью


Постоянные хранилища данных (счета клиентов и банковская отчетная документация) имеются у подсистем банк, которые работают на компьютерах банков. Поскольку важно сохранять целостность данных и обеспечивать параллельное обслуживание нескольких проводок (транзакций), хранилища данных реализованы на основе баз данных банков (доступ к данным осуществляется через СУБД, которая, в частности, обеспечивает синхронизацию доступа к данным). Асинхронная параллельность возникает в связи с необходимостью параллельного обслуживания нескольких независимо работающих ATM и кассовых терминалов. Каждый терминал может одновременно обслуживать только одну проводку (транзакцию), но каждая проводка связана также с центральным компьютером консорциума и компьютером одного из банков, которые должны одновременно обслуживать несколько проводок. Как видно из рисунка 3.7 каждая проводка распределена по трем устройствам, управляющее ее выполнением программное обеспечение состоит из трех частей; каждая из этих частей может быть реализована в виде отдельного класса.


Атрибуты двух зависимостей между одним и многими



Атрибуты двух зависимостей между одним и многими


Иногда зависимости, имеющие много атрибутов, представляют с помощью классов. Такие зависимости в базах данных представляются временными таблицами, организуемыми в процессе обращения с базой данных. Пример зависимости, представленной через класс, показана на рисунке 2.12, на котором представлена информация о регистрации пользователей на рабочих станциях. Пользователь может быть зарегистрирован на нескольких рабочих станциях, каждая регистрация содержит приоритет пользователя и его привилегии доступа (атрибуты зависимости). Пользователь может иметь свою директорию для каждой зарегистрированной рабочей станции, но одна и та же директория может принадлежать одновременно нескольким пользователям или нескольким рабочим станциям. Язык программирования Perl тут


Безинерционный элемент (активноесопротивление)


Иконка безинерционного потребителя энергии, а так же его внутренняя структурная схема показаны на рисунке. От верхнего разъема к нижнему (зеленые контакты) по элементу протекает поток материи i. Потенциал j2 на красном контакте нижнего разъема элемента известен (определяется другими элементами цепи). Потенциал j1 красного контакта верхнего разъема вычисляется с помощью закона Ома, поскольку величина потока i и сопротивление R для элемента известны: j1 = j2 + i R.



Библиотеки блоков графических языков


В графических инструментальных средах информационные потоки определяются блоками, которые могут иметь входы и выходы. В библиотеках программ может присутствовать несколько сотен блоков. Блоки можно классифицировать:
  1. Блоки - источники сигналов
  2. Блоки - преобразователи сигналов
  3. Блоки - приемники сигналов
  4. Блоки, которые одновременно являются источниками, приемниками и преобразователями сигналов, т.е. это блоки обладающие эффектом памяти (кроме "УВХ")
  5. Блоки (структуры) для программирования потока
  6. Блоки (структуры) для синхронизации потоков

Большое количество блоков может наблюдаться только в группе преобразователей сигналов. Минимально необходимым является количество 100+/-10 блоков. Это блоки элементарных математических операций:
  1. Арифметические
  2. Логические
  3. Тригонометрические
  4. Матричные
  5. Нелинейные
  6. Обладающие эффектом памяти

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


Билетызадачи по ТАУ к государственному экзамену


Задача № 1 ТАУ
Выбрать оптимальный метод и повысить точность системы, если известна её частотная характеристика в разомкнутом состоянии (система имеет единичную обратную связь (ОС)).

Совокупность возможных методов повышения точности ограничена требованием сохранить линейность системы. Решение задачи должно быть выполнено (подтверждено моделированием) системы в пакете VisSim. Блок-схему (модель) системы составить и сдать комиссии до подхода к ЭВМ.
Задача № 2 ТАУ
Выбрать оптимальный метод, и выполнить коррекцию системы, модель которой изображена на рисунке.

Совокупность возможных методов коррекции ограничена требованием сохранить линейность системы. Решение задачи должно быть выполнено (подтверждено моделированием) системы в пакете VisSim. Асимптотические ЛАЧХ & ЛФЧХ построить и сдать комиссии, указав название метода коррекции, до подхода к ЭВМ.
Задача № 3 ТАУ
Указать настройки ПИД-регулятора, формирующего управляющее воздействие на объект, передаточная функция которого изображена на рисунке (система имеет единичную ОС). Требования к точности системы: Vm=10ед./с; Em=100ед./с2; Xm=0,01ед. Требование к устойчивости: M < 1,16.

Решение задачи должно быть выполнено (подтверждено моделированием) системы в пакете VisSim. Фрагменты ЛАЧХ & ЛФЧХ, удовлетворяющие предъявленным к системе требованиям построить и сдать комиссии до подхода к ЭВМ.
Задача № 4 ТАУ


Решение задачи должно быть выполнено (подтверждено моделированием) системы в пакете VisSim. ЛАЧХ & ЛФЧХ разомкнутой, некорректированной системы, а так же ее блок-схему построить и сдать комиссии до подхода к ЭВМ.
Задача № 5 ТАУ
Определить запасы устойчивости по амплитуде и фазе для системы изображенной на рисунке. Найти выражение для ошибки системы x(t) в установившемся режиме работы при заданном входном сигнале.

Решение задачи должно быть выполнено (подтверждено моделированием) системы в пакете VisSim. До подхода к ЭВМ предъявить комиссии асимптотические ЛАЧХ & ЛФЧХ разомкнутой системы, выражение для сигнала задания g(t) и значения первых трех коэффициентов ошибок замкнутой системы.


Блоки обладающие эффектом памяти


Фундаментальными для построения моделей являются блоки обладающие эффектом памяти. В этой группе два элементарных блока:
  • 1/S – "Интегратор" (дискретный квазианалог интегратора)
  • 1/Z – "Регистр задержки"

Интеграторы используются для построения моделей, которые имеют непрерывную природу, регистры задержки составляют основу моделей с дискретной природой.
В библиотеках программ математического моделирования можно найти еще ряд блоков обладающих эффектом памяти:
  • Блок "Передаточная функция"
  • Блок "Пространство состояний"
  • Блок "Звено чистого запаздывания"
  • Блок "Устройство выборки-хранения"1

Эффект памяти необходим так же при создании некоторых нелинейных блоков, таких как компаратор с гистерезисом. Но, обычно, подобные блоки в базовую библиотеку специально не включаются.
Эффект памяти проявляется двояко. Если речь идет, об интеграторах, то, очевидно, что их выходное значение зависит не только от текущего входного значения, но и от всей истории входных значений:
y[n]= y[-1] + m=0n-1е x[m] ,
где: x[n] - входной сигнал, y[n] - выходной сигнал, n - индекс решетчатой функции.
В регистрах задержки эффект памяти проявляется в том, что выборки сигнала задерживаются (а для этого запоминаются) на одну дискрету времени, период которой определяет внешняя синхронизирующая последовательность (внешний синхросигнал). Математическая запись соответствующей операции имеет вид:
y [n] = y [n-1] .
1) Следует помнить, что УВХ является лишь преобразователем сигнала, т.е. не порождает информационный поток.


Более сложные зависимости между объектами



Более сложные зависимости между объектами


Понятие зависимости перенесено в объектно-ориентированную технологию проектирования программных систем из технологии проектирования (и моделирования) баз данных, где зависимости используются с давних пор. Языки программирования, как правило, не поддерживают явного описания зависимостей. Тем не менее описание зависимостей очень полезно при разработке программных систем. Технология OMT использует зависимости при интерпретации диаграмм, описывающих систему.


Частота (frequency)


В зависимости от типа фильтра - это "частота сопряжения" (оценивается по пересечению ЛАЧХ с уровнем -3дБ), "резонансная частота" для полосового и режекторного фильтров, "центральная частота" полософормирующего фильтра, или "центральна частота наклонного участка" фильтра-ступени (фильтра-горки)


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


Частотная передаточная функция может быть представлена в следующих видах:
W(jw) = A(w) e jj(w), или W(jw) = U(w) + jV(w) ;
где:
  • A(w) - модуль частотной передаточной функции - находится как отношение модулей числителя и знаменателя:

A(w) = (k12 + k22 w2)1/2 / ((1 - T22 w2)2 + T12 w2)1/2 .
  • j(w) - фаза частотной передаточной функции - находится как разность аргументов числителя и знаменателя:j(w) = arctg(k2w / k1) - arctg(T1w / (1-T2w2)).
  • U(w) и V(w) - вещественная и мнимая части частотной ПФ. Для их нахождения немобходимо избавиться от мнимости в знаменателе, умножением на сопряженную знаменателю комплексную величину.


  • Частотные критерии качества


    Частотные критерии качества применяют, когда известны или можно определить экспериментально частотные свойства САР (АФХ, АЧХ, ЛАЧХ & ЛФЧХ). Вид переходного процесса при этом не рассматривается.
    Оценить частотными критериями можно:
    1. Запас устойчивости (b; m1; M)
    2. Быстродействие САР (wр; wср; wп; wэк).



    Частотные свойства последовательных


    К основным корректирующим звеньям относятся:
    1. Пассивное интегрирующее звено
    2. Пассивное дифференцирующее звено
    3. Пассивное интегро-дифференцирующее звено
    4. Фазосдвигающее звено
    5. Антивибратор




    где: T1 = (R1+R2)C2; T2 = R2C2; T3 = R1C1; T4 = (R1||R2)C1.



    Отмеченный участок ЛАЧХ корректирующих звеньев 1, 2 и 3, должен так изменить вид корректируемой ЛАЧХ, чтобы она в том же диапазоне частот пересекала ось частот с наклоном -20 дБ/дек.


    Частотные свойства систем с запаздыванием Понятие о критическом запаздывании


    Перейдем в частотный домен:
    ,
    следовательно:

    L(w) = |W(jw)| = Ao(w) ґ 1 = Ao(w) ,
    j(w) = jo(w) - wt .
    • Таким образом, наличие звена с запаздыванием не меняет модуля, а лишь вносит дополнительный фазовый сдвиг (-wt).
    • Из графика видно, что звено e-ts закручивает исходный годограф Wo(jw) по часовой стрелке, ухудшая условия устойчивости.
    • По имеющемуся годографу Wo(jw) можно определить критическое значение запаздывания tкр:
      j1 - wсрtкр = -p =>

    tкр = (p + j1) / wср
    В некоторых случаях tкр можно рассчитать аналитически.


    Частотный анализ модели или системы


    Процесс идентификации частотной характеристики модели или системы сопровождаемый уточнением соответствующей частотной передаточной функции. Цель частотного анализа состоит в предоставлении исходных данных для решения задач оценки качества, коррекции, синтеза САР. Процедуры частотного анализа, реализованные в программах математического моделирования динамических систем, могут быть основаны на базе:
    • вычислительных алгоритмов;
    • измерительных алгоритмов;
    • алгоритмов распознавания образов.



    Часть объектной модели графического редактора



    Часть объектной модели графического редактора


    Изложение будет вестись на примере реализации графического редактора, часть объектной модели которого представлена на рисунке 5.1. Редактор поддерживает манипулирование рекурсивными группами графических объектов, составленных из прямоугольников и овалов (в частности, кругов); при этом определена операция "сгруппировать", которая превращает группу объектов в единый объект (все это очень похоже на графическую подсистему редактора Microsoft Word).


    Цифровая коррекция


    Цифровая или дискретная коррекция весьма интересна с практической точки зрения в силу конструктивной универсальности устройств и гибкости настройки. Решения задач коррекции предполагают модификации низкочастотного и среднечастотного фрагментов ЛАЧХ, как правило, с уменьшением частоты среза wср. Известно, что в этом диапазоне системы с ЦВМ и их ЛАЧХ - L(l) не отличаются существенно по свойствам от непрерывных аналогов. Поэтому методика синтеза коррекции едина для цифровых и непрерывных систем. Проектирование же дискретной коррекции ведется в четыре этапа.
    1. Синтез ПФ непрерывного корректирующего устройства Wк(s) по методикам разработанным для непрерывных систем.
    2. Переход от непрерывной ПФ корректирующего устройства Wк(s) к эквивалентной дискретной Wк(z) посредствам последовательных переходов по изображениям:

    ,
    с помощью результирующей формулы билинейного преобразования (т.е. формальной подстановки):

    где: Tц - период дискретизации ЦВМ.
  • Составление структурной схемы дискретной ПФ Wк(z), оптимизированной при реализации по объёму памяти, быстродействию или для контроля промежуточных фазовых координат системы.
  • Написание программы для ЦВМ (периферийный контроллер, микроЭВМ, ЭВМ, цифровой сигнальный процессор - DSP) или разработка схемы на цифровых микросхемах.
    • Заметим, что из непрерывной ПФ можно получить бесконечное количество вариантов дискретной ПФ, при разных периодах дискретизации ЦВМ (этап 2).
    • Обычно частоту дискретизации fц=1/Tц выбирают в 6..10 раз больше частоты среза fср разомкнутой системы. Первоначально частоту дискретизации выбирают большой (fц=10..30fср), за тем, за две три попытки стремятся ее уменьшить (т.е. повторяют этап 2). При низких частотах дискретизации качество переходного процесса ухудшается настолько (в сравнении с непрерывной коррекцией), что платить за это понижением производительности ЦВМ не представляется возможным. Соответствующую ПФ Wк(z) используют в дальнейшем.
    • При синтезе ПФ Wк(s) или Wк(z) необходимо, что бы степень числителя Wк(s) не была больше степени знаменателя или свободный коэффициент a0 в знаменателе ПФ Wк(z) не был нулевым, иначе невозможно реализовать программу.
    • Если требуется обратный переход от Wк(z)НЧ к Wк(s)НЧ следует воспользоваться обратной формулой билинейного преобразования:
      Этот переход однозначен при известном периоде работы ЦВМ Tц.


    Цифровые регуляторы


    В непрерывных системах широко используются PID-регуляторы, которые представляются идеализированным уравнением:
    .
    где: KP - коэффициент усиления пропорционального канала; TIx - постоянная времени сопрягающего полюса интегрального канала; TDx - постоянная времени сопрягающего полюса дифференциального канала.
    Для малых периодов дискретизации Tц уравнение может быть преобразовано в разностное без существенной потери в точности. Непрерывное интегрирование может быть представлено с помощью метода прямоугольников .


    В результате получен нерекуррентный (позиционный) алгоритм управления, который требует сохранения всех предыдущих значений сигнала ошибки x[i], и в котором каждый раз заново вычисляется управляющий сигнал u[n].
    Для реализации программ закона регулирования на ЦВМ более удобным является рекуррентный алгоритм. Он характеризуется тем, что для вычисления текущего значения сигнала u[n] используется его предыдущее значение u[n-1] и поправочный коэффициент, не требующий существенных вычислительных затрат. Определим его:

    Перенесем u[n-1] в правую часть - получим "скоростной" алгоритм для программной реализации регулятора:
    (*)
    u[n] = u[n-1] + b0 x[n] + b1 x[n-1] + b2 x[n-2].


    Преобразования, аналогичные выше изложенным, при получении рекуррентного соотношения (*), выявляют отличия только для коэффициента b0:

    Запишем РУ (*) для изображений в z-домене:
    U [z] (1- z -1) = (b0 + b1 z -1 + b2 z -1) X [z] ,
    и представим его в виде дискретной ПФ:

    Анализ ее коэффициентов показывает, что:
    1. Для исключения статической ошибки, ПФ должна иметь полюс zx=1.
    2. Если b2 = 0, то получим PI-регулятор.
    3. Если b0 = 0, а b1 = (1 + b2), то получим PD-регулятор.

    Введение в СУБД MySQL тут


    Цифровые системы


    Цифровые системы строятся на базе комплекса средств вычислительной техники, основными элементами которого являются: 1)ЦВМ, 2) устройства ввода, 3) устройства вывода.
    Функции ЦВМ могут выполнять: 1) ЭВМ (компьютеры), 2) DSP - цифровые сигнальные процессоры, 3) ЦУ на жесткой логике. Первые относятся к универсальным устройствам управления, вторые специализированны для приложений, третьи разрабатываются для конкретных устройств (например, цифровой фильтр имеющийся в каждом еD АЦП).
    Устройствами ввода и вывода в случае состыковки с аналоговыми сигналами являются АЦП и ЦАП-ы, а в случае состыковки с цифровыми сигналами - порты и интерфейсы.
    В системах с ЦВМ, последние могут выполнять роли: 1) регулятора, 2) регулятора и устройства сравнения, 3) корректирующего устройства или 4) самого объекта.
    Если ЦВМ универсальная (ЭВМ), то возможно построение многофункциональных САУ, когда одна ЦВМ обслуживает комплекс составляющих объект устройств. Например, в автомобиле: 1) система навигации, 2) система бортового электропитания, 3) АБС, 4) электронная подвеска, 5) управление топливоподачей, ... В подобных случаях в состав системы ЦУ должны входить аналоговые или цифровые мультиплексоры и демультиплексоры.
    Во всех случаях ЦВМ предоставляет легко доступные информационные потоки, позволяющие кроме прямого управления осуществлять функции: 1) контроля, 2) оптимизации, 3) координации и 4) организации всех процессов.


    Дальнейшие примеры зависимостей. Обозначения



    Дальнейшие примеры зависимостей. Обозначения




    Демпфирование с подавлением средних частот


    h3 style="clear: rigth">
    Демпфирование с подавлением низких частот или эквивалентным поднятием высоких Применяется ограниченно, поскольку без восстановления коэффициента усиления в области низких частот, падает точность, а поднятие верхних частот расширяет полосу пропускания и увеличивает шумы в системе.
    Реализуется с помощью пассивного дифференцирующего звена, которое не дает дополнительных отрицательных фазовых сдвигов в области низких частот и позволяет успешно корректировать ЛАЧХ с наклоном -40 дБ/дек. Компенсировать же падение коэффициента усиления DK= T1/ T2 можно только, если наклон -40 дБ/дек после частоты среза wср сохраняется более одной декады.
    Коррекция пассивным дифференцирующим звеном с компенсирующим увеличением коэффициента усиления


    Демпфирование с подавлением высоких частот


    Применяется сдержанно, поскольку при сохранении точности существенны потери в быстродействии - режется полоса пропускания.
    Реализуется:
    1. C помощью апериодического звена с большой постоянной времени T0 - только для точных статических систем T0 і K T1 (подобный тип коррекции в ОУ).
    2. C помощью пассивного интегрирующего звена - для систем имеющих участок ЛАЧХ с наклоном -20дБ/дек вблизи частоты единичного усиления (среза) wср, на которой наклон может составлять -40, -60, .. дБ/дек.




    Диаграмма состояний, на которой указаны условия



    Диаграмма состояний, на которой указаны условия




    Диаграмма состояний объектов класса ATM (банкомат)



    Диаграмма состояний объектов класса ATM (банкомат)




    Диаграмма состояний объектов класса банк



    Диаграмма состояний объектов класса банк




    Диаграмма состояний объектов класса консорциум



    Диаграмма состояний объектов класса консорциум




    Диаграмма состояний составного объекта (подсистемы)



    Диаграмма состояний составного объекта (подсистемы)


    Если синхронизирующее событие вырабатывается вне синхронизируемого объекта, оно может быть передано ему из другого объекта; на диаграмме это обозначается как показано на рисунке 2.51.


    Диаграмма состояний телефонной линии



    Диаграмма состояний телефонной линии


    На рисунке 2.46 приведена, в качестве примера, диаграмма состояний телефонной линии. Другие примеры диаграмм состояний см. в последующих пунктах.


    Диаграмма состояний телефонной линии, на которой указаны активности и действия



    Диаграмма состояний телефонной линии, на которой указаны активности и действия


    Действия могут также представлять внутренние операции управления объекта, как например, присваивание значений атрибутам или генерация других событий.


    Дискретная ПФ


    Знание приведенной решетчатой весовой функции wп[n] позволяет найти реакцию импульсного фильтра на входную величину произвольного вида - x(t). Рассмотрим реакции на отдельные значения входной величины в дискретные моменты времени:
    • на x[0]: y[n] = wп[n] x[0]
    • на x[1]: y[n] = wп[n-1] x[1]
    • на x[m]: y[n] = wп[n-m] x[m]

    Следовательно реакция на всю входную последовательность будет равна:
    y[n] = m=0nеwп[n-m] x[m] = m=0nеwп[m] x[n-m] = m=0nеwп[m] x[n] e -mTs = m=0nеwп[m] x[n] z -m = x[n] m=0nеwп[m] z -m .
    Здесь первоначально изменен порядок суммирования (свертка), а затем учли запаздывание оператором запаздывания z = eTs. Если устремить n к бесконечности, то, очевидно, что сомножитель для x[n] есть дискретная ПФ:
    W (z) = n=0Ґ еwп[n] z -n = Y (z) / X (z) .
    И поскольку она является Z-преобразованием приведенной решетчатой весовой функции, то ее можно представить как Z-преобразование от обратного преобразования Лапласа приведенной ПФ экстраполятора и непрерывной части:
    W (z) = Z { wп[n] } = Z { L-1 { Wп(s) } } .
    Часто для краткости записи знак операции L-1 опускают записывая: W (z) = Z { Wп(s) }.


    Добротность (Q)


    Отношение резонансной частоты фильтра к ширине его полосы. В зависимости от типа фильтра при формировании требований к ЧХ, бывает удобней пользоваться эквивалентными параметрами - "полосой" и "наклоном"


    ДПД процесса выполнить проводку в системе обслуживания банковской сети



    ДПД процесса выполнить проводку в системе обслуживания банковской сети


    ДПД показывают только зависимости между операциями; они не содержат информации о последовательности выполнения операций (операции, показанные на ДПД могут быть не всегда выполняемыми или исключающими одна другую). Например, пароль должен быть подтвержден до внесения изменений в счет; если он указан неверно, изменения в счет не вносятся. Последовательность выполнения операций указывается в динамической, а не в функциональной модели. Некоторые значения данных влияют на выбор последовательности вычислений в динамической модели; тем не менее эти значения не влияют непосредственно на выходные значения ДПД, так как ДПД показывает все возможные пути вычислений. Однако может оказаться полезным поместить функции, осуществляющие выбор последовательности вычислений, и в функциональную модель, так как эти функции могут выражать сложные зависимости от входных данных. Такие функции показаны на ДПД, но их выходными значениями являются управляющие сигналы, показанные пунктирными линиями. Примером такой функции является функция проверить пароль. Описание функций После того как ДПД составлена, необходимо составить описание каждой функции из ДПД. Пример описания функции приведен на рисунке 2.65. Мы не приводим других примеров описания функций банковской сети в виду их тривиальности. Описание ограничений Ограничения - это функциональные зависимости между объектами, не сводящиеся к непосредственным зависимостям между выходами и входами. Ограничения могут накладываться одновременно на два объекта, на различные объекты одного класса в различные моменты времени (инвариант), или на объекты разных классов в различные моменты времени (хотя в последнем случае это, как правило, связи между входами и выходами). Ограничения, которым должны удовлетворять входные значения функции, называются ее предусловиями, а ограничения, которым удовлетворяют выходные значения функции, - ее постусловиями. В банковской сети можно ввести следующие ограничения:
    • "счет не может иметь отрицательного баланса";
    • "отрицательный баланс кредитуемого счета не может быть больше лимита кредитования для этого счета".
    Определение критериев оптимизации Определяем какие значения необходимо максимизировать или минимизировать в процессе работы системы; если критериев оптимизации несколько и они противоречат один другому, следует определить компромиссные решения. На этой стадии не следует принимать по этому поводу слишком точных решений, так как в процессе дальнейшего проектирования критерии будут уточняться и изменяться. Оптимизационные критерии для банковской сети:
    • минимизировать количество физических пересылок между различными узлами сети;
    • минимизировать время, в течение которого счет закрыт для доступа.
    Операции вводятся на различных стадиях разработки модели проектируемой системы (см. выше):
    • при разработке объектной модели;
    • при определении событий;
    • при определении действий и активностей;
    • при определении функций.
    На заключительном этапе разработки модели проектируемой системы все введенные операции вводятся в ее объектную модель. К перечисленным операциям добавляются операции, связанные с внешним поведением объектов рассматриваемых классов: эти операции определяются природой объектов, а не свойствами разрабатываемой системы. Такие операции расширяют определение объекта, выводя его за рамки непосредственных требований со стороны конкретной системы. Примерами таких операций для банковской сети являются: закрыть счет, создать сберегательный счет, создать банковскую карточку и т.п. С точки зрения системы эти операции не имеют смысла, но они отражают реальные свойства классов счет и карточка и могут оказаться полезными при использовании этих классов в других системах. В заключение следует исследовать объектную модель на предмет упрощения операций ее классов. Пример банковской сети недостаточно сложен, чтобы продемонстрировать это.


    Другие связывающие отношения


    Разделим уравнение движения (4) на уравнение ошибки (5), считая, что f(t)=0 и Wос(p)=1:
    y(t) / x(t) = R(p) / Q(p) , => W(p) = R(p) / Q(p) .
    В соответствии с теми же уравнениями и уравнением замыкания характеристический полином D(p) = R(p) + Q(p). Добавим 1 к W(p):
    1 + W(p) = Q(p) / Q(p) + R(p) / Q(p) = D(p) / Q(p) .
    При исследованиях характеристический полином приравнивают к нулю, т.е. вместо него можно использовать W(p):
    1 + W(p) = 0 , - характеристическое уравнение.
    А так же:
    W(p) = [D(p) - Q(p)] / Q(p) = D(p)/Q(p) - 1 = R(p) / [D(p) - R(p)] .
    и
    W(p) = F(p) / [1 - F(p)] , W(p) = [1 - Fx(p)] / Fx(p) .


    Другие примеры классов



    Другие примеры классов


    Все объекты данного класса используют один и тот же экземпляр каждой операции (т.е. увеличение количества объектов некоторого класса не приводит к увеличению количества загруженного программного кода). Объект, из которого вызвана операция, передается ей в качестве ее неявного аргумента (параметра). Одна и та же операция может, вообще говоря, применяться к объектам разных классов: такая операция называется полиморфной, так как она может иметь разные формы для разных классов. Например, для объектов классов вектор и комплексное_число можно определить операцию +; эта операция будет полиморфной, так как сложение векторов и сложение комплексных чисел, вообще говоря, разные операции. Каждой операции соответствует метод - реализация этой операции для объектов данного класса. Таким образом, операция - это спецификация метода, метод - реализация операции. Например, в классе файл может быть определена операция печать (print). Эта операция может быть реализована разными методами: (а) печать двоичного файла; (б) печать текстового файла и др. Логически эти методы выполняют одну и ту же операцию, хотя реализуются они разными фрагментами кода. Каждая операция имеет один неявный аргумент - объект к которому она применяется. Кроме того, операция может иметь и другие аргументы (параметры). Эти дополнительные аргументы параметризуют операцию, но не связаны с выбором метода. Метод связан только с классом и объектом (некоторые объектно-ориентированные языки, например C++, допускают одну и ту же операцию с разным числом аргументов, причем используя то или иное число аргументов, мы практически выбираем один из методов, связанных с такой операцией; на этапе предварительного проектирования системы удобнее считать эти операции различными, давая им разные имена, чтобы не усложнять проектирование). Операция (и реализующие ее методы) определяется своей сигнатурой, которая включает, помимо имени операции, типы (классы) всех ее аргументов и тип (класс) результата (возвращаемого значения). Все методы, реализующие операцию должны иметь такую же сигнатуру, что и реализуемая ими операция. Операции перечисляются в третьей части прямоугольника (рисунок 2.1), описывающего класс. Каждая операция должна быть представлена своей сигнатурой, однако на ранних стадиях проектирования можно ограничиваться указанием имени операции, отложив полное определение сигнатуры на конец рассматриваемой фазы жизненного цикла (либо даже на последующие фазы). В графическом языке технологии OMT тип любого объекта данных указывается вслед за именем этого объекта после двоеточия (как в языке Паскаль). При моделировании системы полезно различать операции, имеющие побочные эффекты (эти эффекты выражаются в изменении значений атрибутов объекта, т.е. в изменении его состояния), и операции, которые выдают требуемое значение, не меняя состояния объекта. Эти последние операции называются запросами. Значения некоторых атрибутов объекта могут быть доступны только операциям этого объекта. Такие атрибуты называются закрытыми. На рисунке 2.3 показаны закрытые атрибуты для объектов класса счет. Значения закрытых атрибутов объекта можно узнать вне объекта только в том случае, если среди операций этого объекта определены соответствующие запросы. Аналогично, в объекте можно определить и закрытые (вспомогательные) операции, однако на ранних стадиях проектирования этого, как правило, не делают, так как выделение закрытых операций связано, в основном, с реализацией системы.


    Другие примеры обобщения (наследования)



    Другие примеры обобщения (наследования)


    Необходимо отметить, что, как показывает опыт практического проектирования систем, следует избегать обширных многоуровневых классификаций, так как поведение подклассов низших уровней многоуровневой классификации бывает трудно понять: большая часть (а нередко и все) атрибутов и операций таких классов определена в их суперклассах различных уровней. Если количество уровней классификации стало непомерно большим, нужно слегка изменить структурирование системы. Чтобы понять, какое число уровней является непомерно большим, можно руководствоваться следующими оценками: два-три уровня наследования, как правило, приемлемы всегда (мне известна одна фирма, разрабатывающая программные системы, в которой издан стандарт фирмы, запрещающий более чем трехуровневые классификации в программах); десятиуровневая классификация почти всегда неприемлема; пять-шесть уровней, как правило, достаточно для программистов и не слишком обременяет администрацию. Обобщение и наследование широко применяются не только при анализе требований к программным системам и их предварительном проектировании, но и при их реализации. Иногда в подклассе бывает необходимо переопределить операцию, определенную в одном из его суперклассов. Для этого операция, которая может быть получена из суперкласса в результате наследования, определяется и в подклассе; это ее повторное определение "заслоняет" ее определение в суперклассе, так что в подклассе применяется не унаследованная, а переопределенная в нем операция. Напомним, что каждая операция определяется своей сигнатурой; следовательно, сигнатура переопределения операции должна совпадать с сигнатурой операции из суперкласса, которая переопределяется данной операцией. Так, в примере, изображенном на рисунке 2.17, в классе круг переопределяется операция вращение его суперкласса фигура (при повороте круга его изображение не меняется, что позволяет сделать операцию вращение в классе круг пустой). Переопределение может преследовать одну из следующих целей:
    • расширение: новая операция расширяет унаследованную операцию, учитывая влияние атрибутов подкласса;
    • ограничение: новая операция ограничивается выполнением лишь части действий унаследованной операции, используя специфику объектов подкласса;
    • оптимизация: использование специфики объектов подкласса позволяет упростить и ускорить соответствующий метод (например, переопределяя операцию max класса IntegerSet в его подклассе SortedIntegerSet, мы можем резко упростить ее, используя специфические свойства упорядоченных множеств);
    • удобство.
    Целесообразно придерживаться следующих семантических правил наследования:
    • все операции-запросы (операции, которые используют значения атрибутов, но не изменяют их) должны наследоваться всеми подклассами;
    • все операции, изменяющие значения атрибутов, должны наследоваться во всех их расширениях;
    • все операции, изменяющие значения ограниченных атрибутов, или атрибутов, определяющих зависимости, должны блокироваться во всех их расширениях (например, операция размер_по_оси_x естественна для класса эллипс, но должна быть заблокирована (заменена пустой операцией) в его подклассе круг);
    • операции не следует переопределять коренным образом; все методы, реализующие одну и ту же операцию, должны осуществлять сходное преобразование атрибутов;
    • унаследованные операции можно уточнять, добавляя дополнительные действия.
    Следуя этим правилам, которые, к сожалению, редко поддерживаются объектно-ориентированными языками программирования, можно сделать разрабатываемую программу более понятной, легче модифицируемой, менее подверженной влиянию различных ошибок и недосмотров.


    Естественнофизическое моделирование


    Переходная техника физического моделирования не использующая модели элементов физических устройств и предполагающая задание системы уравнений либо в графической, либо в текстовой форме (см. Рисунок 3). Математический аппарат теории систем автоматического регулирования предполагает исключение алгебраических уравнений со свободными переменными из моделей технических устройств. Таким образом, техника структурного моделирования, использующая модели в форме передаточных функций, требует наличия лишь явного решателя. Явный решатель подключается ко всем интеграторам модели (блоки 1/S), и, с той или иной точностью (на что влияет выбор метода интегрирования), интегрирует соответствующие сигналы, обеспечивая тем самым решение дифференциальных уравнений.

    Рисунок 1
    Неявный решатель позволяет перейти к иной технике построения моделей, которая предусматривает закрепление за группами уравнений условных графических обозначений элементов энергетических цепей (резистора, транзистора, магнитного сердечника, пневмоцилиндра и пр.).

    Рисунок 2
    Следует отметить, что в программах с поточной моделью управления подключение неявного решателя возложено на пользователя. Задача составления моделей физических элементов, с такой структурой, дабы при составлении из них произвольных энергетических цепей корректно стыковались алгебраические уравнения, вызывала затруднения. По этой причине данный класс программ отстал в технике мультидоменного физического моделирования и в них распространена устаревающая техника естественно-физического моделирования.

    Рисунок 3
    На рисунках, для сравнения, демонстрируются модели одной и той же электрической схемы построенные согласно описанным техникам.


    Форма Коши


    Матричная форма записи системы ДУ решенных исключительно относительно первой производной координат САР.

    Изображенная на рисунке блок-схема позволяет решить систему ДУ представленную в форме Коши:
    (2)

    где:
    • x1, x2, x3 - собственные координаты системы - ошибка системы x(t), воздействие на объект u(t), выходная координата - y(t), ...;
    • a11, ... , a33 - постоянные коэффициенты (если система не является зависимой от параметра)- суммы и произведения постоянных времени Tj, коэффициентов усиления Kn;
    • f1, f2, f3 - воздействия на систему - сигнал задания g(t), помехи fj(t).

    О форме Коши:
    • Применяется в теории управления не часто.
    • Удобна, если для расчетов использовать классические математические пакеты: MathCAD, MATLAB, Mathematica, Maple, Derive.
    • Используется при построении аналоговых вычислительных моделей матричного типа (например, моделей на операционных усилителях).
    • Уравнения могут быть решены относительно любой из фазовых координат xi.



    Формальная модель топки, разработанная с помощью методологии OSA



    Формальная модель топки, разработанная с помощью методологии OSA




    Формирование запретной НЧ области для желаемой ЛАЧХ


    Способ №1
    Дано:


    Xm - максимальная амплитуда ошибки;
    Vm - максимальная скорость слежения;
    Em - максимальное ускорение слежения.
    Найдем связывающие отношения между амплитудой, скоростью и ускорением синусоидального сигнала:
    g(t) = Gmsin(wkt)
    g'(t) = Gmwkcos(wkt)
    g''(t) = -Gmwk2sin(wkt)
    => Vm = Gmwk
    Em = Gmwk2
    => wk = Em / Vm
    Gm = Vm2 / Em
    • Если зафиксировать Vm в сигнале и уменьшать w от wk, то Gm будет увеличиваться на 20 дБ за декаду (в 10 раз).
    • Если зафиксировать Em в сигнале и увеличивать w от wk, то Gm будет уменьшаться на 40 дБ за декаду (в 100 раз).
    Запретная область соответствует ЛАЧХ вида 1-2, т.е. системе с астатизмом 1-ого порядка добротности которой:

    Способ №2
    Дано:


    wk - контрольная частота;
    Dj - фазовая ошибка слежения;
    d - относительная амплитудная составляющая ошибки.

    Построим векторную диаграмму гармонических координат системы:

    где:




    Геометрическая трактовка линеаризации


    Рабочие файлы: [de_lin.vsm]



    Граф направленный сигнальный


    Диаграмма прохождения сигнала, состоящая из совокупности узлов (сумматоров) и соединяющих их ветвей. Стрелки на ветвях указывают направление передачи сигнала или воздействия от одного узла к другому. Ветви в направленном графе характеризуются передаточными функциями. Направленный граф является графической формой записи системы уравнений описывающих динамическую систему, и не может отражать ее топологию (модульную структуру).


    Граф направленный (сигнальный)


    Диаграмма прохождения сигнала, состоящая из совокупности узлов (сумматоров) и соединяющих их ветвей. Стрелки на ветвях указывают направление передачи сигнала или воздействия от одгого узла к другому. Ветви в направленном графе характеризуются передаточными функциями. Направленный граф является графической формой записи системы уравнений описывающих динамическую систему, и не может отражать ее топологию (модульную структуру).


    Граф направленный (сигнальный)


    Диаграмма прохождения сигнала, состоящая из совокупности узлов (сумматоров) и соединяющих их ветвей. Стрелки на ветвях указывают направление передачи сигнала или воздействия от одного узла к другому. Ветви в направленном графе характеризуются передаточными функциями. Направленный граф является графической формой записи системы уравнений описывающих динамическую систему, и не может отражать ее топологию (модульную структуру).


    Граф ненаправленный топологический (схема замещения)


    Схема, состоящая из совокупности соединенных в узловых точках двухполюсных модулей преобразующих энергию. Полюсы двухполюсников являются подводами энергии. Для ветвей ненаправленного графа нельзя однозначно указать направление распространения координаты первого рода. Ненаправленный граф зеркально (без искажений) отражает модульную структуру (схему замещения) динамической системы
    (энергетической цепи), и в том же графическом образе, но как в нелинейном зеркале, отражается ее система уравнений. Для узлов ненаправленного графа формулируются постулат о сохранении материи, а для контуров – постулат о сохранении энергетических потенциалов.


    Граф ненаправленный (топологический)


    Схема, состоящая из совокупности соединенных в узловых точках двух- или ?многополюсных модулей? преобразующих энергию. Полюсы многополюсников являются подводами энергии. Для ветвей ненаправленного графа нельзя однозначно указать направление распространения коордитаты первого рода. Ненаправленный граф зеракльно (без искажений) отражает топологию (модульную структуру) динамической системы, и в том же графическом образе, но как в нелинейном зеркале, отражается ее система уравнений. Для узлов ненаправленного графа можно записать первый закон Кирхгофа, а для контуров - второй закон Кирхофа.


    Графов теория


    Учение об общих топологических свойствах графов и о вытекающих из них расчетных методах. Две ветви теории: тероия направленных графов
    и тероия ненаправленных графов четко делят между собой программы визуального математического моделирования.


    Графов теория


    Учение об общих топологических свойствах графов и о вытекающих из них расчетных методах. Две ветви теории: теория направленных графов
    и тероия ненаправленных графов четко делят между собой программы визуального математического моделирования.


    Графов теория


    Учение об общих топологических свойствах графов и о вытекающих из них расчетных методах. Две ветви теории: теория направленных графов
    и теория ненаправленных графов
    являются основой для технологий структурного
    и мультидоменного физического
    моделирования.


    Хранилища данных



    Хранилища данных


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


    Идея мультидоменного физического моделирования


    Существуют фундаментальные физические постулаты. Первый постулат гласит, что материя не может появиться ни откуда и не может исчезнуть в никуда. Второй постулат утверждает то же самое в отношении энергетического потенциала. Эти постулаты имеют частные формулировки для каждого энергетического домена. Например, для электрического домена это первый и второй законы Кирхгофа.
    Каждый из энергетических доменов характеризуется двумя физическими величинами первого и второго рода (их произведение всегда есть мощность). В случае электрического домена – это электрические ток и напряжение соответственно. Эти парные физические величины, в каждом энергетическом домене, связаны между собой законом Ома в соответствующей формулировке.

    Демонстрируется система подобий между энергетическими доменами. Формулы для расчета мощности приведены с целью указания тех парных физических величин первого и второго рода, которые определяют вид закона Ома для соответствующего энергетического домена
    Таким образом, в каждом из энергетических доменов потребителями энергии являются электрическое, магнитное, тепловое, гидравлическое, акустическое, механическое, ротационное и др. сопротивления. Во всех случаях это простые физические устройства, подразделяемые по принципу действия на три класса (R, L, C). Можно сказать, что для семи названных энергетических доменов закон Ома имеет 21 формулировку. Формулы закона Ома записываются тремя способами:
    Электрические элементы

    Три формы записи закона Ома определяют три формальных примитива, которые являются пассивными элементами ненаправленных графов, т.е. моделями потребителей энергии. В каждом из энергетических доменов для них существуют собственные условные графические обозначения, однако математическая суть соответствующих библиотечных элементов неизменна:
    Гидравлические элементы

    Тепловые элементы

    Магнитные элементы

    Механические элементы

    Ротационные элементы

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


    Имена ролей



    Имена ролей


    Пользователь может быть либо владельцем, либо зарегистрированным пользователем директории; директория может содержать в себе другие директории. Имена ролей следует обязательно указывать в тех случаях, когда зависимость устанавливается между объектами одного и того же класса (как в случаях, показанных на рисунках 2.11 и 2.13). Имена ролей должны быть уникальны, так как они используются для различения объектов, участвующих в зависимости. Квалификатором называется некоторый атрибут, который позволяет снизить эффективную кратность зависимости. Квалификаторы применяются в зависимостях типов "один-ко-многим" или "много-ко-многим". Так в примере, показанном на рисунке 2.14, использование квалификатора имя_файла позволяет привести зависимость дает_доступ от вида, приведенного на рисунке 2.14(а), к виду, показанному на рисунке 2.14(б), сократив число зависимых объектов до одного. Еще один пример использования квалификатора показан на рисунке 2.14(в): использование квалификаторов и здесь позволяет сократить кратность зависимости до одного объекта. Квалификаторы указываются на схемах в прямоугольничках, пририсованных к прямоугольнику, изображающему соответствующий класс.


    Инструкции


    Данное руководство - это электронная версия документа tau.doc или tau_a5.doc. Назначение электронной версии - быстрый и систематизированный доступ во время занятий к тексту пособия, к изучаемым моделям, а так же, при необходимости, к конспекту лекций, и к тестам. Операционная система установленная на компьютерах должна распознавать расширения рабочих файлов (*.vsm и *.ca4) и, при активации в руководстве соответствующих гипертекстовых ссылок, должна автоматически запускать приложения VisSim и Electronics Workbench. Информация о версиях пакетов, их изготовителях и архиве моделей приведена в разделе "Требуемые программные пакеты". Достаточно, если студенты будут проинструктированы о порядке запуска электронного руководства (tau_knv.chm).
    Техника защиты компакт-дисков от копирования тут


    Интегральное регулирование по второму интегралу от ошибки


    Двойной интегральный закон регулирования имеет вид:
    u(t) = Wрег(p) x(t) = k3/p2 x(t) ,
    тогда в разомкнутом состоянии система будет характеризоваться ПФ:
    W(p) = Wрег(p) Wo(p) = k3/p2 Wo(p) .
    В этом случае система будет обладать астатизмом второго порядка - в ноль обратятся как постоянная составляющая ошибки, так и её скоростная составляющая (ошибка от помехи здесь не рассматривается):

    Резюме: повышение порядка астатизма приводит к увеличению установившейся точности САР, но делает систему более замедленной в действии.

    На рисунке показано, что, на сколько бы мал ни был коэффициент усиления пропорционального канала, и насколько большим бы ни был коэффициент усиления интегрального канала, для малых отклонений ошибки x(t) сигнал управления на объект u(t) интегральным каналом формируется менее интенсивно.


    Интегральное регулирование


    Интегральный закон регулирования имеет вид:
    u(t) = Wрег(p) x(t) = k2/p x(t) ,
    тогда в разомкнутом состоянии система будет характеризоваться ПФ:
    W(p) = Wрег(p) Wo(p) = k2/p Wo(p) .
    Рассмотрим уравнение ошибки:

    В установившемся режиме p®0, => W(p)®Ґ; => первая составляющая ошибки g0/Ґ®0. Ошибка от возмущения зависит от вида функции Wf(0) и может быть отлична от нуля.
    Резюме: I-регулирование позволяет исключить статическую ошибку в системе, т.е. система будет астатической по отношению к задающему воздействию g(t).


    Интегральные оценки качества


    Интегральные оценки дают обобщенную оценку быстроты затухания и величины отклонения регулируемой величины, в виде единого числового значения.
    Находят применение первые три ИТ-оценки из перечисленных в списке:
    1. I1 и I2 - линейные ИТ-оценки (не чувствительны к высшим производным координат САР).
    2. I и I' - квадратичные ИТ-оценки (первая не чувствительна к высшим производным координат САР; вторая – к неподвижному режиму).
    3. I+T12I' - улучшенная квадратичная ИТ-оценка (чувствительна к постоянной и к скоростной составляющим в движении координат САР).
    4. I+T12I'+T24I''+... - ИТ-оценки более высоких порядков (чувствительны к постоянной составляющей в движении координат САР, к их скорости, к ускорению, ...).

    Пусть имеем переходные функции h(t).

    Рассмотрим линейные ИТ-оценки:

    Очевидно, что чем меньше значение оценки I1 или I2, тем лучше переходный процесс, но:
    1. Оценка I1 не может применяться к колебательному переходному процессу.
    2. Аналитическое вычисление оценки I2 по коэффициентам уравнения ошибки затруднено.
    3. Одно значение оценки I2 может соответствовать переходным процессам с разной колебательностью (если совпадают мажоранты и миноранты).



    Заметим, что оценку I' можно получить нахождением оценки I, если подать на вход САР не ступенчатую 1(t), а дельта функцию d(t)=1'(t). Применение оценки I' ограничено тем, что она не чувствительна к установившемуся значению ошибки xҐ.


    где: x0 - начальное значение отклонения в переходном процессе; I+T12I' – не формула, а составной символ обозначения данной ИТ-оценки.
    Очевидно, что I+T12I' будет минимальна при T1x'+x = (T1p+1)x = 0. Решение этого ДУ есть экспонента: .
    Т.е. улучшенная квадратичная ИТ-оценка I+T12I' будет иметь минимум при приближении переходной функции к экспоненте с заданной постоянной времени T1.


    Здесь оценка будет иметь минимум, только при перемещениях координат САР с определенными скоростью и ускорением, которые задаются постоянными времени T1 и T2 соответственно. Идея другого способа выбора параметров оценки заключена в том, что коэффициенты ДУ второго порядка можно выразить в виде затухания z и резонансной частоты q, которыми должна обладать настраиваемая САР.


    Интерактивный каталог ссылок


    (Каталог виден только при наличии подключения к Интернету)


    Использование квалификаторов



    Использование квалификаторов


    Рисунок 2.14(в) может быть проинтерпретирован следующим образом: центральный компьютер + код_ATM определяют конкретную ATM (отметим, что код_ATM - имя одного из атрибутов класса ATM, а не класса центральный_компьютер); аналогично центральный_компьютер + код_банка определяют конкретный компьютер банка. Использование квалификаторов повышает точность описания семантики и наглядность описания зависимостей.


    Использование производной зависимости



    Использование производной зависимости


    На рисунке 3.11 показано, как введение производной зависимости позволяет не перевычислять координаты перекрывающихся элементов окон в оконной системе для графического дисплея. Производные атрибуты должны изменять свои значения, когда меняются их базовые значения. Для обеспечения этого пользуются одним из трех методов:
    • явное перевычисление: каждый производный атрибут определяется с помощью одного или нескольких базовых объектов; когда значения базовых объектов меняются, требуется изменить значения всех производных атрибутов, связанных с ними;
    • периодическое перевычисление всех производных атрибутов (в момент изменения базового значения производные атрибуты перевычисляются);
    • использование активных значений: активным называется значение, с которым связано некоторое множество зависимых значений; все зависимые значения группируются вокруг определяющих их активных значений и перевычисляются синхронно с ними.


    Использование производных атрибутов для исключения повторных вычислений



    Использование производных атрибутов для исключения повторных вычислений




    Источник движущей силы (генераторэнергетических потенциалов)


    Иконка источника движущей силы и его внутренняя структурная схема показаны на рисунке. Логику работы модели обеспечивает неявный решатель с помощью пары блоков unknown (неизвестная) и constraint (баланс_в_нуле) (оба блока, см. блок-схему, имеют малиновые рамки). На каждом шаге симуляции неявный решатель моделирующей программы с помощью итерационного процесса подбирает такое выходное значение блока unknown, чтобы на входе блока constraint было нулевое значение. Другими словами неявный решатель подбирает такое значение потока материи, который бы создал в подключенной к источнику цепи заданную разность потенциалов (в данной модели в качестве опорного генератора используется блок синусоидального сигнала).

    Второй блок unknown в модели (с красной рамкой) предназначен для обеспечения возможности изменения потенциалов источника в синфазном режиме. Парный этому блоку блок constraint расположен в модели физического элемента "заземлитель потенциала". Оставшийся в модели блок constraint обеспечивает нулевой баланс при возврате потока в источник (иначе, если в схеме несколько источников, то возможна ситуация, когда в данный источник вернется поток другой величины).


    Источник потока (генераторпотока материи)


    Структурная схема источника потока материи изображена на рисунке. Величина и форма потока в данной модели задается опорным генератором – блоком синусоидального сигнала. Блок constraint заставляет неявный решатель, на каждом шаге симуляции, искать такой баланс энергетической цепи, при котором в данный источник вернется поток материи в полном объеме.

    Блок unknown (в блок-схеме имеет красную рамку), так же как в модели источника движущей силы, предназначен для обеспечения возможности изменения потенциалов источника в синфазном режиме. Парный этому блоку блок constraint расположен в модели физического элемента "заземлитель потенциала".


    Избранные фрагменты



    Оглавление | Введение в дисциплину "Основы моделирования систем" | 1. Введение в технологию моделирования на основе направленных графов | 2. Введение в технологию моделирования на основе ненаправленных графов | 3. Обзор методов анализа моделей, систем и сигналов


    Измерительные алгоритмы идентификации частотных характеристик моделей и систем


    Процедуры идентификации ЧХ, основанные исключительно на спектральном или гармоническом анализе результатов измерений входного и выходного сигналов, имеют особую ценность в программах математического моделирования. Они обеспечивают наиболее эффективные и адекватные переходы от абстрактных математических моделей к проектируемым физическим прототипам и обратно, а так же являются одним из не многих инструментов оценки адекватности функционирования самих моделирующих программ в режиме симуляции.
    Универсальных алгоритмов измерений ЧХ нет. Существуют три вида ограничений, которые порождают семейства методов измерений ЧХ, которые в той или иной степени могут быть оптимальными для исследования трех классов идентифицируемых линейных объектов (см. Рисунок ). К упомянутым ограничениям относятся:
    1. Невозможность использования дельта-воздействий для объектов с эффектами насыщения.
    2. Затруднения в расширении диапазона частот свыше "трехдекадного барьера".
    3. Большие временные затраты на расширение динамического диапазона ниже уровня шума.


    Если на вход системы подать весь спектр частот с единичными амплитудами, то определение частотной ПФ на основе измерительной информации упрощается:
    W( jw) = Y( jw)/X( jw) | X( jw)=1 = Y( jw) .
    Подобный единичный спектр имеет дельта-функция Дирака d(t). Реакция же систем на дельта-функцию называется функцией веса w(t), поэтому частотную ПФ можно получить вычислением её Фурье-изображения:
    W( jw) = FT { w(t) } ,
    или же, для дискретных сигналов:
    W [ jkw] = DFT { w[n] } = n=0N-1 еw[n] е -jkwnT .
    где: w – частота первой гармоники в спектре сигнала длинной в NT выборок; k – порядковый номер гармоники (независимая переменная); N – число выборок функции веса w[n] (обычно кратно степени двойки); k Ј N/2.
    Подобный подход используется в простейших алгоритмах идентификации ЧХ и достаточно легко реализуется в любых математических программах:
    document.write('');
    Измерения частотных характеристик выполнены для двух дискретных фильтров с конечной импульсной характеристикой (FIR). Операция быстрого преобразования Фурье (нижний график) выполнена библиотечным блоком осциллограф программы VisSim (в свойствах блока осциллограф активирован режим вычисления БПФ для осциллограммы)

    Измерения частотных характеристик выполнены для модели колебательного звена и инверсного фильтра Чебышева десятого порядка, т.е. для двух непрерывных систем с бесконечной импульсной характеристикой (IIR)
    Сравнивая приведенные на рисунках ЧХ КИХ и БИХ-фильтров, легко понять суть "трехдекадного барьера" (присущего алгоритмам на базе БПФ), который проявляется при частотном анализе БИХ-фильтров, чьи ЧХ представляются в логарифмическом масштабе по оси частот. Очевидно, что, в этом случае, кратная двойке сетка анализируемых гармоник в выходном массиве процедуры БПФ ограничивает разрешение по частоте в НЧ диапазоне. Увеличение частотного диапазона на декаду требует увеличения времени симуляции в десять раз.
    При измерении ЧХ реальных систем использование дельта-функции невозможно. Её замещают либо суперпозицией синусоид, либо белым шумом, либо другим сигналом конечной амплитуды. Основным методом расширения динамического диапазона ниже уровня шума является усреднение результатов повторных измерений. В случае использования алгоритмов измерения ЧХ на базе ДПФ для ослабления эффекта наложения частот используют методику взвешивания массива измерительной информации окнами Бартлета, Хэмминга, с хэннингом, Блэкмана, Хариса и т.д.


    Изодромное регулирование PI


    Изодромный закон регулирования имеет вид:
    u(t) = Wрег(p) x(t) = (k1 + k2/p) x(t) ,
    тогда в разомкнутом состоянии система будет характеризоваться ПФ:
    W(p) = Wрег(p) Wo(p) = (k1 + k2/p) Wo(p) .
    В этом случае если p®0, то W(p)®Ґ и регулирование будет астатическим. Но если p®Ґ, то W(p)®k1ko=k и регулирование будет пропорциональным.
    Резюме: PI-регулирование сочетает точность I-регулирования и быстродействие P-регулирования.


    Явный решатель моделирующей программы


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


    Элементы ненаправленного графа


    Графические образы девяти простейших библиотечных элементов ненаправленных графов, а так же поясняющая технику подключений схема приведены на рисунке. При сборке схемы выводы разных цветов ни когда не соединяются между собой. Та же схема подключений помогает понять, почему направленные графы программ VisSim, Simulink, MVTY (при использовании описываемой методики моделирования) называют ненаправленным или бинаправленным.



    Жизненный цикл программной системы



    Жизненный цикл программной системы


    Объектно-ориентированный подход имеет два аспекта:
    • объектно-ориентированная разработка программного обеспечения;
    • объектно-ориентированная реализация программного обеспечения.


    К в полосе (dBgain)


    Коэффициент передачи на модифицируемом участке ЛАЧХ для полософормирующего фильтра и фильтра-ступени


    Каскадные алгебраические петли


    Если исходные уравнения модели системы можно представить включенными последовательно блоками, то, очевидно, что программы математического моделирования динамических систем могут однозначно выявить порядок вычислений (составить информационный поток), проверяя готовность аргументов у преобразующих данные функций. Подобный пример был рассмотрен выше.
    Однако гораздо чаще в блок-схемах наблюдаются обратные связи (ОС). На рисунке приведена структурная схема апериодического звена первого порядка. Систему уравнений, соответствующую этой блок-схеме, составить легко:

    a) g = 1
    b) x = g - y
    c) u = 3 * x
    d) y = oҐ т u dt
    e) график = y
    А как составить информационный поток? Для вычисления координаты x надо знать координату y; для вычисления координаты y надо знать координату u; а для вычисления координаты u надо знать координату x. Ситуация кажется тупиковой, но это не так, и только лишь потому, что в контуре (петле) присутствует блок обладающий эффектом памяти (1/S).
    Обратимся к функции, которая используется для вычисления интеграла в дискретной форме согласно методу Эйлера с запаздыванием:
    y[n] = y[-1] + m=0n-1е u[m] .
    Текущее значение входного сигнала в формуле обозначено индексом n-1, выходное значение индексом n. Легко понять, что на текущем шаге выходное значение дискретного квазианалога интегратора ни как не определено текущим входным значением (связь между текущим входным значением и выходным значением на следующем шаге симуляции не отвергается). Повторим эту мысль в более общей формулировке. На текущем шаге симуляции состояние выходов всех блоков обладающих эффектом памяти не зависит от входного сигнала.
    Вернемся к вопросу формирования информационного потока. В свете сказанного становится очевидно, что выходы блоков обладающих эффектом памяти порождают информационные потоки, а входы их замыкают (см. Рисунок ).

    Теперь петля разомкнута, и программа может однозначно сформировать два упорядоченных, зависимых информационных потока для расчета модели:
    1) g = 1 1') y = reg[n-1] + y[-1]
    2) x = g - y 2') график = y
    3) u = 3 * x
    reg[n] = reg[n-1] + u
    где: reg – внутренний регистр дискретного квазианалога интегратора, хранящий текущее значение интеграла; y[-1] - начальное условие.
    Если на месте интегратора будет безинерционная функция, то составить информационный поток невозможно - это и есть алгебраическая петля. Алгебраические петли появляются либо при неверном методическом подходе к решению неявных уравнений, либо при ошибочном проектировании цепей обратной связи САР (см. красную цепь на рисунке).

    Реальные САР всегда обладают инерционными свойствами. Поэтому более точные математические модели САР обычно не содержат алгебраических петель.
    Для решения неявных уравнений программы математического моделирования должны содержать неявные решатели, которые находят решение в процессе итерационного подбора. Наличие подобных решателей в программах – это следующая ступень в их развитии. Программы, преодолевшие этот барьер, как правило, позволяют описывать модели не только направленными, но и ненаправленными графами, т.е. в их библиотеках кроме математических блоков появляются физические элементы: резисторы, транзисторы, двигатели, и пр.


    Каскодные алгебраические петли


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

    Существует несколько способов разрыва подобной петли. Разные программы математического моделирования, использующие направленные графы (VisSim, Simulink и пр.) разрывают каскодные алгебраические петли так, как показалось правильным их авторам (не предупреждая об этом пользователя). Часто точка разрыва каскодной петли, а, следовательно, и результаты симуляции меняются в зависимости от того, какие блоки подключены к выходам (происходит это по причине разной приоритетности математических операций).


    Классификация систем автоматического регулирования



    Классификация по характеру изменения величин:
    1. Системы непрерывного действия
    2. Системы импульсного действия (AM, ФМ, ЧМ, ШИМ, ЧИМ, ...)
    3. Системы дискретного действия (01001011110101100010101)
    4. Системы релейного действия

    Классификация по математическим признакам:
    1. Линейные системы
    2. Нелинейные системы
    3. Существенно нелинейные

    Классификация по способу настройки:
    1. Не адаптивные системы
    2. Адаптивные системы
      • Системы с переменной структурой
      • Системы с самонастройкой программы
      • Системы с самонастройкой параметров
      • Системы с самонастройкой структуры

      Классификация по типу ошибки в статике:
      1. Статические САУ
      2. Астатические САУ

      Классификация по алгоритмам функционирования (по назначению):
      1. Системы стабилизации
      2. Системы слежения
      3. Системы программного управления
      4. Системы телеуправления
      5. Системы самонаведения (снаряда), сопровождения (орудия), автопилотирования
      6. Системы компенсационных измерений
      7. ...



      Knv


      Knv
      Клиначёв Николай Васильевич,
      к.т.н., доцент кафедр "Электротехника" и "Информатика" ЮУрГУ
      т.р. (3512)67-90-14, т.д. (3512)34-71-62; <klinacherv_nv@mail.ru>
      Основные преподаваемые дисциплины:
      1) "Электротехника и электроника",
      2) "Электрические и электронные аппараты",
      3) "Управление техническими системами",
      4) "Математические основы ТАУ",
      5) "Аналоговые и аналогово-цифровые интегральные микросхемы",
      6) "Информатика".
      Специальность: Системы обработки информации и управления
      Сфера профессиональных интересов:
      Все уровни разработки любой электроники любыми методами на любой элементной базе. Программирование: C++, Pascal, Java, VB, JavaScript, HTML, ассемблеры, эмуляторы, отладчики; интегрированные среды разработки IDE; CAE/CAD системы, EDA/PCB инструменты; пакеты симулирующие движение; SCADA пакеты. Педагогическая деятельность.
      Принимал участие в разработке следующих проектов:
      1. Генератор сигналов произвольной формы.
      2. Измерительный комплекс для снятия АФЧХ систем.
      3. Имитатор солнечной батареи - DC/DC (для замещения последней в наземных условиях).
      4. Прибор для измерения контактного сопротивления.
      5. Прибор для измерения активного сопротивления обмоток электрических машин большой мощности.

      Личные проекты:
      1. Cервер "VisSim в России".
      2. Сервер "LabVIEW в России".
      3. Система "ИНТЕРНЕТ-КОЛЛОКВИУМ".

      Методическая работа:
      1. Сервер кафедры "Электротехника".
      2. Выполнение обязанностей модератора почтовых дискуссионных групп и одноименных форумов:
        е-группа "Цифровая обработка сигналов в LabVIEW" (пустое письмо для подписки или ...)
        е-группа "Симуляция движения и моделирование САУ в VisSim-е" (пустое письмо для подписки или...)

      Публикации (методические):
      1. Клиначёв Н. В. Электротехника: Контрольно-тестирующая система. - Offline версия 3.0. - Челябинск, 1999. - 671 файл, ил.
      2. Клиначёв Н.В. Моделирование обыкновенных линейных систем. ТАУ, Электроника: Руководство к лабораторным работам в пакетах VisSim и Electronics Workbench. - Челябинск, 2001. (дополнительный адрес).
      3. Клиначёв Н. В. Теория систем автоматического регулирования и управления: Контрольно-тестирующая система. - Offline версия 3.0. - Челябинск, 2001. - 101 файл, ил.
      4. Клиначёв Н. В. Моделирование систем в программе VisSim: Справочная система. - Online версия 1.0. - Челябинск, 2001. - 214 файлов, ил. (архив Offline версии - vsmhlpru.chm).
      5. Литюга А. М., Клиначёв Н. В., Мазуров В. М. Теоретические основы построения эффективных АСУ ТП: Конспект лекций. - Offline версия 1.1. - Тула, Челябинск, 2002. - 703 файла, ил.
      6. Неизвестный автор и Клиначёв Н. В. LabVIEW в упражнениях: Учебное пособие. - Offline версия 1.0. - Челябинск, 2001. - 212 файлов, ил.
      7. Федосов Б. Т., Клиначёв Н. В. Теория систем автоматического регулирования: Руководство к выполнению лабораторных работ. - Offline версия 1.0 для заочного обучения. - Рудный, Челябинск, 2002. - 66 файлов, ил.
      8. Клиначёв Н. В. Теория систем автоматического регулирования и управления: Учебно-методический комплекс. - Offline и Online версии 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6. - Челябинск, 2000-2003. - 628 файлов, ил. (дополнительный адрес).
      9. Клиначёв Н. В. Основы моделирования систем или 7 доменов законов Ома и Кирхгофа: Избранные фрагменты. - Offline и Online версии 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6. - Челябинск, 2000-2003. - 628 файлов, ил. (Распространяется в одном файле с учебно-методическим комплексом по ТАУ).

      Год начала преподавательской деятельности: 1997
      Рабочие языки общения: английский
      Адрес: Энгельса 42-31, Челябинск, Россия, 454048


      Коэффициенты ошибок


      Пусть известна ПФ по ошибке Fx(s), тогда:
      X(s) = Fx(s) G(s) = 1/(1+W(s)) G(s)
      где: G(s) - изображение функции g(t).
      Разложим Fx(s) в ряд Тейлора:
      (2)
      X(s) = [c0 + c1s/1! + c2s2/2! + c3s3/3! + ...] G(s) ;
      перейдем к оригиналу:
      x(t) = c0g(t) + c1g'(t)/1! + c2g''(t)/2! + c3g'''(t)/3! + ...
      Величины c0,c1, c2, ..., cm - называют коэффициентами ошибок. Их можно определять двумя способами:
      1. c0 = Fx(s)|s®0, cm = [dmFx(s)/dsm]|s®0
      2. Делением числителя Fx(s) на знаменатель и сравнением с рядом (2).

      Примечания:
      1. Коэффициенты ряда (2) непосредственно связанны с коэффициентом усиления САР, добротностями Kv, Ke, ...
        Система \ Ошибки K & c0 Kv & c1 Ke & c2
        W(s)=1/s1 * ... K & 1/1+K 0 & Ґ 0 & Ґ
        W(s)=1/s2 * ... Ґ & 0 Kv & 1!/Kv 0 & Ґ
        W(s)=1/s3 * ... Ґ & 0 Ґ & 0 Ke & 2!/Ke
      2. САР астатическая сигналу задания g(t) может быть статической для f (t), поэтому равенство нулю коэффициентов c0, c1, c2, ... для сигнала g(t) не обязательно означает равенство нулю коэффициентов c0, c1, c2, ... для сигнала f (t).
      3. Ограничение количества членов ряда (2) и предположение о постоянстве коэффициентов ошибок c0, c1, c2, ... определяет применение метода для плавно меняющихся сигналов g(t) и f (t), когда переходная составляющая в движении системы успевает затухнуть.



      Комбинированное управление


      Комбинированное управление заключено в сочетании двух принципов управления по отклонению и внешнему возмущению. Т.е. сигнал управления на объект формируется двумя каналами. Первый канал чувствителен к отклонению регулируемой величины от задания. Второй формирует управляющее воздействие непосредственно из задающего или возмущающего сигнала.
      Достоинства:
      • Наличие ООС делает систему менее чувствительной к изменению параметров регулируемого объекта.
      • Добавление канала(ов), чувствительного к заданию или к возмущению, не влияет на устойчивость контура ОС.

      Недостатки:
      • Каналы, чувствительные к заданию или к возмущению, обычно содержат дифференцирующие звенья. Их практическая реализация затруднена.
      • Не все объекты допускают форсирование.



      Контур


      Для направленных и ненаправленных графов, это замкнутый путь, проходящий через несколько узлов и ветвей.


      Контур


      Для направленных и ненаправленных графов, это замкнутый путь проходящий через несколько узлов и ветвей.


      Контур


      Для направленных и ненаправленных графов, это замкнутый путь, проходящий через несколько узлов и ветвей. 1)Для каждого энергетического домена разработаны альтернативные, матричные методы расчета соответствующих систем. Например, в электрическом домене к ним относятся: "Метод контурных токов", "Метод узловых потенциалов" - они тоже могут использоваться для составления графов. Вспомним цель разработки этих методов. Она состояла только в одном - в сокращении размерности системы уравнений, причем за счет отдаления математического описания от физического смысла. Компьютерное моделирование понижает ценность этих методов, поэтому для унификации подхода рекомендуется составлять графы согласно методу расчета, использующему первый и второй законы Кирхгофа.
      2) И для одного энергетического домена закон Ома может иметь несколько форм записи. Например, для электрического домена формула закона Ома отлична для активного сопротивления, индуктивного и емкостного.


      Координата первого рода (through variable3)


      Отражение в модели той из парных физических величин (чье произведение есть мощность), которая фиксируется датчиком, установленным в разрыв любого подвода энергии к модулю динамической системы. Во всех энергетических доменах физические величины первого рода подчиняются первому закону Кирхгофа.
      Параметры QuarkXPress тут


      Координата первого рода (through variable3)


      Отражение в модели той из парных физических величин (чье произведение есть мощность), которая фиксируется датчиком, установленным в разрыв любого подвода энергии к модулю динамической системы. Во всех энергетических доменах физические величины первого рода подчиняются первому закону Кирхгофа.


      Координата второго рода (across variable3)


      Отражение в модели той из парных физических величин (чье произведение есть мощность), которая фиксируется датчиком, подключенным между любыми двумя подводами энергии к модулю динамической системы. Во всех энергетических доменах физические величины второго рода подчиняются второму закону Кирхгофа.


      Координата второго рода (across variable3)


      Отражение в модели той из парных физических величин (чье произведение есть мощность), которая фиксируется датчиком, подключеным между любыми двумя подводами энергии к модулю динамической системы. Во всех энергетических доменах физические величины второго рода подчиняются второму закону Кирхгофа.


      Корневой метод синтеза


      Метод позволяет получить приемлемые динамические качества, при заданной структуре САР и заданном значении коэффициента усиления (последний член характеристического уравнения).
      Пусть имеется ХУ:
      (1)
      sn+A1sn-1+...+An = 0.
      Сумма модулей вещественных частей всех корней равна коэффициенту A1. При заданной его величине быстродействие будет максимальным, если вещественные части корней равны. Но это не достижимо - система будет не устойчивой. Например, для САР состоящей из 3-х апериодических звеньев выполнение условия эквивалентно равенству постоянных времени...
      Реально всегда можно выделить 2 или 3 корня, с наименьшей по модулю вещественной частью, которые определяют вид переходного процесса. Положим их 2 и они комплексные. Перепишем ХУ:
      (2)
      (sn-2+C1sn-3+...+Cn-3) (s2+B1s+B2) = 0.
      Достаточно рассматривать только 2-ой сомножитель, поскольку им определен вид переходного процесса:
      • B2 определяется значением K и должен иметь возможно большее значение.
      • B1 определяется суммой 2-х низкочастотных постоянных времени и связан с затуханием z, следовательно должен быть выбран исходя из 2-х противоречивых требований быстродействия и устойчивости.

      Оптимальное соотношение между B1 и B2 может быть получено из условия затухания за один период z, выбор которого определяет отношение вещественной части корней к мнимой:
      m = a/b = 2p / ln(1/(1-1/z)), где: a = - B1/2; b = (B2-B12/4)1/2.
      Если принять, что вид переходного процесса определяют три корня, то следует воспользоваться уравнением 3-ей степени:
      (3)
      (...) (s3+B1s2+B2s1+B3) = 0,
      которое нужно представить в виде:
      (s+C11) (s2+B11s+B22) = 0.
      Вещественные части корней будут равны a1 = a2,3 = - B1/3. Требования к B11 и B22 уже сформулированы, а связи с (3) определены равенствами:
      B1=C11+B11, B2=B22+B11C11, B3=C11B22.
      Выбор порядка уравнения для описания основной составляющей переходного процесса (2) или (3) зависит от структурной схемы САР.


      Корневые методы оценки качества


      Поскольку корни ПФ однозначно определяют вид переходного процесса, их можно использовать для оценки: 1) запаса устойчивости и, 2) быстродействия.
      Примечание: Обычно обходятся исследованием только полюсов ПФ F(s), т.е. корней характеристического уравнения 1+W(s)=0.
      Система будет склонна к колебаниям, если имеются комплексные корни вида -a±jb. Оценить эту склонность можно используя показатель запаса устойчивости - колебательность:
      m = b/a, 0 < m < Ґ
      где: a - коэффициент затухания; b - круговая частота колебаний.
      Колебательность определяет другой показатель - затухание амплитуды колебаний x(t) = Ce -a t sin(bt+j) за период:

      Задание определенной колебательности заставляет ограничить область расположения корней.
      Колебательность системы m можно найти используя подстановку s = z e j(90-j), что соответствует повороту осей плоскости корней на угол (90-j). Далее, используя любой критей устойчивости, подбирают угол j, при котором система будет находиться на границе устойчивости. И тогда: m = tg j = b/a.

      И действительно, составляющая в переходном процессе xh(t) = Che -htsin(bt+j), затухает тем медленней, чем меньше h. Если в конце переходного процесса амплитуда колебаний равна DCh, то веремя переходного процесса:

      Задание определенной степени быстродействия заставляет ограничить область расположения корней.
      Степень быстродействия h можно найти используя постановку s = z - hvar, что соответствует смещению корней на величину hvar. Далее, используя любой критерий устойчивости, подбирают значение hvar, при котором система будет на границе устойчивости. И тогда: h=hvar.


      Коррекция САР


      Задача коррекции состоит в повышении динамической точности САР в переходных режимах. Она возникает, поскольку стремление снизить ошибки регулирования в типовых режимах, приводит к необходимости использования таких значений общего коэффициента усиления, при которых без принятия спец. мер (внедрения пассивных звеньев) система оказывается неустойчивой.


      Критерий устойчивости Гурвица


      Чтобы все корни ХУ:
      a1 a3 a5 a7 ... 0 0
      a0 a2 a4 a6 ... 0 0
      0 a1 a3 a5 ... 0 0
      0 a0 a2 a4 ... 0 0
      ... ... ... ... ... ... ...
      0 0 0 0 an-1 0
      0 0 0 0 an-2 an
      a0 s n + a1 s n-1 + ... + an-1 s + an = 0 ,
      имели отрицательные вещественные части, необходимо, при a0 > 0 выполнение условия: все n определителей Гурвица получаемые из квадратной матрицы коэффициентов должны быть положительны. Матрицы, для расчета определителей, получаются из исходной последовательным исключением последних столбца и строки.
      Условие нахождения системы на границе устойчивости - Dn = 0. Но Dn = an D(n-1) = 0, следовательно, если an = 0, то наблюдается апериодическая граница устойчивости (нулевой корень - астатическая система), а если D(n-1) = 0, то - колебательная граница устойчивости (комплексные корни).


      Линеаризация ДУ САР


      Достаточно часто встречаются звенья, имеющие нелинейную зависимость между входной и выходной координатами. Если для малых отклонений от установившегося режима нелинейность несущественна, то в этом случае до составления исходных ДУ САР (1),..., (5). Выполняют процедуру линеаризации.


      Линейные непрерывные законы регулирования


      Под законом регулирования (управления) понимается алгоритм или функциональная зависимость, определяющая управляющее воздействие u(t) на объект:
      u(t) = F(x, g, f) .
      Линейные законы описываются линейной формой:
      u(t) = k1x(t) + k2тx(t)dt + k3ттx(t)dt2 + ... + k4x'(t) + k5x''(t) + ...
      она же в операторной форме записи:
      (1*)
      u(t) = x(t) [k1 + k2/p + k3/p2 + ... + k4 p + k5 p2 + ...] .
      Наличие в (1*) чувствительности регулятора к пропорциональной, к интегральным или к дифференциальным составляющим в первичной информации x(t), определяет тип регулятора:
      1. P - пропорциональный.
      2. I - интегральный.
      3. PI - пропорционально интегральный (изодромный).
      4. PD - пропорционально дифференциальный.
      5. и более сложные варианты - PID, PIID, PIDD, ...



      ЛИТЕРАТУРА


      1. Бесекерский В.А., Попов Е.П. Теория систем автоматического регулирования. - М.: Наука, 1975.
      2. Лукас В. А. Теория автоматического управления. – М.: Недра, 1990. – 416 с.
      3. Брюханов В. Н. и др. Теория автоматического управления. –М: Высшая школа, 2000 г.
      4. Острём К., Виттенмарк Б. Системы управления с ЭВМ: Пер. с англ. - М.: Мир, 1987. - 480 с., ил.
      5. Оппенгейм Э., Шафер Р. Цифровая обработка сигналов/ Пер. с англ./ Под ред. С. Я. Шаца. - М.: Связь, 1979. - 416 с.
      6. Антонью А. Цифровые фильтры: анализ и проектирование/ Пер. с англ. - М.: Радио и связь, 1983. - 320 с.
      7. Гольденберг Л. М., Матюшкин Б. Д., Поляк М. Н. Цифровая обработка сигналов: Справочник. - М.: Радио и связь, 1985. -312 с., ил.
      8. Дженкинс Г., Ваттс Д. Спектральный анализ и его приложения: В 2 т./ Пер. с англ. Ф. М. Писаренко с предисловием А. М. Яглома - М.: Мир, 1971.
      9. Сборник задач по теории автоматического регулирования и управления/ Под редакцией В. А. Бесекерского. - M.: Наука, 1978.
      10. Бронштейн И.Н., Семендяев К.Н. Справочник по математике для инженеров и учащихся вузов. - М.: Наука,1986.
      11. Титце У., Шенк К. Полупроводниковая схемотехника: Справочное руководство/ Пер. с нем. - М.: Мир, 1982.
      12. Хоровиц П., Хилл У. Искусство схемотехники: В 3 т./ Пер. с англ. - М.: Мир, 1993


      Литература


      1. Остапенко А. Г. Анализ и синтез линейных радиоэлектронных цепей с помощью графов: Аналоговые и цифровые фильтры. - М.: Радио и связь, 1985. - 280 с., ил.
      2. Кадыров А. А. Динамические графовые модели в системах автоматического и автоматизированного управления. -Ташкент: Фан, 1984. - 239 с. :ил.
      3. Зыков А. А. Теория конечных графов. - Новосибирск: 1969.
      Узловая Продольная Вынуждающая Потенциальная Пересекающая Силова, сквозная поточная
      1) Для каждого энергетического домена разработаны альтернативные, матричные методы расчета соответствующих систем. Например, в электрическом домене к ним относятся: "Метод контурных токов", "Метод узловых потенциалов" - они тоже могут использоваться для составленя графов. Вспомним цель разработки этих методов. Она состояла только в одном - в сокращении размерности системы уравнений, причем за счет отдаления описания от физического смысла. Компьютерное моделирование понижает ценность этих методов, поэтому для унификации подхода рекомендуется составлять графы согласно методу расчета, использующему первый и второй законы Кирхгофа.
      2) И для одного энергетического домена закон Ома может иметь несколько форм записи. Например, для электрического домена формула закона Ома отлична для активного сопротивленя, индуктивного и емкостного.
      3) Здесь не рекомендуется использовать дословный перевод терминов across and through variables, как поперечная и продольная переменные (координаты или физические величины). В русском языке, для данной тематики, такой перевод вносит путаницу на уровне интуитивно воспринимаемых оттенков.
      3.04.2002


      Мастер для генерации коэффициентов дискретного фильтра


      Встроенный ниже в html-страницу мастер корректно визуализируется и функционирует в браузере MSIE 5.0. Отображение мастера меняется не существенно в браузере Opera 6.04, и логика работы с мастером не нарушается. В браузере Netscape 7.0 мастер не работает.
      Три коэффициента числителя (b0, b1, b2) и три коэффициента знаменателя (a0, a1, a2) z-ПФ в соответствующем порядке выводятся мастером в двух нижних строках. В качестве разделителя используется пробел. Рекомендуется пользоваться клавиатурным копированием (Ctrl+c и Ctrl+v) для переноса коэффициентов в блок "Передаточная функция" моделирующей программы. Для перехода между полями формы используйте клавиши Tab и Shift+Tab.

      БИХ-фильтр второго порядка
      Тип: ФНЧ ФВЧ ПФ РФ ФВФ ПФФ Ф-НЧС Ф-ВЧС
      Добротность Полоса (тех) Полоса (муз) : = f/Df
      Добротность Наклон (тех) Наклон (муз) : = f/Df
      К в полосе: [дБ]
      Аналоговый прототип (w=1):
      k:
      Числ:
      Знам:
      Дискретный фильтр:
      1/dT: [Гц]
      Частота: [Гц]
      Числ:
      Знам:
      init_form(); Приведенная ниже форма позволяет на основе коэффициентов рассчитанных мастером построить частотные характеристики соответствующего дискретного фильтра. Скрипт считает ЧХ именно дискретной системы, а не ее линеаризованного аппроксиматора (в большинстве моделирующих программ для построения ЧХ дискретной системы выполняется обратное БЛП и строятся ЧХ линеаризованного аппроксиматора). С ознакомительными целями Вы можете выполнить расчеты для выбранных по умолчанию установок. Поскольку графики строятся в Excel'е, Вы должны ответить положительно на вопрос системы безопасности программы MSIE о том запускать ActiveX компонент (Excel) или нет.
      Построение ЛАЧХ & ЛФЧХ (в Excel'e)
      Начальная частота: [рад/с]
      Считать для декад: 2 3 4 5 (100 точек / дек)
      + АЧХ & ФЧХ: ( + 30 сек )


      Математическое моделирование на


      Мир технических систем в 7 раз проще,
      чем мы о нем думаем сейчас


      Метод корневых годографов


      Рабочие файлы: [root_locus.vsm]
      Метод позволяет подобрать параметры системы по оценке их влияния на общую картину расположения корней замкнутой САР.
      Если ПФ замкнутой САР:
      где: m < n,
      то полюсы и нули (корни) всегда можно вычислить и нанести на комплексную плоскость. Если менять один из параметров системы, (K, ..., Ti, ..., z), то изменения в ПФ F(s) приведут к смещению корней - движению по траекториям, совокупность которых называется корневым годографом. Если менять один параметр, при дискретных значениях другого, то можно оптимально выбрать значения уже 2-х параметров, оценивая семейство корневых годографов. При выборе допустимо пользоваться любой из корневых оценок качества: m, h, W0.
      Наиболее эффективен метод при выборе K. ПФ разомкнутой системы и ХУ запишем в виде:
      (*)

      здесь s - не оператор Лапласа или дифференцирования, а любой из корней!!!
      Если корни - полюсы и нули известны (q1o, q2o, ..., qmo; q1x, q2x, ..., qnx), то операторную часть ПФ - G1(s) можно представить в виде:

      где:
      Представим сомножители (s - qi) векторами:

      Теперь вновь запишем ХУ:

      При изменении K от 0 до бесконечности уравнения (1) и (2) определяют правила движения корней:
      1. Если K=0, то корни ХУ (*) совпадают с полюсами W(s), т.к. G(s) должна стремится к бесконечности.
      2. Если K®Ґ, то часть корней ХУ (*) совпадают с нулями W(s), а часть уходит в бесконечность, т.к. G(s)®0 как при совпадении s с нулями, так и при s®Ґ. Наклон асимптот для уходящих в бесконечность корней можно рассчитать по формуле:

      (p+2ip) / (n-m), где: i=1,2, ..., n-m.


      Метод логарифмических амплитудных характеристик


      Процесс синтеза включает в себя следующие операции:
      1. Построение располагаемой ЛАЧХ исходной системы Wo, состоящей из регулируемого объекта без регулятора и без корректирующего устройства.
      2. Построение НЧ части желаемой ЛАЧХ на основе предъявленных требований точности.
      3. Определение вида и параметров регулятора K, Ki, ...:
        Wрег(s) = WНЧ.ж.(s) / Wo(s);

      Lрег(w) = LНЧ.ж.(w) - Lo(w) .
    3. Уточнение ВЧ части желаемой ЛАЧХ на основе требований к запасу устойчивости - LНЧ&ВЧ.ж.(w).
    4. Определение вида и параметров последовательного корректирующего устройства:
    5. WПЗ кор = WНЧ&ВЧ.ж. / [Wрег Wo]; LПЗ кор = LНЧ&ВЧ.ж. - Lрег - Lo .
    6. Техническая реализация корректирующих устройств. В случае необходимости - перерасчет на эквивалентные параллельное звено или ОС.
    7. Поверочный расчет и построение переходного процесса.



    8. Методика вывода дискретных ПФ



      Работу ЦВМ обеспечивают АЦП (квантователь) и ЦАП (экстраполятор нулевого порядка), следовательно:

      Для нахождения z-изображения непрерывной ПФ W(s) по таблицам, последнюю надо разложить на элементарные дроби (т.е. преобразовать к параллельной структуре):

      где:


      A (1+T1s) + Bs (1+T1s) + Cs2 = 1 ;
      (BT1+C) s2 + (AT1+B) s + A = 0s2 + 0s + 1 ; =>
      => A = 1, B = -T1, C = T12 .



      Методы повышения запаса устойчивости


      Общими методами повышения запаса устойчивости, те динамической точности являются:
      1. Демпфирование с подавлением высоких частот
      2. Демпфирование с подавлением средних частот
      3. Демпфирование с подавлением низких частот или эквивалентным поднятием высоких
      4. Демпфирование с введением дополнительных фазовых сдвигов



      Множественное наследование



      Множественное наследование


      Еще один пример множественного наследования приведен на рисунке 2.21, где рассмотрено множественное наследование от непересекающихся классов. В этом случае, который наиболее типичен для применения множественного наследования, свойства, унаследованные от разных предков, дополняют друг друга.


      Множественное наследование от непересекающихся классов



      Множественное наследование от непересекающихся классов


      В случае, если множественное наследование не поддерживается языком программирования, выбранным для реализации, оно может быть заменено одним из следующих способов. Использование вложенного простого наследования представлено на рисунке 2.22. Делегирование с использованием агрегации ролей показано на рисунке 2.23. Делегированием называется механизм реализации, в котором объект, ответственный за операцию, пересылает (делегирует) эту операцию другому объекту; в объектно-ориентированных языках делегирование реализуется путем присоединения методов непосредственно к объектам, а не к классам. В рассматриваемом примере операции классов оплата_труда и пенсионное_обеспечение делегируются объектам класса служащий, который можно рассматривать как результат агрегации классов оплата_труда и пенсионное_обеспечение. Более подробно делегирование будет рассмотрено в разделе 5.


      Моделирование в программе Electronics Workbench


      Модели устройств выборки хранения (УВХ): [yvx1.ca4] [yvx2.ca4]
      [yvx3.ca4] [yvx4.ca4]
      ЦАП на ШИ-модуляторе: [dac_pwm.ca4]
      Последовательный ЦАП на переключаемых конденсаторах: [dac_2c.ca4]
      Параллельный ЦАП на R-2R матрице постоянного импеданса: [dac_r2r.ca4]
      Параллельный ЦАП на коммутируемых конденсаторах: [dac_nc.ca4]


      Моделирование в программе VisSim


      К пояснению взаимосвязей между шагом симуляции, методами интегрирования и частотным анализом: [1_s_x_2.vsm]
      Переходный процесс в "RLC" схеме: [rlc.vsm]
      Модели измерителей электрических величин: [rms_ex.vsm] [meter.vsm]
      Поиск корней уравнения: [roots.vsm]
      Звенья с модулированным сигналом: [fil_resp.vsm] [pwm_ex.vsm]
      Звено чистого запаздывания: [vtcdelay.vsm]
      Релейные САР: [roomctrl.vsm]
      Импульсные САР: [bworth.vsm]
      Диаграмма Вышнеградского: [vishngrd.vsm]
      Линии уровня показателя колебательности М: [m.vsm]
      W(s) на основе характеристического полинома D(s): [order3.vsm]
      Коррекция САР, коррекция жесткой ОС &
      изодромный блок на апериодическом звене:
      [2ou+kor.ca4] [ouhik&f1.vsm]
      [kor_ooc1.vsm & kor_ooc2.vsm]
      Дельта-сигма АЦП: [adc_dsigm.vsm]
      Импульсная характеристика КИХ-фильтра: [fir.vsm]
      Универсальные блок-схемы для составления моделей: [tf_univr.vsm]
      Прямое и обратное быстрые преобразования Фурье (БПФ): [fft.vsm]
      Ряды Фурье: [furye1.vsm]
      Измерение ЧХ КИХ и БИХ систем по их импульсной характеристике: [fr_FIR_fft50.vsm] [fr_IIR_fft50.vsm]
      Оценка мощности спектра сигнала: [psd.vsm]
      Генераторы на z-ПФ с начальными условиями: [gen_z.vsm]


      Модель зависимостей между объектами для системы управления топкой в теплоцентрали



      Модель зависимостей между объектами для системы управления топкой в теплоцентрали


      Модель поведения объектов представляет собой набор диаграмм состояний объектов: на этих диаграммах изображаются состояния объектов, переходы между состояниями, исключительные ситуации и ограничения, связанные с реальным временем (см. рисунок 4.2).


      Мультидоменное физическое моделирование


      Техника моделирования основанная на использовании универсальной библиотеки моделей элементов физических устройств, из которых можно составлять схемы физические принципиальные. Поскольку в энергетических цепях поток материи может менять направление, построенные согласно этой технике модели иногда называют ненаправленными или бинаправленными сигнальными графами (см. Рисунок 2).
      Turbo Basic 1.1. Руководство пользователя тут


      Наклон (shelf slope)


      Модуль наклона ЛАЧХ фильтра-ступени. Максимально возможный наклон (без появления колебательности ЛАЧХ) равен 1 Белу за октаву. При задании малого значения наклона фильтр-ступень превращается в фильтр-лестницу (ЛАЧХ похожа на две ступеньки). Наклонный участок становится нелинейным


      Неизбыточные зависимости



      Неизбыточные зависимости


      Удалив избыточные зависимости, нужно уточнить семантику оставшихся зависимостей следующим образом:
      • неверно названные зависимости: их следует переименовать, чтобы смысл их стал понятен (см. пример в п. 2.3.3);
      • имена ролей: нужно добавить имена ролей там, где это необходимо; имя роли описывает роль, которую играет соответствующий класс в данной зависимости с точки зрения другого класса, участвующего в этой зависимости; если имя роли ясно из имени класса, его можно не указывать (см. пример в п. 2.3.3);
      • квалификаторы: добавляя квалификаторы там, где это необходимо, мы вносим элементы контекста, что позволяет добиться однозначной идентификации объектов; квалификаторы позволяют также упростить некоторые зависимости, понизив их кратность;
      • кратность: необходимо добавить обозначения кратности зависимостей; при этом следует помнить, что кратность зависимостей может меняться в процессе дальнейшего анализа требований к системе;
      • неучтенные зависимости должны быть выявлены и добавлены в модель.


      Неявный (итерационный) решатель моделирующей программы


      Это библиотека классических подпрограмм, которые предназначены для решения алгебраических уравнений путем итерационного подбора независимых переменных.


      Необходимое условие устойчивости САР достаточное только для систем 1ого и 2ого порядков


      Чтобы корни ХУ имели отрицательные вещественные части, необходимо чтобы все его коэффициенты были положительны. Однако это условие является достаточным только для систем 1-ого и 2-ого порядков. Док-во:
      ХУ
      a0 s n + a1 s n-1 + ... + an-1 s + an = 0 ,
      представим в виде:
      a0 (s - s1) (s - s2) ... (s - sn-1) (s - sn) = 0 ,
      где: s1, s2, ... sn-1, sn - корни.
      В устойчивой системе вещественные части корней отрицательны. Подставим такие корни: s1= -a1; s2 = -a2; s34 = -a3±jb ... :
      a0(s+a1)(s+a2)(s+a3-jb)(s+a3+jb) ... = a0(s+a1)(s+a2)((s+a3)2+b2) ... = 0
      Если раскрыть скобки и вернутся к стандартному виду ХУ, то все коэффициенты уравнения получатся положительными.


      Нормальный сценарий для банковской сети



      Нормальный сценарий для банковской сети

      На рисунке 2.53 представлен нормальный сценарий обслуживания клиента в банковской сети; один из возможных сценариев, содержащих исключительные ситуации, показан на рисунке 2.54. ATM просит клиента вставить карточку клиент вставляет карточку ATM принимает карточку и читает ее номер ATM просит ввести пароль клиент вводит "9999." ATM передает номер и пароль в консорциум; консорциум, проконсультировавшись с соответствующим банком, отвергает запрос ATM сообщает, что пароль введен неверно клиент вводит "1234." ATM передает номер и пароль в консорциум, консорциум проверяет номер и пароль, определяет код банка - "39" и сообщает ATM, что запрос принят ATM просит выбрать вид проводки клиент выбирает снятие ATM спрашивает какова требуемая сумма клиент (раздумав брать деньги) набирает отмену ATM выдает карточку и просит клиента взять ее клиент берет карточку ATM просит (другого) клиента вставить карточку


      О демонстрационных версиях программы VisSim


      Студенческая версия программы VisSim не имеет достаточного количества примеров, для раскрытия всех ее возможностей. Преподавателю рекомендуется ознакомиться с демонстрационными версиями, которые можно найти на сайте фирмы Visual Solutions Inc.:
      • VisSim\Analyze - базовая версия, включающая библиотеку частотного анализа.
      • VisSim\TI-C2000 Rapid Prototyper - версия для специалистов в области электропривода (включает моторы, регуляторы на ЦСП (DSP) и т.д.).
      • VisSim\Comm - версия для связистов (включает источники, шифраторы, модуляторы, каналы связи, демодуляторы, дешифраторы, фильтры и т.д.).
      • VisSim\SigPro - версия для специалистов работающих с сигналами аудио диапазона.
      • VisSim\ModelWizard - дополнительный инструментарий, не включающий VisSim, нужный специалистам по идентификации объектов по историческим данным (по переходным процессам).

      Только одна демо-версия VisSim\Analyze позволяет полностью изучить модели входящие в учебно-методический комплекс, поскольку остальные не имеют требуемой библиотеки частотного анализа. Все демо-версии полнофункционально работают 60 дней. После 60 дней демо-версии перестают сохранять рабочие файлы, а библиотека частотного анализа отключается (сохранение учебных моделей не предполагается).


      О компенсации помех в астатических системах



      Рассмотрим вторую составляющую ошибки x''уст от возмущающих воздействий fko. Если САР астатическая, то W(s)|s®0®Ґ, но возможен случай, когда Wfk(s)|s®0®Ґ. Т.е. при любой степени астатизма САР x''уст может быть отличной от нуля.

      Резюме:
      1. Для подавления ошибки от возмущения необходимо, чтобы интегрирующий элемент был включен в контур до места приложения возмущения.
      2. Если рассматривать ошибку чувствительного элемента (сумматора) как возмущение, то, очевидно, что повышение степени астатизма не позволяет устранить ее.



      О синтезе систем с ЦВМ методом логарифмических амплитудных характеристик



      Изображенный дискретный фильтр имеет в области частот w ЛАЧХ & ЛФЧХ, использовать которые при синтезе неудобно.
      Перевод с помощью v-преобразования ЧХ в область псевдочастот l, позволяет получить ЛАЧХ, которые по виду подобны ЛАЧХ непрерывных систем.
      Последовательность преобразований следующая:
      Wэ(s)ЧW(s) ® W(z) ® W(v) ® W(jlTц/2).
      Эти преобразования при использовании экстраполятора нулевого порядка могут быть формализованы. Пусть ПФ непрерывной части имеет вид:

      Техническая реализуемость систем с ЦВМ позволяет ввести положения:
      1. Пусть для частоты среза непрерывной части выполняется условие wср < 2/Tц.
      2. Все постоянные времени знаменателя разделим на две группы - до и после диапазона от частоты среза до частоты дискретизации:

      T1, ..., Tq > (1/wср ... 1/wц) > Tq+1, ..., Tn.
    9. Постоянные времени в числителе t1, ..., tm пусть больше чем 1/wср.
    10. Поскольку система должна быть устойчива, пусть наклон ЛАЧХ на wср будет -20 дБ/дек.
    11. Принятые положения, позволяют описать свойства систем в области низких и высоких частот двумя ПФ:

      Теперь для формального перехода в область псевдочастот l (минуя промежуточные z и v-преобразования) достаточно подставить в ПФ Wo(s)НЧ вместо s jl и умножить ее на множитель (1-jlTц/2), для низких частот приближенно равный 1.
      А ПФ Wo(s)ВЧ будет соответствовать выражение:

      Модуль которого:
      Результирующий фазовый сдвиг обеих областей:

      Резюме:
      1. В области НЧ (w < 2/Tц) асимптотическая ЛАЧХ системы с ЦВМ практически сливается с ЛАЧХ непрерывной части (множитель (1-jlTц/2) » 1) и можно положить l » w. Это позволяет один к одному использовать разработанную для непрерывных систем методику формирования НЧ части желаемой ЛАЧХ.
      2. В области ВЧ отличия вносит множитель (1-jlTц/2), ухудшающий условия устойчивости. Поэтому при формировании запретной ВЧ области в расчетных формулах величина Tц/2 должна быть просуммирована с малыми постоянными времени:




      О студенческой версии программы VisSim


      Для изучения моделей, входящих в учебно-методический комплекс и организации учебного процесса требуется загрузить студенческую версию программы VisSim, см. раздел "Download" сайта "VisSim в России". Данная версия программы специально предоставлена пользователям этого учебно-методического комплекса фирмой Visual Solutions Inc. Условием правомочного использования бесплатной студенческой версии является регистрация пользователя.
      Пройти процедуру регистрации можно на сайте фирмы путем заполнения формы-требования демонстрационных версий программы VisSim. На вопрос о том, как вы узнали о программе (How did you hear about VSI / VisSim?) вам рекомендуется указать адрес, с которого вы загрузили студенческую версию (например, http://vissim.nm.ru/setupVisSimFAC.zip). Большая просьба: заполняйте форму английскими буквами.
      Студенческая версия является эквивалентом действовавшей ранее "Бесплатной Академической Программы распространения VisSim'а", которой мог воспользоваться лишь преподаватель вуза.
      Фирма Visual Solutions Inc. готова поставить русскоязычным вузам платную, полную, русифицированную версию программы.


      Об альтернативном построении графа схемы физической принципиальной


      Рабочие файлы: [Альтернативные элементы] [codirected_bond_graphs.vsm]
      Большинство программ для математического моделирования динамических систем (VisSim, Simulink, MVTY) в своем графическом интерфейсе предоставляют возможность собрать проводники в шину. Но направления проводников в шинах должны совпадать. Это вызывает затруднения при использовании предложенной библиотеки элементов. Однако, следуя этому ограничению, можно составить альтернативную библиотеку, элементы которой можно будет соединять подобными шинами. Принципиальных отличий в построении альтернативной библиотеки нет, и требуемые модификации не существенны. В моделях пассивных элементов ненаправленного графа меняется знак на сумматоре при вычислении приращения потенциала, а та часть блок-схемы распределяющего узла, которая отвечает за баланс потенциалов, перемещается в аккумулирующий узел.


      Об авторстве


      В любой момент авторство КлиначёваН. В. на данный учебно-методический комплекс (далее цифровой документ) может быть подтверждено. Дайджест данного файла (для цифрового документа это эквивалент отпечатка пальца) зашифрован закрытым ключом Клиначёва Н. В. (т.е. файл подписан). К электронной подписи Клиначёва посредник добавил временную метку и зашифровал пакет своим закрытым ключом. Для подтверждения авторства необходимо самостоятельно вычислить дайджест имеющегося у вас файла и сравнить его с тем, что зашифрован. Расшифровать дайджест можно двумя публичными ключами - посредника и Клиначёва.
      Входящий в данный учебно-методический комплекс конспект лекций по своему содержимому наиболее близок к учебнику В. А. Бесекерского, Е. П. Попова "Теория систем автоматического регулирования".
      Правом автора Клиначёв Н. В. объявил данный цифровой документ "Свободной информацией". Т.е. пользователям данного документа доступны четыре вида свободы:
      1. Свобода запускать документ в любых целях.
      2. Свобода изучать работу документа и адаптировать его собственным нуждам.
      3. Свобода распространять копии.
      4. Свобода улучшать документ и публиковать свободные версии.

      Однако "Свободная информация" - это не есть "бесплатное пиво". Дабы Вас, как пользователя данного документа нельзя было уличить в воровстве, Вы обязаны соблюдать условия лицензии на свободную документацию и, в зависимости от вашего социального положения, обязаны выполнить следующие действия:
      • Студент обязан познакомить своего преподавателя с данным документом и сетевыми ресурсами о программе VisSim. В случае если преподаватель не использует в курсе программ для визуального математического моделирования, студент обязан спросить преподавателя, в какой части курса он, за свои деньги, будет ознакомлен с современным инструментарием специалиста в области проектирования систем управления, например, с программой VisSim.
      • До тех пор пока учебное заведение, в котором работает преподаватель, будет пользоваться "Бесплатной Академической Программой" фирмы Visual Solutions Inc., и не приобретёт у нее полную версию программы VisSim, преподаватель обязан каждые пол года брать счет у фирмы и поднимать вопрос о приобретении программы как на уровне кафедры и факультета, так и на уровне проректора по учебной работе.



      Об исследовании точности систем с запаздыванием


      По ЧХ звена чистого запаздывания наглядно видно, что его коэффициент передачи во всем частотном диапазоне равен единице. Причем в области низких частот и задержка в звене пренебрежимо мала (т.е. сдвиг фазы стремится к нулю), поэтому при исследовании точности систем с запаздыванием допустимо просто исключить все звенья чистого запаздывания из структурной схемы. Эта операция допустима, поскольку точность любой системы определяет только НЧ часть ее ЧХ.


      Об эффекте квантования параметров


      ПФ цифрового PID-регулятора имеет три коэффициента b0, b1, b2. Заметим, что только один коэффициент b1 содержит информацию о таком параметре регулятора как постоянная времени сопрягающего полюса интегрального канала TIx. Для объяснения сути эффекта квантования параметров рассмотрим не усугубляющий случай плотного расположения сопрягающих полюсов. Пусть TIx = 0,1; TDx = 0,01; при Tц = 0,0003. Рассчитаем коэффициент b1:

      Заметим, что для любой системы отклонение любой постоянной времени в два раза не должно иметь критического значения, однако коэффициенты ПФ-ий, как показано, зависят от параметров отличающихся на порядки, поэтому скажем для отношения TDx/Tц, входящего во все коэффициенты числителя ПФ регулятора требуется сохранять мантиссу длиной 5 знакомест (17 двоичных разрядов), поскольку иначе информация о параметре TIx будет потеряна вследствие округления.
      Существуют следующие методы преодоления эффекта квантования параметров при ограниченной длине мантиссы ЦВМ:
      1. Развязка параметров посредствам разложения z-ПФ высокого порядка либо на множители, либо на элементарные дроби.
      2. Подбор для реализации z-ПФ структурной схемы среди альтернативных, имеющих разные по плотности сетки возможных положений корней в единичной окружности.



      Объектная диаграмма банковской сети и ее системного окружения



      Объектная диаграмма банковской сети и ее системного окружения


      Введение понятия подсистемы и возможность включать в объектную модель наряду с объектами (классами) и подсистемы определяет иерархическую структуру объектной модели и позволяет использовать методологию OMT при проектировании достаточно сложных программных систем, содержащих большое число различных объектов и классов.


      Объектная диаграмма банковской сети после выделения подсистемы банк



      Объектная диаграмма банковской сети после выделения подсистемы банк


      При этом внешние интерфейсы подсистем банк и окружение вместе с интерфейсами объектов ATM и консорциум образуют внутреннее окружение системы банковского обслуживания. Ее внешнее окружение представлено на рисунке 2.42; оно состоит из внешних интерфейсов различных программных систем, используемых в системе банковского обслуживания (на рисунке показана лишь часть этих систем), и ее собственного внешнего интерфейса.


      Объектная диаграмма банковской сети, в которой указан интерфейс с системным окружением



      Объектная диаграмма банковской сети, в которой указан интерфейс с системным окружением




      Объектная диаграмма для банковской сети после уточнения атрибутов и добавления квалификаторов



      Объектная диаграмма для банковской сети после уточнения атрибутов и добавления квалификаторов




      Объектная диаграмма для банковской с учетом наследования



      Объектная диаграмма для банковской с учетом наследования




      Объектная модель, определяющая абстрактный и конкретный классы



      Объектная модель, определяющая абстрактный и конкретный классы


      Класс описывает множество объектов - экземпляров этого класса. Объекты данного класса порождаются по описанию класса с помощью процесса, называемого тиражированием. Процесс тиражирования можно распространить и на другие случаи порождения экземпляров объектов по образцам. Рассмотрим, например, модели автомобилей, выпускаемых различными производителями. Класс модель_автомобиля имеет свои атрибуты (как например, имя_модели, год_выпуска, базовая_цена) и зависимости (в частности, этот класс связан зависимостью с классом фирма). Но каждая модель_автомобиля может рассматриваться как метакласс, описывающий множество автомобилей, принадлежащих конкретным людям - их владельцам. Каждый класс автомобиль получает атрибуты от своего метакласса, но может иметь и собственные атрибуты (как например, серийный_номер, цвет, комплектация). При этом гораздо удобнее и экономнее получать различные классы автомобиль тиражированием метакласса модель_автомобиля (схематически этот процесс тиражирования представлен на рисунке 2.26). Тиражирование изображается пунктирной стрелкой.


      Объектно-ориентированные технологии проектирования прикладных программных систем


      1. Основные понятия объектно-ориентированного подхода 1.1. Объектно-ориентированная разработка программ
      1.2. Объектно-ориентированные языки программирования
      1.3. Сквозной пример 2. Первая фаза жизненного цикла - анализ требований и предварительное проектирование системы. Объектно-ориентированное моделирование 2.1. Объектная модель системы 2.1.1. Объекты и классы
      2.1.2. Атрибуты объектов
      2.1.3. Операции и методы
      2.1.4. Зависимости между классами (объектами)
      2.1.5. Атрибуты зависимостей
      2.1.6. Имена ролей, квалификаторы
      2.1.7. Агрегация
      2.1.8. Обобщение и наследование
      2.1.9. Абстрактные классы
      2.1.10. Множественное наследование
      2.1.11. Связь объектов с базой данных 2.2. Построение объектной модели 2.2.1. Определение классов
      2.2.2. Подготовка словаря данных
      2.2.3. Определение зависимостей
      2.2.4. Уточнение атрибутов
      2.2.5. Организация системы классов, используя наследование
      2.2.6. Дальнейшее исследование и усовершенствование модели 2.3. Пример объектной модели 2.3.1. Определение объектов и классов
      2.3.2. Подготовка словаря данных
      2.3.3. Определение зависимостей
      2.3.4. Уточнение атрибутов
      2.3.5. Организация системы классов с использованием наследования
      2.3.6. Дальнейшее усовершенствование модели 2.4. Выделение подсистем 2.4.1. Понятие подсистемы
      2.4.2. Интерфейсы и окружения 2.5. Динамическая модель системы или подсистемы 2.5.1. События, состояния объектов и диаграммы состояний
      2.5.2. Условия
      2.5.3. Активности и действия
      2.5.4. Одновременные события. Синхронизация
      2.5.5. Вложенные диаграммы состояний
      2.5.6. Динамическая модель банковской сети 2.6. Функциональная модель подсистемы 2.6.1. Диаграммы потоков данных
      2.6.2. Описание операций
      2.6.3. Ограничения
      2.6.4. Функциональная модель банковской сети 2.7. Заключительные замечания к разделу 3. Вторая фаза жизненного цикла - конструирование системы 3.1. Разработка архитектуры системы 3.1.1. Разбиение системы на модули
      3.1.2. Выявление асинхронного параллелизма
      3.1.3. Распределение модулей и подсистем по процессорам и задачам
      3.1.4. Управление хранилищами данных
      3.1.5. Управление глобальными ресурсами
      3.1.6. Реализация управления программным обеспечением
      3.1.7. Пограничные ситуации
      3.1.8. Обзор архитектур прикладных систем 3.2. Архитектура системы управления банковской сетью 3.3. Разработка объектов 3.3.1. Совместное рассмотрение трех моделей
      3.3.2. Разработка алгоритмов, реализующих полученные операции
      3.3.3. Оптимизация разработки
      3.3.4. Реализация управления
      3.3.5. Уточнение наследования классов
      3.3.6. Разработка зависимостей 4. Сравнительный анализ объектно-ориентированных методологий разработки программных систем 4. 1. Методология OMT
      4.2. Методология SA/SD
      4.3. Методология JSD
      4.4. Методология OSA 5. Третья фаза жизненного цикла - реализация объектно-ориентированного проекта 5.1. Объектно-ориентированный стиль программирования 5.2. Объектно-ориентированные системы программирования 5.3. Реализация на языке C++ 5.3.1. Реализация классов
      5.3.2. Порождение объектов
      5.3.3. Вызов операций
      5.3.4. Использование наследования
      5.3.5. Реализация зависимостей
      5.3.6. Шаблоны в языке C++ 5.4. Другие объектно-ориентированные системы программирования 5.4.1. Реализация классов
      5.4.2. Порождение объектов
      5.4.3. Вызов операций
      5.4.4. Реализация наследования
      5.4.5. Реализация зависимостей 5.5. Не объектно-ориентированные системы программирования 5.5.1. Преобразование классов в структуры данных
      5.5.2. Передача параметров методам
      5.5.3. Размещение объектов в памяти
      5.5.4. Реализация наследования
      5.5.5. Выбор методов для операций
      5.5.6. Реализация зависимостей
      5.5.7. Объектно-ориентированное программирование на Фортране
      5.5.8. Чем неудобны не объектно-ориентированные системы программирования
      Comments: info@citmgu.ru
      Copyright © CIT


      Обобщение (выделение суперклассов)



      Обобщение (выделение суперклассов)


      Обобщение позволяет выделить класс одномерные фигуры и считать классы прямая, дуга и сплайн подклассами класса одномерные фигуры, а класс одномерные фигуры - суперклассом классов прямая, дуга и сплайн. Если при этом принять соглашение, что атрибуты и операции суперкласса действительны в каждом из его подклассов (говорят, что эти атрибуты и операции наследуются подклассами), то одинаковые атрибуты и операции классов прямая, дуга и сплайн (подклассов) могут быть вынесены в класс одномерные фигуры (суперкласс). Аналогично можно поступить и с двумерными фигурами, определив для классов многоугольник и круг суперкласс двумерная фигура. Наконец, можно определить класс фигура как суперкласс классов нульмерная фигура, одномерная фигура и двумерная фигура. Легко видеть, что отношения "подкласс - суперкласс" (обобщение) и "суперкласс - подкласс" (наследование) транзитивны, что позволяет строить классификационные деревья. При этом атрибуты и операции каждого суперкласса наследуются его подклассами всех уровней (мы как бы выносим за скобки одинаковые операции). Это значительно облегчает и сокращает описание классов. На схемах обобщение (наследование) изображается треугольничком (рисунок 2.17). Треугольничек следует ставить даже в том случае, когда суперкласс имеет всего один подкласс. Слово размерность, следующее за верхним треугольничком на рисунке 2.17, является дискриминатором. Дискриминатор - это атрибут типа "перечисление", показывающий, по какому из свойств объектов сделано данное обобщение. Другие примеры обобщения (наследования) показаны на рисунке 2.18 (эти примеры связаны с основным нашим примером - системой обслуживания клиентов банковским консорциумом).


      Обобщенная модель импульсного элемента


      • Задача идеального импульсного элемента (ИИЭ) в модели - сформировать для дальнейшего математического описания системы либо последовательность импульсов типа d-функций с площадью ~ x(t), либо решетчатую функцию, в основе которой единичная импульсная функция do(t) = { 1 при t=0; 0 при t№0 } с амплитудой ~ x(t).
      • Задача экстраполятора - математически описать выходную последовательность реального импульсного звена (экстраполяция - это прогнозирование (синтез) сигнала между значениями решетчатой функции).
      • Коэффициент передачи квантователя (ИИЭ) обратно пропорционален периоду квантования, а коэффициент передачи экстраполятора нулевого порядка равен периоду. Таким образом общий коэффициент передачи квантующей и восстанавливающей цепи, т.е. ИЭ обычно равен единице.

      Организация и функционирование компьютеров тут


      Общее ограничение между зависимостями



      Общее ограничение между зависимостями


      Производные объекты, связи и атрибуты Производный объект определяется как функция от одного или нескольких объектов. Он полностью определяется этими объектами. Следовательно, производный объект избыточен, но он может быть включен в объектную модель для облегчения ее понимания. Аналогичным образом можно определить производные связи и производные атрибуты. Все производные сущности помечаются косой чертой ("/").


      Общий случай гомоморфизма



      Общий случай гомоморфизма




      Общая форма записи систем ДУ


      В целях формализации процесса составления исходных ДУ систем используют такие методы, как "Метод контурных токов", "Метод узловых потенциалов" и их аналоги, имеющиеся во всех энергетических доменах. В результате их применения получается единая система:

      (1)
      a11(p) x1 + a12(p) x2 + ... + a1k(p) xk = f1(t)
      a21(p) x1 + a22(p) x2 + ... + a2k(p) xk = f2(t)
      ...
      ak1(p) x1 + ak2(p) x2 + ... + akk(p) xk = fk(t)
      где:
      • x1, x2, ..., xk - обобщенные координаты системы, в том числе (для САР) ошибка - x(t) и регулируемая величина - y(t);
      • f1(t), f2(t), ..., fk(t) - внешние координаты - задающие g(t) и возмущающие f(t) воздействия.

      Для удобства и формализации решений систему уравнений (1) могут представить в одной из пяти стандартных форм:
      1. в форме Коши;
      2. в пространстве состояний;
      3. решенную относительно регулируемой величины - y(t);
      4. решенную относительно ошибки - x(t);
      5. в виде передаточных функций - W(p), F(p), Fx(p).



      Обзор и классификация моделирующих программ


      Наблюдается устойчивая тенденция к выравниванию возможностей разных моделирующих программ. Специалист, привыкший к тому или другому пакету не испытывает жесткой потребности в смене программы по причине баланса возможностей. Есть только один причинный критерий, который нужно принимать во внимание при выборе – это технология функционирования математического ядра моделирующей программы. Согласно этому признаку популярные программы сведены в таблицу.
      Программы с поточной моделью управления
      VisSim
      MBTY
      Simulink
      Easy5
      "+" Эти программы легко интегрируются с системами сбора данных, благодаря чему возможно создание (компьютерных) моделей с физическими объектами в контуре. В большинстве из них возможно программирование цифровых сигнальных процессоров. Структура их моделей может меняться в процессе симуляции без затрат времени, согласно событийному управлению.
      Программы – интерпретаторы систем уравнений
      Dynast
      20-sim
      Dymola
      Simplorer
      ITI-sim
      Pspice
      Multisim
      Micro-Cap
      "+" Эти программы, в скрытом от пользователя режиме, легко преобразуют текстовую запись систем уравнений к требуемому решателям виду. Фактически с пользователя снята, задача подключения к модели итерационного решателя алгебраических уравнений. Эти особенности технологии позволили не ограничиваться моделями в виде передаточных функций, и, временно, эти программы заняли лидирующие позиции в области мультидоменного моделирования. Они предоставляют пользователю возможность строить модели в виде схем физических принципиальных.
      Недостатки первой группы моделирующих программ связаны с достоинствами второй и наоборот. Существует технология построения моделей элементов физических устройств с помощью бинаправленных (не направленных) графов связи, которая дает шанс программам первой группы однозначно занять лидирующую позицию.
      Главным затруднением для разработчиков моделирующих программ является графический интерфейс, который, по сути, должен быть полноценным редактором векторной графики. По этой причине любая интеграция моделирующих программ с пакетами Visio или CorelDRAW должна приветствоваться пользователями.


      Обзор методов анализа моделей систем и сигналов


      В большинстве программ математического моделирования динамических систем совокупность методов анализа моделей, систем и сигналов вынесена в отдельную библиотеку и часто является дополнительным коммерческим продуктом. Их практическая ценность высока. К основным задачам, решаемым библиотекой анализа, относятся:
      • Идентификация моделей;
      • Символьный анализ математического описания;
      • Частотный анализ моделей и систем;
      • Спектральный анализ сигналов.



      Обзор способов расчета энергетических


      Т.е. написать параграф, в котором будут описаны техники моделирования, предполагающие
      получение результатов с разными уровнями детализации:
      1. моделирование систем с постоянными источниками,
        не учитывающее переходных и волновых процессов.
      2. моделирование систем с источниками периодических сигналов,
        не учитывающее переходных и волновых процессов.
      3. моделирование систем с источниками непериодических сигналов,
        не учитывающее переходных и волновых процессов.
      4. моделирование систем с источниками непериодических сигналов,
        учитывающее переходные процессы и не учитывающее волновые.
      5. моделирование систем с источниками непериодических сигналов,
        учитывающее переходные и волновые процессы.



      Оценка быстродействия САР


      Оценить быстродействие можно по частотным характеристикам замкнутой и разомкнутой системы, используя:
      1. |F(jw)| - АЧХ замкнутой системы
      2. P(w) = Re(F(jw)) - вещественную ЧХ
      3. W (jw) - АФХ разомкнутой системы
      4. ЛАЧХ & ЛФЧХ
      5. ...

      При этом в качестве критериев используют величины:
      • wр - резонансная частота, соответствует пику АЧХ, близка к частоте колебаний в переходном процессе;
      • wср - частота среза, соответствующая условию |W(jwср)|=A(wср)=1 или L(wср)=0 (по ЛАЧХ).
      • wп - частота соответствующая полосе пропускания замкнутой системы F(jw), определяемая из условия A(wп)=0,707.
      • wэ - эквивалентная полоса пропускания замкнутой системы: wэ = oҐ т |F(jw)|2 dw, - эта величина связана с вопросом пропускания системой помех. Кроме того, если ее рассчитать, включая отрицательные частоты, причем в герцах, то она совпадет с квадратичной ИТ-оценкой I'.



      Оценка качества регулирования


      Качество любой системы регулирования определяется величиной ошибки:
      x(t) = g(t) - y(t) = Fx(p) g(t)
      Но функцию ошибки x(t) для любого момента времени трудно определить, поскольку она описывается с помощью ДУ системы - Fx(p) - высокого порядка, и зависит от большого количества параметров системы. Поэтому оценивают качество САР по некоторым ее свойствам, определяют которые с помощью критериев качества.
      Критериев качества регулирования много. Их разделяют на 4 группы:
      1. Критерии точности - используют величину ошибки в различных типовых режимах.
      2. Критерии величины запаса устойчивости - оценивают удаленность САР от границы устойчивости.
      3. Критерии быстродействия - оценивают быстроту реагирования САР на появление задающего и возмущающего воздействий.
      4. Интегральные критерии - оценивают обобщенные свойства САР: точность, запас устойчивости, быстродействие.

      Существует два основных подхода к оценке качества:
      1. Первый использует информацию о временных параметрах системы: h(t), w(t); расположение полюсов и нулей ПФ замкнутой системы F(s).
      2. Второй использует информацию о некоторых частотных свойствах системы: полоса пропускания; относительная высота резонансного пика; и т.д.



      Оценка точности САР по воспроизведению гармонического сигнала


      Если: g(t) = Gmsin(wkt), то амплитуда Xm = |Fx(jwk)| Gm = Gm / |1+W(jwk)|.
      Поскольку Xm должна быть << Gm, то W(jwk) >> 1, следовательно Xm » Gm / |W(jwk)|.
      Те, чтобы система воспроизводила сигнал с ошибкой, непревышающей Xm, ЛАЧХ системы должна проходить не ниже контрольной точки Ak с координатами: w = wk, L(wk) = 20lg |W(jwk)| = 20lg Gm/Xm.


      Оценка запаса устойчивости и быстродействия по переходной характеристике




      s = (ymax - yҐ) / yҐ100, [%]
      Варианты s
      0 % 10..30 % 50..70 %
      Применяемость редко часто избегают
      Запас по фазе 900 600..300 300..100
      Число колебаний 0 1, 2 3, 4, ...

      D О 5; 2,5; 1,5; 1; 0,5; ... [%] от yҐ , - усатановлено ГОСТ-ами.


      Время нарастания ограничено:
      • tн min - допустимым ускорением координат и предельными колебательными режимами;
      • tн max - требуемым быстродействием.

      На Рисунок tз - максимальное допустимое время запаздывания (распространения) сигнала.


      Оценка запаса устойчивости




      По виду АФХ разомкнутой системы оценивают запас устойчивости:
      • по амплитуде - L1=20lgb1 и L2=20lgb2
      • по фазе m1=180+j1

      где: j1 - запаздывание по фазе на частоте единичного усиления при |W(jw)|=A(w)=1 или L(w)=0 (по ЛАЧХ).
      Для абсолютно устойчивых систем (n<3) имеет смысл только величина L1, т.к. L2®Ґ. Для хорошо демпфированных систем bО[2...10), т.е. [6...20)дБ.
      Запас устойчивости тем больше, чем больше b и m1. Используя b и m1 можно задать запретную область для АФХ. Но недостаток заключен в том, что если АФХ будет касаться запретной области в разных точках, перерегулирование s будет разным.
      Определение показателя колебательности M по максимальному значению AЧХ системы в замкнутом состоянии, и (опосредованно) запаса устойчивости

      равный максимальному значению АЧХ замкнутой системы приведенной к коэффициенту усиления в области низких частот. Т.е. вынужденное движение на резонансной частоте будет иметь амплитуду в M раз большую, чем в области низких частот. И чем больше M, тем меньше запас устойчивости.
      Если имеется только АФХ разомкнутой системы W(jw), то показатель колебательности M удобно использовать в виде фоновой сетки, которой можно пользоваться как линиями уровня M О [1/4; 1/2; 1; 0,707; 1,41; 2; 4]. Выполним расчет сетки:

      где: (1) - уравнение окружности с радиусом R, и центром в точке C.


      Ограничения на объекты



      Ограничения на объекты


      На рисунке 2.29(а - в) представлены ограничения, накладываемые на объекты: (а) зарплата служащего не может превышать зарплаты его начальника (ограничение на значения одного атрибута разных объектов); (б) никакое окно (на экране дисплея) не может иметь отношение длины к ширине, не лежащее в интервале от 0.8 до 1.5 (ограничение на значения разных атрибутов одного объекта); (в) возраст человека не может убывать (ограничение на изменение значения атрибута во времени). Ограничения указываются в фигурных скобках под изображением соответствующего класса на объектной диаграмме (они относятся ко всем объектам этого класса). Обычно ограничения могут быть выражены в виде логических функций (предикатов), которые и представляют их в программе. Ограничения дают один из критериев качества объектной модели: "хорошая" объектная модель обычно содержит много ограничений. Ограничения на зависимости сокращают количество объектов, связанных с данным объектом (соответствующие обозначения уже рассматривались нами ранее). На рисунке 2.30 показан пример другого рода ограничений: показано, что множество объектов на одном из концов зависимости является упорядоченным.


      Ограничения на связи



      Ограничения на связи


      На рисунке 2.31 приведен пример общих ограничений на зависимости: указано, что зависимость является_председателем между объектами человек и комиссия есть подмножество зависимости является_членом. Общие ограничения выражаются, как правило, с помощью уравнений. На диаграммах они обозначаются пунктирными стрелками с комментариями в фигурных скобках.


      Окончательный вид объектной диаграммы для банковской сети



      Окончательный вид объектной диаграммы для банковской сети


      После внесения перечисленных изменений объектная диаграмма примет вид, представленный на рисунке 2.40. На этом построение объектной модели этапа предварительного проектирования заканчивается. Дальнейшие уточнения объектной модели будут производиться на следующих фазах жизненного цикла системы.


      Определение устойчивости по М Я Ляпунову


      Невозмущенное движение (при DxiҐ=0) называется устойчивым по отношению к пременным xi, если при всяком заданном положительном числе A2, как бы мало оно нибыло, можно выбрать другое положительное число l2(A2) так, что для всех возмущений Dxi0, удовлетворяющих условию:
      ,
      возмущенное движение будет для времени t і T удовлетворять неравенству:

      где: mi - коэффициенты, уравновешивающие размерности величин Dxi0.
      Если с течением времени lim Dxi®0, то система ассимптотически устойчива.


      Оптимизирующий решатель моделирующей программы


      Это разновидность неявного решателя, которая предназначена для минимизации значения функции в процессе итерационного подбора ее независимых переменных.

      На Рисунок показана техника подключения неявного решателя (блоков unknown и constraintнеизвестная и нулевой_баланс) к алгебраическому полиному с целью поиска корней уравнения. На каждом шаге симуляции неявный решатель, в итерационном процессе, подбирает такое значение на выходе блока неизвестная (этот блок, по сути, является генератором сигнала), которое, будучи подставлено в полином обнулит его. За фактом обнуления следит датчик решателя – блок нулевой_баланс. Если инициировать решатель (блок неизвестная) разными начальными значениями, то можно найти оба корня.


      Ошибка при движении по гармоническому закону g(t)=Gmsin(wkt)


      Рассмотрим только первую составляющую ошибки:
      x'уст = g(t) / [1+W (s)] = Xmsin(wkt+j)
      где: g(t) - синусоида; [1+W (s)] - комплексное число.
      Следовательно:
      (1)
      Xm = Gm / |1+W (jwk)| » Gm / A(wk).
      Резюме:
      1. Формула (1) позволяет идентифицировать положение неизвестной ЛАЧХ на данной частоте по амплитуде ошибки или сформулировать требования к ЛАЧХ при синтезе системы.
      2. Особые точки ЛАЧХ определены комплексными сопряженными корнями. Поведение системы при данных частотах (wk=|jbk|) требует дополнительного исследования.
      3. Особенность движения системы при гармоническом сигнале задания - это смена знака координат, которое во многих системах может сопровождаться нелинейными искажениями типа "ступенька" или сменой направления сил сухого трения.



      Ошибки системы с астатизмом первого порядка


      Если ПФ САР W(s) обладает астатизмом первого порядка, т.е. в области низких частот W(s)|s®0®Kv/s. Тогда первая составляющая ошибки:
      ,
      т.е. в астатической системе первого порядка ошибка от задания равного константе равна нулю, ошибка от задания меняющегося с постоянной скоростью равна xv=v/Kv, а ошибка от задания меняющегося с постоянным ускорением нарастает до бесконечности.


      Ошибки системы с астатизмом второго порядка


      Если ПФ САР W(s) обладает астатизмом второго порядка, т.е. в области низких частот W(s)|s®0®Ke/s2. Тогда первая составляющая ошибки:
      ,
      т.е. в астатической системе второго порядка ошибки от заданий равного константе и изменяющегося с постоянной скоростью равны нулю, а ошибка от задания меняющегося с постоянным ускорением равна константе xe=e/Ke.
      Качество САР с астатизмом принято характеризовать величинами, называемыми добротностью по скорости и ускорению:



      Ошибки статической системы


      Здесь и далее будем рассматривать установившиеся составляющие ошибки системы в типовых режимах движения. Для чего будем анализировать уравнение ошибки:
      ,
      где: g0+v/s+e/s2 - изображение представленного рядом Тейлора входного сигнала; s®0 соответствует установившемуся режиму.
      Итак, если ПФ САР W(s) статическая, т.е. в области низких частот W(s)|s®0®K. Тогда первая составляющая ошибки:

      т.е. в статической системе ошибка, вызванная заданием равным константе, так же константа, но меньшая на величину 1+K, а ошибки от заданий меняющихся с постоянными скоростью или ускорением нарастают до бесконечности.


      Основы моделирования систем


        • Проблематика, задачи и цель моделирования
        • Технологии функционирования моделирующих программ
        • Обзор и классификация моделирующих программ
        • Решатели моделирующих программ
        • Понятие о структурном и мультидоменном физическом моделировании
        • Идея мультидоменного физического моделирования
        • Понятие об управляемом событиями моделировании
        • Инструментарий моделирующих программ
        • Принцип поточного исполнения блок-схем (моделей)
        • Библиотеки блоков графических языков
        • Блоки обладающие эффектом памяти
        • Понятие о начальных условиях модели
        • Понятие о параметрах модели
        • Понятие о методах интегрирования
        • Выбор шага симуляции и метода интегрирования
        • Принципы построения графа схемы физической принципиальной
        • Элементы ненаправленного графа
        • Пассивные элементы ненаправленного графа (потребители энергии)
        • Безинерционный элемент (активное сопротивление)
        • Реактивный элемент 1
        • Реактивный элемент 2
      1. Активные элементы ненаправленного графа (источники энергии)
        • Источник движущей силы (генератор энергетических потенциалов)
        • Источник потока (генератор потока материи)
        • Прерыватель алгебраических петель (инициатор потока материи)
        • Заземлитель потенциала
      2. Узлы ненаправленного графа
        • Распределяющий (материю) узел
        • Аккумулирующий (материю) узел
      3. Рекомендации к использованию библиотеки элементов
        • Идентификация моделей
        • Символьный анализ математического описания моделей
        • Частотный анализ моделей и систем
        • Вычислительные алгоритмы идентификации ЧХ моделей
        • Измерительные алгоритмы идентификации ЧХ моделей и систем
        • Алгоритмы идентификации ЧХ систем на основе технологий распознавания образов
      myVisibility(ww=true);

      Особенности линеаризованного уравнения


      1. Оно является приближенным - отброшены члены высшего порядка малости.
      2. Неизвестными функциями являются не полные величины, а их отклонения D... от установившихся значений.
      3. Уравнение является линейным относительно отклонений D..., при этом масштабирующие коэффициенты (частные производные) могут быть постоянными или переменными во времени.
      4. Внешнее воздействие линеаризации не подлежит.


      Ответы на часто задаваемые вопросы


      Когда я нажимаю на ссылки около слов "Рабочие файлы" я вижу непонятный текст. Что мне делать?
      На вашем компьютере не установлена студенческая версия программы VisSim. Ее надо скачать и установить на ваш компьютер. Часть рабочих файлов заархивированных в данном ресурсе являются рабочими файлами программы Electronics WorkBench 4.1. Она так же должна быть установлена на вашем компьютере.
      Пример "непонятного текста"
      ; VisSim Block Diagram Format (VBDF) ; Copyright ©1989-1999 Visual Solutions PA=1 POa="Nikolay Klinachyov" PV=3.000 PS=0 PE=0.5 PP=0.0001 PI=172 PX=0.0001 PN=1e-006 PL=5 PT=1e-005 Pn=-8,6,14,"MS Sans Serif" ...
      Откуда загрузить студенческую версию программы VisSim?
      См. раздел "Download" сайта "VisSim в России".
      Является ли студенческая версия программы VisSim бесплатной?
      Да, студенческая версия программы VisSim распространяется бесплатно. По условиям правомочного использования программы вам нужно зарегистрироваться.
      Я установил программу VisSim, но когда я нажимаю на ссылки, указывающие на рабочие файлы программы VisSim, распаковка файла блокируется и выдается сообщение о том, что файл не доступен. Что мне делать?
      Есть подозрение, что причина в антивирусной программе (Касперского), которая толи сама блокирует их запуск, толи меняет настройки у браузера MSIE в реестре и последний сам не запускает файлы по гиперссылке. Как правило, деактивация антивирусного монитора не дает желаемого результата (запрет на загрузку сохраняется где-то в реестре). Деархивируйте файл tau_knv.chm и запускайте файлы обычным образом из директории ...\EXMPL\.
      Команда деархивации: hh -decompile c:\DIR\ c:\DIR\tau_knv.chm
      Я обнаружил, что в студенческой версии программы VisSim нет документации. Где ее можно взять?
      Переведенную на русский язык справку программы можно найти на сайте "VisSim в России", см. раздел "Download", файл vsmhlpru.zip.
      У меня есть вопросы о моделировании в программе VisSim. Кому я могу их задать?
      Вам рекомендуется вступить в дискуссионную группу "Симуляция движения (моделирование)". В данном учебно-методическом комплексе (см. навигацию) есть подробные инструкции о том, как работать с дискуссионной группой.


      Отыскание ПФ системы с varпараметрами


      ПФ системы с переменными параметрами можно определить либо по функциям веса:
      W(s, t) =-Ґt т w(t-J, J) e-(t-J)s dJ = o+Ґ т w(q, t-q) e-qs dq ,
      либо по переходной функции h(t-J, J):
      W(s, t) = s -Ґt т h(t-J, J) e-(t-J)s dJ = s o+Ґ т h(q, t-q) e-qs dq ,
      но этот подход нерационален, т.к. требует знания типовых реакций системы h и w.
      Более удобно находить ПФ W(s, t) из исходного ДУ с var-параметрами:
      A(s, t) W(s, t) + N{W(s, t)} = B(s, t) ,
      где:

      A(s, t) = a0(t)sn+...+an(t) ; B(s, t) = b0(t)sm+...+bm(t) ;
      N{W(s, t)} =[ dA/ds dW/dt + ... + 1/n! dnA/dsn dnW/dtn ] .
      Решение ДУ, т.е. ПФ W(s, t) будем искать в виде ряда:
      W(s, t) = W0(s, t) + W1(s, t) + ...
      где: W0(s, t) = B(s, t) / A(s, t); Wk(s, t) = N{Wk-1(s, t)} / A(s, t) .


      Памятка по эксплуатации


      1. Материала в теоретическом разделе не достаточно для освоения дисциплины. Его объём специально ограничен. Раскрытие сути отдельных аспектов теории входит в обязанность лектора. При самообучении студент должен дополнительно пользоваться учебниками.
      2. Лектору, при появлении необходимости возвращения к прочитанному материалу, рекомендуется запускать копию пособия, и переключатся между окнами.
      3. Для покадрового изучения рисунков с анимацией необходимо пользоваться кнопками "Стоп" и "Обновить" в инструментальной панели окна документа.
      4. Рекомендуемое разрешение проекционной аппаратуры для визуализации на лекциях любого раздела документа - 800x600x256. Однако оформление документа не искажается и при видеорежиме 640x480x16.
      5. При работе с графическим разрешением 640x480 рекомендуется скрыть панель оглавления, при этом сохраняется возможность навигации по документу посредствам гиперссылок.
      6. При работе с проекционной аппаратурой, можно увеличить шрифт во всем документе. Закройте документ. Запустите браузер MSIE. Увеличьте шрифт по умолчанию с помощью кнопки в его инструментальной панели. Закройте браузер MSIE. Вернитесь к документу. При необходимости более существенного изменения оформления документа составьте свою каскадную таблицу стилей и подключите ее к браузеру MSIE (Сервис > Свойства обозревателя > Общие > Оформление).
      7. Замечено, что некоторые антивирусные программы-мониторы блокируют распаковку рабочих файлов моделирующих программам из данного пособия. Измените их соответствующие настройки. Пособие распространяется с электронной подписью сделанной автором (tau_knv.chm.sig - подпись, KNV.asc - публичный ключ Клиначёва Н.В.). Используя программу PGP, вы можете убедиться, что при распространении данный файл ни кем не был изменен.


      Параметры модели


      Физические величины, которые характеризуют модель независимо от ее текущего динамического состояния. К параметрам относятся: сопротивления1 (электрическое, магнитное, термальное, гидравлическое, механическое, акустическое, ротационное, и т.д.); отношения сопротивлений (коэффициенты передачи); меры инерционности (постоянные времени). 1)Если речь идет о сопротивлениях реактивного характера, то в качестве параметров могут выступать физические величины их определяющие (например, индуктивность катушки, емкость конденсатора, и т.д.).


      Пассивные элементы ненаправленного графа (потребителиэнергии)


      В каждом из энергетических доменов существует от одного до трех (известных) простейших физических устройств, которые называются электрическим, магнитным, тепловым, гидравлическим, акустическим, механическим, ротационным и др. сопротивлениями. Таким образом, чуть округлив, можно сказать, что для названных энергетических доменов закон Ома имеет 21 формулировку. Формулы закона Ома записываются тремя способами:

      Три формы записи закона Ома определяют три формальных примитива, которые являются пассивными элементами ненаправленного графа, т.е. моделями потребителей энергии.
      Определимся так же с тем, что все элементы ненаправленного графа будут асимметричными, т.е. с тем, что именно поток материи по элементам будет определять разность энергетических потенциалов на их выводах, а не наоборот.


      Перечень лабораторных занятий по дисциплине "Теория систем автоматического регулирования"


      ЧАСТЬ 1
      1. Знакомство с моделирующим ПО
      2. Типовые динамические звенья
      3. Принципы и законы регули-вания
      4. Анализ устойчивости САР
      5. Оценка качества регулирования
      6. Повышение точности САР
      7. Коррекция САР
      8. Синтез САР
      ЧАСТЬ 2
      09. САР с var-параметрами
      10. Системы с запаздванием
      11. Импульсные системы
      12. Цифровые системы
      13. Релейные системы
      Справочный материал


      Передача события из одного объекта другому



      Передача события из одного объекта другому


      Если объект получает события из нескольких независимых объектов, то состояние, в которое он перейдет, может зависеть от порядка, в котором будут получены эти события (а этот порядок случаен, так как объекты независимы). Это называется условием конкуренции. Одной из задач проектирования является исключение нежелательных условий конкуренции. Это достигается с помощью синхронизации. Синхронизация используется и в случае, когда в каком-либо состоянии требуется параллельно выполнить несколько активностей. В качестве примера рассмотрим устройство вывода ATM (рисунок 2.52). Оно одновременно (параллельно) выдает наличные деньги и карточку; обе эти операции можно рассматривать как составную активность, состоящую из двух параллельно работающих активностей (пунктирная линия на диаграмме состояний делит состояние на две области, в каждой из которых выполняется одна из указанных активностей). Разделение управления на два параллельных потока схематически показано в виде стрелки, которая разделяется на две: событие готов вызывает переход из состояния установка сразу в два параллельных подсостояния состояния выдача; переход в следующее состояние происходит по двум событиям деньги взяты и карточка взята; если какое-либо из этих событий произойдет раньше другого, перехода все равно не будет, пока не произойдет и второе событие (в этом и состоит синхронизация).


      Передаточная функция


      Функция, связывающая один входной и один выходной сигналы САР. Является формой записи системы ДУ САР решённой относительно требуемой выходной координаты. Обычно ПФ записывается не для временного домена, а для домена Лапласа, связывая в этом варианте не сигналы (т.е. не функции времени), а их изображения. ПФ-ии получают из ДУ решенного относительно требуемой координаты системы (уравнение (4) или (5)). Для чего правую часть уравнения делят на характеристический полином D(p). Отношения полиномов в правой части при возмущающих воздействиях и есть ПФ-ии.

      Для типовой структурной схемы замкнутой САР различают 3 основные ПФ, применяемые для исследований:
      1. W(p)= y(t)/x(t) Ч Wос(p) = Wрег(p) Wо(p) Wос(p) - ПФ разомкнутой системы;
      2. F(p) = y(t)/g(t) - ПФ замкнутой системы;
      3. Fx(p) = x(t)/g(t) - ПФ замкнутой системы по ошибке.

      Запишем по структурной схеме уравнение движения для разомкнутой системы:

      где: Wпрк(p) - ПФ прямого канала системы.
      Замкнем систему с помощью уравнения замыкания:

      Тогда совместное решение даст уравнение движения замкнутой системы:

      и уравнение ошибки замкнутой системы:

      При отсутствии помехи f (t) выходная величина связана с задающим воздействием ПФ замкнутой системы:

      А ошибка - с задающим воздействием ПФ замкнутой системы по ошибке:

      При этом:



      Первая версия объектной диаграммы для банковской сети



      Первая версия объектной диаграммы для банковской сети




      ПФ для возмущений



      Поскольку для произведения 2х операторных многочленов: F(s) (изображение возмущения) и W2(s) нельзя найти Z-преобразование раздельно, см. правило 2, то ПФ по возмущению удобно определять для эквивалентных возмущений F1(z), приведенных к входу ИЭ:

      Справочник по Python тут


      ПФ системы с экстраполятором нулевого порядка и звеном запаздывания



      Экстраполятором нулевого порядка являются: 1)УВХ и 2) ЦАП.
      Найдем изображение Лапласа для единичного импульса:

      Тогда Z-изображение экстраполятора и непрерывной части со звеном запаздывания:

      где: e = 1 - t/T ; 0 < t < T ; W(z) не учитывает коэффициент передачи ИИЭ равный 1/T.


      ПФ системы с экстраполятором осуществляющим АМ первого или второго рода



      Найдем изображение Лапласа для частично заполненного импульса:

      Тогда Z-изображение экстраполятора и непрерывной части со звеном запаздывания:

      где: e = 1 - g ; W(z) не учитывает коэффициент передачи ИИЭ равный 1/T.
      Если g << 1, то e -gTs » 1 - gTs, тогда:

      К этой формуле, в первом приближении, сводится и АМ второго рода.


      ПФ замкнутой импульсной системы



      Опишем систему в изображениях Лапласа:


      те.:
      • ПФ по ошибке Fx может быть получена решением системы относительно ошибки x.
      • Поскольку запаздывание не определяет свойства системы в области низких частот, практически всегда для оценки качества могут быть использованы формулы


      (осталась особенность - "W1W2(z)", см. правило 2 преобразования структурных схем)


      ПФ звена чистого запаздывания


      Свойства звена таковы, что y(t)= x(t-t), где t - запаздывание, а x(t-t) = 0 при 0 < t < t.
      Разложим правую часть уравнения (т.е. выходной сигнал) в ряд Тейлора:

      или

      т.е.:



      ПЛАН РАЗВИТИЯ ДАННОГО РУКОВОДСТВА


      1. Разработка лабораторных работ для второго семестра (нелинейные и цифровые системы) (к февралю 2001г.).
      2. Дальнейшая взаимная интеграция моделей из разных моделирующих пакетов. Организация одновременной работы моделей (в разных пакетах) в динамическом режиме посредствам технологий динамического обмена данными (DDE - dinamic data exchange, на базе ActiveX). Пример: регулятор в пакете Electronics Workbench, объект в пакете VisSim, - должны работать совместно.
      3. Разработка моделей, предполагающих наличие в контуре модели реального технического устройства, подключенного посредством платы сбора данных - (DAQ-board).
      4. Подготовка моделей для альтернативных моделирующих пакетов, например "МВТУ" (если будет договоренность с разработчиками).
      30.10.2000
      Сделать "D-разбиение" по вариантам см. задачник.
      1. Цель работы 2. Предварительное домашнее задание 3. Содержание работы
      4. Обработка результатов 5. Методические указания к моделированию и рекомендации к содержанию отчета 6. Контрольные вопросы
      Работа 4
      3.7. Провести исследование устойчивости модели электронного усилителя на трехкаскадном ОУ (файлы ou3.vsm и ou2+1.ca4)
      3.8. Исследовать влияние контурного коэффициента усиления на полосу пропускания замкнутой системы на примере электронного усилителя на ОУ.
      Работа 5?[err_pid.vsm] [PIDTUNE.vsm]
      Выяснение сути корневых методов оценки качества.
      Работа 6?[ASTATIC.vsm]
      Изучение основных методов повышения точности САР: 1) увеличение коэффициента усиления разомкнутой цепи, 2) применение регулирования по производным от ошибки с увеличением контурного коэффициента усиления, 3) повышение степени астатизма, 4) применение неединичных обратных связей или масштабирующих устройств на входе / выходе и 5) комбинированного управления.
      4.3. Выполнить количественное исследование результатов применения методов повышения точности САР на основе исследований (измерений) ошибки x(t). По необходимости рекомендуется использовать тест-сигналы задания g(t): единичную ступенчатую функцию 1(t), синусоидальный, меняющийся с постоянной скоростью или ускорением (см. сигнал g(t) в файле err_ast3.vsm). Для измерений ошибки рекомендуется использовать: датчики скорости и ускорения (дифференцирующие звенья), преобразователи построенные в соответствии с интегральными оценками качества, а так же измерители действующего или средневыпрямленного значений. Выбор схемы измерения ошибки x(t) следует обосновать.
      3.6. Определить первые коэффициенты ошибок систем до и после применения методов повышения точности.
      (можно измерить первые коэффициенты ошибок систем до и после повышения точности).

      4.1. Один из методов повышения точности САР - это повышение степени астатизма. Метод реализуется применением либо интегрирующего, либо изодромного звена включаемого в разрыв контура регулирования. Качественно описать результаты применения упомянутых технических решений (в сравнении). Сформулировать достоинства, недостатки (ограничения в применении). Привести поясняющие графические зависимости (информацию удобно представить в режиме пререкрытия графиков).
      Работа 8 [Ak_wk.vsm] [wo.vsm]
      Среди предложенных моделей идентифицировать устойчивые в разомкнутом состоянии.
      3.2. Для неустойчивых в разомкнутом состоянии систем спроектировать последовательные компенсационные звенья.



      Полное представление объекта в OMT



      Полное представление объекта в OMT




      Полоса (bandwidth)


      Ширина полосы рабочих частот фильтра. Для полосового и режекторного фильтров оценивается по пересечению их ЛАЧХ с уровнем -3дБ. Для полософормирующего фильтра - по пересечению их ЛАЧХ с её средним уровнем (dBgain/2). Для фильтра-ступени - это длина наклонного участка


      Понятие о начальных условиях модели (Initial Condition)


      Если рассматривать первый шаг симуляции (n=0), то из сотен библиотечных блоков только те, что обладают эффектом памяти, могут иметь на своих выходах ненулевые значения y[-1]. Эти значения называются начальными условиями и устанавливаются вручную для блоков 1/S и 1/Z (а так же для тех, что построены на их основе).
      Реальные системы начинают функционировать при самых разных начальных условиях. Взлет самолета заправленного на столько-то процентов. Сброс воды из водохранилища с такого-то уровня. Повторное включение электрической схемы, в которой конденсаторы не разрядились полностью. Самовозбуждение машины постоянного тока от остаточного магнитного потока такой-то величины. Охлаждение утюга до комнатной температуры от нагретого до такой-то температуры состояния. Самостоятельный разгон ракеты, которой начальную скорость придал несущий ее самолет. Функционирование логической схемы с элементами памяти (с триггерами) от предустановленного состояния и т.д.


      Понятие о переходном процессе конечной длительности



      Принципиальным недостатком линейных систем является тот факт, что любой переходный процесс будет иметь бесконечную длительность. Это объясняется тем, что при уменьшении значений сигналов на входах интеграторов пропорционально уменьшается скорость изменения их выходных координат. Т.е. если в линейной астатической системе ошибка становится меньше, то тут же понижается скорость ее компенсации по цепи ООС (см. Рисунок , кадр 1).
      Если же на некоторое время периодически замораживать сигнал в цепи ООС, то скорость изменения выходной координаты интегратора в течение периода "заморозки" уменьшаться не будет, а при правильном подборе периода "заморозки" можно добиться переходного процесса конечной длительности, завершающегося за один или же два цикла (см. Рисунок , кадры 2 и 3).
      Следует отметить, что подобная импульсная система на время "заморозки" сигнала ООС приобретает все достоинства и недостатки не имеющих ОС систем.


      Понятие о среднегеометрическом корне W0 Мажоранта и миноранта переходной функции


      Пусть имеем характеристическое уравнение:
      a0 s n + a1 s n-1 + ... + an-1 s + an = 0 .
      Приведем его к нормированному виду (разделим на an и выполним подстановку
      ):
      q n + a1/an (W0 q) n-1 + ... + ak/an (W0 q) n-k +...+ 1 = 0 ,
      где:

      Для приведенного уравнения время будет безразмерным t = W0 t, переходная функция h(t) в случае кратных вещественных корней или одной пары комплексных будет ограничена минорантой и мажорантой:

      где: u(h, t) = e -ht [1 + (ht)1/1! + (ht)2/2! + ... + (ht)n-1/(n-1)! ] - разложение в ряд Тейлора огибающей той составляющей в пререходном процессе, корень которой ближе к оси "+j".
      На Рисунок демонстрируется, что любой переходный процесс в любой системе будет затухать тем медленней, чем больше корней вблизи оси "+j".


      Построение НЧ части желаемой ЛАЧХ




      1. Ke > Ke треб, но: затруднено демпфирование и увеличиваются ВЧ шум.
      2. Kv > Kv треб, но: увеличиваются НЧ шум.
      3. Истинная ЛАЧХ должна быть поднята на 3 дБ, для компенсации ослабления в 1,4142 раза в зоне частоты сопряжения.



      Построение областей устойчивости Dразбиение


      Пусть имеем произвольную передаточную функцию систем:
      ,
      и требуется оценить влияние разброса параметров на устойчивость.
      Выделим два параметра (K и Ti), влияние которых на устойчивость следует оценить. Остальные параметры зафиксируем. Воспользуемся алгоритмом:

      Итог итерационного алгоритма - область устойчивости (D-разбиение) ограниченная осями и графиком (уменьшение K и одной из постоянных времени объекта, как правило, положительно сказывается на устойчивости).
      При заданной частоте существует только одна координата (K, Ti), которой будет соответствовать положение системы на границе устойчивости.
      Наиболее удобно в итерационном алгоритме для системы любого порядка использовать критерий Михайлова, тогда уравнение границы:
      D(jw) = 1+ W(jw) = 1 + R(jw)/Q(jw) = R(jw) + Q(jw) = 0,
      т.е. K (1 + T3(jw)) ... + jw(1 + T1(jw)) (1+T2(jw)) ... = 0


      Построение ВЧ части желаемой ЛАЧХ


      Исходные данные: w0 иT1 - определены при построении НЧ части желаемой ЛАЧХ.
      Для систем с астатизмом 2-ого порядка:
      • Задаются перерегулированием s и определяют M:
        s, % 13,8 26,5 37,2 44,6
        M 1,1 1,3 1,5 1,7
      • Зная M, определяют положение постоянной времени T2 (начало корректирующего участка):; и его длину:
      • Проверяют, чтобы резонансные пики высокочастотных колебательных звеньев не достигали вновь уровня 20lg M/(M+1).



      Если это невозможно, то формируют участок -20 дБ/дек аналогично методике для систем с астатизмом 2-ого порядка.


      Поточная модель управления (Data Flow)


      Модель программирования, в которой инструкции, процедуры или функции выполняются только тогда, когда все входные данные (т.е. параметры и аргументы) готовы. Все потенциальные возможности программ с поточной моделью управления можно оценить, ознакомившись с программным комплексом LabVIEW (это не моделирующая программа, а лишь блестящий пример возможностей технологии). Вторая технология наиболее понятно и открыто представлена в программе Dynast.


      Поточная модель управления (Data Flow)


      Модель программирования, в которой инструкции, процедуры или функции выполняются только тогда, когда все входные данные (т.е. параметры и аргументы) готовы. Альтернативной моделью программирования является командное управление (Control Flow) в которой счетчик команд контролирует переход в памяти программ от одной команды к другой при их последовательном выполнении. Рассмотрим пример:
      Система уравнений модели
      составленная пользователем
      Упорядоченный программой
      информационный поток
      a) w = log(r)
      b) e = 1
      c) r = e - q
      d) q = sin(e)
      1) e = 1
      2) q = sin(e)
      3) r = e - q
      4) w = log(r)
      Для написания программ (создания моделей) используются графические языки, с помощью которых выполняется описание процессов преобразования данных в форме функциональных схем, блок-схем, схем физических принципиальных, мнемосхем, и прочее. Представим блок-схему для рассмотренного в примере информационного потока.

      Статический информационный поток, составленный с помощью элементарных библиотечных блоков программы VisSim
      Анализируя рисунок, легко заметить, что в любом информационном потоке данные распространяются от источников сигнала к приемникам. Очевидно, что в одном потоке могут существовать ветви, параллельные каналы и обратные связи. Могут существовать зависимые и независимые параллельные потоки. В случае если с течением времени источники сигнала меняют свое значение, то появляется смысл в повторном расчете потока. Такой информационный поток называется динамическим, а каждый повторный расчет называется шагом симуляции. Наиболее развитые языки графического программирования (G-язык среды программирования LabVIEW) кроме формирования информационных потоков позволяют программировать их исполнение, а в случае определения независимых параллельных потоков (мультизадачности) обеспечивают требуемый вид синхронизации.


      Потоки данных



      Потоки данных


      Активные объекты Активным называется объект, который обеспечивает движение данных, поставляя или потребляя их. Активные объекты обычно бывают присоединены к входам и выходам ДПД. Примеры активных объектов показаны на рисунке 2.62. На ДПД активные объекты обозначаются прямоугольниками.


      Поток управления



      Поток управления


      На рисунке 2.64 изображен пример потока управления: клиент, желающий снять часть своих денег со счета в банке, вводит в ATM пароль и требуемую сумму, однако фактическое снятие и выдача денег происходит только в том случае, когда введенный пароль совпадает с его образцом. Несмотря на то, что потоки управления иногда оказываются весьма полезными, следует иметь в виду, что включение их в ДПД приводит к дублированию информации, входящей в динамическую модель.


      Поведение объекта "термостат"



      Поведение объекта "термостат"


      Модель взаимодействия объектов - это набор представлений проектируемой системы, на которых показаны взаимодействия объектов между собой и с окружением системы (см. рисунок 4.3).


      Повышение точности САР


      Задача повышения точности САР обычно предполагает существенный пересмотр ее структуры. Возможны замены или добавления отдельных звеньев в контуре.
      Общими методами повышения точности САР являются:
      1. Увеличение коэффициента усиления K разомкнутой цепи
      2. Повышение порядка астатизма r
      3. Применение регулирования по производным
      4. Использование комбинированного управления
      5. Введение неединичных обратных связей
      6. Включение масштабирующих устройств на входе или выходе



      Повышение точности систем применением регулирования по производным от ошибки


      Использование регулирования по производным от ошибки, позволяет повысить точность системы, поскольку:
      1. Система начнет чувствовать не просто наличие ошибки, но и тенденцию к ее изменению.
      2. Повышается запас устойчивости по фазе и можно поднять общий коэффициент усиления.




      Сравнивая полученные коэффициенты с исходными можно увидеть, что все, кроме c0, уменьшаются. При соответствующем выборе Td можно обратить в ноль один из старших коэффициентов c1, или c2, или ...
      Последовательное включение 2х пропорционально-дифференцирующих элементов, позволяет обратить в ноль два старших коэффициента ошибки.


      Повышение точности систем применением комбинированного управления


      САР является инвариантной по отношению к задающему или возмущающему воздействию, если после завершения переходного процесса, определяемого начальными условиями, ошибка системы не зависит от этого воздействия.
      Руководство по администрированию UNIX System V тут


      Повышение точности систем увеличением порядка астатизма


      Повышение порядка астатизма используется для устранения установившихся ошибок в типовых режимах движения.




      где: Kv = Ki K ; Ke = Ki1 Ki2 K.
      Очевидно, что последовательное включение уже 2-х интеграторов приведет к появлению структурной неустойчивости, когда ни при каком значении общего коэффициента усиления невозможно получить устойчивую систему.
      Это затруднение можно преодолеть использованием изодромных устройств:



      Поскольку постоянные времени изодромных устройств Ti, обычно, самые большие в системе, то определенные ими составляющие в переходном процессе затухают наиболее медленно, ухудшая тем самым динамические свойства системы. Это видно и по необращенным в ноль коэффициентам ошибок, поскольку коэффициент усиления интегратора в изодромном устройстве Ki=1/Ti обычно меньше единицы.


      Повышение точности систем увеличением коэффициента усиления


      Рассмотрим задачу повышения точности системы второго порядка, состоящей из 2х апериодических звеньев.



      будет тем меньше, чем больше K.
      Очевидно так же, что первые коэффициенты ошибок не будут равны нулю, но будут тем меньше, чем больше K:

      Т.е. увеличение K уменьшает ошибки во всех типовых режимах.
      Метод эффективен, широко применяется, но обычно увеличение K приводит к уменьшению запаса устойчивости (см. ЛАЧХ & ЛФЧХ)


      Правила построения асимптотических ЛАЧХ& ЛФЧХ


      Правила построения асимптотических ЛАЧХ & ЛФЧХ, точнее каждого слагаемого выражения (2) показаны на рисунках.


      Точность асимптотических ЛАЧХ & ЛФЧХ достаточна в большинстве случаев. Для звеньев первого порядка максимальная амплитудная ошибка вблизи частоты сопряжения составляет 3 дБ. Максимальная фазовая ошибка - 6%. Фрагмент ЧХ колебательного звена вблизи резонансной частоты лишь иногда следует уточнить по опорным справочным кривым для данного z.


      Правила преобразования структурных схем линейных систем


      Декомпозиция любой линейной системы на модули (модуляризация) эквивалентна ее представлению с помощью типовых динамических звеньев. Блок-схема может содержать большое количество звеньев, и их соединение может быть произвольным. Существует лишь два основных правила преобразования структурных схем линейных систем.
      • Результирующая ПФ-я двух последовательно включенных блоков равна произведению их ПФ-ий.
      • Результирующая ПФ-я двух параллельно включенных блоков равна сумме их ПФ-ий.

      Для упрощения более сложных соединений следует пользоваться принципом суперпозиции, как показано на рисунке.

      Поскольку в логарифмическом домене операция умножения осуществляется сложением, результирующая ЛАЧХ последовательно включенных звеньев получается сложением исходных. Построение результирующей ЛАЧХ параллельно включенных звеньев выполняется по огибающей исходных. Здесь действует принцип – если один из параллельных каналов с изменением частоты сигнала перестает его пропускать, то сигнал проходит по второму параллельному каналу.


      Предмет проблематика задачи и


      Рабочие файлы: [САР]


      Представление зависимости в виде класса



      Представление зависимости в виде класса




      Прерыватель алгебраических петель (инициаторпотока материи)


      Модель прерывателя алгебраических петель – есть модель источника движущей силы нулевой величины (сравни структурные схемы). Включение идеального источника движущей силы нулевой величины в разрыв любой ветви энергетической цепи, не может изменить режим ее работы (это обусловлено нулевым внутренним сопротивлением такого источника).

      Существуют модели фрагментов энергетических цепей без источников энергии, движение материи в которых вызвано ненулевыми начальными условиями на реактивных элементах. Например, модель процесса разряда конденсатора на активное сопротивление. Если проанализировать блок-схемы потребителей энергетических цепей, то становится очевидным факт возможного появления алгебраических петель, а так же простых кольцевых замыканий линий связи (смотри проводники с зелеными контактами, передающие величину потока). Как было показано ранее, включение прерывателя алгебраических петель в RC-цепь не меняет режим ее работы, но инициирует в ней поток материи и разрывает алгебраические петли, – в этом и заключено его назначение.
      Таким образом, прерыватель алгебраических петель – это служебный элемент моделирующей программы, который используется последней, для показанных нужд, автоматически (по мере необходимости). Он не входит в базовые библиотеки элементов и его присутствие в ненаправленном графе (в схеме физической принципиальной) ни как не отражается.


      Приглашение к членству в дискуссионной группе "Симуляция движения" (моделирование)


      Уважаемые коллеги, приглашаем Вас вступить в почтовую дискуссионную группу "Симуляция движения". Будучи членом группы вы сможете обратиться с актуальными для вас вопросами к ведущим специалистам России в области моделирования. Сегодня почетными членами группы являются три коллектива разработчиков программ математического моделирования динамических систем:
      • Peter Darnell, президент фирмы Visual Solutions, Inc., которая разрабатывает пакет VisSim и Клиначёв Николай Васильевич, координирующий русскоязычных пользователей пакета VisSim.
      • Козлов Олег Степанович, представитель московского коллектива разработчиков пакета MBTY (Моделирование В Технических Устройствах).
      • Сениченков Юрий Борисович, представитель санкт-петербургского коллектива разработчиков программы MVS (Model Vision Studium).

      Дискуссии в группе связаны с аспектами использования специализированных пакетов математического моделирования динамических систем – VisSim, Simulink (MATLAB), SystemBuild (MATRIXx), Anylogic (Model Vision Studium), MBTY, 20-sim, ITI-SIM, DyMoLa, SIMPLORER, DYNAST, hAMSter, Easy5, DASE, Electronics Workbench и т.д. Наиболее активными членами группы являются преподаватели дисциплины "Теория систем автоматического регулирования" и аспиранты соответствующих кафедр. Так же мы рады студентам.
      Ключевые слова для обсуждаемых тем: симуляция движения, моделирование, управление; системы (объекты) линейные, нелинейные, непрерывные, дискретные, гибридные; инструменты частотные, корневые, вариационные, нейронные, компилирующие, оценки качества, устойчивости, быстродействия, синтеза, коррекции, оптимизации, линеаризации, программирования цифровых сигнальных процессоров - DSP, отладки в контуре модели реальных объектов.
      Дискуссионные группы работают 24 часа в день, 7 дней в неделю, 365 дней в году. Их тысячи. Их работа контролируется почтовыми роботами. Робот – это специальная программа, работающая с почтой на сервере в сети. Именно она обеспечит вам общение с членами группы. Процедура следующая. Вы пишите письмо и направляете его в группу (роботу). Робот проверяет, являетесь ли вы членом группы, и, если это так, то рассылает ваше письмо всем членам. Любой член группы может написать вам ответ. Таким образом, для участия в дискуссиях вам необходимо иметь лишь желание общаться и адрес электронной почты (e-mail).
      АДРЕСНАЯ ИНФОРМАЦИЯ ДЛЯ УПРАВЛЕНИЯ ПОДПИСКОЙ
      (команды почтовому роботу)

      Подписка (вступление в группу):
      vissim-subscribe@yahoogroups.com
      пустое
      письмо
      Почтовое сообщение ко всем членам (доступно только члену группы):
      vissim@yahoogroups.com
      Прекращение членства:
      vissim-unsubscribe@yahoogroups.com
      пустое
      письмо
      Письмо ведущему:
      vissim-owner@yahoo...
      Приостановка подписки (вы ушли в отпуск):
      vissim-nomail@yahoogroups.com
      пустое
      письмо
      Переход в режим дайджеста (удобен для наблюдателей):
      vissim-digest@yahoogroups.com
      пустое
      письмо
      Возврат в нормальный режим:
      vissim-normal@yahoogroups.com
      пустое
      письмо
      Изменение почтовых настроек:
      http://groups.yahoo.com/mygroups
      Адрес группы:
      http://groups.yahoo.com/group/vissim
      Поясним порядок вступления в группу:
      1. Вы посылаете пустое письмо по адресу vissim-subscribe@yahoogroups.com. Его получает робот группы, и, минут через 15, Вы получите его ответ. Поскольку сервис Yahoo является международным, ответ робота будет на английском языке. Суть письма, сформированного для вас роботом, состоит в том, что вам предлагается два способа подтверждения подписки.
      2. Для подтверждения вашего желания подписаться рекомендуется просто отослать письмо робота обратно, воспользовавшись кнопкой "Ответить отправителю" в инструментальной панели почтовой программы (ни каких изменений в письме делать не нужно). Получив ваш ответ, робот включит вас в список членов группы, вышлет вам приветственное сообщение и правила дискуссионной группы (уже на русском языке).
      3. После получения правил дискуссионной группы вы можете приступать к общению с ее членами. Для этого нужно писать письма по адресу vissim@yahoogroups.com.

      По адресу группы имеются дополнительные возможности:
      • В архив, доступный членам группы, можно положить свою интересную модель.
      • Вы найдете коллекцию интересных нашей группе ссылок и внесете свои.
      • Можете инициировать голосование и принять в нем участие.
      • Можете обсудить вопросы в тематическом web-форуме.
      • Составить краткую справку о себе для членов группы.
      • Настроить способ получения почты.

      Если сейчас у вас нет возможности отправить письмо (т.е. вы за чужим компьютером) – воспользуйтесь желтой формой, которая приведена ниже.
      Online подписка на VisSim
      Сервис groups.yahoo.com
      PS Более 650 российских специалистов в области АСУ ТП уже выбрали подобный инструмент общения (asutp-subscribe@yahoogroups.com), оценив этот сервис выше услуг серверов новостей (группа news:fido7.ru.scada SCADA - системы автоматизации). Есть группа, обсуждающая вопросы использования в России программной и аппаратной продукции корпорации National Instruments (LabVIEW_ru-subscribe@yahoogroups.com).
      19.10.2000


      Приложение А Таблица соответствия


      Энергетический домен
      Координата первого рода Координата второго рода
      Электрический электрический ток i [А] электрическое напряжение u [В]
      Магнитный магнитный поток Ф [Вбс-1] магнитное напряжение H l [А]
      Температурный тепловой поток Ф [Дж К-1 с-1] температура q [К]
      Гидравлический поток объема (расход) Q [м3 с-1] давление p [Н м-2]
      Акустический поток объема (расход) Q [м3 с-1] давление p [Н м-2]
      Механический сила F [Н] скорость v [м с-1]
      Ротационный момент M [Н м] угловая скорость w [рад с-1]


      Приложение Б Таблица названий законов Кирхгофа для разных энергетических доменов


      Энергетический
      домен

      Интерпретации законов Кирхгофа
      Постулат Непрерывности Постулат Совместимости
      Электрический первый закон Кирхгофа второй закон Кирхгофа
      Магнитный непрерывности магнитного потока Закон Ампера о магнитной цепи
      Температурный обратимого равновесия энтропии zeroth закон термодинамики
      Гидравлический закон сохранения массы принцип суперпозиции давления
      Акустический закон сохранения массы принцип суперпозиции давления
      Механический динамического равновесия сил принцип суперпозиции движеня
      Ротационный динамического равновесия моментов принцип суперпозиции движеня


      Приложение Г Таблица физических


      Домен 1 2 3 4 5 6 7
      Электрический 1
      Магнитный 2
      Температурный 3
      Гидравлический 4
      Акустический 5
      Механический 6
      Ротационный 7


      Приложение В Таблица вариаций форм записи закона Ома в каждом энергетическом домене


      Энергетический
      домен
      Название технического устройства и формулировка закона Ома
      активный элемент реактивный элемент 1 реактивный элемент 2
      Электрический
      Магнитный
      Температурный
      Гидравлический
      Акустический
      Механический
      Ротационный


      Пример импульсной системы



      1 - импульсное звено - ключ с ШИМ; 2 - непрерывное звено - фильтр с нагрузкой; изменение +U можно рассматривать как возмущение f(t)
      Система линейна, если линеен ШИ-модулятор. Если Rн меняется, то система дополнительно будет параметрической.


      Примеры агрегации



      Примеры агрегации




      Примеры процессов



      Примеры процессов


      Процессы реализуются в виде методов (или их частей) и соответствуют операциям конкретных классов. Потоки данных Поток данных соединяет выход объекта (или процесса) со входом другого объекта (или процесса). Он представляет промежуточные данные вычислений. Поток данных изображается в виде стрелки между производителем и потребителем данных, помеченной именами соответствующих данных; примеры стрелок, изображающих потоки данных, представлены на рисунке 2.61. На первом примере изображено копирование данных при передаче одних и тех же значений двум объектам, на втором - расщепление структуры на ее поля при передаче разных полей структуры разным объектам.


      Пример атрибута зависимости



      Пример атрибута зависимости


      Еще один пример зависимостей, имеющих атрибуты, показан на рисунке 2.11. Из примера видно, что зависимость может иметь несколько атрибутов. Кроме того, на рисунке 2.11 указаны роли различных объектов в зависимости (подробнее см. ниже). Зависимость руководит на этом рисунке удобнее именовать как начальник-сотрудник.


      Пример гомоморфизма



      Пример гомоморфизма


      Общий случай гомоморфизма показан на рисунке 2.35. Гомоморфизм отображает связи, определяемые зависимостью u, в связи, определяемые зависимостью t, являясь отображением типа "много-в-один". Гоморфизмы обычно используются при изучении связей между метаобъектами и порождаемыми ими объектами (описание детали в каталоге может рассматриваться как метадеталь).


      Пример класса и объекта этого класса



      Пример класса и объекта этого класса


      Объединение объектов в классы позволяет ввести в задачу абстракцию и рассмотреть ее в более общей постановке. Класс имеет имя (например лошадь), которое относится ко всем объектам этого класса. Кроме того, в классе вводятся имена атрибутов, которые определены для объектов. В этом смысле описание класса аналогично описанию типа структуры (записи); при этом каждый объект имеет тот же смысл, что и экземпляр структуры (переменная или константа соответствующего типа). Пример класса и объекта этого класса приведен на рисунке 2.1.


      Пример сценария: разговор по телефону



      Пример сценария: разговор по телефону

      Следующим этапом после разработки и анализа сценариев является определение объектов, генерирующих и принимающих каждое событие сценария. Последовательности событий с привязкой к объектам проектируемой системы удобно представлять на диаграммах, называемых трассами событий. Пример трассы событий для разговора по телефону представлен на рисунке 2.45. Вертикальные линии изображают на этой диаграмме объекты, а горизонтальные стрелки - события (стрелка начинается в объекте, генерирующем событие, и заканчивается в объекте, принимающем событие). Более поздние события помещены ниже более ранних, одновременные - на одном уровне.


      Пример системы с уровневой архитектурой



      Пример системы с уровневой архитектурой


      Разделы Разделы подразделяют систему на несколько независимых или слабо связанных модулей (подсистем), каждая из которых обеспечивает один из видов услуг. Например, операционная система компьютера включает систему файлов, управление процессами, управление виртуальной памятью и управление устройствами. Обычно система подразделяется на модули (подсистемы) с использованием обоих способов разбиения в самых разных комбинациях: уровни делятся на разделы, разделы содержат в себе уровни. Пример такой структуры системы показан на рисунке 3.2.


      Принцип 1 (для шин)


      Все элементы и узлы ненаправленного графа соединяются шинами, в которых есть два проводника распространяющие сигналы в противоположных направлениях. (Упомянутые сигналы – это физические величины первого и второго рода конкретного энергетического домена, для которых формулируются постулаты о сохранении материи и энергетического потенциала).


      Принцип 2 (для элементов)


      Все элементы графа должны быть двухвыводными. (Схема замещения любого устройства с большим количеством выводов должна состоять из фундаментальных двухвыводных элементов и узлов). Оба вывода у элементов должны быть оборудованы разъемами для подключения двухпроводных шин.
      Продукты Pinnacle тут


      Принцип 3 (для узлов)


      Узлы бывают двух типов: распределяющие и аккумулирующие. Узлы ненаправленного графа трехвыводные. (Узлы, в которых сходится большее количество ветвей, строятся каскадированием трехвыводных узлов). Каждый вывод узла должен иметь разъем для подключения двухпроводных шин.


      Принцип 4 (для разъемов)


      Элементы графа и его шины оборудуются разъемами "мама" и "папа". Половина узлов ненаправленного графа оборудуется одним разъемом "папа" и двумя разъемами "мама". Вторая половина узлов оборудуется одним разъемом "мама" и двумя разъемами "папа". (Графический интерфейс моделирующих программ не должен отображать этой особенности ненаправленного графа. Программы самостоятельно выбирают тип узлов, "скрыто переворачивают" элементы графа и шины для правильной коммутации).


      Принцип поточного исполнения блоксхем (моделей)


      Программы математического моделирования динамических систем относятся к графическим средам разработки иерархически структурированных программ верхнего уровня, и часть из них основана на поточной модели управления. Поточная модель управления – это основополагающее понятие для таких програм, как VisSim, MBTY, Simulink, Easy5. Приведем определение:


      Принцип управления по отклонению


      Система описывается передаточной функцией разомкнутой системы и уравнением замыкания: x(t)= g(t) - y(t) Woc(p). Алгоритм работы системы заключен в стремлении свести ошибку x(t) к нулю.
      Достоинства:
      • ООС приводит к уменьшению ошибки не зависимо от факторов ее вызвавших (изменений параметров регулируемого объекта или внешних условий).

      Недостатки:
      • В системах с ОС возникает проблема устойчивости.
      • В системах принципиально невозможно добиться абсолютной инвариантности к возмущениям. Стремление добиться частичной инвариантности (не 1-ыми ОС) приводит к усложнению системы и ухудшению устойчивости.



      Принцип управления по внешнему возмущению


      В структуре обязательны датчики возмущения. Система описывается передаточной функцией разомкнутой системы.
      Достоинства:
      • Можно добиться полной инвариантности к определенным возмущениям.
      • Не возникает проблема устойчивости системы, т.к. нет ОС.

      Недостатки:
      • Большое количество возмущений требует соответствующего количества компенсационных каналов.
      • Изменения параметров регулируемого объекта приводят к появлению ошибок в управлении.
      • Можно применять только к тем объектам, чьи характеристики четко известны.



      Принципы автоматического регулирования


      По принципу управления САУ можно разбить на три группы:
      1. С регулированием по внешнему воздействию - принцип Понселе (применяется в незамкнутых САУ).
      2. С регулированием по отклонению - принцип Ползунова-Уатта (применяется в замкнутых САУ).
      3. С комбинированным регулированием. В этом случае САУ содержит замкнутый и разомкнутый контуры регулирования.



      Приведенные весовая и передаточная функции разомкнутой импульсной системы


      • Если ИИЭ выдает решетчатую функцию, то можно ввести понятие "приведенной весовой функции" - wп. Это отношение выходного сигнала y(t) к значению единственной дискреты xo поданной на вход экстраполятора.
      • Если ИИЭ выдает последовательность типа d-функций, то для непрерывной части совместно с экстраполятором можно вывести понятие приведенной непрерывной передаточной функции:
      Wп(s)= Wэ(s) Wo(s), при этом Wп(s) = L{ wп(t) }.


      Привязка событий к объектам банковской сети



      Привязка событий к объектам банковской сети


      Построение диаграмм состояний начинается с привязки событий к объектам банковской сети (см. рисунок 2.56), являющимся источниками этих событий. Сначала рассматриваются нормальные события, потом исключительные события. Построение диаграммы состояний объекта (класса) может считаться законченным, когда диаграмма охватывает все рассматриваемые сценарии. Диаграммы состояний объектов классов ATM (банкомат), консорциум и банк представлены на рисунках 2.57, 2.58 и 2.59 соответственно.


      Проблематика задачи и цели моделирования


      В теории моделирования основными являются проблемы: разработки универсальных подходов к построению моделей, точности симуляции движения их координат, оценки величин погрешностей, адекватности получаемых результатов, идентификации изучаемых систем, синтеза технических устройств и гипотез.
      Задачи общей теории моделирования заключаются в решении перечисленных проблем. При поиске решений используются:
      1. Методы теории подобия
      2. Методы теории расчета цепей
      3. Методы теории систем автоматического управления
      4. Численные методы

      Глобальными целями моделирования являются вопросы изучения природы систем, возможностей их структурного развития и прогнозирование поведения.


      Процессы верхнего уровня в системе обслуживания банковской сети



      Процессы верхнего уровня в системе обслуживания банковской сети


      На ДПД каждого уровня указываются элементы данных более высоких уровней, чтобы показать данные, обрабатываемые каждым процессом (см. рисунок 2.68). Большая часть систем содержит внутренние хранилища данных, в которых хранятся данные в периодах между взаимодействиями. Для процесса выполнить проводку таким хранилищем является объект счет. Внутренние хранилища данных отличаются тем, что получаемые ими данные не выдаются немедленно, а хранятся в объекте для использования в будущем.


      Производный атрибут



      Производный атрибут


      На рисунке 2.32 показан производный атрибут возраст класса человек, возраст определяется как разность значений объекта текущая_дата (соответствующий класс также показан на рисунке) и атрибута дата_рождения объекта класса человек. На рисунке 2.33 показано, что объект класса машина состоит из нескольких объектов класса узел, каждый из которых может состоять из объектов класса деталь. Каждый узел характеризуется смещением в системе координат, связанной с машиной, а каждая деталь характеризуется смещением в системе координат, связанной с узлом. Для удобства можно для каждого объекта деталь определить систему координат, в которой координаты вычисляются с помощью координат объекта машина, смещения объекта узел и смещения объекта деталь. Эта система координат может быть представлена в производном классе смещение, который связан с каждым объектом деталь производной зависимостью чистое_смещение. Поскольку в реальном мире наблюдается большая избыточность, в объектные модели удобно вводить большое количество производных сущностей.


      Производный объект и производная зависимость



      Производный объект и производная зависимость


      Гомоморфизмы Гомоморфизм - это отображение между двумя зависимостями (как показано на рисунке 2.34). Например, деталь, описанная в каталоге деталей автомобиля, может содержать в себе другие детали (составная деталь), также описанные в этом каталоге. Каждая позиция каталога снабжена номером модели; каждая деталь характеризуется своим серийным номером, причем каждая составная деталь содержит в себе соответствующие детали, также имеющие свои серийные номера. На рисунке 2.34 показаны классы, соответствующие физическим деталям (класс деталь) и их описаниям в каталоге (класс модель_детали), а также зависимости между такими классами (поскольку речь идет о сложных деталях, эти зависимости являются агрегациями зависимости содержит). На рисунке показано отображение диаграмм объектных моделей, соответствующих физическим деталям, в диаграмму объектной модели, соответствующей каталогу. При этом следует иметь в виду, что поскольку разным физическим деталям одного вида (номенклатуры) соответствует одно описание в каталоге, рассматриваемое отображение как бы "склеивает" все диаграммы объектных моделей, соответствующих физическим деталям, в одну диаграмму объектной модели, соответствующей каталогу. Описанное отображение есть один из наиболее типичных примеров гомоморфизма.


      Пропорциональное регулирование


      Пропорциональный закон регулирования имеет вид:
      u(t) = Wрег(p) x(t) = k1x(t) ,
      тогда в разомкнутом состоянии система будет характеризоваться ПФ:
      W(p) = Wрег(p) Wo(p) = k1Wo(p) .
      Рассмотрим уравнение ошибки:

      В установившемся режиме p®0 (все производные равны нулю); Wo(p)®ko; W(p)®k1ko=k; где k - контурный коэффициент усиления разомкнутой системы (при Wос(p)=1).
      Резюме: P-регулирование позволяет уменьшить установившуюся (статическую) ошибку, но только в 1+k раз, поэтому регулирование будет статическим. Т.е. при любом k xуст№0.


      Псевдокод, соответствующий динамической модели ATM



      Псевдокод, соответствующий динамической модели ATM




      Рабочая программа дисциплины ТАУ


      Для написания собственной рабочей программы Вам следует сохранить архив rp_tau.zip на своем диске, разархивировать содержащийся в нем документ программы MS Word. Внести требуемые изменения и распечатать.
      Предлагаемый макет программы не содержит информацию для служебного пользования (билеты к экзамену, и пр.), поскольку предполагается передача учебно-методического комплекса в данной комплектации студентам.


      Расчет промежуточных переменных


      A = sqrt[ 10^(dBgain/20) ] = = 10^(dBgain/40) (только для полософормирующих фильтров)
      omega = 2*pi*frequency/sampleRate
      sin = sin(omega) cos = cos(omega)
      alpha = sin/(2*Q) = (если задана Q) = sin*sinh[ ln(2)/2 * bandwidth * omega/sin ] (если задана полоса)
      Отношение между шириной полосы и Q: 1/Q = 2*sinh[ln(2)/2*bandwidth*omega/sin] (для ЦФ на основе БЛП) or 1/Q = 2*sinh[ln(2)/2*bandwidth] (для аналогового прототипа)
      beta = sqrt(A)/Q = (только для фильтров-ступенек) = sqrt(A)*sqrt[ (A + 1/A)*(1/S - 1) + 2 ] (если задан наклон горки) = sqrt[ (A^2 + 1)/S - (A-1)^2 ]
      Отношение между наклоном и Q: 1/Q = sqrt[(A + 1/A)*(1/S - 1) + 2]
      ФНЧ: H(s) = 1 / (s^2 + s/Q + 1)
      b0 = (1 - cos)/2 b1 = 1 - cos b2 = (1 - cos)/2 a0 = 1 + alpha a1 = -2*cos a2 = 1 - alpha
      ФВЧ: H(s) = s^2 / (s^2 + s/Q + 1)
      b0 = (1 + cos)/2 b1 = -(1 + cos) b2 = (1 + cos)/2 a0 = 1 + alpha a1 = -2*cos a2 = 1 - alpha
      ПФ: H(s) = s / (s^2 + s/Q + 1) (пик АЧХ = Q)
      b0 = sin/2 = Q*alpha b1 = 0 b2 = -sin/2 = -Q*alpha a0 = 1 + alpha a1 = -2*cos a2 = 1 - alpha
      ПФ: H(s) = (s/Q) / (s^2 + s/Q + 1) (пик АЧХ = 0 dB)
      b0 = alpha b1 = 0 b2 = -alpha a0 = 1 + alpha a1 = -2*cos a2 = 1 - alpha
      Режекторный фильтр или фильтр - пробка: H(s) = (s^2 + 1) / (s^2 + s/Q + 1)
      b0 = 1 b1 = -2*cos b2 = 1 a0 = 1 + alpha a1 = -2*cos a2 = 1 - alpha
      Фазовращающий фильтр: H(s) = (s^2 - s/Q + 1) / (s^2 + s/Q + 1)
      b0 = 1 - alpha b1 = -2*cos b2 = 1 + alpha a0 = 1 + alpha a1 = -2*cos a2 = 1 - alpha
      Полософормирующий фильтр (для эквалайзеров): H(s) = (s^2 + s*(A/Q) + 1) / (s^2 + s/(A*Q) + 1)
      b0 = 1 + alpha*A b1 = -2*cos b2 = 1 - alpha*A a0 = 1 + alpha/A a1 = -2*cos a2 = 1 - alpha/A
      Фильтр - НЧ-ступень-лестница: H(s) = A * (s^2 + (sqrt(A)/Q)*s + A) / (A*s^2 + (sqrt(A)/Q)*s + 1)
      b0 = A*[ (A+1) - (A-1)*cos + beta*sin ] b1 = 2*A*[ (A-1) - (A+1)*cos ] b2 = A*[ (A+1) - (A-1)*cos - beta*sin ] a0 = (A+1) + (A-1)*cos + beta*sin a1 = -2*[ (A-1) + (A+1)*cos ] a2 = (A+1) + (A-1)*cos - beta*sin
      Фильтр - ВЧ-ступень-лестница: H(s) = A * (A*s^2 + (sqrt(A)/Q)*s + 1) / (s^2 + (sqrt(A)/Q)*s + A)
      b0 = A*[ (A+1) + (A-1)*cos + beta*sin ] b1 = -2*A*[ (A-1) + (A+1)*cos ] b2 = A*[ (A+1) + (A-1)*cos - beta*sin ] a0 = (A+1) - (A-1)*cos + beta*sin a1 = 2*[ (A-1) - (A+1)*cos ] a2 = (A+1) - (A-1)*cos - beta*sin


      Распределяющий (материю) узел


      Основу распределяющего узла составляет обслуживаемый неявным решателем трехвыводной сумматор, математическое уравнение которого соответствует постулату о сохранении материи (например, это может быть I закон Кирхгофа). Соблюдение этого постулата обеспечивает датчик неявного решателя (блок constraint) на выходе сумматора. Перераспределение же потоков материи I2 и I3 контролирует второй датчик неявного решателя, фиксирующий разность потенциалов j2 и j3. Если (j2-j3)> 0, то баланс в цепи может быть найден при уменьшении потока I2 и увеличении I3. Если (j2-j3) < 0, то неявному решателю потребуется увеличить поток I2 и уменьшить I3. (Изменения потоков материи приводят к тому, что элементы ненаправленного графа меняют значения соответствующих потенциалов). Таким образом, принцип работы узла состоит в том, чтобы распределить поток материи I1 на потоки I2 и I3 так, чтобы соблюдалось равенство потенциалов j2 и j3 (после нахождения баланса цепи потенциал j1 будет равен потенциалам j2 и j3).



      Различные представления модели топки



      Различные представления модели топки


      Интерпретация и анализ представлений (моделей) проектируемой системы позволяет полностью формализовать описания объектов и получить строгую формальную спецификацию проектируемой системы до начала ее разработки (см. рисунок 4.4).


      Размыкание систем с запаздыванием


      Большинство методов исследования устойчивости или качества систем в качестве входной информации используют ПФ системы для разомкнутого состояния W(s). Звено чистого запаздывания является нелинейным элементом, и затрудняет как аналитический анализ систем, так и машинный (программы математического моделирования не могут выполнять функции анализа для систем с нелинейными элементами). Поэтому либо используют линеаризованные аппроксиматоры звена чистого запаздывания, либо размыкают систему в той ветви, которая содержит звено чистого запаздывания, дабы ПФ имела вид: W(s)= Wo(s) ґ e-ts, где Wo(s) - ПФ части системы без запаздывания.
      Рассмотрим и разомкнем системы с основными вариантами включения звена чистого запаздывания - последовательным, параллельным и в цепи ОС:







      Если звенья чистого запаздывания имеются в разных ветвях структурной схемы, то для исследований используют их аппроксиматоры и машинные методы анализа.


      Внутренняя структурная схема реактивных элементов


      Внутренняя структурная схема реактивных элементов принципиально не отличается от структурной схемы безинерционного потребителя энергии. Различие состоит лишь в способе расчета создаваемого потоком падения напряжения. В частности, реактивный элемент индуктивного характера должен обеспечивать в заданном масштабе (L) тем большую разность потенциалов, чем больше скорость изменения протекающего по нему потока (di/dt). Это падение напряжения вычисляется с помощью блоков unknown (неизвестная) и constraint (баланс_в_нуле) следующим образом (см. блок-схему). На каждом шаге симуляции неявный решатель моделирующей программы с помощью итерационного процесса подбирает такое выходное значение блока unknown, чтобы на входе блока constraint было нулевое значение. Однако интегратор – это блок обладающий эффектом памяти – он разрывает сигнальную цепь – сигнал на его входе на данном шаге симуляции ни как не определяет выходное значение (сигнал на входе интегратора определяет его выходное значение лишь на следующем, в данный момент еще не вычисляемом шаге симуляции). Баланс на входе блока constraint подбирается через цепь верхнего разъема, и ту схему, к которой элемент подключен. Т.е. фактически подбирается не выходное значение интегратора, а поток, протекающий по элементу. Если баланс будет вычислен, то значение сигнала на входе интегратора будет равно производной потока, а на входе делителя – искомому напряжению.

      Приведенное описание принципа работы блок-схемы позволяет легко понять, что установка начального условия на интеграторе (Initial Condition), эквивалентна определению величины начального потока материи по элементу.


      Реактивный элемент емкостного характера должен


      Реактивный элемент емкостного характера должен обеспечивать в заданном масштабе (1/С) разность потенциалов пропорциональную интегралу протекающего по нему потока i, что и обеспечивается блок-схемой показанной на рисунке.

      Установка начального условия на интеграторе данной блок-схемы эквивалентна определению величины начального падения напряжения на элементе.


      Реализация двусторонней зависимости



      Реализация двусторонней зависимости


      На рисунке 3.16 показан способ реализации зависимости с помощью таблицы (как в реляционных базах данных).


      Реализация множественного наследования путем делегирования с использованием агрегации ролей



      Реализация множественного наследования путем делегирования с использованием агрегации ролей


      Еще один способ использования делегирования для реализации множественного наследования показан на рисунке 2.24. При этом способе суперкласс, наиболее существенный по передаче своих свойств, остается единственным суперклассом рассматриваемого подкласса, а свойства остальных суперклассов делегируются объектам этого подкласса. Стили и методы программирования тут


      Реализация множественного наследования с использованием простого наследования и делегирования



      Реализация множественного наследования с использованием простого наследования и делегирования


      Возможны и другие способы замены множественного наследования. Во всех случаях при выборе способа замены множественного наследования нужно руководствоваться следующими правилами:
      • если подкласс имеет несколько суперклассов, каждый из которых одинаково существен, лучше всего использовать делегирование (рисунок 2.23);
      • если наиболее существенным является только один из суперклассов, а остальные не так важны, наилучшим способом является реализация множественного наследования через простое наследование и делегирование (рисунок 2.24);
      • если число возможных комбинаций групп наследуемых свойств невелико, можно использовать вложенное простое наследование (рисунок 2.22); в случае большого числа комбинаций этот способ применять не следует;
      • если один из суперклассов передает подклассу намного большее число свойств, чем остальные суперклассы, следует сохранить наследование по этому пути (это возможно в ситуациях, представленных на рисунках 2.22 и 2.24);
      • если решено использовать вложенное простое наследование, то на первый уровень вложенности следует поместить наиболее существенный по передаче свойств суперкласс, затем наиболее существенный из оставшихся суперклассов и т.д. (рисунок 2.22);
      • следует избегать использования вложенного простого наследования (рисунок 2.22), если это ведет к дублированию достаточно больших частей программы;
      • следует помнить, что только вложенное простое наследование (рисунок 2.22) обеспечивает полную тождественность множественному наследованию.


      Реализация множественного наследования с помощью вложенного простого наследования



      Реализация множественного наследования с помощью вложенного простого наследования




      Реализация односторонней зависимости



      Реализация односторонней зависимости


      На рисунке 3.15 показан способ реализации двусторонней зависимости с помощью указателей.


      Реализация стека с использованием наследования(а) и делегирования(б)



      Реализация стека с использованием наследования(а) и делегирования(б)




      Реализация зависимости с помощью таблицы



      Реализация зависимости с помощью таблицы


      При реализации зависимостей с помощью указателей атрибуты зависимостей (связей) переносятся в один из классов, участвующих в зависимости.


      Регистрация документа на Вашем компьютере


      Если Вы часто пользуетесь этим документом, то постоянная активация счетчика статистики в документе будет мешать вам. Вы можете получить у автора пароль, для деактивации счетчика на полгода. Заполните и отправьте форму:
      ФИО: *
      Должность:
      Научное звание:
      Организация (вуз): *
      Город: *
      Область: *
      Укажите сайт, откуда вы скачали этот документ:
      http://
      Какими программами для моделирования
      вы пользуетесь?
      Сообщать вам об обновлениях?

      Если пароль получен вами, то введите его в эту строку:

      Срок действия пароля определен периодом публикации новой версии документа. Если срок истек, и счетчики вновь начали работать, то рекомендуется обновить версию документа. Так же допустимо отключить счетчики повторным вводом пароля на очередные полгода.



      Регулирование с использованием производных


      Регулирование с использованием одного канала, чувствительного к производной сигнала не имеет самостоятельного значения, т.к. сигнал управления:
      u(t) = Wрег(p) x(t) = k4 p x(t) ,
      будет равен нулю при p®0 (т.е. в установившемся режиме). Поэтому обязательно наличие параллельного либо P, либо I-канала, а чаще обоих:
      u(t) = (k1 + k2/p + k4 p) x(t) .
      В таком варианте регулятора управляющее воздействие будет образовываться даже когда x(t)=0, но dx/dt№0. Т.е. наличие параллельного D-канала в регуляторе повышает быстродействие системы и снижает ошибки в динамике.
      Сегодня техническая реализация регуляторов, чувствительных к производным более высоких порядков, затруднена.


      Сценарий для банковской сети, содержащий исключительные ситуации



      Сценарий для банковской сети, содержащий исключительные ситуации

      Для каждого сценария можно составить соответствующую трассу событий (рисунок 2.55). Для этого выделяем в сценарии имена событий (событиями являются все сигналы, вводы данных, решения, прерывания, переходы и действия, выполняемые клиентом или внешними устройствами), указывая для каждого события объект, порождающий это событие (активный объект). Имея трассы событий, можно построить диаграммы состояний объектов проектируемой системы. Банковская сеть есть агрегация определенного числа параллельно и независимо работающих объектов четырех классов: консорциум, банк, ATM (банкомат) и клиент; поэтому состояние банковской сети определяется как кортеж состояний составляющих ее объектов: 1 объекта класса консорциум, b объектов класса банк, a объектов класса ATM (банкомат) и c объектов класса клиент (a, b, c - количество ATM, банков и клиентов сети соответственно). Классификация объектов, используемая при объектно-ориентированном подходе, позволяет вместо a+b+1 диаграмм состояний построить всего три (диаграммы состояний клиентов строить не нужно, так как их текущее состояние ясно и так).


      Семантика (смысл программы с точки...



      Семантика (смысл программы с точки зрения выполняющего ее компьютера) и прагматика (смысл программы с точки зрения ее пользователей)


      Модель содержит не все признаки и свойства представляемого ею предмета (понятия), а только те, которые существенны для разрабатываемой программной системы. Тем самым модель "беднее", а, следовательно, проще представляемого ею предмета (понятия). Но главное даже не в этом, а в том, что модель есть формальная конструкция: формальный характер моделей позволяет определить формальные зависимости между ними и формальные операции над ними. Это упрощает как разработку и изучение (анализ) моделей, так и их реализацию на компьютере. В частности, формальный характер моделей позволяет получить формальную модель разрабатываемой программной системы как композицию формальных моделей ее компонентов. Таким образом, объектно-ориентированный подход помогает справиться с такими сложными проблемами, как
      • уменьшение сложности программного обеспечения;
      • повышение надежности программного обеспечения;
      • обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
      • обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
      Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы. Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования. Объектно-ориентированный подход является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования. Цель данного курса лекций - введение в объектно-ориентированный подход к разработке и реализации прикладных программных систем. Я попытаюсь убедить вас в целесообразности и плодотворности систематического применения объектно-ориентированного подхода на всех этапах жизненного цикла прикладной программной системы (см. рисунок 1.2), начиная с анализа требований к программной системе и ее предварительного проектирования, и кончая ее реализацией, тестированием и последующим сопровождением.


      Шаг симуляции


      Фундаментальный параметр процесса симуляции компьютерной модели. Равен интервалу между временными значениями, для которых вычисляются все координаты модели (т.е. рассчитывается весь поток процедур и функций реализующий модель). При компьютерном моделировании существенными следует считать только три источника погрешности:
      • Трансцендентные функции, которые вычисляются компьютером путем аппроксимации полиномиальными или степенными рядами:
      • Дискретный квазианалог интегратора (блок 1/S).
      • Итерационный решатель (тот или иной классический алгоритм, предназначенный для решения алгебраических уравнений путем подбора независимых переменных до заданной точности).

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

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

      Переходные процессы в системе, вызваны ненулевыми начальными условиями. Частотная характеристика разомкнутой системы очевидна (-40дБ/дек. & -180°). Методу Эйлера с запаздыванием соответствует расходящийся переходный процесс; методу Эйлера с упреждением – сходящийся; методу трапеций – синусоида с постоянной амплитудой


      Схема банкомата (ATM)



      Схема банкомата (ATM)


      Наряду с описанным примером будет рассмотрено достаточно большое число других примеров, предназначенных для демонстрации особенностей, не охватываемых этим основным примером.


      Схема банковской сети



      Схема банковской сети


      Клиенты банков имеют пластиковые банковские карточки (один клиент может иметь несколько карточек); карточка содержит код карточки, код банка, код клиента и другую информацию, обеспечивающую доступ к счету (счетам) клиента в этом банке. Клиент может вставить свою карточку в ATM (банкомат) и, при условии, что код карточки и код банка верны, начать банковскую проводку. Данные с карточки поступают в центральный компьютер, который распределяет их по компьютерам банков в соответствии с кодами банков до начала проводки; после окончания проводки ее результаты поступают снова в центральный компьютер, который распределяет их по ATM. Являясь распределителем данных между компьютерами банков и ATM, центральный компьютер должен регулировать коллективный доступ со стороны клиентов и банков, организуя и поддерживая соответствующие очереди. Проводка состоит в согласованном изменении данных на счетах клиента и отчетной документации банка, хранящихся в базе данных банка, в соответствии с данными проводки. Проводка включает в себя и проверку права клиента на доступ к его счетам на момент проводки (проверка безопасности), и проверку соответствия суммы, затребованной клиентом, текущему состоянию его счета. Если проверки прошли успешно, клиент получает из ATM затребованную им сумму денег и квитанцию, в противном случае он получает только квитанцию. Во время осуществления проводки могут произойти сбои в работе аппаратуры, либо клиент может раздумать получать деньги и отменить уже начавшуюся проводку. В этом случае все счета и отчетные документы должны быть восстановлены в том состоянии, в котором они были до начала проводки (откат). Для реализации отката используется служба ведения записей об изменениях, вносимых в базу данных банка при выполнении проводки. Все действия, связанные с выполнением проводки (в том числе протоколирование и обеспечение безопасности проводки), производятся программным обеспечением системы управления банковской сетью, процесс разработки которого и составляет содержание сквозного примера. Компьютер банка поддерживает счета клиентов, т.е. хранит их в своей базе данных и выполняет проводки над этими счетами по запросам с ATM (удаленная проводка) или с кассовых терминалов (проводка кассира, данные о которой вводятся кассиром). Несмотря на внешнюю простоту, эта задача достаточно сложна, чтобы на ее примере можно было продемонстрировать основные особенности объектно-ориентированного подхода к разработке программных систем: в этой задаче есть и необходимость распределения по сети компьютеров (банкомат, который мы в дальнейшем будем для краткости называть ATM, тоже можно рассматривать как специализированный компьютер - см. рисунок 1.4), и асинхронные процессы, и необходимость синхронизации таких процессов для организации параллельного обслуживания нескольких клиентов, и работа с базами данных (информация о клиентах хранится в базах данных банков), в частности, обслуживание транзакций (транзакциями являются банковские проводки).


      Сигналы задания для типовых режимов движения их модели и изображения по КарсонуХевисайду



      На Рисунок показаны режимы: ненулевого, неподвижного положения координаты; движение с постоянной скоростью; движение с постоянным ускорением. Легко понять, что перемещение координаты с постоянной скоростью легко получить интегрированием постоянного сигнала, а для получения координаты движущейся с постоянным ускорением необходимо интегрировать координату перемещающуюся с постоянной скоростью. Заменив операцию интегрирования оператором, получим изображения по Карсону-Хевисайду.


      Синхронизация в подсистеме



      Синхронизация в подсистеме


      Из рассмотренного примера видно, что в различных состояниях может параллельно работать разное число процессов (активностей).


      Синтез параметрических САР


      При синтезе САР на ЭВМ так же используют "замораживание" коэффициентов, и, если во всем рабочем интервале времени качество САР оказывается приемлемым, ее считают работоспособной.
      Во многих случаях удается выделить одно звено, первого или второго порядков с var-параметром. Тогда возможно осуществить синтез САР расчетным путем.

      При синтезе следует стремиться максимально точно определить законы изменения параметров и не ограничиваться диапазонами. Так для случая 2 изменений var-параметров, согласно "D"-разбиению вероятность сохранения устойчивости существенно больше.


      Синтез системы


      Направленный расчет, имеющий конечной целью отыскание: 1)рациональной структуры системы и 2) установление оптимальных величин параметров отдельных звеньев. При множестве возможных решений, должен быть выбран критерий оптимизации - цена, точность, надежность, быстродействие, затраты энергии ...
      При инженерном синтезе ставятся задачи:
      1. Достижение требуемой точности.
      2. Обеспечение приемлемого характера переходных процессов (задача демпфирования).
      • Решение первой задачи заключено в выборе средств повышающих точность системы (усилительных, изодромных блоков; каналов КУ; не 1ОС), т.е. фактически вида регулирования.
      • Решение второй задачи заключено в выборе оптимальных корректирующих средств.



      Система импульсная линейная


      Линейной системой импульсного регулирования называется такая САР, которая кроме звеньев описываемых обыкновенными линейными ДУ содержит импульсное звено, преобразующее непрерывное входное воздействие в равноотстоящие друг от друга по времени импульсы.


      Система линейная с переменными параметрами


      Линейной системой с переменными (var) параметрами называется такая, движение которой описывается ДУ с переменными во времени коэффициентами:
      где воздействие f может быть и задающим - g(t). Те. ПФ подобной системы параметрическая, например:
      W(s, t) =
      Y(s, t) K(t)...
      X(s, t) (1+T1s)(1+T2(t)s)...
      где: K(t), T2(t) - зависящие от времени функции.


      Система линейная с запаздыванием


      Линейной системой с запаздыванием называется такая, которая содержит в своей структуре хотябы одно звено, в котором есть неизменное запаздывание во времени t изменения выходной координаты после начала изменения входной.
      Рассмотрим апериодическое звено первого порядка, которое описывается уравнением:
      (1)
      Tdy/dt + y = K x(t) .
      Уравнение соответствующего звена с запаздыванием t будет иметь вид:
      (2)
      T dy/dt + y = K x(t-t) .
      Оно называется дифференциально-разностным.
      Обозначим x*(t) = x(t-t), тогда уравнение (2) запишется в обыкновенном виде:
      (3)
      T dy/dt + y = K x*(t) .
      Следовательно его переходная характеристика соответствует апериодическому звену (Рисунок 1в), но задержана на t с, что определено задержкой воздействия x*(t) (Рисунок 1б).
      Резюме:
      • Временная характеристика любого звена с запаздыванием будет такая же, как у соответствующего обыкновенного звена, но только сдвинута по оси времени вправо на величину t.
      • Величину запаздывания t в звене можно определить экспериментально, путем снятия временной характеристики.



      Система управления


      Это совокупность одного или нескольких управляемых объектов и управляющей ими системы Принцип действия всякой системы автоматического регулирования (САР) заключается в том, чтобы обнаруживать отклонения регулируемых величин, характеризующих работу объекта или протекание процесса от требуемого режима и при этом воздействовать на объект или процесс так, чтобы устранять эти отклонения.
      В теории автоматического регулирования основными являются проблемы: устойчивости, качества переходных процессов, статической и динамической точности, автоколебаний, оптимизации, синтеза и отождествления (идентификации).
      Задачи общей теории автоматического регулирования заключаются в решении перечисленных проблем. При поиске решений используются:
      1. Методы анализа устойчивости замкнутых САР
      2. Методы оценки качественных показателей САР
      3. Методы повышения точности САР
      4. Методы коррекции динамических свойств САР
      5. Методы синтеза САР

      Разработка же методов решения прикладных инженерных задач стоящих при проектировании САР есть глобальная цель теории систем автоматического регулирования.


      Система непрерывной обработки: машинная графика



      Система непрерывной обработки: машинная графика


      При разработке системы непрерывной обработки необходимо выполнить следующие шаги:
      • Строим диаграмму потока данных; активные объекты в ее начале и в конце соответствуют структурам данных, значения которых непрерывно изменяются; хранилища данных, связанные с ее внутренними фазами, отражают параметры, которые влияют на зависимость между входными и выходными данными фазы.
      • Определяем классы промежуточных объектов между каждой парой последовательных фаз; каждая фаза знает об объектах, расположенных на объектной диаграмме до и после нее (эти объекты представляют соответственно входные и выходные данные фазы).
      • Представляем каждую фазу как последовательность изменений значений элементов выходной структуры данных в зависимости от значений элементов входной структуры данных и значений, получаемых из хранилища данных (значение выходной структуры данных формируется по частям).


      Система с интерактивным интерфейсом: ATM



      Система с интерактивным интерфейсом: ATM


      При разработке системы с интерактивным интерфейсом необходимо выполнить следующие шаги:
      • Выделяем объекты, формирующие интерфейс.
      • Если есть возможность, используем готовые объекты для организации взаимодействия (например, для организации взаимодействия системы с пользователем через экран дисплея можно использовать библиотеку системы X-Window, обеспечивающую работу с меню, формами, кнопками и т.п.).
      • Структуру программы определяем по ее динамической модели; для реализации интерактивного интерфейса используем параллельное управление (многозадачный режим) или механизм событий (прерывания), а не процедурное управление, когда время между выводом очередного сообщения пользователю и его ответом система проводит в режиме ожидания.
      • Из множества событий выделяем физические (аппаратные, простые) события и стараемся при организации взаимодействия использовать в первую очередь их.
      При разработке системы динамического моделирования необходимо выполнить следующие шаги:
      • По объектной модели определяем активные объекты; эти объекты имеют атрибуты с периодически обновляемыми значениями.
      • Определяем дискретные события; такие события соответствуют дискретным взаимодействиям объекта (например, включение питания) и реализуются как операции объекта.
      • Определяем непрерывные зависимости (например, зависимости атрибутов от времени); значения таких атрибутов должны периодически обновляться в соответствии с зависимостью.
      • Моделирование управляется объектами, отслеживающими временные циклы последовательностей событий.
      Разработка системы реального времени аналогична разработке системы с интерактивным интерфейсом. При разработке системы управления транзакциями необходимо выполнить следующие шаги:
      • Отображаем объектную модель на базу данных.
      • Определяем асинхронно работающие устройства и ресурсы с асинхронным доступом; в случае необходимости определяем новые классы.
      • Определяем набор ресурсов (в том числе - структур данных), к которым необходим доступ во время транзакции (участники транзакции).
      • Разрабатываем параллельное управление транзакциями; системе может понадобиться несколько раз повторить неудачную транзакцию прежде, чем выдать отказ.


      Sml_udk


      УДК 681.51.01(076.5)+621.51.015.26(076.5)+621.3(075.8)
      K493
      Клиначёв Н. В. Основы моделирования систем или 7 доменов законов Ома и Кирхгофа: Избранные фрагменты. - Offline версия 2.6. - Челябинск, 2000-2003. - 68 файлов, ил.
      Учебное пособие предназначено для студентов технических специальностей изучающих курсы "Основы моделирования систем", "Моделирование систем управления", "Основы теории подобия". В качестве дополнительной литературы пособие рекомендуется изучающим дисциплину "Теоретические основы электротехники", а так же подобные ей: "Теоретические основы механики линейных и ротационных перемещений", "... магнитных цепей", "... теплотехники", "... гидро и пневмопривода". В пособии описаны основные технологии компьютерного мультидоменного моделирования, методы анализа моделей, раскрыты главные идеи и алгоритмы функционирования широко известных программ математического моделирования динамических систем: VisSim, Simulink (MATLAB), SystemBuild (MATRIXx), Anylogic (Model Vision Studium), MBTY, 20-sim, ITI-SIM, DyMoLa, SIMPLORER, DYNAST, hAMSter, Easy5, DASE и др.
      Ил. 45, табл. 2, моделей 12, список лит. - 12 назв.
      © Н.В. Клиначёв, 2000-2003.


      Спецификация операции изменить_счет...



      Спецификация операции изменить_счет (при описании эффекта операции использованы операции отменить_проводку, выдать_запрос, выдать_деньги, дебетовать_счет и кредитовать_счет)

      Внешняя спецификация операции описывает только те изменения, которые видны вне операции. Операция может быть реализована таким образом, что при ее выполнении будут использоваться некоторые значения, определенные внутри операции (например, в целях оптимизации), некоторые из этих значений могут даже быть частью состояния объекта. Эти детали реализации операции скрыты от остальных объектов и не участвуют в определении внешнего эффекта операции. Изменения внутреннего состояния объекта, не видные вне его, не меняют значения объекта. Все нетривиальные операции можно разделить на три категории: запросы, действия и активности. Запросом называется операция без побочных эффектов над видимым извне объекта его состоянием (чистая функция). Запрос, у которого нет параметров, кроме целевого объекта, является производным атрибутом. Например, для точки на координатной плоскости, радиус и полярный угол - производные атрибуты; из этого примера видно, что между основными и производными атрибутами нет принципиальной разницы, и выбор основных атрибутов во многом случаен. Действием называется операция, имеющая побочные эффекты, которые могут влиять на целевой объект и на другие объекты системы, которые достижимы из целевого объекта. Действие не занимает времени (логически, оно совершается мгновенно). Каждое действие может быть определено через те изменения, которые оно производит в состоянии объекта, меняя значения его атрибутов и связей; в каком порядке производятся эти изменения, несущественно: мы считаем, что все они происходят одновременно и мгновенно. Наиболее распространенным способом описания действия является задание алгоритма его выполнения на компьютере. Активностью называется операция, выполняемая объектом, или над объектом, выполнение которой занимает определенное время. Активность имеет побочные эффекты. Активности могут быть только у активных объектов, так как пассивные объекты есть попросту склады данных.


      Способы введения корректирующих звеньев


      Результирующие ПФ:

      Формулы эквивалентных
      переходов:
      Показания к применению:



      Сравнение рекурсивного и нерекурсивного алгоритмов вычисления n!



      Сравнение рекурсивного и нерекурсивного алгоритмов вычисления n!


      Выбор алгоритмов связан с выбором структур данных, обрабатываемых этими алгоритмами. Удачный выбор структур данных позволяет существенно оптимизировать алгоритм. Еще одним способом упрощения и оптимизации алгоритмов является введение внутренних (вспомогательных) классов. Эти классы не имеют соответствий в реальном мире; они связаны с реализацией, но могут существенно упростить ее (примеры: класс стек, класс двусвязный список и т.п.). Наконец, во многих случаях бывает полезным внести некоторые изменения в структуру объектной модели. Эти изменения сводятся к введению дополнительных классов и к перераспределению операций между классами. При распределении операций по классам руководствуются следующими соображениями:
      • если операция выполняется только над одним объектом, то она определяется в классе, экземпляром которого является этот объект;
      • если аргументами операции являются объекты разных классов, то ее следует поместить в класс, к которому принадлежит результат операции;
      • если аргументами операции являются объекты разных классов, причем изменяется значение только одного объекта, а значения других объектов только читаются, то ее следует поместить в класс, к которому принадлежит изменяемый объект;
      • если классы вместе с их зависимостями образуют звезду с центром в одном из классов, то операцию, аргументами которой являются объекты этих классов, следует поместить в центральный класс.


      Структурное моделирование


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


      Суть линеаризации


      1. Пусть нелинейное динамическое уравнение звена имеет вид:

      F(x1, x2, x2', y, y', y'', y''') = j( f, f ') .
    12. Тогда уравнение установившегося состояния, всилу равенства нулю всех производных, имеет вид:Fo(x1o, x2o, 0, yo, 0, 0, 0) = j( f o, 0) .
    13. Перейдем к уравнению динамики для отклонений, выполнив подстановки:x1 = x1o+Dx1(t), x2 = x2o+Dx2(t), x2' = Dx2'(t),
      y = yo+Dy(t), y' = Dy'(t), y'' = Dy''(t), y''' = Dy'''(t);
      и разложив функцию F в ряд:

    14. Завершая линеаризацию, вычтем из левой и правой части уравнение установившегося состояния: (*)



    15. Сведения об источнике обновленных версий документа


      Обновленные версии данного цифрового документа доступны на сайте "VisSim в России". Если при загрузке с сайта возникают технические затруднения, то для их решения можно связаться с автором (адрес электронной почты: klinacherv_nv@mail.ru). При возможных изменениях в адресах рекомендуется воспользоваться поисковыми системами, используя ключевые слова: VisSim, симуляция движения, моделирование, Nikolay Klinachyov.


      Технические аспекты


      Учебно-методический комплекс выполнен в соответствии со стандартом Windows-HTML-справки. Он представляет собой один файл, в котором заархивированы html-страницы, рисунки и необходимые скрипты. Файл пособия автоматически распознается и запускается операционной системой Windows 98 (NT, 2000), точнее браузером MSIE версии не ниже 4.0. Пользователям Windows 95 (NT) дополнительно следует установить Windows-HTML-справку. Для чего следует найти на сайте фирмы Microsoft файл hhupd.exe (733 KB). Там же, или в секторе "download" сайта фирмы Microsoft, вы можете скачать программу HTML Help Workshop (файл htmlhelp.exe (4 MB)). Используя ее, Вы можете декомпилировать пособие для запуска в браузере Netscape или для создания собственного на основе этого образца. Программа HTML Help Workshop также содержит утилиту для создания gif-файлов с изображениями необходимых вам фрагментов экрана. Для корректной цветопередачи при создании gif-файлов активируйте цветовое разрешение дисплея в 256 цветов. Пособие так же полностью функционально и запускается браузером MSIE, если в адресной строке набрать: mk:@MSITStore:C:\tau_knv.chm::/index.htm - где C:\ - путь к файлу tau_knv.chm.


      Технологии функционирования моделирующих программ


      Каждая из программ математического моделирования динамических систем основана на одной из двух технологий:
      1. Первая технология предполагает использование поточной модели управления при выполнении математических преобразований (функций) составляющих модель.
      2. Вторая технология предполагает представление модели в виде текстовой записи системы уравнений, которую решатели моделирующих программ обрабатывают в пакетном режиме.



      Технология создания внешних "dllмоделей" для моделирующей программы VisSim


      Актуальность наличия технологий решения задач моделирования, мониторинга и управления сложными технологическими объектами не вызывает сомнений. Сегодня у научных и инженерно-технических работников в наличии имеется большое количество программных продуктов в основном зарубежного производства. Полноценное их использование в силу не полной документированности или дороговизны отдельных составляющих модулей (библиотек) затруднительно. Поэтому наличие возможности самостоятельного расширения пакетов конечным пользователем всегда представляет особый интерес. "MathConnex" в пакете "Mathcad 2000", и "VisSim" - возможно наиболее известные моделирующие программы, имеющие интерфейсы для расширений.
      Существуют несколько технологий расширений. Первая - внедрение ActiveX объектов других программных продуктов (см. "MathConnex"). Вторая - динамический обмен данными между программами посредством DDE или OPC серверов / клиентов. Третья - создание библиотечных модулей с новыми для пакетов процедурами и функциями. Пакет VisSim имеет все три механизма. Первые два интуитивно понятны и хорошо описаны в документации. Методика подключения внешних, динамически загружаемых библиотек - dll документирована не полностью, поэтому вызывает затруднения у пользователей, хотя способна существенно расширить возможности пакета. Пользователь сможет, используя известный ему язык программирования С, С++, Pascal (Delphi), Basic, Fortran создавать новые линейные, нелинейные, дискретные, частотно зависимые элементы, расширяя библиотеку стандартных; разрабатывать собственные процедуры и функции измерений, анализа, работы с базами данных; подключать как собственные, так и стандартные платы сбора данных (DAQ-board) или OPC сервера для исследования, мониторинга, управления внешним объектом.
      Постановка задачи. Необходимо создать "dll-модель" (согласно меню VisSim-а "userFunction") (см. Рисунок 1), которая имеет два выхода и выполняет две операции: интегрирование и синтез синусоидальной функции. Модель должна иметь: вход для интегратора, вход для временного сигнала, и вход для передачи значения шага моделирования.

      Демонстрация результатов моделирования с использованием пользовательской функции "myF", подключенной с помощью блока "userFunction" из библиотеки Project2.dll, написанной с использованием зыка программирования Pascal (Delphi)
      Рисунок 1
      Модель должна иметь следующие начальные условия и параметры: 1) начальное значение, присваиваемое интегратору в начале моделирования, 2) амплитудное значение, 3) частоту и 4) фазу синтезируемого синусоидального сигнала. Т.е. при нажатии правой клавиши мыши на блоке "Project2.dll.myF", должно появится диалоговое окно - см. Рисунок 2.



      Рисунок 2
      Все, что требуется - это написать библиотечную программу на языке Pascal в соответствии с определенными правилами, скомпилировать в файл Project2.dll (имя библиотеки значения не имеет) и подключить его к рабочему файлу пакета VisSim с помощью блока "userFunction". Для создания dll-библиотеки выбран язык Pascal (Delphi), поскольку в примерах пакета есть исходные файлы для языка С. Приведем распечатку файла Project2.dpr.
      Файл: Project2.dpr
      library Project2;

      type
      InVector = array [0..9] of Double; { тип входной переменной: входов - 10 }
      OutVector = array [0..9] of Double; { тип выходной переменной: выходов - 10 }
      Global = record { запись параметров, и координат "dll"-модели }
      Uo : double; { Начальное условие для интегратора ID1 }
      Am : double; { Амплитуда синусоиды }
      freq : double; { частота синусоиды }
      faza : double; { фаза синусоиды }
      end;

      var ID1 : double; { вспомогательные переменные "dll"-модели }

      {/************ Это базовая процедура в DLL ****************************/}
      {/************ Вызывается VisSim-ом на каждом шаге моделирования ******/}
      procedure myF(var P:Global; var inV:InVector; var outV:OutVector); export; stdcall;
      begin
      { Расчеты, выполняемые на каждом шаге моделирования }
      ID1:=ID1+inV[0]*inV[2]/2; outV[0]:=ID1; { интегрирование }
      outV[1]:=P.Am*sin(2*Pi*inV[1]*P.freq+P.faza); { синтез синусоидального сигнала }
      end;

      {/************ Функция размещения параметров **************************/}
      {/************ Вызывается VisSim-ом при создании блока ****************/}
      function myFPA( var pCount:integer):Longint; export; stdcall;
      begin
      pCount := 4; { число первых по списку параметров записываемых в файл *.vsm }
      myFPA := sizeof(Global); { размер памяти необходимый под параметры }
      end;

      {/************ Процедура инициализации параметров *********************/}
      {/************ Вызывается VisSim-ом после PA функции ******************/}
      procedure myFPI( var P:Global ); export; stdcall;
      begin
      { Инициализация параметров (координат) модели.
      значения постоянных времени, напряжений, токов ...}
      P.Uo:=0;
      P.Am:=10;
      P.freq:=2;
      P.faza:=0;
      end;

      {/************ Функция изменения параметров ***************************/}
      {/************ Вызывается VisSim-ом при нажатии правой клавиши мыши ***/}
      function myFPC( var P:Global ):Pchar; export; stdcall;
      begin
      { Изменение параметров модели:
      соответствующий очередности список названий параметров }
      myFPC :='Начальное условие;Am;freq;faza';{ названия могут быть любые }
      end;

      {/************ Процедура Simulation Start *****************************/}
      {/************ Вызывается VisSim-ом на первом шаге моделирования ******/}
      procedure myFSS( var P:Global; var runCount:longint); export; stdcall;
      begin
      { присвоение начальных условий интеграторам:
      напряжений на конденсаторах, токов в индуктивностях ...}
      ID1:=P.Uo;
      end;

      {/************ Процедура Simulation End *******************************/}
      {/************ Вызывается VisSim-ом на последнем шаге моделирования ***/}
      procedure myFSE( var P:Global; var runCount:longint); export; stdcall;
      begin
      { сохранение значений интеграторов для повторного запуска
      при многоэтапном моделировании:
      напряжений на конденсаторах, токов в индуктивностях ...}
      end;

      exports
      myF index 1,{ Имя базовой процедуры в DLL Его нужно будет указать в блоке userFunction }
      myFPA index 2,{ Список вспомогательных процедур и функций для экспорта. Они будут }
      myFPI index 3,{ вызываться Vissim-ом по окончаниям PA,PI,PC,SS,SE для базового имени. }
      myFPC index 4,
      myFSS index 5,
      myFSE index 6;

      begin
      end.
      По тексту программы видно, что для базовой функции (процедуры) с именем "myF" пользователь должен написать минимум еще пять процедур и функций, назначение которых ясно из комментариев. Следует отметить, что откомпилированная, тридцатидвухразрядная библиотека подключается ко всем версиям пакета VisSim начиная со 2-ой (текущая 4.5 Beta).
      К сожалению VisSim не создает экземпляров dll-библиотек, поэтому повторное использование dll-библиотеки требует размножения файла *.dll (*.dll, *1.dll, *2.dll, ...). Этот прием демонстрирует модель сигма-дельта аналогово-цифрового преобразователя (см. в архиве (files) дискуссионной e-группы). Цифровой фильтр модели состоит из трех одинаковых звеньев. Одно звено это одна dll-библиотека.
      Любой из частотных анализов неприменим для dll-библиотек. Поскольку VisSim не производит виртуальных измерений, а анализирует модели используя передаточные функции.
      При написании dll-библиотек пользователю предоставляется еще две, интересные возможности. Первая заключена в использовании глобальных переменных и процедур непосредственно файла Vissim32.exe, что избавляет от необходимости передавать в и из "dll-модели" пользователя переменные и сигналы "шаг моделирования", "время моделирования", "остановить моделирование", "ошибка в dll-модели". Вторая заключена в направлении потока событий (Event) в "dll-модель", что позволяет пользовательской модели реагировать как на события стандартных устройств ввода / вывода: клавиатуры, мыши, так и на события пакета VisSim: "получить имя модели", "получить описание параметров", "установить локальный временной шаг моделирования", "выполнить пред-моделирование", "выполнить пост-моделирование", и т.д.
      Вечная жизнь в играх своими руками тут
      25.08.2000


      Тематический план лекционных занятий


      Введение. Классификация САР
      1. Составление исходных ДУ САР
      2. Описание САР в частотном домене
      3. Типовые динамические звенья
      4. Принципы и законы регулирования
      5. Устойчивость САР
      6. Оценка качества регулирования
      7. Повышение точности САР
      8. Коррекция САР
      9. Синтез САР
      10. Системы с переменными параметрами
      11. Системы с запаздыванием
      12. Системы импульсные
      13. Системы цифровые
      Литература


      Типичная структура системы



      Типичная структура системы




      Типовая структура импульсной системы Понятие об импульсном фильтре


      • Если время замкнутого состояния ключа мало, то сигнал на его выходе можно заменить последовательностью x*[nT] дельта-функций, с площадью x[nT]: x*[nT]= x[nT] d(t-nT).
      • В таком случае реакция непрерывной части Wo(s) - это суперпозиция весовых функций w(t), которую можно рассматривать и как непрерывный сигнал y(t), и как дискретную последовательность y[nT].
      • Импульсным фильтром считают импульсный элемент (ключ) с непрерывной частью Wo(s) на выходе. За истинный сигнал фильтра принимают выходную последовательность только в дискретные моменты времени y[nT], где n = ..., -2, -1, 0, 1, 2, ...



      Тиражирование метакласса



      Тиражирование метакласса


      Использование возможных ключей Возможным ключом (этот термин чаще употребляется в базах данных) называется минимальный набор атрибутов, который однозначно идентифицирует объект или связь. Связь - это экземпляр зависимости: каждая зависимость между классами порождает связи между объектами этих классов. Возможный ключ является минимальным набором атрибутов в том смысле, что если убрать из него хотя бы один из атрибутов, он уже не будет иметь различные значения для всех объектов или связей. Класс или зависимость могут иметь один или несколько возможных ключей, каждый из которых может представлять собой одну из комбинаций некоторого числа атрибутов. Одним из возможных ключей для любого класса всегда является идентификатор объекта. Одна или более комбинаций зависимых объектов являются возможными ключами для зависимости. На рисунке 2.27 показаны возможные ключи для различных бинарных зависимостей. Связь возможных ключей с кратностью зависимостей очевидна и в комментариях не нуждается.


      Точность в типовых режимах


      Для оценки точности используется величина ошибки в различных типовых режимах. Типовые режимы движения состоят в подаче на вход сигналов с нормированными метрологическими характеристиками. Различают типовые режимы:
      1. Ненулевое, неподвижное состояние.
      2. Движение с постоянной скоростью.
      3. Движение с постоянным ускорением.
      4. Движение по гармоническому закону.



      Топология звезды



      Топология звезды


      Топология системы Когда все модули и подсистемы всех уровней названы, необходимо показать информационные потоки между модулями и подсистемами, построив ДПД (примеры см. в п. 3.1.8). Это позволит понять топологию системы. Топология системы определяется совокупностью потоков информации в системе; например, у компилятора конвейерная топология (рисунок 3.3), можно представить себе топологию звезды (рисунок 3.4) и т.п.; нужно стремиться, чтобы топология системы была как можно проще.


      Трасса событий для разговора по телефону



      Трасса событий для разговора по телефону


      Состояния Состояние определяется совокупностью текущих значений атрибутов и связей объекта. Например, банк может иметь состояния платежеспособный и неплатежеспособный (когда большая часть банков одновременно оказывается во втором состоянии, наступает банковский кризис). Состояние определяет реакцию объекта на поступающее в него событие (в том, что реакция различна нетрудно убедиться с помощью банковской карточки: в зависимости от состояния банка обслуживание (реакция банка на предъявление карточки) будет разным). Реакция объекта на событие может включать некоторое действие и/или перевод объекта в новое состояние. Объект сохраняет свое состояние в течение времени между двумя последовательными событиями, которые он принимает: события представляют моменты времени, состояния - отрезки времени; состояние имеет продолжительность, которая обычно равна отрезку времени между двумя последовательными событиями, принимаемыми объектом, но иногда может быть больше. При определении состояний мы не рассматриваем тех атрибутов, которые не влияют на поведение объекта, и объединяем в одно состояние все комбинации значений атрибутов и связей, которые дают одинаковые реакции на события. Диаграммы состояний Диаграмма состояний связывает события и состояния. При приеме события следующее состояние системы зависит как от ее текущего состояния, так и от события; смена состояния называется переходом. Диаграмма состояний - это граф, узлы которого представляют состояния, а направленные деги, помеченные именами соответствующих событий, - переходы. Диаграмма состояний позволяет получить последовательность состояний по заданной последовательности событий.


      Трасса событий в банковской сети



      Трасса событий в банковской сети




      Требования к ВЧ части желаемой ЛАЧХ


      Формировать ВЧ участок ЛАЧХ удобно при использовании показателя колебательности M, линии уровня которого, при скольжении вектора A, с фазой j по окружностям M, можно нанести на ЛФЧХ.
      В качестве типовых в НЧ части используются ЛАЧХ с наклоном не более -40 дБ/дек, которому соответствует нулевой запас по фазе, поэтому необходимо в области частоты среза формировать участок с наклоном -20 дБ/дек, т.е. сводить типовые ЛАЧХ к одному из 2-х видов:
      Запретные зоны для ЛАЧХ & ЛФЧХ вида 1-2
      1-2-1-2-3
      0-1-2-1-2-4
      ...
      1-2-3
      0-1-2-3-4
      ...
      Запретные зоны на ЛАЧХ определяют:
      • Для ЛАЧХ вида 2-1-2: а) начало корректирующего участка - Т2; и б) его длину - h = Т2/SТi, где i = [3, 4, ...), и w3 = w2h или wср = w2M/(M-1) или w3 = wср(M+1)/M.
      • Для ЛАЧХ вида 1-2 максимальное значение суммы постоянных времени равно SТi, где i = [1, 2, ...).

      Если выше частоты среза имеется пик от колебательного звена, то его амплитуда не должна приблизиться к окружности с заданной колебательностью M, т.е. не должна достичь уровня на ЛАЧХ 20lg M/(M+1); а постоянная времени, при определении h, должна войти в сумму как 2zT.


      Требуемые программные пакеты


      1. Электронное руководство к лабораторным работам вошедшее в учебно-методический комплекс (файл tau_knv.chm) выполнено в соответствии со стандартом Windows-HTML-справки. Оно представляет собой один файл, в котором заархивированы html-страницы, учебные модели (рабочие файлы программ VisSim и Electronics Workbench), рисунки и необходимые скрипты. Файл пособия автоматически распознается и запускается операционной системой Windows 98 (NT, 2000), точнее браузером MSIE версии не ниже 4.0. Пользователям Windows 95 (NT) возможно потребуется установить Windows-HTML-справку. Для чего на сайте фирмы Microsoft следует найти установочный файл hhupd.exe (733 KB).
      2. Для организации учебного процесса следует получить пакет VisSim FAP 3.0 по "Бесплатной Академической Программе" (http://www.vissim.com). См. также сайт "VisSim в России" (http://vissim.nm.ru). Большинство работ можно выполнить, используя старую версию пакета - VisSim 1.2, в которой нет годографа Найквиста и оптимизации. Достоинство этого варианта в том, что руководство, модели и пакет умещаются на одной дискете и легко могут быть предоставлены студентам для самостоятельной работы дома. В первой работе имеется ссылка на демонстрационный файл csd_new.scm, который можно получить по адресу http://www.vissim.com/downloads/demos.html. В форме нужно отметить пункт «Control system design demo». Отсутствие файла может быть компенсировано рассказом преподавателя о пакете.
      3. Требуемая версия пакета Electronics Workbench - 4.1. Часть моделей имеет настройки элементов отличные от библиотечных. Замечено, что старшие версии программы не считывают их из файлов. Адрес сайта изготовителя - http://www.electronicsworkbench.com.
      Обновленные версии руководства доступны на сайте "VisSim в России". Архив руководства можно получить по электронной почте, направив письмо-запрос автору (klinacherv_nv@mail.ru). При возможных изменениях в адресах рекомендуется воспользоваться поисковыми системами, используя ключевые слова: VisSim, симуляция движения, моделирование, Nikolay Klinachyov.



      Учебнометодический комплекс



      Оглавление | Введение. Классификация САР | 1. Составление исходных ДУ САР | 2. Описание САР в частотном домене | 3. Типовые динамические звенья | 4. Принципы и законы регулирования | 5. Устойчивость САР | 6. Оценка качества регулирования | 7. Повышение точности САР | 8. Коррекция САР | 9. Синтез САР | 10. Системы с переменными параметрами | 11. Системы с запаздыванием | 12. Системы импульсные | 13. Системы цифровые | Литература


      Указание активностей и действий на диаграмме состояний



      Указание активностей и действий на диаграмме состояний


      Действием называется мгновенная операция, связанная с событием: при возникновении события происходит не только переход объекта в новое состояние, но и выполняется действие, связанное с этим событием. Например, в телефонной сети событие повесил трубку сопровождается действием разъединить связь (см. рисунок 2.49). Действие указывается на диаграмме состояний вслед за событием, которому оно соответствует, и его имя (или описание) отделяется от имени события косой чертой ("/") (см. рисунок 2.48).


      Ускорение поиска с помощью производной зависимости



      Ускорение поиска с помощью производной зависимости


      Использование производных атрибутов для исключения повторных вычислений показано на рисунке 3.10: запоминание координат однажды найденных атрибутов и операций в специальных списках позволяет избежать повторного поиска.


      Условие устойчивости Типы границы устойчивости


      Устойчивость систем зависит от корней характеристического уравнения, поскольку его решение есть сумма экспоненциальных функций:
      .
      Рассмотрим варианты свободного движения систем от ненулевого начального положения:

      Заметим, что:
      C1 e -(a+jb)t + C2 e -(a-jb)t = A e -at sin(bt+j) ,
      где: A и j - новые постоянные интегрирования, a - показатель затухания, b - круговая частота затухающих колебаний.

      Система будет находиться на границе устойчивости при наличии:
      • нулевого корня,
      • пары чисто мнимых корней,
      • бесконечного корня.



      Устойчивость и качество регулирования систем с varпараметрами


      Поскольку в квазистационарных САР параметры меняются много медленней свободного движения системы, параметрическую САР считают устойчивой, если при всех "замороженных" комбинациях параметров она остается устойчивой.
      Т.е. в параметрической ПФ W(s, t) фиксируют время t в диапазоне 0 < t < T и многократно исследуют на устойчивость, используя любой из критериев. Максимальное внимание надо уделить временным интервалам, где параметры меняются быстро или происходит смена знака. Особенно эффективно использование корневого годографа, зависимого от var-параметра, для оценки тенденций в системе.
      При оценке качества регулирования следует учитывать, что коэффициенты ошибок получаются зависимыми от времени: Ck = [dkFx(s, t) / dsk], при s=0.
      Изменение параметров можно рассматривать как возмущающее воздействие на систему. Соответственно составляющие ошибки от var-параметра не будут сводиться к нулю, за исключением случая, когда содержащее var-параметр звено установлено в цепи ОС или в прямом канале до интегрирующих элементов. Поскольку динамика изменения var-параметров в сравнении с динамикой задающего воздействия g(t) не значительна в случае квазистационарных систем, то соответствующие составляющие ошибок: по скорости, ускорению, ... - как правило, меньше.


      Устойчивость САР


      Понятие устойчивости системы регулирования связано с ее способностью возвращаться в состояние равновесия после исчезновения внешних сил, которые вывели ее из этого состояния.
      Понятие устойчивости можно распространить и на случай движения САР:
      • невозмущенное движение,
      • возмущенное движение.



      Устойчивость систем с запаздыванием


      Рассмотрим замкнутую систему:


      По знаменателю ПФ F(jw) видно, что в общем случае характеристическое уравнение будет иметь множитель e-ts, который определяет возможность наличия бесконечного количества корней (см. петли годографа Михайлова D(jw)).
      Как и прежде, для устойчивости все они должны иметь отрицательные вещественные части.
      • Для устойчивости систем 1-ого и 2-ого порядка с запаздыванием не достаточно положительности коэффициентов.
      • Для систем 3-его и более порядков не применимы критерии Вышнеградского, Рауса, Гурвица.



      Узел направленного графа


      Сумматор координат модели динамической системы с одним выходом (поэтому узел направленного графа называют координатой). Обычно в каждом энергетическом домене в качестве координат выступают парные физические величины, чье произведение есть мощность. В пакетах математического моделирования эти парные физические величины называются координатами первого и второго рода. Выходные координаты ветвей собираются в узлы направленного графа согласно первому и второму законам Кирхгофа1. Узлы направленного графа, ровно, как и сам граф, не отражают различий в физической природе координат первого и второго рода (это непреодолимый недостаток направленных графов).


      Узел направленного графа


      Сумматор координат модели динамической системы с одним выходом (поэтому узел направленного графа называют координатой). Обычно в каждом энергетическом домене в качестве координат выступают парные физические величины, чье произведение есть мощьность. В пакетах математического моделирования эти парные физические величины называются координатами первого и второго рода. Выходные координаты ветвей собираются в узлы направленного графа согласно первому и второму законам Кирхгофа1. Узлы направленного графа, ровно как и сам граф, не отражают различий в физической природе координат первого и второго рода (это непреодолимый недостаток направленных графов).


      Узел направленного графа


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


      Узел ненаправленного графа


      Условное графическое обозначение места соединения трех ветвей, в котором происходит либо распределение, либо аккумуляция координаты первого рода (потока материи). В любом ненаправленном графе узлов-распределителей и узлов-аккумуляторов материи равное количество. Различие математических моделей этих узлов, в силу единообразия физических конструкций, ни как не отражается в графическом представлении (т.е. в ненаправленном графе). Любая ветвь ненаправленного графа энергетической цепи соединяется с узлами разного типа. Модели узлов, в которых сходится большее количество ветвей, получаются каскадированием трехвыводных узлов. В динамике, поток (физическая величина первого рода) любой ветви входящей в узел может менять свое направление; в узлах графа происходит лишь смена знака потока.


      Узел ненаправленного графа


      Условное графическое обозначение технического устройства - узлового распределителя физической величины первого рода. В динамике, поток (физическая величина первого рода) любой ветви входящей в узел может менять свое направление.


      Ветвь направленного графа


      Графический образ закона преобразования сигнала, который называется передаточной функцией. Если направленный граф есть истинная модель динамической системы и узлы графа отражают все ее координаты (граф не приведен), то передаточные функции ветвей есть либо закон Ома2, сформулированный для соответствующего энергетического домена и связывающий его физические величины первого и второго рода, либо другие физические законы, связывающие физические величины первого и второго рода разных энергетических доменов.
      Цифровой звук тут


      Ветвь направленного графа


      Графический образ закона преобразования сигнала, который называется передаточной функцией. Если направленный граф есть истинная модель динамической системы и узлы графа отражают все ее координаты (граф не приведен), то передаточные функции ветвей есть либо закон Ома2, сформулированный для соответствующего энергетического домена и связывающий его физические величины первого и второго рода, либо другие физические законы, связывающие физические величины первого и второго рода разных энергетических доменов.


      Ветвь направленного графа


      Графический образ закона преобразования сигнала, который называется передаточной функцией. Если направленный граф есть истинная модель динамической системы и узлы графа отражают все ее координаты (граф не приведен), то передаточные функции ветвей есть либо закон Ома2, сформулированный для соответствующего энергетического домена и связывающий его физические величины первого и второго рода, либо другие физические законы, связывающие физические величины первого и второго рода разных энергетических доменов.


      Ветвь ненаправленного графа


      Участок энергетической цепи в ненаправленном графе с одним и тем же потоком материи (координатой первого рода), который может состоять из произвольного количества последовательно включенных моделей физических элементов.


      Ветвь ненаправленного графа


      Участок цепи ненаправленного графа, для которого координата первого рода имеет неизменное значение. Ветвь ненаправленного графа содержит условное графическое обозначение одного технического устройства или нескольких, но инкапсулированных в один модуль.


      Входные и выходные значения банковской сети



      Входные и выходные значения банковской сети


      Поскольку все взаимодействия между внешним миром и системой проходят через ATM (или кассовый терминал, который здесь не рассматривается), все входные и выходные значения являются параметрами событий, связанных с объектом ATM (банкомат). Построение ДПД ДПД обычно строится по уровням. На верхнем уровне, как правило, показывают один единственный процесс, или, как в нашем примере (рисунок 2.67), процесс ввода, основной процесс вычисления требуемых значений и процесс вывода. Входные и выходные данные на этой диаграмме поставляются и потребляются внешними объектами (клиент, карточка).


      Вопросы к экзамену по курсу ТАУ


      Примеры автоматических систем. Принципы автоматического регулирования. Классификация автоматических систем. Программы и законы регулирования. Демонстрационные примеры адаптивных систем.
      Линеаризация дифференциальных уравнений (ДУ) систем автоматического регулирования (САР). Геометрическая трактовка линеаризации. Формы записи линеаризованных уравнений. Единичная функция, дельта-функция, переходная функция и функция веса. Частотная передаточная функция (ПФ), частотные характеристики. Позиционные звенья. Интегрирующие звенья. Дифференцирующие звенья. Составление исходных ДУ САР (форма Коши; решенные относительно: ошибки, относительно регулируемой величины). ПФ используемые для описания систем (W(p), Wf(p), Ф(p), Фх(p)). Линейные непрерывные законы регулирования (пропорциональное регулирование, интегральное регулирование, изодромное регулирование, регулирование с использованием производных).
      Понятие устойчивости для линейных САР. Условия устойчивости, типы границы устойчивости. Необходимое условие устойчивости САР, достаточное для систем 1-ого и 2-ого порядков. Критерий устойчивости Гурвица. Критерий устойчивости Михайлова. Свойства, примеры годографов Михайлова. Построение областей устойчивости D-разбиение. Критерий устойчивости Найквиста. Свойства, примеры годографов Найквиста. Определение устойчивости по ЛАЧХ & ЛФЧХ. Методика построения асимптотических ЛАЧХ & ЛФЧХ линейных систем.
      Основные подходы к оценке качества систем и общие понятия о соответствующих критериях. Точность САР в типовых режимах. Коэффициенты ошибок. Оценка запаса устойчивости и быстродействия по переходной характеристике. Корневые методы оценки качества (колебательность, степень быстродействия). Понятие о среднегеометрическом корне. Мажоранта и миноранта переходного процесса. Интегральные оценки качества (линейная, квадратичная, улучшенная). Частотные критерии качества. Показатель колебательности.
      Постановка задачи повышения точности систем, обзор используемых методов. Увеличение коэффициента усиления разомкнутой цепи, как метод повышения точности. Повышение степени астатизма, как метод повышения точности. Применение регулирования по производным, как метод повышения точности. Комбинированное управление. Введение неединичных обратных связей.
      Постановка задачи коррекции систем, обзор используемых методов. Способы введения корректирующих звеньев. Практическая реализация последовательных корректирующих звеньев. Демпфирование с подавлением высоких частот. Демпфирование с подавлением средних частот. Демпфирование с подавлением низких частот или эквивалентным поднятием высоких. Демпфирование с введением отрицательных фазовых сдвигов. Применение корректирующих обратных связей.
      Постановка задачи синтеза систем, обзор используемых методов. Метод логарифмических амплитудных характеристик. Требования к низкочастотной части (НЧ) желаемой ЛАЧХ. Построение НЧ части желаемой ЛАЧХ. Требования к высокочастотной части (ВЧ) желаемой ЛАЧХ. Построение ВЧ части желаемой ЛАЧХ. Корневой метод синтеза. Метод корневых годографов.
      Системы с переменными (var) параметрами и их реакции на стандартные возмущения 1(t) и d(t). Отыскание ПФ систем с var-параметрами. Устойчивость и качество регулирования систем с var-параметрами. Синтез параметрических систем.
      Системы с запаздыванием; ПФ звена чистого запаздывания. Линеаризованные аппроксиматоры звена времянного запаздывания, вопросы адекватности. Устойчивость и качество регулирования систем с запаздыванием.
      Импульсные системы; виды модуляции. Типовая структура импульсной системы. Решетчатые функции. Математические операции с решетчатыми функциями. Разностные уравнения. Z-преобразование. Математическая модель реального импульсного элемента. Понятие дискретной ПФ. Правила преобразования структурных схем дискретных систем. ПФ системы с экстраполятором нулевого порядка и звеном запаздывания. ПФ системы с экстраполятором, осуществляющим АМ первого и второго рода. ПФ замкнутой дискретной системы (для регулируемой координаты, для ошибки, для возмущений). Дискретная синусоидальная последовательность, теорема Котельникова, частота Найквиста. Частотные ПФ импульсных систем. Устойчивость и качество импульсных систем. W-преобразование.
      Системы с ЦВМ, общие понятия. Процессы, протекающие в системах с ЦВМ. Методика вывода дискретных ПФ. О синтезе систем с ЦВМ методом логарифмических амплитудных характеристик. Дискретная коррекция. Дискретное представление непрерывных регуляторов. Модифицированные законы регулирования. Алгоритмы составления программ, реализующих ПФ на ЦВМ. Примеры составления программ для ЦВМ.


      Возможные классы для системы AMT (банковское обслуживание)



      Возможные классы для системы AMT (банковское обслуживание)




      Возможные ключи бинарных зависимостей



      Возможные ключи бинарных зависимостей


      На рисунке 2.28 рассмотрены две тренарные зависимости. Первая из них определяется таблицей:
      ПроектИсполнительЯзык
      САПР радиосхемИвановAda
      ПО АСУПетровC
      Компилятор C++СидоровC
      САПР радиосхемКузнецовFortran
      САПР радиосхемСидоровAda
      САПР радиосхемСидоровC
      ПО АСУСидоровC++


      Возможные ключи тренарных зависимостей



      Возможные ключи тренарных зависимостей


      Легко видеть, что ни какой-либо из столбцов зависимости, ни какая-либо комбинация из двух столбцов не определяют однозначно строки таблицы. Следовательно, единственным возможным ключом является тройка (проект, исполнитель, язык). Вторая зависимость определяется таблицей:
      СтудентПрофессорУниверситет
      БеловаЛавровМГУ
      БеловаШапироМГТУ
      ЧерноваЛавровМГТУ
      ЧерноваЛавровМГУ
      ХалецкийУилкинсонОксфорд
      Студент может посещать более одного университета, профессор может преподавать более, чем в одном университете. В каждом университете студент должен иметь одного научного руководителя. Легко видеть, что ни один из столбцов не может быть возможным ключом. Рассмотрим различные пары столбцов: (студент, профессор), (студент, университет), (профессор, университет). Отметим, что пары (студент, профессор) и (профессор, университет) не могут быть возможными ключами: значения (Чернова, Лавров) и (Лавров, МГУ) встречаются дважды. Что касается пары (студент, университет), то она может быть возможным ключом. Тройка (студент, профессор, университет) не является возможным ключом, так как это не минимальный набор атрибутов. Ограничения Ограничения - это функциональные зависимости между сущностями объектной модели. Под термином сущности подразумеваются объекты, классы, атрибуты, связи и зависимости. Ограничение сокращает количество возможных значений, которые может принимать некоторая сущность.


      Вычисление коэффициентов цифровых фильтров


      Аналоговые прототипы разрабатываются для приведенной (нормализованной) частоты. Данные прототипы, при оптимальной настройке, являются фильтрами Баттерворта (с максимально плоскими ЛАЧХ). Билинейное преобразование выполняется посредствам подстановки:
      1 1 - z^-1 s = -------------- * ---------- tan(omega/2) 1 + z^-1 Для вычисления тангенса при составлении программы используются тригонометрические тождества:
      sin(w) 1 - cos(w) tan(w/2) = ------------ (tan(w/2))^2 = ------------ 1 + cos(w) 1 + cos(w)

      Вычислительные алгоритмы идентификации частотных характеристик моделей


      Рабочие файлы: [fr_ABCD.mcd] [fr_ABCD_sz.mcd]
      Главная особенность вычислительных алгоритмов идентификации ЧХ состоит в том, что они ни коим образом не анализируют входной и выходной сигналы, а поэтому могут применяться только к математическим моделям. Исходной информацией для расчета ЧХ являются коэффициенты модели, поэтому предварительная процедура её идентификации является обязательной.
      Если программе известны коэффициенты числителя и знаменателя ПФ модели, то алгоритмизация процедуры расчета ЧХ не вызывает затруднений. Гораздо чаще программы математического моделирования располагают результатом идентификации в матричной ABCD-форме. Выведем формулу расчета ЧХ для данного случая:

      ЧХ дискретной системы так же можно рассчитать с помощью представленной формулы, но нужно выполнить постановку: jw¬ е jwT. В случае если требуется построить частотную характеристику для домена псевдочастоты l (что может потребоваться при использовании устаревших методик), требуемая подстановка имеет вид: jw ¬ (2+ jlT)/(2- jlT).
      Если же система является мультичастотной дискретной, гибридной, или же непрерывной, но со звеньями чистого запаздывания, то требуется корректное заполнение диагональной матрицы соответствующими частотными операторами. На сегодняшний день достоверность результатов в этом случае требует подтверждения методами основанными, на анализе входных и выходных сигналов.
      Во избежание необоснованных обвинений моделирующих программ, каждый специалист должен знать, что рассчитанная на основе известных коэффициентов ЧХ ни как не учитывает тех погрешностей, которые не может не вносить ЦВМ, согласно своей природе, в процесс симуляции моделей (см. Рисунок ). Например, для перехода в частотную область используется подстановка идеального частотного оператора s ¬ jw (без вещественной составляющей), который не учитывает погрешностей дискретных квазианалогов интеграторов моделирующих программ (что, впрочем, методически верно).

      На рисунке показаны переходные процессы системы, вызванные ненулевыми начальными условиями. Частотная характеристика разомкнутой системы очевидна (-40 дБ/дек. & -180°), и вычислительные алгоритмы частотного анализа ее подтверждают. Но симуляция движения координат модели выявляет несоответствия между временным и частотным доменами при переключении методов интегрирования (методу Эйлера с запаздыванием соответствует расходящийся переходный процесс; методу Эйлера с упреждением – сходящийся; методу трапеций – синусоида с постоянной амплитудой)


      Запись линеаризованных уравнений в стандартных для ТАУ формах


      Представим линеаризованное уравнение (*) в форме уравнения движения и в виде ПФ.
      Уравнение движения предполагает: а) выходную величину и ее производные в левой части уравнения, а входную и все остальные члены - в правой; б) так же, принято, чтобы сама выходная величина входила в уравнение с коэффициентом единица. Чтобы привести линеаризованное уравнение (*) к такому виду введем обозначения:

      тогда:
      T33Dy''' + T22Dy'' + T1Dy' + Dy = k1Dx1 + k2Dx2 + k3Dx'2 + k4 f1 .
      Знак D обычно опускают и записывают уравнение в символьном виде:
      (**)
      (T33 p3 + T22 p2 + T1 p + 1) y = k1Dx1 + (k2 + k3 p) x2 + k4 f1 ,
      где:


      T3, T2, T1 - постоянные времени;
      k4, k3, k2, k1 - коэффициенты усиления;
      p=d.../dt - оператор дифференцирования.

      y = W1(p) Dx1 + W2(p) x2 + Wf (p) f1 ,

      Более строго передаточные функции определяются через изображения Лапласа или Карсона-Хевисайда, как отношение изображений выходной и входной величин:

      Запись ПФ для переменных во времени величин и для их изображений совпадает до оператора. В первом случае ПФ зависит от оператора дифференцирования p=d.../dt. Во втором случае - от оператора Лапласа s=c+jw.


      Зависимости между классами



      Зависимости между классами


      Зависимости между классами являются двусторонними: все классы в зависимости равноправны. Это так даже в тех случаях, когда имя зависимости как бы вносит направление в эту зависимость. Так, в первом примере на рисунке 2.6 имя зависимости имеет_столицу предполагает, что зависимость направлена от класса страна к классу город (двусторонность зависимости вроде бы пропала); но следует иметь в виду, что эта зависимость двусторонняя в том смысле, что одновременно с ней существует и обратная зависимость является_столицей. Точно таким же образом, во втором примере на рисунке 2.6 можно рассматривать пару зависимостей владеет-принадлежит. Подобных недоразумений можно избежать, если идентифицировать зависимости не по именам, а по наименованиям ролей классов, составляющих зависимость. В языках программирования зависимости между классами (объектами) обычно реализуются с помощью ссылок (указателей) из одного класса (объекта) на другой. Представление зависимостей с помощью ссылок обнаруживает тот факт, что зависимость является свойством пары классов, а не какого-либо одного из них, т.е. зависимость - это отношение. Отметим, что хотя зависимости между объектами двунаправлены, их не обязательно реализовать в программах как двунаправленные, оставляя ссылки лишь в тех классах, где это необходимо для программы. Дальнейшие примеры зависимостей между классами приведены на рисунке 2.7. Первый пример показывает зависимость между клиентом банка и его счетами. Клиент банка может иметь одновременно несколько счетов в этом банке, либо вовсе не иметь счета (когда он впервые становится клиентом банка). Таким образом, нужно изобразить зависимость между клиентом и несколькими счетами, что и сделано на рисунке 2.7. Второй пример показывает зависимость между пересекающимися кривыми (в частности, прямыми) линиями. Можно рассматривать 2, 3, и более таких линий, причем они могут иметь несколько точек пересечения. Наконец, третий пример показывает необязательную (optional) зависимость: компьютер может иметь, а может и не иметь мышь. Зависимостям между классами соответствуют зависимости между объектами этих классов. На рисунке 2.8 показаны зависимости между объектами для первого примера рисунка 2.6; на рисунке 2.9 показаны зависимости между объектами для примеров, изображенных на рисунке 2.7.


      Зависимости между объектами



      Зависимости между объектами


      Отметим, что при изображении зависимостей между объектами мы, как правило, знаем количество объектов и не нуждаемся в таких обозначениях как "несколько", "два и более", "не обязательно". При проектировании системы удобнее оперировать не объектами, а классами.


      Заземлитель потенциала


      Модель заземлителя потенциала состоит из одного блока constraint. Данный датчик неявного решателя будет уравновешиваться теми блоками unknown (с красной рамкой), что будут обнаружены в источниках той энергетической цепи, которую составит пользователь моделирующей программы. При этом заземлитель может быть подключен к любому ее потенциальному контакту.

      Не следует путать заземлитель энергетического потенциала с условным графическим обозначением заземления на схемах электрических принципиальных. Заземлитель потенциала – это не проводник. Он может быть установлен в модели только один раз. В программах с развитым графическим интерфейсом за подключение этого блока отвечает сама моделирующая программа.


      

          Инновации: Менеджмент - Моделирование - Софт