Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MATLAB Simulink. Компьютерное моделирование экономики

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
6.13. Signal Routing — маршрутизация сигналов
Рис. 6.110. Применение переключателя Switch в подсистеме Banks
бразильского кризиса какао
На рис. 6.110 показан пример применения блока Switch в моде­ли бразильского кризиса.
Подсистема Banks (рис. 5.21) раскрывается двойным щелчком мыши. Ссуда (линия GivenLoan) выдается, если рентабельность производителя — заемщика (RntbUnit) выше действующей сред­ней банковской процентной ставки по кредитам (BnksInterest). Размер ссуды не превышает обеспечения в виде основного капита­ла заемщика FixFnd.
6.13.8. Блок многовходового переключателя Multiport
Switch
Назначение:
Выполняет
переключение входных сигналов по сигналу управ-
ления, задающему номер активного входного порта.
Параметры:
Number of inputs — количество входов.
Блок многовходового переключателя Multiport Switch, пропус­кает на выход сигнал с того входного порта, номер которого равен текущему значению управляющего сигнала. Если управляющий сигнал не является сигналом целого типа, то блок Multiport Switch производит отбрасывание дробной части числа, при этом в коман­дном окне Matlab появляется предупреждающее сообщение.
211
6. Блоки библиотек Simulink
6.13.9. Блок передачи сигнала Goto
Назначение:
выполняет передачу сигнала к блоку From.
Áëîê
Рис. 6.111. Окно параметров блока Goto
Параметры:
Tag — идентификатор сигнала.
Tag visibility — признак видимости. Выбирается из списка:
— local — сигнал передается в пределах локальной подсистемы. — scoped — сигнал передается в пределах локальной подсисте-
ìû
и подсистемах нижнего уровня иерархии.
— global — сигнал передается в пределах всей модели.
Использование
блока Goto совместно с блоком From обеспечи­вает передачу сигнала без линии связи. Для передачи могут испо­льзоваться сигналы любого типа.
В зависимости от выбранного параметра Tag visibility изменяет-
ся внешний вид блока:
Идентификатор сигнала помещается в квадратные скобки, если признак видимости имеет значение local. Например, [A], где A — идентификатор сигнала.
Идентификатор сигнала помещается в фигурные скобки, если признак видимости имеет значение scoped. Например, {A}.
Идентификатор сигнала отображается на пиктограмме блока без дополнительных символов, если признак видимости имеет значение global.
212
6.13. Signal Routing — маршрутизация сигналов
Применение блоков Goto и From. При исследовании модели у нас возникает желание отобразить в блоках Scope много перемен­ных. При этом множество сигнальных линий очень затемняют со­держание (причинно-следственные связи модели). Для передачи информации без линий используем блоки Goto и From. Напри­мер, в модели прогнозирования цен на нефть от каждого сигнала отходят стрелочки с блоками Goto. На блок Scope с именем Oil_1 направляем сигналы от соответствующих блоков From.
6.13.10. Блок приема сигнала From
Назначение:
выполняет прием сигнала от блока Goto.
Áëîê
Рис. 6.112. Окно параметров блока From
Параметры:
Goto tag — идентификатор принимаемого сигнала. Должен сов­падать с идентификатором, указанным в соответствующем блоке Goto.
Использование блока From совместно с блоком Goto обеспечи­вает передачу сигнала без линии связи.
Признак видимости сигнала отображается на пиктограмме бло­ка таким же способом, что и у блока Goto.
В модели может быть сколь угодно много блоков From, прини­мающих сигнал от одного блока Goto.
Применение блока From дано в описании блока Goto.
213
6. Блоки библиотек Simulink
6.13.11. Goto Tag Visibility — блок признака видимости
сигнала
Назначение:
отображает признак видимости сигнала, передаваемого
Блок блоком Goto в иерархии подсистем.
Параметры:
Goto tag — идентификатор сигнала, передаваемого блоком Goto.
Блок необходимо включать в состав модели или подсистемы в том случае, если для передаваемых сигналов задана область види­мости scoped. Блок помещается в те подсистемы, на которые рас­пространяется область видимости передаваемых данных. Блок не участвует в передаче сигнала, а лишь отображает имя передавае­мого сигнала.
6.13.12. Data Store Memory — блок создания общей
области
памяти
Назначение:
Áëîê
создает поименованную область памяти для хранения
данных.
214
Рис. 6.113. Окно параметров блока Data Store Memory
6.13. Signal Routing — маршрутизация сигналов
Параметры:
Data store паmе — имя области памяти.
Initial value — начальное значение.
Interpret vector parameters as 1-D (флажок) — интерпретировать вектор параметров данных как одномерный вектор.
Блок используется совместно с блоками Data Store Write (за­пись данных) и Data Store Read (считывание данных).
Параметр Initial value задает не только начальное значение сиг­нала, но и его размерность. Например, если начальное значение сигнала задано матрицей [0 1; 2 3], то сохраняемый сигнал должен быть матрицей 2´2.
Если блок Data Store Memory расположен в модели верхнего уровня, то заданную им область памяти можно использовать как в самой модели, так и во всех подсистемах нижнего уровня иерар­хии. Если блок Data Store Memory расположен в подсистеме, то заданную им область памяти можно использовать в данной подси­стеме и всех подсистемах нижнего уровня иерархии.
Блок работает с действительными сигналами типа double.
Поля RTW используются для управления компиляцией в языки С, С++ и др.
6.13.13. Data Store Write — блок записи данных в общую
область
памяти
Назначение:
Áëîê
записывает данные в поименованную область памяти. Параметры: Data store паmе — имя области памяти. Sample time — шаг модельного времени. Операция записи выполняется для значения сигнала, получен-
ного на предыдущем шаге расчета.
В модели могут использоваться несколько блоков Data Store
Write, выполняющих запись в одну область памяти. Однако если запись производится на одном и том же шаге расчета, то результат будет не предсказуем.
6.13.14. Data Store Read — блок считывания данных из
общей области памяти
Назначение: Блок
считывает данные из поименованной области памяти.
215
6. Блоки библиотек Simulink
Параметры: Data store паmе — имя области памяти. Sample time — шаг модельного времени. Операция считывания выполняется на каждом шаге расчета.
В модели могут использоваться несколько блоков Data Store Read, выполняющих считывание данных из одной и той же облас­ти памяти.
6.14. User Defined Functions — небиблиотечные
функции, создаваемые пользователем
Рис. 6.114. Библиотека блоков для функций пользователя
6.14.1. Fcn — блок задания функции
Назначение:
Задает
Параметры:
Expression — выражение, используемое блоком для вычисления выходного сигнала на основании входного. Это выражение состав­ляется по правилам, принятым для описания функций на языке С.
В выражении можно использовать следующие компоненты:
Входной сигнал. Входной сигнал в выражении обозначается u, если он является скаляром. Если входной сигнал — вектор, необ-
216
выражение в стиле языка программирования C.
6.14. User Defined Functions — небиблиотечные функции
Рис. 6.115. Окно параметров блока Fcn
ходимо указывать номер элемента вектора в круглых скобках. На­пример, u(1) и u(3) — первый и третий элементы входного вектора.
Константы.
Арифметические
операторы (+—*/). Операторы отношения (= = !=><>=<=). Логические операторы (&&||!). Круглые скобки. Математические функции: abs, acos, asin, atan, atan2, ceil, cos,
cosh, exp, fabs, floor, hypot, ln, log, log10, pow, power, rem, sgn, sin, sinh, sqrt, tan è tanh.
Переменные из рабочей области. Если переменная рабочей об-
ласти является массивом, то ее элементы должны указываться с помощью индексов в круглых скобках. Например, A(1,1) — пер­вый элемент матрицы A.
Операторы отношения и логические операторы возвращают
значения в виде логического нуля (FALSE) или логической едини­цы (TRUE).
Операторы, допускаемые к использованию в выражении, име-
ют следующий приоритет (в порядке убывания):
() + — (унарные) =!= && Возведение в степень ! / + — (бинарные) ><<=>= ||
217
6. Блоки библиотек Simulink
Блок не поддерживает матричные и векторные операции. Вы-
ходной сигнал блока всегда — скаляр.
Рис. 6.116. Пример параметров блока Fcn в модели рыночного
равновесия
Пример использования блока Fcn показан в модели рыночного
равновесия в блоках вычисления спроса {Demand) и предложения {Supply). Спрос вычисляется в верхнем блоке модели по формуле:
Dmd = 100 – 10*u,
где u — входной сигнал (цена, Prc, Price).
6.14.2. MATLAB Fcn — блок задания функции MATLAB
Задает выражение в стиле языка программирования MATLAB.
Рис. 6.117. Окно параметров блока MATLAB Fcn
218
6.14. User Defined Functions — небиблиотечные функции
Параметры: MATLAB function — выражение на языке MATLAB. Output dimensions — размерность выходного сигнала. Значение
параметра –1 (минус один) предписывает блоку определять раз­мерность автоматически.
Output signal type — тип выходного сигнала. Выбирается из
списка.
6.14.3. S-Funсtion — Simulink-функции, создаваемые пользователем
Simulink-функции (S-функции, S-functions) являются описани-
блока на одном из языков программирования: MATLAB, C,
ем C++, Ada или Fortran. Набор стандартных блоков Simulink доста­точно обширен, однако в практике моделирования встречаются ситуации, когда нужного блока нет либо структурное моделирова­ние делает модель слишком сложной. В этом случае необходимо использовать технологию S-функций для создания нужного блока. С помощью языков программирования пользователь может со­здать описание сколь угодно сложного блока и подключить его к Simulink-модели, при этом, с точки зрения взаимодействия поль­зователя с моделью, блок на основе S-функции ничем не отлича­ется от стандартного библиотечного блока Simulink. Создаваемые блоки могут быть непрерывными, дискретными или гибридными. S-функции, созданные на C, C++, Ada или Fortran компилируют­ся в исполняемые (*.dll) файлы, за счет чего обеспечивается повы­шенная скорость выполнения таких блоков. Такие S-функции об­ладают еще и дополнительными возможностями, которые включа­ют работу с разными типами данных (целыми, действительными и комплексными числами различной степени точности), использо­вание матриц в качестве входных и выходных переменных (MAT­LAB S-функции могут оперировать только векторами в качестве входных и выходных переменных), а также больший набор внут­ренних функций (сallback-методов).
Чаще всего S-функции используются при создании новых биб­лиотечных блоков, обеспечивающих взаимодействие Simulink с аппаратными средствами компьютера.
219
6. Блоки библиотек Simulink
6.15. Маскирование подсистем
Механизм маскирования подсистем позволяет оформить под­систему как полноценный библиотечный блок, т. е. снабдить под­систему собственным окном параметров, пиктограммой, справоч­ной системой и т. п.
Маскирование подсистем дает пользователю следующие преи­мущества:
Расширяет возможности пользователя по управлению парамет­рами модели.
Позволяет создавать более понятный интерфейс подсистемы.
Повышает наглядность блок-диаграммы.
Расширяет возможности построения сложных моделей.
Повышает защищенность модели от несанкционированной мо­дификации.
Для выполнения маскирования имеющейся подсистемы необ­ходимо предварительно выполнить следующие действия:
Определить, какие параметры подсистемы должны задаваться пользователем в будущем окне параметров. Задать эти параметры в подсистеме с помощью идентификаторов (имен).
Определить, каким образом параметр должен задаваться в окне диалога (с помощью строки ввода, выбором из раскрывающегося списка или установкой флажка).
Разработать эскиз пиктограммы блока.
Создать комментарии (справку) по использованию подсистемы.
Маскирование подсистемы выполняется с помощью Mask Edi­tor (редактор маски).
Для запуска редактора маски необходимо выделить маскируе­мую подсистему и выполнить команду Mask Subsystem из меню Edit. Можно также воспользоваться контекстным меню. После за­пуска Mask Editor на экран будет выведено окно редактора, имею­щее 3 вкладки: Icon (Пиктограмма), Initialization (Инициализа­ция), Documentation (Документация). Первая из вкладок обеспе­чивает создание пиктограммы подсистемы, вторая дает возможность создать окно диалога для ввода параметров и тре­тья — позволяет ввести описание блока и создать его справку.
В верхней части всех вкладок имеется поле Mask Type, с помо­щью которого можно задать имя блока. В нижней части окна име­ется 5 кнопок управления редактором:
220