Text
                    И.В. ЧЕРНЫХ
(Э/ШИОГГИИ0И


И. В. Черных SIMULINK среда создания инженерных приложений Под общей редакцией кандидата технических наук В. Г. Потемкина МОСКВА "ДИАЛОГ-МИФИ" 2004
УДК 681.142.2 БЕК 32.973 449 Черных И. В. 449 SIMULINK: среда создания инженерных приложений / Под общ. ред. к. т. н. В. Г. Потемкина. - М.: ДИАЛОГ-МИФИ, 2003. - 496 с. ISBN 5-86404-186-6 В книге дано систематическое изложение способов организации процедур моде- лирования с использованием системы SIMULINK. Подробно описана операционная среда системы и ее интерфейсы с другими инструментальными средствами из соста- ва программных продуктов семейства MathWorks. Рассмотрены многочисленные примеры моделирования конкретных динамических систем. Книга предназначена для инженеров и исследователей, выполняющих научные и инженерные разработки в различных прикладных областях, а также для студентов университетов и вузов, нуждающихся в мощном инструменте моделирования при выполнении исследовательских работ, курсовых и дипломных проектов. БЕК 32.973 Учебно-справочное издание Илья Викторович Черных SIMULINK: среда создания инженерных приложений. Пол общ. ред. к. т. н. В. Г. Потемкина Редактор О. А. Голубев Макет И. М. Чумаковой Корректор В. С. Кустов Лицензия ЛР N 071568 от 25.12.97. Подписано в печать 15.12.2003. Формат 60x84/16. Бум. офс. Печать офс. Гарнитура Таймс. Усл. печ. л. 28,83. Уч,- изд л. 12,1. Тираж 3 000 экз. Заказ 413® ЗАО “ДИАЛОГ-МИФИ”, ООО “Д и М” 115409, Москва, ул. Москворечье, 31, корп. 2 Т.: 320-43-55, 320-43-77 Http://www.bitex.ru/~dialog E-mail: dialog@bitex.ru Подольская типография 142100, г. Подольск, Московская обл., ул. Кирова, 25 ISBN 5-86404-186 6 © И.В Черных, 2004 © Оригинал-макет, оформление обложки. ЗАО "ДИАЛОГ-МИФИ", ООО “Д u М”, 2004
ВВЕДЕНИЕ Рубеж XXI в. фирма The MathWorks Inc. отметила выпуском новой вер- сии системы инженерных и научных вычислений MATLAB 6. Отличитель- ной особенностью этой версии является развитая среда разработки прило- жений, которая характеризуется большим разнообразием инструментальных средств и дружественных графических интерфейсов. Структура семейства программных и инструментальных средств систе- мы MATLAB 6 показана на рисунке. MATLAB I Toolboxes Data Access Tools Application Development Tools SIMULINK Stateflow Student Products Blocksets < .K. kartrter Products C<x* Generation Tools ' Важнейшая роль во всех версиях программных продуктов принадлежит системе научных и технических вычислений. Следует отметить ту уникаль- ную особенность системы MATLAB, что все вычислительные операции в ней выполняются над векторами или наборами векторов. Таким образом, система MATLAB по своей сути является эмулятором векторных вычисле- ний, и. это существенно отличает ее от других систем, таких, как Maple, MathCAD, Mathematica. Векторная обработка данных обеспечивает высо- кую скорость вычислений, избавляет пользователя от написания циклов и гарантирует непревзойденную точность. Другое важнейшее достоинство системы MATLAB - это модульный принцип построения. С момента своего зарождения в 1984 г., когда основ- ным назначением системы был вызов модулей, написанных на языках вы- сокого уровня, и по настоящее время последовательное проведение этого принципа в жизнь способствовало созданию большого числа пакетов при- кладных программ (ППП). В создании этих ППП принимают участие /тюг/пиои з
И. В. Черных. SIMULINK: среда создания инженерных приложений как разработчики системы MATLAB, так и многочисленные партнеры. В результате современное семейство продуктов MATLAB включает более 50 ППП, а также свыше 250 приложений, разработанных более чем 170 партнерами фирмы, что существенно расширяет функциональные возмож- ности системы. Эти возможности системы отмечены на рисунке блоками Toolboxes и MathWorks Partner Products. В составе системы MATLAB можно теперь обнаружить ряд инструмен- тальных средств (ИС) разработки приложений Application Development Tools. Это ИС Notebook для написания живых М-книг, ИС Excel Link для работы с электронными таблицами MS Excel, ИС GUIDE для создания GUI-прило- жений, ИС Runtime Server для создания независимо исполняемых приложе- ний Standalone Applications, ИС Web Server для работы с приложениями MATLAB в сети Internet. Инструментальные средства доступа к данным Data Access Tools включают программное обеспечение для работы с базами данных, сбора информации в режиме реального времени от агентства Bloomberg, корпорации Interactive Data Corporation (IDC) и с серверов Yahoo (блок Data Sources). Наконец, следует отметить ту огромную роль, которую играют студен- ческие версии Student Products. Те, кто следили за историей развития сис- темы MATLAB, не могут не отметить, что, начав с упрощенных версий, в настоящее время фирма выпускает в качестве студенческой полную вер- сию системы, но при этом запрещает и блокирует ее коммерческое исполь- зование в части создания независимо исполняемых приложений. Помимо перечисленных выше компонентов в состав семейства про- граммных продуктов входит подсистема моделирования динамических процессов SIMULINK. Для пользователя это конструктор, с помощью кото- рого он может объединять блоки, соответствующие отдельным элементам динамической системы в единое целое и изучать их поведение во времени. При этом пользователь получает доступ ко всем наборам блоков Blocksets, относящимся к различным приложениям. Возможности моделирования, предоставляемые продуктами семейства MATLAB, не ограничены анализом динамического поведения систем во вре- мени, а допускают также моделирование событий (блок Stateflow), что по- зволяет имитировать различные ситуации, возникающие при эксплуатации технической системы. Это повышает роль математического моделирования, поскольку позволяет формировать архивы событий, которые могут иметь неоценимое значение при анализе нештатных ситуаций. В этой связи следу- ет обратить внимание, что в состав программных продуктов включены генераторы отчетов для вычислительных работ MATLAB Report Generator и процедур моделирования SIMULINK Report Generator. 4
Введение Обратим внимание на наличие в составе продуктов семейства МАТ- LAB/SIMULINK инструментальных средств генерации кодов Code Generation Tools. Это позволяет не только создавать независимо исполняемые коды на языках С или Ada, но и выполнять их аппаратную реализацию на различ- ных типах микропроцессоров. Так, например, в состав версии MATLAB 6 включены инструментальные средства для программирования микропро- цессоров фирм Motorola и Texas Instruments и др. Именно эти особенности новой версии MATLAB позволяют характери- зовать ее как среду проектирования инженерных приложений, что значи- тельно превосходит первоначальный замысел системы как среды инженер- ных и научных вычислений. Если к этому добавить, что в марте 2001 г. заключено стратегическое соглашение между фирмами The MathWorks, Inc. и Wind River Systems, Inc. об объединении усилий по созданию нового ядра системы моделирования на базе систем SIMULINI^ и MATRIXx, то следует признать, что система MATLAB 6 становится безусловным лидером в клас- се систем, предназначенных для создания инженерных приложений. Справочный материал и описание расширений системы MATLAB в виде пакетов прикладных программ, наборов модулей и инструментальных средств можно найти в работах. В процессе подготовки книги к изданию вышла новая версия системы 6.5.1 Release 13 with Service Pack 1, в которую включен ряд новых продуктов и выполнены обновления существующих в виде новых версий. Представление о структуре нового состава программ- ных продуктов по состоянию на октябрь 2003 г. и сравнение с предшест- вующей версией можно почерпнуть из следующей таблицы: № п/п Наименование продукта Версия Примечание 6.5 (R13.0.1) 6.5.1 (R13SP1) 1 MATLAB 6.5 6.5.1 Обновление 2 Simulink 5.0.1 5.1 Обновление 3 Aerospace Blockset . 1.0.1 • 1.5 Обновление 4 Bioinformatics Toolbox - 1.0 Новый ППП 5 CDMA Reference Blockset 1.1 1.1 6 Communications Blockset 2.5 2.5 7 Communications Toolbox 2.1 2.1 8 Control System Toolbox 5.2 5.2 9 Curve Fitting Toolbox 1.1 1.1 10 DSP Blockset 5.0 5.! Обновление 5
И. В. Черных. SIMULINK: среда создания инженерных приложений Введение № п/п Наименование продукта Версия Примечание 6.5 (R13.0.1) 6.5.1 (R13SP1) 11 Data Acquisition Toolbox 2.2 2.2 12 Database Toolbox 2.2.1 2.2.1 13 Datafeed Toolbox 1.4.1 1.4.1 14 Dials & Gauges Blockset 1.1.2 1.1.2 15 Embedded Target for Infenion Cl66 Microcontrollers 1.0 1.0 Новое ИС 16 Embedded Target for Motorola MPC555 1.0.1 1.0.1 17 Embedded Target for Motorola HC12 1.0 1.0 Новое ИС 18 Embedded Target for OSEK/VDX 1.0 1.0 Новое ИС 19 Embedded Target for TIC6000 DSP 1.0 1.0 20 Excel Link 2.0 2.0 21 Filter Design Toolbox 2.5 2.5 22 Financial Derivatives Toolbox 2.0 2.0 23 Financial Time Series Toolbox 2.0 2.0 24 Financial Toolbox 2.3 2.3 25 Fixed-Income Toolbox 1.0 1.0 Новый ППП 26 Fixed-Point Blockset 4.0.1 4.0.1 Обновление 27 Fuzzy Logic Toolbox 2.1.2 2.1.2 28 GARCH Toolbox 2.0 2.0 29 Image Acquisition Toolbox 1.0 1.0 Новый ППП 30 Image Processing Toolbox 4.0 4.0 31 Instrument Control Toolbox 1.2 1.2 32 LM1 Control Toolbox 1.0.8 1.0.8 33 MATLAB COM Builder 1.0 1.0 . 34 MATLAB Compiler 3.0 3.0 35 MATLAB Excel Builder 1.1 1.1 36 MATLAB Link for Code Composer Studio 1.2 1.2 37 MATLAB Report Generator 1.3 1.3 38 MATLAB Runtime Server Development Kit 6.1.1 6.1.1 № п/п Наименование продукта Версия Примечание 6.5 (R13.0.1) 6.5.1 (R13SP1) 39 MATLAB Web Server 6.1.1 6.1.1 40 Mapping Toolbox 1.3 1.3 41 Model Predictive Control Toolbox 2.0 2.0 42 Model-Based Calibration Toolbox LI 1.1 43 Mu-Analysis and Synthesis Toolbox 3.0.7 3.0.7 44 Neural Network Toolbox 4.0.2 4.0.2 45 Nonlinear Control Design Blockset 1.1.6 1.1.6 46 Optimization Toolbox 2.2 2.2 47 Partial Differential Equation Toolbox 1.0.4 1.0.4 48 Real-Time Windows Target 2.2 2.2 49 Real-Time Workshop 5.0.1 5.0.1 50 Real-Time Workshop Embedded Coder 3.0.1 3.0.1 51 Requirements Management Interface 1.0.4 1.0.4 52 Robust Control Toolbox 2.0.9 2.0.9 53 SB2SL (SystemBuild to Simulink) 2.5 2.5 54 Signal Processing Toolbox 6.1 6.1 55 SimMechanics LI 2.1 56 S imPowerSy stems 2.3 3.0 Обновление 57 Simulink Performance Tools 1.2 1.3 58 Simulink Report Generator 1.3 1.3 59 60 Spline Toolbox 3.2 3.2 Stateflow 5.0 5.1 61 Stateflow Coder 5.0 5.1 62 Statistics Toolbox 4.1 4.1 63 Symbolic Math Toolbox 3.0.1 3.0.1 64 System Identification Toolbox 5.0.2 5.0.2 65 Virtual Reality Toolbox 3.1 3.1 66 Wavelet Toolbox 2.2 2.2 67 xPC Target 2.0 2.0 68 xPC TargetBox 1.0 1.0 69 xPC Target Embedded Option 2.0 2.0
И, В. Черных. SIMULINK: среда создания инженерных приложений Остановимся более подробно на описании пакетов, предназначенных для математического и имитационного моделирования процессов в динами- ческих системах. Сюда входит большой комплект инструментальных средств моделиро- вания динамических систем, систем реального времени, событийного моде- лирования, подготовки кодов для микропроцессоров, средств генерации от- четов и контроля выполнения проектов. Ядром этого комплекта является система математического моделирования Simulink, а также инструменталь- ные средства оценки качества моделирования Simulink Performance Tools. Важное место в процессе создания технической системы занимает полу- натурное, или макетное моделирование с элементами реальной аппаратуры. Базовым инструментальным средством для такого моделирования является система Real-Time Workshop, а также генератор кодов Real-Time Workshop Embedded Coder на языке С. К этому комплекту следует отнести пакет про- грамм моделирования измерительных устройств Instrument Control Toolbox, набор блоков для моделирования пультов управления и приборных досок Dials & Gauges Blockset. Существенными компонентами этого комплекта являются также инструментальные средства макетирования систем реально- го времени хРС Target на базе PC, включая генератор кодов хРС Target Em- bedded Option для плат PC. Моделирование процессов и систем Динамические системы Simulink Система моделирования SB2SL (SystemBuild to Simulink) Преобразование моделей SystemBuild к моделям Simulink Simulink Performance Tools ИС оценки качества моделирования Системы реального времени Real-Time Workshop ИС моделирования систем реального времени Real-Time Workshop Embedded Coder Генератор С-кодов для Real-Time Workshop Real-Time Windows Target Инструментальное средство компоновки систем реального времени на базе PC Instrument Control Toolbox ППП моделирования измерительных устройств Dials & Gauges Blockset Набор блоков для моделирования пультов управления и приборных досок xPC Target Инструментальное средство макетирования систем реального времени на базе PC xPC Target Embedded Option Генератор кодов для плат PC 8
Введение Имитационное, или событийное моделирование с учетом влияния среды окружения реализовано на основе системы моделирования Stateflow и гене- ратора кодов Stateflow Coder. Наличие инструментальных средств генерации кодов для микропроцес- соров позволяет не только формировать коды на языке С, но и выполнять их аппаратную реализацию на различных типах микропроцессоров. Инстру- ментальные средства MATLAB Link for Code Composer Studio и Embedded Target for Texas Instrument поддерживают разработку кодов для микропро- цессоров фирмы Texas Instruments, а комплект Embedded Target for Motorola MPC555 - для микропроцессоров фирмы Motorola. В настоящее время эти инструментальные средства дополнены средствами генерации кода для но- вых типов микропроцессоров Motorola НС12, Infenion С166, OSEK/VDX. Состав программных продуктов семейства MathWorks существенно расширен новыми специализированными наборами блоков для моделирова- ния динамики аэрокосмических летательных аппаратов Aerospace Blockset, механических систем SimMechanics, электрических систем SimPowerSys- tems, а также имитации виртуальной реальности Virtual Reality Toolbox. Описание некоторых из этих пакетов на русском языке можно найти в книгах [6-9]. При написании данной книги была использована документа- ция справочной подсистемы, а также ряд полнотекстовых документов по системе SIMULINK [14—17]. Остановимся на структуре книги, материал которой выстроен следую- щим образом. Первая глава посвящена описанию операционной среды системы SIMU- LINK, рассмотрен обозреватель библиотеки блоков системы, а также мето- ды создания динамических моделей и выбора параметров операционной среды при организации процедур моделирования. Вторая глава содержит систематическое описание блоков системы SIMULINK. Она содержит 14 разделов по числу разделов библиотеки бло- ков системы. В третьей главе рассмотрены процедуры оформления отдельных струк- турных схем в библиотечные блоки с собственным окном задания парамет- ров, пиктограммой и справочной системой. В четвертой главе описаны интерфейсы системы SIMULINK с другими программными продуктами семейства MathWorks, в том числе с системой MATLAB, инструментальным средством LTI-Viewer пакета Control System Toolbox и набором инструментов SIMULINK Performance Tools. В пятой главе представлены приемы работы с отладчиком SIMULINK- моделей в графическом и командном режимах, а также способы повышения эффективности моделирования при использовании системы SIMULINK. 9
И В Черных. SIMULINK: среда создания инженерных приложений Последняя глава книги посвящена способам написания S-функпий на языках MATLAB, С и Fortran. Здесь же рассмотрены конкретные приме- ры применения этого подхода при моделировании электродвигателя посто- янного тока. Для удобства работы с книгой все модели систем, рассмотренных в кни- ге, будут размещены на сайте www.matlab.ru. В состав книги входит 3 приложения, индексный и предметный указате- ли, а также список литературы, включающий 17 ссылок. 10
1. ОПЕРАЦИОННАЯ СРЕДА SIMULINK 1.1. Запуск системы Для запуска системы SIMULINK необходимо предварительно выпол- нить запуск системы MATLAB. Рабочий стол системы MATLAB с одним командным окном показан на рис. 1.1. Там же показана всплывающая под- сказка, которая появляется в окне при наведении указателя мыши на кнопку SIMULINK панели инструментов. Рис. 1.1 После открытия командного окна системы MATLAB нужно запустить систему SIMULINK. Это можно сделать одним из трех способов: • нажать кнопку (Simulink) на панели инструментов системы MATLAB; • в строке командного окна MATLAB напечатать Simulink и нажать кла- вишу Enter; • выполнить опцию Open .. меню File и открыть файл модели (mdl-файл). Последний способ предпочтителен при запуске уже готовой и отлажен- ной модели, когда требуется лишь провести моделирование и не нужно добавлять новые блоки в модель. При применении двух первых способов открывается окно обозревателя библиотеки блоков (рис. 1.2). /ЗИДЛОГтПИСИ 11
И. В. Черных. SIMULINK: среда создания инженерных приложений Simulink Library Browser File Edit View Help Continuous: simulink/Continuous E> Simulink - is-} Continuous 4-: i»4 Discontinuities iH Discrete is-j Look-Up Tables У Math Operations irj Model Verification jS-[ Model-Wide Utilities is- Ports b Subsystems Discontinuities Discrete Look-Up Tables i»J Signal Attributes it- Signal Routing 1 X 4- + Math Operations i ±-| Sinks ; irj Sources . ModeiVerification i;J User-Defined Functions it: Ss Aerospace Blockset Th. CDMA Reference Blockset ~hi Communications Blockset Control System Toolbox щ DSP Elockset [+, Dials & Gauges Blockset :+ Misc Model-Wide Utilities nT <£c Ports Ь Subsystems — If? Signal Attributes jijr Embedded Target for Motorola MPC555 .+' Embedded Target for TIC6000 DSP T| Signal Routing Ready A Puc. 1.2 1.2. Обозреватель библиотеки блоков Окно обозревателя библиотеки блоков Simulink Libraray Browser содер- жит следующие элементы (рис. 1.2): 1. Заголовок с названием окна - Simulink Libraray Browser. 2. Панель меню - File, Edit, View, Help. 12
1. Операционная среда SIMULINK 3. Панель инструментов с кнопками наиболее часто используемых опций меню. 4. Окно названия выбранного раздела библиотеки. 5. Список разделов библиотеки. 6. Окно для вывода содержимого раздела библиотеки (список подразделов или блоков библиотеки). 7. Строка состояния обозревателя. На рис. 1.2 выделена библиотека системы SIMULINK (в левой части ок- на) и показаны ее разделы (в правой части окна). Библиотека системы SIMULINK содержит следующие разделы: • Continuous - блоки аналоговых элементов; • Discontinuous - блоки нелинейных элементов; • Discrete — блоки дискретных элементов; • Look-Up Tables - блоки таблиц; • Math Operations - блоки элементов, определяющих математические опе- рации; • Model Verification - блоки проверки свойств сигналов; • Model-Wide Utilities - раздел дополнительных утилит; • Ports&Subsystems - порты и подсистемы; • Signal Attributes - блоки задания свойств сигналов; • Signal Routing - блоки маршрутизации сигналов; • Sinks - блоки приема и отображения сигналов; • Sources - блоки источников сигнала; • User-Defined Function -функции, определяемые пользователем. Список разделов библиотеки Simulink представлен в виде дерева, и пра- вила работы с ним являются общими для списков такого вида: пиктограмма свернутого узла дерева содержит символ а пиктограмма развернутого - символ Для того чтобы развернуть или свернуть узел дерева, достаточно щелк- нуть на его пиктограмме левой клавишей мыши. При выборе соответствующего раздела библиотеки его содержимое ото- бражается в правой части окна (рис. 1.3). 13
И. В. Черных. SIMULINK: среда создания инженерных приложений Рис. 1.3 Для работы с окном используются команды, собранные в меню. Меню обозревателя библиотеки блоков содержит следующие пункты: • File (Файл) - работа с файлами библиотек; • Edit (Редактирование) - добавление блоков и их поиск (по названию); • View (Вид) - управление показом элементов интерфейса; • Help (Справка) - вывод окна справки по обозревателю библиотек. Полный список команд меню обозревателя библиотек приведен в прил. 1. Для работы с обозревателем можно также использовать кнопки на пане- ли инструментов (рис. 1.4). Рис. 1.4 Кнопки панели инструментов имеют следующее назначение: 1. Создать новую S-модель (открыть новое окно модели). 14
1. Операционная среда SIMULINK 2. Открыть одну из существующих S-моделей. 3. Изменить свойство окна обозревателя "Всегда сверху". После нажатия на кнопку окно обозревателя будет отображаться поверх других откры- тых окон. 4. Найти блок, название которого (или первые несколько символов назва- ния) указано в расположенном справа от кнопки текстовом поле Если требуемый блок найден, в окне обозревателя открывается соответст- вующий раздел библиотеки, а блок отображается как выбранный, в про- тивном случае в подокне комментария выводится сообщение Not found <имя блока> (Блок <имя> не найден). 1.3. Создание модели Для создания модели в среде SIMULINK необходимо последовательно выполнить ряд действий. 1. Создать новый файл модели с помощью команды File/New/Model, или используя кнопку D на панели инструментов (здесь и далее с помощью символа указывается последовательность вызова пунктов меню. Вновь созданное окно модели показано на рис. 1.5. untitled Elie , Edit View Simulation Format Tools Help □ gS Q X I j>, • Inoiomi vI j ifej Щ пн *1? I Ready 100% f " ’ ' ’ode45 Puc. 1.5 2. Расположить блоки в окне модели Для этого необходимо открыть соот- ветствующий раздел библиотеки Далее, указав курсором на требуемый блок и нажав на левую клавишу мыши, "перетащить" блок в созданное окно. Клавишу мыши нужно держать нажатой. На рис. 1.6 показано окно модели, содержащее блоки. 15
И. В. Черных. SIMULINK: среда создания инженерных приложений Рис. 1.6 Для удаления блока необходимо выбрать блок (указать курсором на его изображение и нажать левую клавишу мыши), а затем нажать клавишу Delete на клавиатуре. 3. Далее, если это требуется, нужно изменить параметры блока, установ- ленные по умолчанию. Для этого необходимо дважды щелкнуть левой клавишей мыши, указав курсором на изображение блока. Откроется ок- но параметров данного блока. При вводе числового значения параметра следует иметь в виду, что в качестве десятичного разделителя должна использоваться точка, а не запятая. После внесения изменений нужно закрыть окно кнопкой ОК. Можно также, не закрывая окна, воспользо- ваться кнопкой Apply для сохранения изменений. На рис. 1.7 в качестве примера показаны блок, моделирующий передаточную функцию, и окно параметров данного блока. Рис. 1.7 16
1. Операционная среда SIMULINK 4. После установки на схеме всех блоков требуется выполнить их соедине- ние. Для этого необходимо указать курсором на "выход" блока, а затем нажать и, не отпуская левую клавишу мыши, провести линию ко входу другого блока. После чего отпустить клавишу. Если соединение не соз- дано, то линия связи будет пунктирной и иметь красный цвет. В случае правильного соединения линия связи будет сплошной. Для создания ли- нии связи можно также выделить блок-источник сигнала, затем нажать клавишу Ctrl на клавиатуре и выделить блок-приемник. Для создания точки разветвления в соединительной линии нужно подвести курсор к предполагаемому узлу и, нажав правую клавишу мыши, протянуть ли- нию. Для удаления линии требуется выделить ее, а затем нажать клави- шу Delete на клавиатуре. Схема модели, в которой выполнены соедине- ния между блоками, показана на рис. 1.8. Рис. 1.8. 5. После составления расчетной схемы необходимо сохранить ее в виде файла на диске, выбрав пункт меню File/Save As... в окне схемы и указав папку и имя файла. Следует иметь в виду, что имя файла может иметь произвольную длину, но должно начинаться с буквы и содержать только алфавитно-цифровые символы латиницы и знаки подчеркивания. При последующем редактировании схемы можно пользоваться пунктом ме- ню File/Save. При повторных запусках программы Simulink загрузка схемы осуществляется с помощью меню File/Open... в окне обозревателя библиотеки блоков или из командного окна системы MATLAB. 1.4. Основные элементы окна модели Окно модели содержит следующие элементы (рис. 1.9): 1. Заголовок с названием окна. Вновь созданному окну присваивается имя Untitled с соответствующим номером. 17
И. В. Черных. SIMULINK; среда создания инженерных приложений 2. Панель меню - File, Edit, View, Simulation, Format, Tools, Help. 3. Панель инструментов. 4. Окно для создания схемы модели. 5. Строка состояния, содержащая информацию о текущем состоянии модели. 1 5 Рис. 1.9 Меню окна содержит опции для редактирования модели, ее настройки и управления процессом расчета, работы с файлами и т. п.: • File (Файл) - работа с файлами моделей; • Edit (Редактирование) - изменение модели и поиск блоков; • View (Вид) - управление показом элементов модели и интерфейса; • Simulation (Моделирование) — задание настроек для моделирования и управление процессом расчета; • Format (Форматирование) - изменение внешнего вида блоков и модели в целом; • Tools (Инструментальные средства) — применение специальных средств для работы с моделью (отладчик, инструмент линейного анализа и т. п.); • Help (Справка) - открытие окна справочной системы. Полный список опций меню окна модели приведен в прил. 2. Для работы с моделью можно также использовать кнопки на панели ин- струментов (рис. 1.10). D й й S X R3) ® IQ i 1 II 1 1 1 1 1 2 3 4 5 6 7 8 f— ► (Normal Jll Ф tfl Й E "1 <£’ 1 III 1 I 1 1 1 1 1 1 9 10 11 12 13 14 15 16 17 18 19 Puc. 1.10 18
1- Операционная среда SIMULINK Кнопки панели инструментов имеют следующее назначение: 1. New Model - открыть новое окно модели. 2. Open Model - открыть существующий файл модели (mdl-файл). 3. Save Model - сохранить файл на диске. • 4. Print Model - вывести на печать схему модели. 5. Cut - вырезать выделенную часть модели в буфер хранения. 6. Сору - скопировать выделенную часть модели в буфер хранения. 7. Paste - вставить в окно модели содержимое буфера хранения. 8 Undo - отменить предыдущую операцию редактирования. 9. Redo - восстановить отмененную операцию редактирования. 10. Start/Pause/Continue Simulation - запуск процесса моделирования (кнопка Start); после запуска модели изображение кнопки заменяется символом и , которое соответствует команде Pause (приостановить моделирова- ние). Для возобновления моделирования после паузы следует щелкнуть по той же кнопке, поскольку в режиме паузы ей соответствует команда Continue (Продолжить). 11. Stop - закончить моделирование. Кнопка становится доступной после начала моделирования, а также после выполнения команды Pause. 12. Normal/Accelerator - обычный/ускоренный режим расчета. Опция дос- тупна, если установлено приложение Simulink Performance Tool. 13. Build all - создать исполняемый код модели (ехе-файл) с помощью Real Time Workshop (Мастерская реального времени). 14. Update diagram - обновить окно модели. 15. Build Subsystem - создать исполняемый код подсистемы 16. Library Browser - открыть обозреватель библиотеки блоков. Если обо- зреватель уже открыт, то его окно будет выведено поверх всех осталь- ных окон. 17. Toggle Model Browser - открыть окно обозревателя модели. При исполь- зовании данной опции в левой части окна модели будет открыто допол- нительное окно, содержащее изображение иерархической структуры модели. 18. Go to parent system - переход в подсистему высшего уровня иерархии (в "родительскую систему"). Команда доступна только из подсистемы низшего уровня. 19. Debug - запуск отладчика модели. В нижней части окна модели находится строка состояния, в которой отображаются краткие комментарии к кнопкам панели инструментов, 19
И. В. Черных. SIMULINK: среда создания инженерных приложений а также к пунктам меню, когда указатель мыши находится над соответст- вующим элементом интерфейса. Это же текстовое поле используется и для индикации состояния Simulink; Ready (Готов) или Running (Выполнение). В строке состояния отображаются также: • масштаб отображения блоков модели (в процентах, исходное значение равно 100 %); • индикатор продолжительности процесса моделирования; • текущее значение модельного времени; • используемый метод моделирования. 1.5. Основные приемы подготовки и редактирования модели Добавление текстовых надписей Для повышения наглядности модели удобно использовать текстовые надписи. Для создания надписи достаточно указать мышью место надписи и дважды щелкнуть левой клавишей мыши. После этого появится блок над- писи с курсором ввода. Так же можно изменить и подписи к блоками моде- лей. Для этого нужно установить мышь в область надписи и щелкнуть левой клавишей мыши - в подписи появится курсор ввода, и ее можно будет ре- дактировать. На рис. 1.11 показаны текстовая надпись и изменение надписи в блоке Transfer Function. Следует иметь в виду, что рассматриваемая вер- сия программы (Simulink 5) не адаптирована к использованию кирилличе- ских шрифтов и применение их может иметь самые разные последствия: отображение надписей в нечитаемом виде, обрезание надписей, сообщения об ошибках, а также невозможность открыть модель после ее сохранения. Поэтому применение надписей на русском языке для текущей версии Simu- link крайне нежелательно. ________________________________________-|п|х| File Edit View Simulation Format Tools J Help D И fll A ffe,» ; <> i i ► {Normal J К "I . felS ® d untitled * This is the text string 5 — Tiansfer Fen Ready 100%" ~“'ode45 ~ Puc. 1.11 20
1 Операционная среда SIMULINK Выделение объектов Для выполнения какого-либо действия с элементом модели (блоком, соеди- нительной линией, надписью) этот элемент необходимо сначала выделить. Выделение объектов удобнее всего осуществляется с помощью мыши. Для этого необходимо установить курсор мыши на нужном объекте и щелкнуть левой клавишей мыши. Объект будет выделен. Об этом будут свидетельст- вовать маркеры по углам объекта (см. рис. 1.11). Можно также выделить несколько объектов. Для этого Требуется установить курсор мыши вблизи них, нажать левую клавишу мыши и, удерживая ее, начать перемещать мышь. Появится пунктирная рамка, размеры которой будут изменяться при перемещении мыши. Все охваченные рамкой объекты становятся выделен- ными. Для выделения всех объектов в модели удобно использовать команду Edit/Select АП. После выделения объекта его можно копировать или пере- мещать в буфер промежуточного хранения, извлекать из буфера, а также удалять, используя стандартные приемы работы в Windows-программах. Копирование и перемещение объектов в буфер хранения Для копирования объекта в буфер его необходимо предварительно вы- делить, а затем выполнить команду Edit/Сору или воспользоваться кнопкой на панели инструментов. Для вырезания объекта в буфер его необходимо предварительно выде- лить, а затем выполнить команду Edit/Cut или воспользоваться кнопкой на панели инструментов. При выполнении данных операций следует иметь в виду, что объекты помещаются в собственный буфер MATLAB и недос- тупны из других приложений. Использование команды Edit/Сору model to Clipboard позволяет поместить графическое изображение модели в буфер Windows и соответственно делает его доступным для других приложений. Копирование можно выполнить и таким образом: нажать правую клави- шу мыши и, не отпуская ее, переместить объект. При этом будет создана копия объекта, которую можно переместить в необходимое место. Вставка объектов из буфера хранения Для вставки объекта из буфера необходимо предварительно указать ме- сто вставки, щелкнув левой клавишей мыши в предполагаемом месте встав- ки, а затем выполнить команду Edit/Paste или воспользоваться инструмен- том ® на панели инструментов. 21
И. В. Черных. SIMULINK: среда создания инженерных приложений Удаление объектов Для удаления объекта его необходимо предварительно выделить, а затем выполнить команду Edit/Clear или воспользоваться клавишей Delete на кла- виатуре. Нужно помнить, что команда Clear удаляет блок без помеще- ния его в буфер обмена. Однако эту операцию можно отменить опцией File/Undo. Соединение блоков Для соединения выхода одного блока со входом другого курсор мыши устанавливается на выходе блока, от которого должно исходить соединение. При этом курсор превращается в большой крест из тонких линий (рис. 1.12). Держа нажатой левую клавишу мыши, необходимо переместить курсор ко входу следующего блока, где курсор мыши приобретет вид креста из тонких сдвоенных линий (рис. 1.13). Добившись протяжки линии ко вхо- ду следующего блока, надо отпустить левую клавишу мыши. Соединение будет завершено, и в конце его появится жирная стрелка. ДО1Х1 □ untitled * File Edit View Simulation Format Tools Help D jfiS П dj £1 » • ItJomal д|' Й Ф ts | b И ® Ready 100% Г" ode45 □ untitled * Puc. 1.12 fjle Edit View Simulation Fsjrmat Tools Help D 1 tS Ш ' X R"! ® i £2 /2 ► « |n<xmal 3 (Э Ф Й I fe IS / ® Ready i100% i ode45 Puc. 1.13 22
1. Операционная среда SIMULINK Созданную линию можно выделить, признаком чего будут квадратные маркеры, расположенные в узловых точках соединительной линии (рис 1 14) Для выделенной линии доступны те же операции, что и для блоков модели: удаление, перемещение, копирование в буфер хранения и т. д. Иногда требуется сделать петлю соединительной линии в ту или иную сторону. Для этого нужно захватить фрагмент линии и отвести его в нуж- ную сторону, перемещая мышь с нажатой левой клавишей. Рис. 1.14 пояс- няет этот процесс. ________________________________ ______________ И? ~ial*l Eile Edit View Simulation Format Tool» Help , _ D ! а: И # | И j £2 j > « |N«mai ~Э| Ф | Й Я ft ® H untitled * Constant Scop* Ready .100% f ode45 Л/с. 1.14 Изменение размеров блоков Для изменения размера блока он выделяется, после чего курсор мыши необходимо установить на один из маркеров по углам блока. Как только курсор мыши превратится в двунаправленную диагональную стрелку, мож- но будет при нажатой левой клавиши мыши растягивать блок по диагонали, увеличивая или уменьшая его размеры (рис. 1.15). При этом изменяется только графическое изображение блока, а размеры его названия в виде тек- стовой надписи остаются прежними. П untilli»d * JQI*I ЕН» Edit View Simulation Format Tools Help b | « о л Г & ъ a i £2 ъ: 3 ] ш Ф й i й пв ft <s> , к -- - f‘'ГЛ”» • - « бу—ЧЛ.КЧ Ready 100% ode45 < Puc. 1.15 23
И. В. Черных. SIMULINK: среда создания инженерных приложений Перемещение блоков и вставка блоков в соединение Блок, участвующий в соединении, можно перемещать в окне модели, выделив его и перетаскивая, как обычно, мышью При этом соединение не разрывается, а просто сокращается или увеличивается в длине. В длин- ное соединение можно вставить новый блок, поместив его в нужном месте линии. Такая вставка возможна лишь для блоков, имеющих один вход и один выход, которые включаются в соединение. Использование команд Undo и Redo В процессе освоения программы пользователь может совершать дейст- вия, кажущиеся на первый взгляд необратимыми (например, случайное уда- ление части модели, наложение блоков друг на друга при копировании и т. д ). В этом случае следует воспользоваться командой Undo - отмена по- следней операции. Команду можно вызвать с помощью кнопки — в панели инструментов окна модели или из меню Edit. Для восстановления отменен- ной операции служит команда Redo (Инструмент ~ ). Форматирование объектов В меню Format (так же как и в контекстном меню, вызываемом нажати- ем правой клавиши мыши на объекте) находится ряд опций форматирова- ния блоков. Их можно разделить на несколько характерных групп. 1. Управление отображением надписей и видом блоков: • Font - установка шрифта для текстовых надписей; • Enable ТеХ commands - включить выполнение специальных тексто- вых команд для отображения математических символов, греческих букв с помощью редактора ТеХ; • Text alignment - выравнивание текста в текстовом блоке; • Flip name - помещение подписи блока сверху или снизу блока; • Show/Hidc name - отображение или скрытие подписи выделенного блока; • Flip block - отражение блока относительно вертикальной оси; • Rotate block - вращение блока на 90°; • Show drop shadow - показ тени от блока; • Show port labels - показ меток портов 2. Установка цвета: • Foreground color - установка цвета линий выделенных блоков. • Background color - установка цвета фона для выделенных блоков 24
1. Операционная среда SIMULINK • Screen color - установка цвета фона для всего окна модели. 3. Изменение положения блока: • Flip block - зеркальное отображение относительно вертикальной оси симметрии. • Rotate block - поворот блока на 90° по часовой стрелке. 4. Форматирование надписей. Команда Format/Font выводит окно с уста- новками шрифта для текстовых надписей, позволяющее изменять вид шрифта надписи, размер шрифта, начертание и т. п. параметры надписи. 5. Прочие установки: • Library link display — отображение связей с библиотеками. • Sample time colors - установка цвета блока индикации времени. • Wide nonscalar lines - увеличение/уменьшение ширины линий век- торных сигналов. • Signal dimensions - отображение размерности сигналов. • Port data types - вывод данных о типе портов. • Storage class - класс памяти. Параметр, устанавливаемый при работе Real-Time Workshop. • Execution order - вывод порядкового номера блока в последова- тельности исполнения. 1.6. Установка параметров моделирования и его выполнение Перед выполнением моделирования необходимо предварительно задать параметры. Задание параметров выполняется в панели управления меню Simulation/Parameters. Вид панели управления приведен на рис 1.16. Окно настройки параметров моделирования имеет 4 вкладки: • Solver (Решатель) - установка параметров моделирования. • Workspace I/O (Ввод/вывод данных в рабочую область) - установка параметров обмена данными с рабочей областью MATLAB. • Diagnostics (Диагностика) - выбор параметров режима диагностики. • Advanced (Дополнительно) - установка дополнительных параметров. • Real-Time Workshop - параметры инструмента "Мастерская реального времени". 25
И. В. Черных. SIMULINK: среда создания инженерных приложений J Simulation Parameters untitled Sotvw| Workspace I/O | Diagnostics j Advanced] Real-Time Workshop| Simulation time Start time j 00 Slop time: pO.O Solver options Type. | Variable step | |ode45 (Dcrmand-Ptince) W ......... . Max step size | «io Relative tolerance: [le S Min stop size: [«Ла Absolute tolerance' I euto fc'i 1Я111Ч1И MH<I4I HIM Initial step tae. I auto Output options | Reline output ОК " Cancel Help Puc. 1.16 Установка параметров моделирования модели выполняется с помощью элементов управления, размещенных на вкладке Solver. Эти элементы раз- делены на 3 группы (рис. 1.16): Simulation time (Интервал моделирования), Solver options (Параметры решателя), Output options (Параметры вывода). Установка параметров моделирования Simulation time- [интервал моделирования]. Величина интервала моделирования задается с помощью указания начального (Start time) и конечного (Stop time) значе- ний времени. Начальное время, как правило, задается равным нулю. Вели- чина конечного времени задается пользователем, исходя из условий решае- мой задачи. Solver options: [параметры решателя]. При выборе параметров решателя необходимо ука- зать метод интегрирования (Туре), либо с фиксированным (Fixed-step), либо с переменным (Variable-step) шагом. Можно выбрать один из следующих методов: • ode45 - одношаговые явные методы Рунге - Кутты 4-го и 5-го порядка; • ode23 - одношаговые явные методы Рунге - Кутты 2-го и 3-го порядка; • odell3 - многошаговый метод Адамса - Башворта - Мултона перемен- ного порядка; л 26
1. Операционная среда SIMULINK • odel^s - многошаговый метод переменного порядка (от 1 до 5), исполь- зующий формулы численного дифференцирования; • ode23s - одношаговый метод, использующий модифицированную фор- мулу Розенброка 2-го порядка; • ode23t - метод трапеций с интерполяцией; • ode23tb - неявный метод Рунге - Кутты в начале решения и метод, ис- пользующий формулы обратного дифференцирования 2-го порядка в по- следующем. Ниже списков Туре находится область, содержимое которой меняется в зависимости от выбранного метода интегрирования. При выборе Fixed- step в данной области появляется текстовое поле Fixed-step size (Величина фиксированного шага), позволяющее указывать величину шага интегриро- вания (рис. 1.17). Величина шага интегрирования по умолчанию устанавли- вается системой автоматически (auto). Требуемая величина шага может быть введена вместо значения auto либо в форме числа, либо в виде вычис- ляемого выражения (то же самое относится и ко всем параметрам, устанав- ливаемым системой автоматически). Рис. 1.17 При выборе Fixed-step необходимо также задать режим расчета (Mode). Для параметра Mode доступны 3 варианта: 27
И. В. Черных. SIMULINK. среда создания инженерных приложений • MultiTasking (Многозадачный) - необходимо использовать, если в модели присутствуют параллельно работающие подсистемы и результат работы модели зависит от временных параметров этих подсистем. Режим позво- ляет выявить несоответствие скорости и дискретности сигналов, пересы- лаемых блоками друг Другу. • SingleTasking (Однозадачный) - используется для тех моделей, в кото- рых недостаточно строгая синхронизация работы отдельных составляю- щих нс влияет на конечный результат моделирования. • Auto (Автоматический выбор режима) - позволяет Simulink автоматиче- ски устанавливать режим MultiTasking для тех моделей, в которых используются блоки с различными скоростями передачи сигналов, и ре- жим SingleTasking для моделей, в которых содержатся блоки, опери- рующие одинаковыми скоростями. При выборе Variable-step в области появляются поля для установки трех параметров: • Max step size - максимальный шаг интегрирования. По умолчанию он устанавливается автоматически (auto), и его значение в этом случае равно (StopTime - StartTime)/50. Довольно часто это значение оказыва- ется слишком большим и наблюдаемые графики представляют собой ломаные, а не плавные линии. В этом случае величину максимального шага интегрирования необходимо задавать явным образом. • Min step size - минимальный шаг интегрирования. • Initial step size - начальное значение шага интегрирования. При моделировании непрерывных систем с использованием переменно- го шага необходимо указать точность вычислений: относительную (Relative tolerance) и абсолютную (Absolute tolerance). По умолчанию они равны со- ответственно 103 и auto. Output options: [параметры вывода]. В нижней части вкладки Solver задаются настройки параметров вывода выходных сигналов моделируемой системы (Output op- tions). Для данного параметра возможен выбор одного из трех вариантов: • Refine output (Скорректированный вывод) - позволяет изменять шаг ре- гистрации модельного времени и тех сигналов, которые сохраняются в рабочей области MATLAB с помощью блока То Workspace. Установка такта дискретности выполняется в строке редактирования Refine factor. 28
1. Операционная среда SIMULINK расположенной справа. По умолчанию значение Refine factor равно 1, это означает, что регистрация производится с шагом At = 1 (т. е. для ка- ждого значения модельного времени). Если задать Refine factor рав- ным 2, это означает, что будет регистрироваться каждое второе значение сигналов, 3 - каждое третье т. д. Параметр Refine factor может прини- мать только целые положительные значения. • Produce additional output (Дополнительный вывод) - обеспечивает до- полнительную регистрацию параметров модели в заданные моменты времени. Их значения вводятся в строке редактирования (в этом случае она называется Output times) в виде списка, заключенного в квадратные скобки. При использовании этого варианта базовый шаг регистрации (At) равен 1. Значения времени в списке Output times могут быть дроб- ными числами и иметь любую точность. • Produce specified output only (Формировать только заданный вывод) - устанавливает вывод параметров модели только в заданные моменты времени, которые указываются в поле Output times (Моменты времени вывода) в виде вектора. Установка параметров обмена с рабочей областью Элементы, позволяющие управлять вводом в рабочую область MATLAB и выводом из нее промежуточных данных и результатов моделирования, расположены на вкладке Workspace I/O (рис. 1.18). Рис. I 18 29
И. В. Черных. SIMULINK: среда создания инженерных приложений Элементы вкладки разделены на 3 поля: • Load from workspace (Загрузить из рабочей области). Если флажок Input (Входные данные) установлен, то в расположенное справа текстовое по- ле можно ввести формат данных, которые будут считываться из рабочей области MATLAB. Установка флажка Initial State (Начальное состояние) позволяет ввести в связанное с ним текстовое поле имя переменной, со- держащей параметры начального состояния модели. Данные, указанные в полях Input и Initial State, передаются в исполняемую модель посредст- вом одного или более блоков In (из раздела библиотеки Sources). • Save to workspace (Записать в рабочую область) - позволяет установить режим вывода значений сигналов в рабочей области MATLAB и задать их имена. • Save options (Параметры записи) - задает количество строк при передаче переменных в рабочую область. Если флажок Limit rows to last установ- лен, то в поле ввода можно указать количество передаваемых строк (от- счет строк производится от момента завершения расчета). Если флажок не установлен, то передаются все данные. Параметр Decimation (Проре- живание) задает шаг записи переменных в рабочую область (аналогично параметру Refine factor вкладки Solver). Параметр Format (формат дан- ных) задает формат передаваемых в рабочую область данных. Доступ- ные форматы Array (Массив), Structure (Структура), Structure With Time (Структура с дополнительным полем "Время"). Установка параметров диагностирования модели Вкладка Diagnostics (рис. 1.19) позволяет изменять перечень диагности- ческих сообщений, выводимых Simulink в командном окне MATLAB, а также устанавливать дополнительные параметры диагностики модели. Сообщения об ошибках или проблемных ситуациях, обнаруженных Simulink в ходе моделирования и требующих вмешательства разработчика, выводятся в командном окне MATLAB. Исходный перечень таких ситуаций приведен в списке Configuration options (Опции конфигурации). Разработ- чик может указать вид реакции на каждую ситуацию, используя группу пе- реключателей в поле Action (Действие). С помощью переключателей можно выбрать один из вариантов реакции: • None - игнорировать, • Warning - выдать предупреждение и продолжить моделирование, • Error - выдать сообщение об ошибке и остановить процесс моделирования. Выбранный вид реакции отображается в списке рядом с наименованием события. 30
1. Операционная среда SIMUL1NК -J Simulation Parameters; untitlei | Workspace I/O | Diagnostics | Advanced] Real-Time Workshop] Simulation options Consistency checking- [none Bounds checking: pone Solver Configuration options’ |------Solver Performance----------------*---------- Algebraic loop______________Warn in j Block priority violation Warning Min step size violation Warning — -----Sample Time------------------ -1 sample time in source Warning Discrete used as continuous Warning HultiTask rate transition Error SingleTask rate transition None -----Data Checking----------------- Л11 Action Г" None <• Warning C Error Cancel Puc. 1.19 В панели Simulation options (Опции моделирования) можно задать виды проверки работы S-функций: Consistency Checking (Проверка совместимо- сти) и Bounds Checking (Проверка границ). Выбор опции Consistency Check- ing дает возможность Simulink контролировать правильность работы поль- зовательской S-функции для выбранного решателя. С помощью опции Bounds Checking проверяется возможный выход за границы массивов при вычислении S-функцией вектора переменных состояния и их производных. Установка данных опций 'имеет смысл на этапе отладки модели, поскольку время расчета в этом случае значительно увеличивается. Выполнение моделирования Запуск моделирования выполняется с помощью выбора пункта меню Simulation/Start или кнопки ► на панели инструментов. Процесс моделиро- вания можно завершить досрочно, выбрав пункт меню Simulation/Stop или кнопку и . Моделирование также можно остановить (Simulation/Pause) и затем продолжить (Simulation/Continue). Завершение работы Для завершения работы необходимо сохранить модель в файле, закрыть окно модели, окно обозревателя библиотеки блоков, а также командное ок- но системы MATLAB. 31
2. БИБЛИОТЕКА БЛОКОВ SIMULINK 2.1. Sources - источники сигналов Constant Источник постоянного сигнала Пиктограмма: Constant Назначение: Задает постоянный по уровню сигнал. Окно задания параметров: Block Parameters: Constants , Constant — - --------------— ' Output the constant specified by the 'Constant value1 parameter. If 'Constant value’ is a vector and ’Interpret vector parameters as 1 -D1 is on. treat the constant value as a 1 -D array. Otherwise, output a matrix with the same dimensions as the constant value - Parameters—---------------------------------—— Constart value: |[ 0.5 1 1 5] P Interpret vector parameters as 1 -D pr ------Show additional parameters- Output data type mode: [ specify via dialog 3 Output data type (e g. sfrx[16]. uintfS), float] single')]. p__ _ Output scaling mode | Use specified scaling ..у j Output scaling value (Slope, eg. 2~-9 or [Slope Bias], e g. [1.25 3]): I ................................. “3 I DK I Cancel Help j Acply j АШОШШ 32
2. Библиотека блоков SIMULINK Параметры блока: Constant value: [постоянная величина]. Значение может быть действительным или ком- плексным числом, вычисляемым выражением, вектором или массивом. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке поя- вится окно списка Output data type mode. Output data type mode: [выбор типа выходных данных]. Для выбора используется раскрывающийся список. Тип выходного сигнала может наследоваться от блока Constant value (inherit from 'Constant value*), от блока назначения (inherit via back propagation), быть задан одним из стандартных типов, например int8, либо может быть определен с помощью дополнительных параметров (Specify via dialog). В последнем случае появятся дополнительные окна списков Output data type, Output Scaling Mode и Output scaling value. Output data type: [тип выходных данных]. В графе можно задать требуемый тип данных, включая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Output Scaling Mode: [способ масштабирования выходного сингала]. Выбирается из списка: • Best precision: Vector-vise - наилучшая точность. • Use specified scaling - использовать заданный масштаб. При выборе дан- ного значения параметра в окне появляется дополнительная графа Output scaling value. Output scaling value: [величина масштаба]. Параметр задается как основание системы счисления со смещением, например [1.25 3]. Смещение допускается не указывать. 33
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример: Рис. 2.1 иллюстрирует применение блока Constant. Измерение уровня выходно- го сигнала блока выполня- ется с помощью цифрового индикатора Display. ConrtinM t>ii₽t*y4 Рис. 2.1 Sin* Wave | Источник синусоидального сигнала Пиктограмма: S I Sin* Wav* Назначение: Формирует синусоидальный сигнал с заданной частотой, амплитудой,, фазой и смещением. Для формирования выходного сигнала блоком могут использоваться двгГ алгоритма. Вид алгоритма определяется параметром Sine Туре [способ фор- мирования сигнала]: 1 • Time-based - по текущему времени (для непрерывных систем) или по значению сигнала на предыдущем шаге расчета и величине такта дискретности (для дискретных систем); (/ • Sample-based - по величине такта дискретности и количеству расчетные шагов на один период синусоидального сигнала. 34
2. Библиотека блоков SIMULINK Окно задания параметров- Вид окна меняется в зависимости от выбран- ного способа формиро- вания синусоидального сигнала. lock Parameters: Sine Wave Sine Wave -............... -- - - ( Output a sine wove vbere the sine type deterrnmes the computabonal technique used The parameters in the two types ate related through. Samples pet period - 2*pi /(Frequency ’ Sample line] Number of offset samples « Phase " Samples P* period / (2"pt) Use the samplebased sine type if numerical problems due to running for targe timet (eg overflow in absolute time) occur. L - . . ....................._ "Parameters ----------- ----- ------~-----------* -- ---q Sine type: | Time based ' Ir'1,1'"ri................... Amplitude: [Г Bias: |о , Frequency (rad/sec) I F Phase (rad): I p.--------------------------------------------------------------- I Sample time: P Interpret vector parameters as 1 -D ____-L__2X.. _. .. _______________________ j I OK [ Cancel | Hefr [ | Формирование сигнала по текущему значению времени для непрерывных систем Выходной сигнал источника в этом режиме соответствует выражению у = Amplitude sin( frequency time + phase) +bias. Параметры блока: Amplitude: [амплитуда]. Bias: [постоянная составляющая сигнала]. Frequency (rads/sec): [частота (рад/с)]. Phase (rads): [начальная фаза (рад)] 35
И. В Черных. SIMULINK: среда создания инженерных приложений Sample time: [такт дискретности] Используется для получения дискретной выборки из непрерывного сигнала. Параметр может принимать следующие значения: • 0 (по умолчанию) - используется при моделировании непрерывных систем. • >0 (положительное значение) - задается при моделировании дискрет- ных систем. • -1 (минус один) - такт дискретности устанавливается таким же, как и в предшествующем блоке, т. е. блоке, откуда приходит сигнал в дан- ный блок. Данный параметр может задаваться для многих блоков биб- лиотеки Simulink. В дальнейшем он подробно рассматриваться не будет. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Для очень больших значений времени точность вычисления выходных значений сигнала падает. Формирование сигнала по текущему значению времени для дискретных систем Алгоритм определения значения выходного сигнала источника для каж- дого последующего шага расчета определяется выражением (в матричной форме) sin(r + Ar) cos(Ar)-sin(Ar) sin(r) cos(r+At) -sin(A/)cos(Ar) cos(z) где Az - постоянная величина, равная значению Sample time. В данном режиме ошибка округления для больших значений времени меньше, чем в предыдущем случае. Формирование выходного сигнала по количеству тактов на один период Выходной сигнал источника в этом режиме соответствует выражению у = Asin(2n/:/7' + tp) + b = Asin((2Tt/: +/)/N) + b, где A - амплитуда сигнала; f - частота сигнала в Гц; Т - такт дискретности; N-количество тактов в секунду; к - номер текущего шага, к = 0, .... N-1; ср - начальная фаза сигнала; / - начальная фаза, заданная количеством тактов; b - постоянная составляющая (смещение) сиг нала. 36
2. Библиотека блоков SIMULINK Параметры блока: Amplitude: [амплитуда]. Bias: [постоянная составляющая сигнала]. Samples per period: [количество тактов на один период синусоидального сигнала]: N = Samples per second = 1 / JT; p = Samples per period = 2лА. Number of offset samples: [начальная фаза сигнала]. Задается количеством тактов дискретности: I = ф р / 2 л. Sample time: [такт дискретности]. Interpret vector parameters as 1-D. [интерпретировать вектор как одномерный]. В данном режиме ошибка округления не накапливается, поскольку Simu- link начинает отсчет номера текущего шага с нуля для каждого периода. Пример: На рис. 2.2 пока- зано применение бло- ка с разными значе- ниями такта дискрет- ности времени (Sample time = 0 для блока Sine Wave 1 и Sample time = 0.1 для блока Sine Wave 2). Для отображения графи- ков выходных сигна- лов в модели исполь- зован осциллограф (Scope). 37
И. В. Черных. SIMULINK: среда создания инженерных приложений Ramp Источник линейно изменяющеюся сигналя Пиктограл 1ма: Ramp Назначение: Формирует линейный сигнал вида у = slope time + initial value. Окно задания параметров: Block Parameters: R< I OK | Cancel | Hek> | | Параметры блока: Slope: [скорость изменения выходного сигнала]. Start time: [время начала формирования сигнала]. Initial output: [начальный уровень сигнала на выходе блока]. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Пример: На рис. 2.3. показано использование данного блока 38
2. Библиотека блоков SIMULINK *Ш1*1 Рис. 2.3 Step Генератор ступенчатого сигнала Пиктограмма: Step Назначение: Формирует ступенчатый сигнал. Окно задания параметров: 39
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Step time: [время наступления перепада сигнала (с)]. Initial value: [начальное значение сигнала]. Final value: [конечное значение сигнала]. Перепад сигнала, задаваемый параметрами Initial value и Final value, может быть как в большую сторону (конечное зна- чение больше, чем начальное), так и в меньшую (конечное значение мень- ше, чем начальное). Значения начального и конечного уровней могут быть не только положительными, но и отрицательными (например, изменение сигнала с уровня -5 до уровня -3). Sample time: [такт дискретности]. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Enable zero crossing detection: [определять прохождение сигнала через нулевой уровень]. С помощью дан- ной опции устанавливается режим проверки смены знака переменной. При- мером необходимости такого определения может служить моделирование мяча, падающего на пол. В момент касания производная перемещения (ско- рость) меняет знак. Этот момент может попасть между расчетными точка- ми, и тогда результат моделирования существенно исказится. Повышение точности в этом случае может быть достигнуто за счет существенного уменьшения шага интегрирования, однако это приведет к увеличению вре- мени моделирования. Для исключения этого Simulink на каждом шаге про- веряет смену знака переменными, и, если такое изменение обнаружено, то Simulink выполняет интерполяцию значений переменной на этом шаге. Благодаря данному алгоритму время расчета существенно не увеличивается. Необходимость данного параметра в окне диалога блока Step обусловлена возможностью попадания перепада сигнала между расчетными шагами. 40
2. Библиотека блоков SIMULINK Пример: На рис. 2.4. показано использование генератора ступенчатого сигнала. Signal Generator Генератор сигналов Пиктограмма: □□□□ <х> > Signal Generator Назначение: Формирует один из четырех видов периодических сигналов: • sine - синусоидальный сигнал, • square - меандр (прямоугольный сигнал), • sawtooth - пилообразный сигнал, • random - случайный сигнал. 41
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: [.Block Parameters: Signal GenenM Параметры блока: Wave form: (вид сигнала). Amplitude: [амплитуда]. Frequency: (частота (рад/с)]. Units: [единицы измерения частоты]. Может принимать два значения: • Hertz - Гц, • rad/sec - рад/с. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Пример: На рис. 2.5 показано применение этого источника для формирования прямоугольного сигнала. 42
2. Библиотека блоков SIMULINK ВБЭ’ЗИМИЬ'. -laixi а а pip р ав@ ; в § Scope Sign л! Oeneutor 05 о 05 15 2 05 О Time offset О Рис. 2.5 Uniform Rundom Number Источник случайною сигнала с равномерным распределением Пиктограмма: Uniform Random Number Назначение: Формирование случайного сигнала с равномерным распределением. Окно задания параметров: 43
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Minimum: [минимальный уровень сигнала]. Maximum: [максимальный уровень сигнала]. Initial seed: [начальное значение] Sample time: [такт дискретности]. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Пример: Схема с использованием блока и график его выходного сигнала пред- ставлены на рис. 2.6. > Scope ЕЫЕ Uniform Random Scope Number Random Number Пиктограмма: > Random Number 44 >3 p!»' ABB'S “Vi//A? .:' ।11 J H Ij 1 0 0.2 0.4 0Б 0.8 1 Time offset 0 i Puc. 2.6 Источник случайного сигнала с нормальным распределением
2. Библиотека блоков SIMULINK Назначение: Формирование случайного сигнала с равномерным распределением уровня сигнала. Окно задания параметров: Block Parameters: Random Number Random Number —‘' . Output a normally (G aussian) distributed random signal Output is r epeatabie for a given seed г Parameters —-> ~~ - — —| | Mean: 11 I J- i Variance: p ' Initial seed- 1° Sample time: 1° . P Interpret vector parameters as 1-D | OK | Cancel | Help | | 1 Параметры блока: Mean: [среднее значение]. Variance: [дисперсия]. Initial seed: [начальное значение]. Sample time: [такт дискретности]. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Пример: Схема модели с блоком Random Number и график его выходного сигнала представлены на рис, 2 7. 45
И. В. Черных. SIMULINK: среда создания инженерных приложений Pulse Generator | Источник импульсного сигнала Пиктограмма : Ж* Generator Назначение: Формирование прямоугольных импульсов. Окно задания параметров: Hlor.k Parameters Pulse Ge/к r.«rnr л r Pulse Geneiatc* -----------------—' ~11 Generate pukes at reglsr intervals where the pUse type detoromes the computational technique used Trme-based is recommended lor use wth a variable step sober. whie Sample-based is recommended fa use with a fixed step sebet a within a disci ete portion of a model using a variable step sober. Parameters- -------------------- — -- P^tetype: |т«пеbased 3 Ampftude F ’ Period (seesj. , j_------------------------------------------------------------- Puke Width (5; oi peoodl (_ ; Phase delay (sactj: • 1° p Interpret vector parameters as 1 -D | °Г- I I H°C I | 46
2. Библиотека блоков SIMULINK Параметры блока: Pulse Туре: [способ формирования сигнала] Может принимать два значения: • Time-based - по текущему времени; • Sample-based - по величине такта дискретности и количеству шагов мо- делирования. Вид окна параметров изменяется в зависимости от выбранного способа формирования сигнала. Amplitude: [ам пл туда]. Period: [период]. Задается в секундах для Time-based Pulse Туре или количеством тактов для Sample-based Pulse Type. Pulse width; [ширина импульсов]. Задается в процентах по отношению к периоду для Time-based Pulse Туре или количеством тактов дискретности для Sample- based Pulse Type. Phase delay: [фазовая задержка]. Задается в секундах для Time-based Pulse Туре или ко- личеством тактов дискретности для Sample-based Pulse Type Sample time: [такт дискретности]. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Пример: Схема, использующая Pulse Generator, показана на рис. 2.8. 47
И. В. Черных. SIMULINK: среда создания инженерных приложений Puff* Scop* Generator Рис. 2.8 Chirp Signal | Генератор сигнала линейно изменяющейся частоты Пиктограмма: Chirp Signal Назначение: Формирование синусоидальных колебаний, частота которых линейно изменяется. Окно задания параметров: Block Parameters 48
2. Библиотека блоков SIMULINK Параметры блока: Initial frequency (Hz): [начальная частота (Гц)]. Target time (secs): [время изменения частоты (с)]. Frequency at target time (Hz): [конечное значение частоты (Гц)]. Interpret vector parameters as 1 -D: [интерпретировать вектор как массив скаляров]. Пример: Схема с использованием блока показана на рис. 2.9. 0 2 4 6 8 Time offset, О Рис. 2.9 Band-Limited White Noise Генератор белого шума Пиктограмма: В and-Limited White Noise Назначение: Создает сигнал заданной мощности, равномерно распределенной по частоте. 49
И. В Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: *1 Continuous White No»$e. [mask] (link) White noise fa continuous (x-docnan) systems. Band-limited using zefo-a det-hold. Block Parameters Band-Liein. d Wtutp I OK | Caned | Help | | Параметры блока: Noise Power: [мощность шума]. Sample Time: [такт дискретности]. Seed: [начальное значание генератора случайных чисел]. Interpret vector parameters as 1-D: [интерпретировать вектор как массив скаляров]. Пример: Рис. 2.10 показы- вает работу этого ге- нератора. -Ю|х| 3 Scope Time offset: 0 Рис. 2.10 50
2. Библиотека блоков SIMULINK Clock I Источник времени Пиктограм иа Clock Назначение: Формирует сигнал, величина которого на каждом шаге равна текущему времени моделирования Окно задания параметров: Block Parameters Clo<k . Clock Output the cunent omulabon tame Paiameteis -------- Г" Dijptaytame Decimataon: OK | Cancel | Help | £ppk* | Параметры блока: Display time; [отображение значения времени на пиктограмме блока]. Decimation: [прореживание]. Шаг, с которым обновляются показания времени на пикто- грамме блока. Параметр задается как количество тактов дискретности. Например, если такт дискретности модели в окне диалога Simulation pa- rameters установлен равным 0.01 с, а параметр Decimation блока Clock задан равным 1000, то обновление показаний времени будет производиться каж- дые 10 с модельного времени Пример: На рис. 2.11 показана схема и осциллограмма выходного сигнала дан- ного источника. 51
И. В. Черных. SIMULINK: среда создания инженерных приложений ) Scope _______ ________ _ Дй *1 "aia|[ppp! AS@.e р Типе offset: О Рис. 2.11 Digital Clock | Пиктограмма: Дискретный источник времени 12:34 > Digital Clock Назначение: Формирует дискретный временной сигнал. Окно задания параметров: Block Parameters: Diktat Clot г Digital Clock—— -- Oiiput current simulation time at the specified rate.. Parameters । Sample time: | OK | Cancel | Параметры блока: Sample time: [такт дискретности (с)]. Пример: На рис 2.12 показана работа источника Digital Clock. 52
2. Библиотека блоков SIMULINK Рис. 2.12 From File~| Блок считывания данных из файла Пиктограмма: untitled.mat > From File Назначение: Получение данных из внешнего файла. Окно задания параметров: Параметры блока: File Name: [имя файла с данными]. 53
И. В. Черных. SIMULINK: среда создания инженерных приложений Sample time: [такт дискретности (с)]. Данные в файле должны быть представлены в виде массива tl ... final «1| Ml2 ... final Wlj ип2 Unfinal Массив должен состоять как минимум из двух строк. Значения времени в возрастающем порядке записаны в первой строке массива, а в остальных строках находятся значения сигналов, соответствующие данным моментам времени. Выходной сигнал блока содержит только значения сигналов. Зна- чения времени в нем отсутствуют. Если такт дискретности текущей модели не совпадает с отсчетами времени в файле данных, то Simulink выполняет линейную интерполяцию данных. Файл данных (mat-файл), из которого считываются значения, не является текстовым. Структура файла подробно описана в справочной системе MATLAB. Пользователям Simulink удобнее всего создавать mat-файл с по- мощью блока То File (библиотека Sinks). Пример: На рис. 2.13 показана схема считывания данных из файла с помощью блока From File. Из файла data.mat считываются значения синусоидального сигнала. >Sc пре Time offset О Рис. 2 .13 54
2. Библиотека блоков SIMULINK From Workspace | Блок считывания данных из рабочей области MATLAB Пиктограмма: simin > From Workspace Назначение: Получение данных из рабочего пространства MATLAB. Окно задания параметров: J* Параметры блока: Data: [имя переменной (массива или структуры) содержащей данные]. Sample lime: (такт дискретности (с)]. Interpolate data: [интерполяция данных]. Для значений модельного времени, не совпадаю- щих со значениями в переменной Data, выполняется интерполяция. 55
И. В. Черных. SIMULINK.: среда создания инженерных приложений Form output after final data value by: [вид выходного сигнала по окончании значений времени в переменной Data]. Значение параметра выбирается из списка: • Extrapolate - линейная экстраполяция сигналов. • SettingToZero - нулевые значения сигналов. • HoldingFinalValue - выходные значения сигналов равны последним зна- чениям. • CyclicRepetition - циклическое повторение значений сигналов. Данный вариант может использоваться, только если переменная Data имеет фор- мат Structure without time. Пример: На рис. 2.14 показана схема использования данного блока. Данные в пе- ременную simin рабочей области MATLAB могут быть загружены, напри- мер, из текстового файла с помощью функции dlmread. В примере перемен- ная simin содержит 3 столбца: отсчеты времени, ступенчатый сигнал и экспоненциальный сигнал. Asia о & Т ime offset. О Рис. 2.14 Ground Формирователь сигнала нулевого уровня Пиктограмма. 6 го und 56
2. Библиотека блоков SIMULINK Назначение: Формирование сигнала нулевого уровня. Если какой-либо вход блока в модели не подсоединен, то при выполнении моделирования в командном окне системы MATLAB появляется предупреждающее сообщение. Для уст- ранения этого на неподключенный вход блока можно подать сигнал с блока Ground, но при этом необходимо контролировать значение выходного сиг- нала блока. Окно задания параметров: Block Parameters; Ground t Ground Used to "ground" input signals. (Prevents warnings about unconnected input ports.) Outputs zero Параметры блока: Нет. Пример: На рис. 2.15 даны варианты схем с использованием данного блока. В первом случае сигнал с блока Ground поступает на один из входов сумматора, а во втором - на один из входов блока умножения. Показания блоков Display подтверждают, что вырабатываемый блоком Ground сигнал имеет нулевое значение. Из рисунка также видно, что тип выходного сигнала блока устанавливается автоматически, в соответствии с типами сигналов, подаваемых на другие входы блоков (в данном случае - на входы блоков Sum и Product). Ground Groundl Рис. 2.15 57
И. В. Черных. SIMULINK: среда создания инженерных приложений Repeating Sequence"] Источник периодического сигнала Пиктограмма: Repeating Sequeno» Назначение: Формирование заданного пользователем периодического сигнала. Окно задания параметров: Block Pfirumeters -c > х| [ Йерм1п91аЫа(гмЛ)(1пк)-- I OapUaiepeatingiequenoeofnumbef: jpais. Value: of bne shoUd be monotomcalb increasng Parameters —1—--------*---• —----- --------- ~ T me value: j— . Output value:: |i02) | OK. | Cancel | Це» | Параметры блока: Time values: [вектор значений времени]. Output values: [вектор значений сигнала]. Блок выполняет линейную интерполяцию выходного сигнала для мо- ментов времени, не совпадающих со значениями, заданными вектором Time values. 58
2 Библиотека блоков SIMULINK Пример: На рис. 2.16 показана схема, в которой блок Repeating Sequence форми- рует пилообразный сигнал. В окне параметров блока значение модельного времени задано вектором [0 3], а значение выходного сигнала - вектором [О 2]. > Scope '®в ррр лее:э .«151*1 :3 Рис. 2.16 Inport I Входной порт Пиктограмма: Назначение: Создает входной порт для подсистемы нли выполняет считывание сиг- нала из рабочей области MATLAB в модель. 59
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters: Ini Inport --------------•----------Л------. ..._2—------------------------- Provide an input poit for a subsystem or model. For Triggered Subsystems, H latch (buffer) input1 is selected, then the Import block produces the vakie of the input at the previous time step. The other parameters can be used Io explicitly specify the input signal attributes. OK j Cancel [ Help | Apply | Параметры блока: Port number [номер порта) Port dimensions: [размерность входного сигнала]. Если этот параметр равен -1, то размер- ность входного сигнала будет определяться автоматически. Sample time: [такт дискретности]. Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке в окне отображаются дополнительные окна списков, перечисленные ниже. 60
2. Библиотека блоков SIMULINK Data type: [выбор типа выходных данных]. Для выбора используется раскрывающийся список Тип выходного сигнала может быть задан одним из стандартных типов, например int8, либо определен опцией Specify via dialog. В послед- нем случае в окне параметров появятся дополнительные окна списков Out- put data type, Output Scaling Mode и Output scaling value. Output data type: [тип выходных данных]. В графе можно задать требуемый тип данных, включая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Output Scaling Mode: [способ масштабирования выходного сигнала]. Выбирается из списка: • Best precision: Vector-vise - наилучшая точность. • Use specified scaling - использовать заданный масштаб. При выборе дан- ного значения параметра в окне появляется дополнительная графа Output scaling value. Output scaling value: [величина масштаба]. Параметр задается как основание системы счисления со смещением, например [1.25 3]. Смещение допускается не указывать. Signal type - тип входного сигнала: • auto - автоматическое определение типа; • real - действительный сигнал; • complex - комплексный сигнал. Sampling mode: [режим]. Параметр может принимать значения: auto, Sample based или Frame based. Использование блока Inport в подсистемах Блоки Inport подсистемы являются ее входами. Сигнал, подаваемый на входной порт подсистемы через блок Inport, передается внутрь подсис- темы Название входного порта будет показано на изображении подсистемы как метка порта. 61
И. В. Черных SIMULINK: среда создания инженерных приложений При создании подсистем и добавлении блока Inport в подсистему Simu- link использует следующие правила: • При создании подсистемы с помощью команды Edit/Create subsystem входные порты создаются автоматически и нумеруются начиная с еди- ницы. • Если в подсистему добавляется новый блок Inport, то ему присваивается следующий по порядку номер. • Если какой-либо блок Inport удаляется, то остальные порты переимено- вываются таким образом, чтобы последовательность номеров была не- прерывной. • Если в последовательности номеров портов имеется разрыв, то при вы- полнении моделирования Simulink выдаст сообщение об ошибке и оста- новит вычисления. В этом случае необходимо вручную переименовать порты таким образом, чтобы последовательная нумерация портов не на- рушалась. Пример 1: На рис. 2.17 показана модель, использующая подсистему, и схема этой подсистемы. EX_lnport_1/Subsy<»4?; Puls* Generator File Edit View Simulation Format Tools Help d в a x * Fp- ► ! Puc. 2.17 Использование блока Inport в модели верхнего уровня Входной порт в системе верхнего уровня используется для передачи сигнала из рабочей области MATLAB в модель. Для передачи сигнала из рабочего пространство MATLAB требуется не только установить в моде- ли входные порты, но и выполнить установку параметров ввода на вкладке Workspace I/O окна диалога Simulation parameters... (должен быть установлен 62
2. Библиотека блоков SIMULINK флажок для параметра Input и задано имя переменной, которая содержит входные данные). Тип вводимых данных: Array (массив), Structure (структу- ра) или Structure with time (структура с полем "Время") задается на этой же вкладке. Пример 2: На рис. 2.18 показана модель, считывающая входной сигнал из рабочего пространства MATLAB У Scope_________' Time offset: О Рис . 2.18 Signal Builder Конструктор сигналов Пиктограмма: ^2 Signal 1 > Signal Builder Назначение: Создание кусочно-линейных сигналов произвольной формы с помощью графического интерфейса с пользователем (GUI - интерфейса). 63
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Блок Signal Builder не имеет привычного окна задания параметров. Двойной щелчок на пиктограмме блока открывает окно, в котором пользо- ватель может сконструировать нужный ему сигнал. После открытия окна на его вкладке Group 1 будет отображен импульсный сигнал (Pulse). Данный сигнал можно удалить командой Edit/Delete предварительно выделив его. Создание (добавление) нового сигнала выполняется командой Signal/New, при этом пользователь имеет возможность выбрать какой-либо стандартный сигнал (Step, Pulse, Square и т. д.) либо создать свой сигнал (Custom). В по- следнем случае требуется ввести векторы времени и значений сигнала. Для изменения формы сигнала требуется выделить объект (точку или отрезок) двойным щелчком мыши и ввести новые координаты правой и (или) левой точек (графы Т и Y). Выделенные объекты можно также перемещать с по- мощью мыши. Для перемещения всего графика требуется держать клавишу Shift нажатой. Создание новой точки на графике достигается с помощью двойного щелчка левой клавишей мыши при нажатой клавише Shift Изме- нение временного диапазона сигнала выполняется с помощью команды Axes/Change time range. Пользователь имеет возможность создать несколько наборов (групп) сигналов. Для этого необходимо с помощью команды Group/Copy создать копию уже существующего набора сигнала (при этом в окне блока появится новая вкладка Group2) и выполнить редактирование нового набора сигналов. 64
2. Библиотека блоков SIMULINK Редактирование формы сигнала может выполняться с помощью мыши Для этого перемещаемую точку сигнала необходимо выделить и перемес- тить в вертикальном направлении. Форма сигнала за пределами заданного временного диапазона задается с помощью команды File\Simulation Options. С помощью этой же команды может быть установлен шаг модельного времени (такт дискретности). Пример. На рис. 2.19 показана схема модели с блоком Signal Builder. 2.2. Sinks - приемники сигналов Scope | Пиктограмма: Осциллограф > Scope Назначение: Построение графиков исследуемых сигналов в функции времени. Позво- ляет наблюдать за изменениями сигналов в процессе моделирования. Для того чтобы открыть окно просмотра сигналов, необходимо выпол- нить двойной щелчок левой клавишей мыши на пиктограмме блока. Это можно сделать на любом этане (как до начала моделирования, так и после него, а также во время моделирования). На рис. 2.20 показано окно блока Scope, отображающее синусоидальный сигнал. 65
И В. Черных. SIMULINK: среда создание инженерных приложений Рис. 2.20 В том случае если на вход блока поступает векторный сигнал, то кривая для каждого элемента вектора строится отдельным цветом. Настройка окна осциллографа выполняется с помощью панелей инстру- ментов (рис. 2.21). 1111 II II I ГТ 12 34 5 678 9 10 !1 Рис. 2.21 Панель инструментов содержит 11 кнопок. 1. Print - печать содержимого окна осциллографа. 2. Parameters - доступ к окну настройки параметров. 3. Zoom - увеличение масштаба по обеим осям. 4. Zoom X-axis - увеличение масштаба по горизонтальной оси. 5. Zoom Y-axis - увеличение масштаба по вертикальной оси. 6. Autoscale - автоматическая установка масштабов по обеим осям. 7. Save current axes settings - сохранение текущих настроек окна. 8. Restore saved axes settings - установка ранее сохраненных настроек окна. 9. Floating scope - перевод осциллографа в изменяющийся режим. 10. Lock/Unlock axes selection — закрепить/разорвать связь между текущей координатной системой окна и отображаемым сигналом. Опция доступ- на, если включен режим Floating scope. 11. Signal selection - выбор сигналов для отображения. Опция доступна, ес- ли включен режим Floating scope. 66
2. Библиотека блоков SIMULINK Изменение масштабов отображаемых графиков можно выполнять не- сколькими способами. 1. Нажать соответствующую кнопку (Zoom, Zoom X-axis или Zoom Y-axis) и щелкнуть один раз левой клавишей мыши в нужном месте трафика. Произойдет 2,5-кратное увеличение масштаба. 2. Нажать соответствующую кнопку (Zoom, Zoom X-axis или Zoom Y-axis) и, нажав левую клавишу мыши, с помощью динамической рамки или отрезка указать область графика для увеличенного изображения. Рис. 2.22 поясняет этот процесс. Рис. 2.22 3. Щелкнуть правой клавишей мыши в окне графиков и выбрать команду Axes properties... в контекстном меню. Откроется окно свойств графика, в котором с помощью параметров Y-inin и Y-max можно указать пре- дельные значения вертикальной оси. В этом же окне можно указать заголовок графика (Title), заменив выражение %<SignalLabel> в строке ввода. Окно свойств показано на рис. 2.23. Ynwn: | -1.1 Y-m®c 111 Т№ C^<SijnaLabeb' replaced by signal name): | ^<SrgndLabet> OK j Cancel | Лрр1у j Puc. 2.23 67
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: -> 'Scope' paramete -|C| xf General | Data history | Axes Number of axes: Г floating scope Time range. | auto Tick labels: [bottom a^son^ S ampinfl [Decimation "" | p OK j Cancel [ Нф | ApfJy । Tip: try right clicking on axes J 'SronR* parameters Окно задания параметров блока Scope имеет две вкладки: • General - общие параметры; • Data history - параметры сохранения сигналов в рабочей области MAT- LAB. Параметры блока: На вкладке General задаются следующие параметры: Number of axes: [число входов (систем координат) осциллографа]. При изменении этого па- раметра на изображении блока появляются дополнительные входные порты. Time range: [величина временного интервала, для которого отображаются графики]. Если время расчета модели превышает заданное параметром Time range, то вывод графика производится порциями, при этом интервал отображения каждой порции графика равен заданному значению Time range. Tick labels: [вывод/скрытие осей и меток осей]. Значения параметра выбираются из списка: • all - подписи для всех осей; • попе - отсутствие всех осей и подписей к ним; • bottom axis only - подписи горизонтальной оси только для нижнего гра- фика. 68
2. Библиотека блоков SIMULINK Sampling: [установка параметров вывода графиков в окне]. Задает режим вывода рас- четных точек на экран. Значения параметра выбираются из списка: • Decimation - прореживание. Параметр определяет кратность вывода рас- четных точек в окне осциллографа. Например, при значении параметра, равном 2, на экран будет выводится каждая вторая расчетная точка. • Sample time - шаг модельного времени. Значение параметра определяет интервал квантования при отображении сигнала. Floating scope: [изменяющийся режим]. Перевод осциллографа в особый, изменяющийся режим. На вкладке Data history задаются следующие параметры: Limit data points to last: [максимальное количество отображаемых расчетных точек графика]. При превышении этого числа начальная часть графика обрезается. В том случае, если флажок параметра Limit data points to last не установлен, то Simulink автоматически увеличит значение этого параметра для отображения всех расчетных точек. Save data to workspace: [сохранять значения сигналов в рабочей области MATLAB]. Variable name: [имя переменной для сохранения сигналов в рабочей области MATLAB]. Format: [формат данных для сохранения в рабочей области MATLAB]. Может при- нимать следующие значения: • Array - массив; • Structure - структура (массив записей); • Structure with time - структура (массив записей) с дополнительным по- лем "Время". 69
И. В. Черных. SIMULINK: среда создания инженерных приложений Floating Scope | Изменяющийся осциллограф Пиктограмма: Floating Scope Назначение: Построение графиков исследуемых сигналов в функции времени. Осциллограф Floating Scope по сути есть обычный осциллограф Scope, который переведен в режим вывода произвольно назначаемых сигналов. В этом режиме блок осциллографа не имеет входов, а выбор отображае- мых сигналов осуществляется с помощью инструмента (Signal selection) панели инструментов. Для выбора сигналов необходимо выполнить сле- дующие действия: 1. Выделить систему координат, в которой будет отображаться график. Это достигается с помощью одиночного щелчка левой клавишей мыши внутри нужной системы. Выбранная система координат будет подсвече- на по периметру синим цветом. 2. С помощью инструмента открыть окно диалога Signal Selector (рис. 2.24).. Signal Selector : EX ik.; жЩ|х1! Model hierarchy i » EX_tloating_sco| List contents f All signals P Sine Wave j Г Transfer Fen i ii li |! ---------------------------------------------------- Show signals matching: | Close I Help Puc. 2.24 3. Отметить флажком имена блоков, сигналы с выхода которых требуется исследовать. 70
2. Библиотека блоков SIMULINK При выполнении моделирования в окне блока Floating Scope будут ото- бражаться выбранные сигналы. Пример: Схема модели с использованием осциллшраф Floating Scope дана на рис. 2.25. В окне осциллографа отображаются входной и выходной сиг- налы блока Transfer Fen. Рис. 2.25 XY Graph | Г рафопосгронтел ь Пиктограмма: > XY Ouph Назначение: Построение {рафика значений одного сигнала в функции другого. Блок имеет два входа. Верхний вход предназначен для подачи сигнала, который является аргументом (X), ннжний - для подачи значений функции (Y). 71
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: XY scope, (mask) (ink) Block Parameters XY Параметры блока: x-min: [минимальное значение сигнала по оси X]. х-тах: [максимальное значение сигнала по оси X]. y-min: [минимальное значение сигнала по оси Y]. у-тах: [максимальное значение сигнала по оси Y]. Sample time: [такт дискретности]. Пример 1: На рис. 2.26 показано построение фазовой траектории колебательного звена с помощью графопостроителя. Пример?: Графопостроитель можно использовать также и для построения графи- ков в функции времени Для этого на первый вход следует подать времен- ной сигнал с выхода блока Clock. Схема с таким использованием графопо- строителя показана на рис. 2.27. 72
2. Библиотека блоков SIMULINK Detivitivc JSI*1 > XV Or Vh Рис. 2.26 Рис. 2.27 73
И. В. Черных, SIMULINK: среда создания инженерных приложений Display ] Цифровой дисплей Пиктограмма: Display Назначение: Отображает значение сигнала в виде числа. Окно задания параметров: *1 Block Parameters: Disi OK I Cancel I Het) | | Параметры блока: Format: [формат отображения данных]. Параметр Format может принимать следую- щие значения: • short - 5 цифр, включая десятичную точку; • long - 15 цифр с фиксированной точкой; \ • short_e - 5 цифр с плавающей точкой; • long е - 15 цифр с плавающей точкой; ‘ 1 • bank - банковский формат. 1 । Decimation: [прореживание]. При Decimation = 1 отображается каждое значение входно-1 го сигнала, при Decimation = 2 отображается каждое второе значение, при Decimation = 3 - каждое третье значение и т. д. 74
2. Библиотека блоков SIMULINK Sample lime: [такт дискретности]. Определяет дискретность отображения данных во вре- мени. Floating display: [изменяющийся режим]. В данном режиме входной порт блока отсутствует, а выбор сигнала для отображения выполняется щелчком левой клавиши мыши на соответствующей линии связи. В этом режиме значение параметра расчета Signal storage reuse должно быть установлено равным off (вкладка Advanced в окне диалога Simulation parameters...). Пример 1: На рис. 2.28 показано применение блока Display с использованием раз- личных вариантов параметра Format. Displays format: short format: tong format: short_e format: tong_e format: bank Puc. 2.28 Пример 2: Блок Display может использоваться для отображения не только скаляр- ных сигналов, но также векторных, матричных и комплексных. Рис. 2.29 иллюстрирует это. Если все отображаемые значения не могут поместиться в окне блока, в правом нижнем углу блока появляется символ указы- вающий на необходимость увеличить размеры блока (см. блок Display4 на рис. 2.29). 75
И. В. Черных. SIMULINK: среда создания инженерных приложений Stop Simulation | Пиктограмма: Constant Display^ Рис. 2.29 Блок остановки моделирования Stop Simulation Назначение: Обеспечивает завершение процесса моделирования, если входной сигнал блока становится не равным нулю. При поступлении на вход блока ненулевого сигнала Simulink завершает текущий шаг и останавливает моделирование. Если на вход блока подан векторный сигнал, то для останова достаточно, чтобы один элемент вектора стал ненулевым. Окно задания параметров: Block Parameters: Stop Simulation . StCt) ---‘ ~ — Stop simulation when input is non-zero. [l OKCancel | Hefr | Параметры блока: Нет. 76
2. Библиотека блоков SIMULINK Пример: На рис. 2.30 показана схема с использованием данного блока. В этом примере останов моделирования происходит, если выходной сигнал блока Transfer Function становится большим или равным 0.99. Рис. 2.30 То File Блок записи в файл Пиктограмма: > untitled.mat То File Назначение: Блок записывает в файл данные, поступающие на его вход. Окно задания параметров: Block Parameters: То File ToFte -—----------------------------------------------------- Wiite time end input to specified MAT file in row format. Time и in fowl J* Parameters • .. Filename: j |игйё2«мй Variable name: |ant Decimation: г ‘ “ Sample time [-1 for inherited} 1-1 , /" OK I Caned J Heti J 77
И. В- Черных SIMULINK. среда создания инженерных приложений Параметры блока. Filename: [имя файла для записи]. По умолчанию файл имеет имя untitled.mat. Если не указан полный путь файла, то файл сохраняется в текущей рабочей папке. Variable name. [имя переменной, содержащей записываемые данные] Decimation: [прореживание]. При Decimation = 1 записывается каждое значение входно- го сигнала, при Decimation = 2 записывается каждое второе значение, при Decimation = 3 - каждое третье значение и т. д. Sample time: [такт дискретности]. Определяет дискретность записи данных. Данные в файле сохраняются в виде массива: ’ tl t. ?final ull ul2 . Ufmal hh2 Значения времени записываются в первой строке массива, а в остальных строках будут находиться значения сигналов, соответствующих данным моментам времени. Файл данных (mat-файл), в который записываются данные, не является текстовым. Структура файла подробно описана в справочной системе MATLAB. Пользователям Simulink удобнее всего считывать данные из mat- файла с помощью блока From File (библиотека Sources) Пример: На рис. 2.31 показана схема с использованием данного блока. Резуль- таты расчета сохраняются в файле result.mat. Step Transfer Fen To File Pue. 2.31 78
2 Библиотека блоков SIMULINK То Workspace | Блок записи в рабочую область MATLAB Пиктограмма: > simout То Woikspace Назначение: Блок записывает данные, поступающие на его вход, в рабочую область системы MATLAB. Окно задания параметров: Параметры блока: Variable name: [имя переменной] Имя массива, в который будут записываться данные. Limit data points to last [максимальное количество сохраняемых расчетных точек по времени]. Количество расчетных точек отсчитывается от момента завершения моде- лирования. В том случае, если значение параметра Limit data points to last задано как inf, то в рабочей области будут сохранены все данные. Decimation: [прореживание]. 79
И. В. Черных. SIMULINK: среда создания инженерных приложений Sample time: [такт дискретности]. Определяет дискретность записи данных. Save format: [формат сохранения данных]. Может принимать следующие значения (вы- бираются из списка): • Matrix - матрица. Данные сохраняются как массив, в котором число строк определяется числом расчетных точек по времени, а число столб- цов - размерностью вектора подаваемого на вход блока. Если на вход подается скалярный сигнал, то матрица будет содержать лишь один столбец. • Structure - структура. Данные сохраняются в виде массива записей, имеющего 3 поля: time - время; signals - сохраняемые значения сигна- лов; blockName - имя модели и блока То Workspace. Поле time для дан- ного формата остается незаполненным. • Structure with Time - структура с дополнительным полем Время. Для данного формата, в отличие от предыдущего, поле time заполняется зна- чениями времени. Пример: На рис. 2.32 показана схема, в которой выходной сигнал блока Transfer Fen записывается в рабочую область. Результаты расчета сохраняются в переменной simout. S‘*P Transfer Fen To Workspace Puc. 2.32 Для считывания данных, сохраненных в рабочей области системы MAT- LAB, можно использовать блок From Workspace (библиотека Sources). Terminator Концевой приемник Пиктограмма: Terminator 80
2. Библиотека блоков SIMULINK Назначение: Блок применяется как заглушка для сигнала, поступающего с выхода другого блока. В том случае, когда выход блока оказывается не подключен- ным ко входу другого блока, Simulink выдает предупреждение в командном окне системы MATLAB. Для исключения таких ситуаций следует использо- вать блок Terminator. Окно задания параметров: Block Parameters: Terminator Terminal с* ... 1 Used to "terminate" output signals. (Pievents warnings about f unconnected output ports J .. .. ............ ______ .. -i-.- .'«.-.JXj.st;. - rijJ- |j j| | Help | ТрМу | Параметры блока: Нет Пример: На рис. 2 33 показана схема с использованием концевого приемника. Извлекаемый с помощью блока Demux второй элемент вектора не исполь- зуется, поэтому он подается на вход блока Terminator. Demux Display Рис. 2.33 Outport I Выходной порт Пиктограмма: Outt Назначение: Создает выходной порт для подсистемы или для модели верхнего уровня иерархии. 81
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров. Block Parameters: Out1 j- Outport -------- - - ----— f I Provide an output port for a subsystem or model The ‘Output when disabled' and Initial output’ parameters only apply to conditionally executed subsystems. When a conditionally executed subsystem is disabled, the output is either held at its last value or set to the Initial output’. The ’Initial output’ parameter can be specified as the empty matrix. ; [], in which case the initial output is equal to the output of the block ‘ feeding the outport. l- ‘............ - -,-r £ ------ 1 Parameters -----r----——------------------- — Port number: fi Output when disabled: | held jj'j Initial output: i° . . ., /—......................—............; ij | OK | Cancel I Help I ' spl J --------------------------- ---------______________ Параметры блока: Port number: [номер порта]. Output when disabled: [вид сигнала на выходе подсистемы, в случае если подсистема выключена]. Используется для подсистем, управляемых внешним сигналом. Может при- нимать следующие значения (выбираются из списка): • held - выходной сигнал подсистемы равен последнему рассчитанному значению; • reset - выходной сигнал подсистемы равен значению, задаваемому пара- метром Initial output. Initial output: [начальное значение]. Значение сигнала на выходе подсистемы до начала ее работы и в случае, если подсистема выключена. Используется для подсис- тем, управляемых внешним сигналом. Использование блока Outport в подсистемах Блоки Outport подсистемы являются ее выходами. Сигнал, подаваемый в блок Outport внутри подсистемы, передается в модель (или подсистему) 82
2. Библиотека блоков SIMULINK верхнего уровня. Название выходного порта будет показано на изображении подсистемы как метка порта. При создании подсистем и добавлении блока Outport в подсистему Simu- link использует следующие правила: • При создании подсистемы с помощью команды Edit/Create subsystem выходные порты создаются и нумеруются автоматически начиная с еди- ницы. • Если в подсистему добавляется новый блок Outport, то ему присваивает- ся следующий по порядку номер. . Если какой-либо блок Outport удаляется, то остальные порты переиме- новываются таким образом, чтобы последовательность номеров портов была непрерывной. • Если в последовательности номеров портов имеется разрыв, то при вы- полнении моделирования Simulink выдаст сообщение об ошибке и оста- новит расчет. В этом случае необходимо вручную переименовать порты таким образом, чтобы последовательная нумерация портов не наруша- лась. Пример: На рис. 2.34 показана модель, использующая подсистему, и схема этой подсистемы. Subsystem Scope File Edit View Simulation Format Tools Help 'd qЛ[Л ffi Is £|» о r!100% ' -j (Ode4S Puc. 2.34 83
И. В. Черных. SIMULINK: среда создания инженерных приложений В том случае, если подсистема управляется извне, для ее выходных пор- тов можно задать вид выходит о сигнала для тех интервалов времени, когда подсистема заблокирована. На рис. 2.35 показана модель подсистемы, управляемой извне (схема подсистемы такая же, как и в предыдущем при- мере). Для первого выходного порта параметр Output when disabled задан как held, а для второго - как reset, причем начальное значение выхода равно нулю Графики сигналов показывают, что, когда подсистема заблокирована, сигнал первого выходного порта остается неизменным, а сигнал второго равен его начальному значению (нулю). Использование блока Out port в модели верхнего уровня Выходной порт в системе верхнего уровня используется в двух случаях: • для передачи сигнала в рабочее пространство MATLAB; • для обеспечения связи функций анализа с выходами модели. Для передачи сигнала в рабочее пространство MATLAB требуется не только установить в модели выходные порты, но и выполнить установку параметров вывода на вкладке Workspace I/O окна диалога Simulation pa- rameters... (должен быть установлен флажок для параметра Output и задано имя переменной для сохранения данных). Тип сохраняемых данных - Array массив, Structure (Структура) или Structure with time (Структура с полем "Время") - задается на этой же вкладке 84
2 Библиотека блоков SIMULINK На рис. 2.36 показана модель, передающая сигналы в рабочую область системы MATLAB. Deriv ative Рис. 2.36 Блок Outport может использоваться также для связи модели с М-функ- циями анализа, например: linmod или trim. 2.3. Continuous -блоки непрерывных моделей Derivative | Блок вычисления производной Пиктограмма: > du/dt > Derivative Назначение: Выполняет численное дифференцирование входного сигнала. Окно задания параметров: Block Parameters Derivative _____ Derivative • — -.-г-;-! j Numerical derivative: du/dt. ..._____p;.. ___________________ J I Caned j Hdp | ' Jy. [ Параметры блока: Нет. Для вычисления производной используется приближенная формула Эйлера du __ \и dt At ’ где Ди - величина изменения входного сигнала за время At; At - текущее значение такта дискретности. 85
И. В. Черных. SIMULINK.: среда создания инженерных приложений Значение входного сигнала блока до начала расчета считается равным нулю. Начальное значение выходного сигнала также полагается равным нулю. Точность вычисления производной существенно зависит от величины такта дискретности. Выбор меньшего шага расчета улучшает точность вы- числения производной. Пример: На рис. 2.37 показана схема, в которой дифференцирующий блок ис- пользуется для вычисления производной прямоугольного сигнала. В рас- сматриваемом примере шаг расчета выбран достаточно большим (для по- вышения наглядности). Scop* Рис. 237 Данный блок используется для дифференцирования только аналоговых сигналов. При дифференцировании дискретного сигнала с помощью блока Derivative его выходной сигнал будет представлять собой последователь- ность импульсов, соответствующих моментам времени скачкообразного изменения дискретного сигнала. 86
2. Библиотека блоков SIMULINK Пиктограмма: Интегратор Integrator Назначение: Интегрирование входного сигнала. Окно задания параметров: 0К~ | Caned | НЙ> | ам» I Параметры блока: External reset: [внешний сброс]. Тип внешнего управляющего сигнала, обеспечивающего сброс сигнала интегратора до начального значения. Выбирается из списка: • попе - нет (сброс не выполняется), • rising - нарастающий сигнал (передний фронт сигнала); • falling - спадающий сигнал (задний фронт сигнала); 87
И. В. Черных. SIMULINK: среда создания инженерных приложений • either - нарастающий либо спадающий сигнал; • level - ненулевой сигнал (сброс выполняется, если сигнал на управляю- щем входе становится не равным нулю). В том случае, если выбран какой-либо (но не попе) тип управляющего сигнала, на изображении блока появляется дополнительный управляющий вход. Рядом с дополнительным входом будет показано условное обозначе- ние управляющего сигнала. Initial condition source: [источник начального значения выходного сигнала]. Выбирается из списка: • internal - внутренний. • external - внешний. В этом случае на изображении блока появляется дополнительный вход, обозначенный х0, на который необходимо подать сигнал, задающий начальное значение выходного сигнала интегратора. Initial condition: [начальное условие]. Установка начального значения выходного сигнала интегратора. Параметр доступен, если выбран внутренний источник на- чального значения выходного сигнала. Limit output: [ограничение выходного сигнала]. Upper saturation limit: [верхний предел выходного сигнала]. Может быть задан как конечным чис- лом, так и значением inf, т. е. +°о. Lower saturation limit: [нижний предел выходного сигнала]. Может быть задан как конечным чис- лом, так и значением -inf, т. е. -«=. Inf в стандарте ГЕЕЕ-арифметики с плавающей точкой - это число 21024, ко- торое отличается от предшествующего ему числа realmax, равного (2-eps)21023, на величину 2971. Шестнадцатеричное представление числа Inf - 7ffO13, чис- ла -Inf - fffOo, а числа realmax - 7fefn. Таким образом, число Inf отличается от числа realmax только единицей в младшем разряде. Show saturation port: [показать на пиктограмме порт насыщения]. Управляет отображением пор- та, выводящего сигнал, свидетельствующий о выходе интегратора на огра- ничение. Выходной сигнал данного порта может принимать следующие значения: 88
2. Библиотека блоков SIMULINK . нуль, если интегратор нс находится на ограничении; . +1, если выходной сигнал интегратора достиг верхнего предела; • -1, если выходной сигнал интегратора достиг нижнего предела. Show state port: [отобразить/скрьпь порт состояния блока]. Данный порт используется в том случае, если выходной сигнал интегратора требуется подать в качестве сиг- нала обратной связи этого же интегратора. Например, при установке на- чальных условий через внешний порт или при сбросе сигнала интегратора через порт сброса. Выходной сигнал с этого порта может использоваться также для организации взаимодействия с управляемой подсистемой. Absolute tolerance: (абсолютная погрешность]. Enable zero crossing detection: [определять прохождение сигнала через нулевой уровень]. Пример 1: На рис. 2.38 показана схема, в которой на вход интегратора подается сту- пенчатый сигнал. Начальное условие принято равным нулю. Рис. 2.38 89
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример 2: Схема на рис. 2.39 отличается от предыдущей тем, что начальное значе- ние задается через внешний порт. Начальное значение выходного сигнала в данном примере равно -10. Рис. 2.39 Пример 3: Схема на рис. 2.40 демонстрирует использование входного порта для сброса выходного сигнала и порта состояния интегратора с целью орга- низации обратной связи. Схема работает следующим образом: входной по- стоянный сигнал преобразуется интегратором в линейно изменяющийся; при достижении выходным сигналом значения 1 блок Relational Operator вырабатывает логический сигнал, по переднему фронту которого происхо- дит сброс выходного сигнала интегратора до начального значения, рав- ного нулю. В результате на выходе интегратора формируется пилообраз- ный сигнал. 90
2. Библиотека блоков SIMULINK Operafot Рис. 2.40 Пример 4: Следующая схема (рис. 2.41) использует установку начального значе- ния интегратора с помощью его выходного сигнала. Начальное значение выходного сигнала интегратора с помощью блока IC (Initial Condition) устанавливается равным нулю. При достижении выходным сигналом значения 1 блок Relational Operator подает сигнал сброса выходного сиг- нала интегратора до начального уровня, при этом сигналом, задающим начальный уровень, оказывается инвертированный выходной сигнал ин- тегратора, равный -1. Далее цикл работы схемы повторяется. В отличие от предыдущей схемы выходным сигналом генератора является сигнал двойной полярности. 91
И. В. Черных. SIMULINK: среда создания инженерных приложений Рис. 2.41 Transport Delay Блок фиксированной задержки сигнала Пиктограмма: Transport Delay Назначение: Обеспечивает задержку входного сигнала на заданное время. 92
2. Библиотека блоков SIMULINK Окно задания параметров: Параметры блока: Time Delay: [время задержки сигнала]. Initial input: [начальное значение выходного сигнала]. Initial buffer size: [начальный размер буфера]. Количество памяти, выделяемой для хранения задержанного сигнала. Задается в байтах числом, кратным 8 (по умолчанию 1024). В том случае, если начального значения объема памяти буфера не хватит для хранения задержанного сигнала, Simulink автоматически вы- делит дополнительную память. После завершения моделирования в команд- ном окне MATLAB появится сообщение с указанием нужного размера бу- фера. Pade order (for linearization): [порядок ряда Паде]. порядок ряда Паде, используемого при аппроксимации выходного сигнала. Задается целым положительным числом. Direct feedthrough of input during linearization: [прямой проход при линеаризации]. При выстановленном флажке в случае выполнения линеаризации модели полагается, что входной сигнал проходит на выход блока без задержки. 93
И. В. Черных. SIMULINK: среда создания инженерных приложений При выполнении моделирования значение сигнала и соответствующее ему модельное время сохраняются во внутреннем буфере блока Transport Delay. По истечении времени задержки значение сигнала, извлекается из буфера и передается на выход блока. В том случае, если шаги модельного времени не совпадают со значениями моментов времени для записанного в буфер сигнала, блок Transport Delay выполняет аппроксимацию выходно- го сигнала. Пример: На рис. 2.42 показана схема использования блока Transport Delay для задержки прямоугольного сигнала на 0.5 с. ... Time offset: О Рис. 2.42 Scope Variable Transport Delay Блок управляемой задержки сигнала Пиктограмма: Variable Transpo rt Delay Назначение: Выполняет задержку входного сигнала на величину, задаваемую сигна- лом управления. 94
2. Библиотека блоков SIMULINK Окно задания параметров: Параметры блока: Maximum delay: [максимальное значение времени задержки сигнала]. Initial input: [начальное значение выходного сигнала]. Buffer size: [размер буфера] Количество намята, выделяемой для хранения задержан- ного сигнала. Задается в байтах числом, кратным 8 (по умолчанию 1024). Pade order (for linearization): [порядок ряда Паде]. Порядок ряда Паде, используемого при аппроксима- ции выходного сигнала, задается целым положительным числом. Direct feedthrough of input during linearization: [прямой проход при линеаризации]. При установленном флажке в случае выполнения линеаризации модели полагается, что входной сигнал проходит на выход блока без задержки. Блок управляемой задержки Variable Transport Delay работает аналогич- но блоку постоянной задержки сигнала Transport Delay. В том случае, если значение управляющего сигнала, задающего величину задержки, превышает 95
И, В. Черных. SIMULINK: среда создания инженерных приложений значение, заданное параметром Maximum delay, то задержка выполняется на величину Maximum delay. Пример: На рис. 2.43 показана схема с использованием блока Variable Transport Delay Величина времени задержки сигнала изменяется от 0.5 до 1 с в мо- мент времени, равный 5 с. PuIm Generator Sttp Van a bit Transport Delay -101 Х| s & -tj Scope Рис. 2.43 m Передаточная функция Transfer Fen | Пиктограмма: Transfer Fen Назначение: Блок Transfer Fen задает передаточную функцию в виде отношения по- линомов. ,,, , у(т) num(s) + num(2)sm 2 + ... + пит(пп) H(s) = -----=---------=-----------—-----------гт--------------- u(s) den(s) den(l)s 1 + den(l)s"''~' +...+den(nd) 96
2. Библиотека блоков SIMULINK где пп и nd - порядок числителя и знаменателя передаточной функции; пит - вектор или матрица коэффициентов числителя; den - вектор коэффи- циентов знаменателя. Начальные условия при использовании блока Transfer Fen полагаются нулевыми. Если же требуется, чтобы начальные условия не были нулевыми, то необходимо с помощью функции tf2ss (оператор ППП Control System Toolbox) перейти от модели передаточной функции к модели в пространст- ве состояний и моделировать динамический объект с помощью блока State- Space. Окно задания параметров: Block Parameters: Transfer Transfer Fen ... .. ---------- Matrix expression for numerator, vector expression for denominator. Output width equals the number of rows in the numerator. Coefficients are for descencfing powers of s. 1 - _____ _ . _____...1 I Parameters -----;---- Numerator- IP Denominator: I ....... Absolute tolerance: j | d<io I OK I Cancel | Help | | Матричное описание числителя, векторное описание знаменателя. Раз- мер выхода равен количеству строк числителя. Коэффициенты расположе- ны по убыванию степени переменной s. Параметры блока: Numerator: [вектор или матрица коэффициентов полинома числителя]. Denominator: [вектор коэффициентов полинома знаменателя]. Absolute tolerance: [абсолютная погрешность] Порядок полиномов числителя не должен превышать порядок полинома знаменателя. Входной сигнал - скалярный. 97
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример 1: В том случае, если коэффициенты числителя заданы вектором, то вы- ходной сигнал блока будет скалярным (как и входной сигнал). На рис. 2.44 показана схема моделирования колебательного звена с помощью блока Transfer Fen. PiPP1 Asia 0 g- -) Scope Puc. 2.44 Пример 2: В том случае, если коэффициенты числителя заданы матрицей, то блок Transfer Fen моделирует матричную передаточную функцию, которую мр^Сд но интерпретировать как несколько передаточных функций, имеющих оди- наковые полиномы знаменателя, но разные полиномы числителя. При этом выходной сигнал блока является векторным и количество строк матрицы числителя задает размерность выходного сигнала. э, На рис. 2.45 показана схема с блоком Transfer Fen, задающим векторную передаточную функцию. Здесь же показана эквивалентная схема модели, составленная из отдельных блоков Transfer Fen. r.s г 98
2. Библиотека блоков SIMULINK ____________________________N' ) S<< fie Puc. 2.45 Zero-Pole | Передаточная функция "нули-полюса" Пиктограмма: (*1) > ------ > Ф+1) Zero-Pole Назначение: Блок Zero-Pole определяет передаточную функцию с заданными полю- сами и нулями: н (J) = к z(a) = к(s ~ Z(1))(J ~ Z(2))U ~ Z(3))~ Z(,n)) P(s) (s - P(l))(j - P(2))(j - P(3)) - (j - P(n)) ’ где Z - вектор или матрица нулей передаточной функции (корней полинома числителя); Р - вектор полюсов передаточной функции (корней полинома знамена- теля); К - коэффициент передаточной функции или вектор коэффициентов, ес- ли нули передаточной функции заданы матрицей. При этом размерность вектора К определяется числом строк матрицы пулей. 99
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters: Zero-Pole Параметры блока: Zeros: [вектор или матрица нулей]. Poles: [вектор полюсов]. Gain: [скалярный или векторный коэффициент передаточной функции]. Absolute tolerance: [абсолютная погрешность]. Количество нулей не должно превышать число полюсов передаточной функции. В том случае, если нули передаточной функции заданы матрицей; то блок Zero-Pole моделирует векторную передаточную функцию. Нули или полюса могут быть заданы комплексными числами. В этом случае нули или полюса должны быть заданы комплексно-сопряженными парами полюсов или нулей соответственно. Начальные условия при использовании блока Zero-Pole полагаются ну- левыми. г. Л\ -ji'ja 100
2. Библиотека блоков SIMULINK Пример: На рис. 2.46 показана схема с использованием блока Zero-Pole. В приме- ре передаточная функция имеет один действительный нуль и два комплекс- но-сопряженных полюса. Рис. 2.46 State-Space | Модель в пространстве состояний Пиктограмма: . у! = Ax+Bu > ~ > у = Cx+Du State- Space Назначение: Блок создает динамический объект, описываемый уравнениями в про- странстве состояний х = Ах+ Ви, у - Cx + Du, 'It'!. Z где х — вектор состояния; и - вектор входных воздействий; у - вектор выходных сигналов; А. В, С, D- матрицы системы, входа, выхода и прямой передачи соот- ветственно. 101
И. В. Черных. SIMULINK: среда создания инженерных приложений Размеоность матоип показана на рис. 2.47 (л - п П1 число переменных состояния системы, т - число входов, г - число выходов). п А в г С D Рис. 2.47 Окно задания параметров: Параметры блока: А: [матрица системы]. В: [матрица входа]. С: [матрица выхода]. D: [матрица прямой передачи]. Г 1 V' I 102
2. Библиотека блоков SIMULINK Initial conditions: [вектор начальных условий]. Absolute tolerance: [абсолютная погрешность]. Пример: На рис. 2.48 показана модель динамического объекта, созданного с по- мощью блока State-Space. Матрицы блока имеют следующие значения: еПМН№, -isl *1 рг^-*йв;вSi О 2 4 6 8 10 Типе offset: 0 Рис. 2.48 2.4. Discrete - блоки дискретных модулей Memory Пиктограмма: Блок задержки на один такт Memory Назначение: Выполняет задержку входного сигнала на один такт дискретности 103
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Рж amе lets М< Метеку — Apply a one integration step delay The output is the previous input value Parameters Initial condtborr [6 J Г Inherit sample time Г~ Direct feedthrough of nput during linearization OK. | Cancel [ Help | Apply | Параметры блока: Initial condition: [начальное значение выходного сигнала]. Inherit sample time: [наследовать такт дискретности]. Если этот флажок выстановлен, то блок Memory использует такт дискретности (Sample time) такой же, как и в пред- шествующем блоке. Direct feedthrough of input during linearization: [прямой проход при линеаризации]. При выстановленном флажке в случае выполнения линеаризации модели полагается, что входной сигнал проходит на выход блока без задержки. k v Пример: На рис. 2.49 показана схема использования блока Memory для задержки сигнала на один такт дис- кретности. 104
2. Библиотека блоков SIMULINK Unit Delay Единичная дискретная задержка Пиктограмма: Unit Delay Назначение: Выполняет задержку дискретного входного сигнала на один такт дис- кретности. Окно задания параметров: Block Paramelets Unrt i- Параметры блока: Initial conditions: [начальное значение выходного сигнала]. Sample time: [такт дискретности]. Входной сигнал блока может быть как скалярным, так и векторным. При векторном входном сигнале задержка выполняется для каждого элемента вектора. Блок поддерживает работу с комплексными и действительными сигналами. Пример: На рис. 2.50 показана схема с использованием блока Unit Delay для за- держки дискретного сигнала на один временной шаг, равный 0.1 с. 105
И. В. Черных. SIMULINK: среда создания инженерных приложений Zero-Order Hold I Экстра пол ятор нулевого порядка Пиктограмма: Zero- Order Hold Назначение: Блок выполняет экстраполяцию входного сигнала на интервале дискре- тизации. Блок фиксирует значение входного сигнала в начале интервала дискре- тизации и поддерживает на выходе это значение до окончания интервала дискретизации. Затем выходной сигнал изменяется скачком до величины входного сигнала на следующем шаге дискретизации. Окно задания параметров: 106
2. Библиотека блоков SIMULINK Параметры блока: Sample time: [такт дискретности]. Пример I: На рис. 2.51 пока- зана схема, в которой блок Zero-Order Hold используется для фор- мирования дискретно- го сигнала. Time offset О Рис. 2.51 Пример 2: Tranche г Fee Hold -i°i*i •S S IP & I a Q @ i 0 Л if Рис. 2.52 Блок экстраполятора нулевого порядка может использоваться также для согласования работы дис- кретных блоков, имеющих разные такты дискретно- сти. На рис. 2.52 показана схема с таким использо- ванием блока Zero-Order Hold. В примере блок Dis- crete Transfer Fen- имеет па- раметр Sample time = 0.4, а для блока Discrete Filter этот же параметр установ- лен равным 0.8. 107
И. В. Черных. SIMULINK: среда создания инженерных приложений First-Order Hold I Экстраполятор первого порядка Пиктограмма: First-Order Hold Назначение: Блок задает линейное изменение выходного сигнала на каждом шаге дискретизации в соответствии с крутизной входного сигнала на предыду- щем шаге дискретизации. Окно задания параметров: Параметры блока: Sample time: [такт дискретности]. Пример: Пример экстраполяции синусоидального сигнала этим блоком показан на рис. 2.53. Discrete-Time integrator Пиктограмма: Дискретный интегратор т > — > Z-1 Discrete-Time Integrator 108
2. Библиотека блоков SIMULINK J Scope 1 a © fp p fi> а и q e~i % Sine Wave 0 0.5 1 1 5 2 25 Time offset: 0 Puc. 2.53 Назначение: Блок используется для выполнения операции интегрирования в дискрет- ных системах. Окно задания параметров: Block Parameters Discrete-Т» < it Discrete-Time Integrator — t DiSciete-Ume integration of the input signal. Parameters' Integral® method: | Forward EU® External reset |none Initial condfton source; j internal Initial condHon: p Limit output Upper saturation fimit Low® saturation limit: p----------------------------- Г Show saturation port Г“ Show slate port Sample t«me(-1 for inherited}. OK I СапсЫ | Help | | 109
И В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Integration method: [метод интегрирования]. Метод выбирается из списка: • Forward Euler - прямой метод Эйлера. Метод использует аппроксимацию 77(z-l) передаточной функции 1/s. Выходной сигнал блока рассчитывается по выражению у(Л) = y(k—V) + T*u(k-1), где у - выходной сигнал интегратора, к- номер шага моделирования; Т - шаг дискретизации; и - входной сигнал интегратора. • Backward Euler - обратный метод Эйлера. Метод использует аппроксимацию T*z/(z-l) передаточной функции 1/г. Выходной сигнал блока рассчитывается по выражению у(к) = у(£-1) + Т*и(к). Trapeziodal - метод трапеций. Метод использует аппроксимацию 772*(z+l)/(z-l) передаточной функ- ции l/j. Выходной сигнал блока рассчитывается по выражению у(к) = у(А-1) + Т/2*[м(А-1)+н(Л)]. Jampie time: такт дискретности]. Остальные параметры дискретного интегратора те же, что и у блока ана- югового интегратора Integrator (библиотека Continuous). 1ример: На рис. 2.54 показана модель, демонстрирующая все 3 способа числен- юго интегрирования блока Discrete-Time Integrator. Как видно из рисунка, [зображение блока меняется в зависимости от выбранного метода интегри- рования. 10
2. Библиотека блоков SIMULINK Discrete Transfer Fen Дискретная передаточная функция Пиктограмма: 1 > ------ > z»O.5 Discrete Transfer Fen Назначение: ~н Блок Discrete Transfer Fen в виде отношения полиномов задает дискретную передаточную функцию H(z) = num(z) _ Humozn + num,z' +...+nummz" den(z) denozn +denlz" 1 + . +denn где m+1 и n+1 - количество коэффициентов числителя и знаменателя соот- ветственно; пит - вектор или матрица коэффициентов числителя; den - вектор коэффициентов знаменателя. 111
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters Dixcretefr Discrete Transfer Fen — — — Matrix expression for numerator, vector expression for denominator. Oi/put width equals the number of rows in the numerator Coefficients are for descending powers of z. . ... —J Parameters -*—« Numerator: piij——————— Denominator. Sample time (-1 for inherited}: fi ' OK | Caned | Help | | Матричное описание числителя, векторное описание знаменателя. Раз- мер выхода равен количеству строк числителя. Коэффициенты расположе- ны по убыванию степени переменной s. Параметры блока: Numerator: [вектор или матрица коэффициентов числителя]. Denominator; [вектор коэффициентов знаменателя]. Sample time: [такт дискретности]. Порядок числителя передаточной функции не должен превышать поря- док знаменателя. Входной сигнал блока должен быть скалярным. В том случае, если ко- эффициенты числителя заданы вектором, выходной сигнал блока будет ска- лярным (так же как и входной сигнал). Пример: На рис. 2.55 показана схема модели, использующая блок Discrete Trans- fer Fen. В примере рассчитывается реакция на единичное ступенчатое воз- действие дискретного аналога колебательного звена: 1 s2+0.5r + l 112
2. Библиотека блоков SIMULINK Шаг дискретизации выбран равным 0.5 с. IsgiPiPPiASEsie « Рис. 2.55 Discrete Zero-Pole Дискретная передаточная функция "нули-полюса" Пиктограмма. (Z-1) > ------- > z(z-0.5) Discrete Zero-Pote Назначение: Блок Discrete Zero-Pole определяет дискретную передаточную функцию с заданными полюсами и нулями: Z(z) - г (z-Zm) 11 ( Z / —* Л Л , P(z) (z-^)(z-P2)-(z-Pn) li где Z - вектор или матрица нулей передаточной функции; Р - вектор полюсов передаточной функции; К - коэффициент передаточной функции или вектор коэффициентов, ес- ли нули передаточной функции заданы матрицей. При этом размерность вектора К определяется числом строк матрицы нулей. 113
И. В Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters: Discrete Zero-1 Параметры блока: Zeros: [вектор или матрица нулей]. Poles: [вектор полюсов]. Gain: [скалярный или векторный коэффициент передаточной функции]. Sample time: [такт дискретности]. ---. э>(1| Количество нулей не должно превышать число полюсов передаточГГби функции. л» ill В том случае, если нули передаточной функции заданы матрицей, блок Discrete Zero-Pole моделирует векторную передаточную функцию. Нули или полюса могут быть заданы комплексными числами. В этом случае нули или полюса должны быть заданы комплексно-сопряженными парами полюсов или нулей соответственно. n\A Начальные условия при использовании блока Discrete Zero-Pole полага- ются нулевыми. 1У . 114
2. Библиотека блоков SIMULINK Пример: На рис. 2.56 показана схема с использованием блока Discrete Zero-Pole. С помощью рассматриваемого блока моделируется дискретный аналог передаточной функции: _______________1_____________ (у + 0.25 -0.968/)О + 0.25 + 0.9681) ’ Шаг дискретизации выбран равным 0.5 с. Рис. 2.56 Discrete Filter Дискретный фильтр Пиктограмма: 1 5 ------1 * 1+0 5Z* 1 Discrete Filter Назначение: Блок дискретного фильтра Discrete Filter задает дискретную передаточ- ную функцию от обратного аргумента (1/z) 115
И- В. Черных. SIMULINK: среда создания инженерных приложений num(z ’) niungZ0 + ниш;?+иши,г'2 + ... + numniz den(z") denoz° + denlz~' + den2z~1 +..+dennz~” где m+1 и и+/ - количество коэффициентов числителя и знаменателя ветствепно; пит - вектор или матрица коэффициентов числителя; den - вектор коэффициентов знаменателя. Окно задания параметров: соот- Block Parameters Discrete Fdl«>« л] Discrete Fifter - —-- ~r~;------------— —--—s-r-r— Vector expression for numerator and denominator. Coefficients are for j ascending powers of 1/z. Parameters * ----—s'r-----r~r~'——— --------------- Numerator. Denomrrator. |п 05) Sample time (-1 for inherited) I ок Help | Параметры блока: Numerator: [вектор или матрица коэффициентов числителя]. Denominator. [вектор коэффициентов знаменателя]. >' \ Sample time: [такт дискретности] Пример: На рис. 2.57 показана схема с блоком Discrete Filter. С помощью рас- сматриваемого блока моделируется дискретный аналог функции: передаточной 1 4s+ 1 Такт дискретности выбран равным 0.5 с. 116
2. Библиозека блоков SIMULINK Рис. 2.57 Discrete State-Space Дискретная модель в пространстве состояний Пиктограмма: y(n)=C><n>Du(n) s x(n+1 )=В u(n) Discrete State-Space Назначение: Блок моделирует дискретный динамический объект, описываемый урав- нениями в пространстве состояний х(п +1) = Ах(п) + Ви(п), _ Jf у(и) = Сх(п) + Du(n), гДе х - вектор состояния; и - вектор входных воздействий; у - вектор выходных сигналов; А, В, С, D - матрицы системы, входа, выхода и прямой передачи соот- ветственно; п - номер шага моделирования. 117
И. В. Черных. SIMULINK: среда создания инженерных приложений Размерность матриц показана на рис. 2.58 (п — п m количество переменных состояния, т - число входных сиг налов, г - число выходных сигналов). п А в г С D Рис. 2.58 Окно задания параметров: Block Parameters: Drscrgtg Mote Spp<-c Discrete State Space -— Discrete date-space model x|n*l] - Ax[n] *ВЦп] y(n) -O(iM + Dv<n) | i Parameters *5? s“—?—~ —s—y A: F-------------------------------------------; 6: . p-------------------------:--------------;.... C: 0: Initial condteons: |o Sample time (-1 lor inherited}. '1- ...... .. ........ J I OK [ Cancel | Help | fepte- | • Параметры блока: A: [матрица системы]. В: ,.| К. [матрица входа]. — ~ С: ,U [матрица выхода]. D: [матрица прямой передачи]. 118
2. Библиотека блоков SIMULINK Initial conditions: [вектор начальных условий]. Sample time: [такт дискретности]. Пример: На рис. 2.59 показана схема моделирования динамического объекта с по- мощью блока Discrete State-Space. Матрицы блока имеют следующие значения: Г 0.9135 0.15941 Г0.051891 „ . . Гл1 А= ,В = ,С = [0 11,0=0]. -0.7971 0.5947 0.4782 1 J 1 J Рис. 2.59 2.5. Discontinuities - нелинейные блоки Saturation] Пиктограмма: Ограничитель Saturation 119
И. В. Черных. SIMULINK: среда создания инженерных приложений Назначение: Выполняет ограничение величины сигнала. Окно задания параметров: Block Parameters: Salur Jtiun Saturation----------------—- — ----------------- ------------——n Limit input signal to the upper and lower saturation values. Parameters- — — Upper Smit: Lower fenit: *[д5 p Treat as gain when lineariz'ng p Enable zero crossing detection OK Cancel | Help Параметры блока: Upper limit: [верхний порог ограничения]. Lower limit: [нижний порог ограничения]. Treat as gain when linearizing: [трактовать как усилитель при линеаризации]. При выполнении линеариза- ции блок заменяется усилителем с коэффициентом передачи, равным еди- нице. Enable zero crossing detection: .-esG I [фиксировать прохождение сигнала через нулевой уровень]. Выходной сигнал блока равен входному, если его величина не выходит за порог ограничения. По достижении входным сигналом уровня ограниче- ния выходной сигнал блока перестает изменяться и остается равным порогу. Пример: На рис. 2.60 показана схема, в которой блок Saturation используется Для ограничения синусоидального сигнала. На рисунке приведены временные диаграммы сигналов и зависимость выходного сигнала блока от входного. 120
2. Библиотека блоков SIMULINK Зона нечувствительности Dead Zone Пиктограмма: Dead Zone Назначение: .реализует нелинейную зависимость типа "зона нечувствительности". 121
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров; Oloofc Paf ainelete: Dead л! Dead Zone -..-ч- - - - Output zero fw infMit within the deadzone Ofttet nput sgnais by either the Start or End vaLe when out «de ct the deadzone. г Parameter® Start cl ctad zone End of dead zone: | ]05—— P Setwate on integer overflow P Treat as gain «tfienbnearring P Enable zero crossing detecban OK | С*псЧ [ Нй> I Параметры блока: Start of dead zone: [начало зоны нечувствительности (нижний порог)]. End of dead zone: [коней зоны нечувствительности (верхний порог)] Saturate on integer overflow: [подавлять переполнение целого]. При выстановленном флажке ограниче- ние сигналов целого типа выполняется корректно. Treat as gain when linearizing: [трактовать как усилитель при линеаризации]. При выполнении линеариза- ции блок заменяется усилителем с коэффициентом передачи, равным еди- нице. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Выходной сигнал блока вычисляется в соответствии со следующим адг, ЭИ горитмом: ---1 • если величина входного сигнала находится в пределах зоны нечувствдМ тельности, то выходной сигнал блока равен нулю; • если входной сигнал больше или равен верхнему входному порогу зоны нечувствизельности, то выходной сигнал равен входному минус величи- на порога; 122
2 Библиотека блоков SIMULINK • если входной сигнал меньше или равен нижнему входному порогу зоны нечувствительности, то выходной сигнал равен входному минус величи- на порога. Пример: На рис. 2.61 показана схема с блоком Dead Zone. Relay ~| Реле Пиктограмма: Relay 123
И. В Черных. SIMULINK: среда создания инженерных приложений Назначение Реализует релейную нелинейность. Окно задания параметров. Block Parameters: Relay Relay OutpiA the specified 'on' a 'off value by comparing the input Io the specified thresholds. The on/off slate of the relay re not affected by inpul between the upper and lower imits. •Parameters .-4“—.•“/тт—----------"77X7—1— Switch on point |ёр$ ' Switch off point. P’s Output when on. j, fl Output when oft fo 17 -----Show additional parameters- Output datatype mode: [specify via dialog ** 3 Output data type (eg. sftx(16). utnt(9t floatl'single1]): Output scaling value (Slope, e.g. 2^-9 or [Slope Bras}, e g. [1.25 3]f zzzzzzzzzzzz Parameter scaling mode |use specified scaling • (7 Enable zero crossing detection I OK j Cancel [ Help | Apply | j Параметры блока: Switch on point: [порог включения]. Значение, при котором происходит включение реле. Switch off point: [порог выключения]. Значение, при котором происходит выключение ре^е.;/п Output when on: ,ir^J [величина выходного сигнала во включенном состоянии]. 124
2. Библиотека блоков SIMULINK Output when off: [величина выходного сигнала в выключенном состоянии]. Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке поя- вится окно списка Output data type mode. Output data type mode: [выбор типа выходных данных]. Для выбора используется раскрывающийся список. Тип выходного сигнала может наследоваться от блока назначения (inherit via back propagation), быть задан одним из стандартных типов, на- пример int8, либо определен с помощью дополнительных параметров (Specify via dialog). В последнем случае появятся дополнительные окна спи- сков Output data type, Output Scaling Mode и Output scaling value. Output data type: [тип выходных данных]. В графе можно задать требуемый тип данных, включая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Output scaling value: [величина масштаба]. Параметр задается как основание системы счисления со смещением, напрнмер [1.25 3]. Смещение допускается не указывать. Parameter Scaling Mode: [способ масштабирования выходного сигнала]. Выбирается из списка: • Best precision: Vector-vise - наилучшая точность. • Use specified scaling - использовать заданный масштаб. При выборе дан- ного значения параметра Дополнительная графа Output scaling value ста- новится недоступной. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Выходной сигнал блока может принимать два значения. Одно из них со- ответствует включенному состоянию реле, второе - выключенному. Пере- ход из одного состояния в другое происходит скачком при достижении входным сигналом порога включения или выключения реле. В том случае, если пороги включения и выключения реле имеют разные значения, блок реализует релейную характеристику с гистерезисом. При этом значение по- рога включения должно быть больше, чем значение порога выключения. 125
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример На рис. 2.62 показана схема с использованием блока Relay. На времен- ных диаграммах видно, что включение реле происходит при достижении входным сигналом величины 0.5, а выключение - при -0.5. Рис. 2.62 Rate Limiter | Блок ограничения скорости изменения сигнала Пиктограмма: Rate Limiter 126
2. Библиотека блоков SIMULINK Назначение: Блок обеспечивает ограничение скорости изменения сигнала (первой производной). Окно задания параметров: Block Parameters Rale Liimier Rate Limiter Limit rising and falling rates of signal. Parameters Rising slew rate: F---------------------------------------j Falling slew rate: p £7 Treat as gam when linearizing | ~ OK...| Cancel | Help | ~j Параметры блока: Rising slew rate: [уровень ограничения скорости при увеличении сигнала]. Falling slew rate: [уровень ограничения скорости при уменьшении сигнала]. Treat as gain when linearizing: [трактовать как усилитель при линеаризации]. При выполнении линеариза- ции блок заменяется усилителем с коэффициентом передачи, равным еди- нице. Вычисление производной сигнала выполняется по выражению u(i)-y(i-l) rate =---------------------------------------, z(/)-r(i-l) где u(i) - значение входного сигнала на текущем шаге; - значение выходного сигнала на предыдущем шаге; /(/) - значение модельного времени на текущем шаге; r(i-l) - значение модельного времени на предыдущем шаге. Вычисленное значение производной сравнивается со значениями уров- ней ограничения скорости Rising slew rate и Falling slew rate. Если значение производной больше, чем значение параметра Rising slew rate, то выходной сигнал блока вычисляется по выражению 127
И. В. Черных. SIMULINK: среда создания инженерных приложений v(i) = Al • R+ y(iг — 1), где R - уровень ограничения скорости при увеличении сигнала. Если значение производной меньше, чем значение параметра Falling slew rate, то выходной сигнал блока вычисляется по выражению у(/) = Ar F+ y(i-l), где F - уровень ограничения скорости при уменьшении сигнала. Если значение производной лежит в пределах между нижним и верхним уровнями ограничения, то выходной сигнал блока равен входному: v(0 = u(i). Пример: На рис. 2.63 показана схема модели с блоком Rate Limiter, в которой на вход блока подается прямоугольный периодический сигнал. g.lHi .У1 ® Й [>' I 13 В В *□ * Pulse Ocneiatof Pit* LimiUi Scope 0 Time offset 0 2 3 4 5 6 Puc. 2.63 Quantizer"] Квантователь Пиктограмма: Quantizer 128
2. Библиотека блоков SIMULINK Назначение: Блок обеспечивает квантование входного сигнала с одинаковым шагом по уровню. Окно задания параметров: Block Paiametat: Ouanfeoc / ' Quantizer Discretize input at given interval - Parameters . j Quantization interval |___ Fz Treal as flam when linearizing | OK | Cancel | Help | | < Параметры блока: Quantization interval; [шаг квантования по уровню]. Treat as gain when linearizing: [трактовать как усилитель при линеаризации]. При выполнении линеариза- ции блок заменяется усилителем с коэффициентом передачи, равным еди- нице. Пример: На рис. 2 64 показана схема с блоком Quantizer, выполняющим квантова- ние по уровню синусоидального сигнала. Шаг квантования задан равным 0.5. М-и-1'1-—ива- i jflxi & о л р р л ® @' е О 0.5 1 15 2 Т ime offset. 0 Рис. 2.64 129
Л. В Черных. SIMULINK: среда создания инженерных приложений Coulomb & Viscous Friction Блок сухого и вязкого трения Пиктограмма: Coulomb & Viscous Friction Назначение Моделирует эффекты сухого и вязкого трения. Блок реализует нелиней- ную характеристику, соответствующую выражению у = sign(u) (Gain abs(u) + Offset), где и - входной сигнал; у - выходной сигнал; Gain — коэффициент вязкого трения; Offset - величина сухого трения. Окно задания параметров: Block Parameters: Ct Coutombtc and Viscous Friction (mask) (link) A discontinuity offset al zero models coulomb friction Linear gain models viscous friction. у - sign(x) * (Gain “ ab$(x) * Offset) Параметры блока: Coulomb friction value (Offset) [величина сухого трения] Coefficient of viscous friction (Gain), [коэффициент вязкого трения]. 130
2. Библиотека блоков SIMULINK Пример-: На рис. 2.65 показана схема использования блока Coulomb & Viscous Friction. Оба параметра блока заданы равными единице XY Graph Backlash | Люфз Пиктограмма: Backlash 131
И. В. Черных. SIMULINK: среда создания инженерных приложений Назначение: Моделирует нелинейность типа "люфт". Окно задания параметров: Block Paiameteis Bocklash Backlash Model backlash where the deadband wtAh specifies the amount of play in j the system । Patametets ~ --v— ~ ~ ' ---------------*— ! Deadband width: F Irittel output j- p Enable zero crossing detection OK ] Cancel | Help | j Параметры блока: Deadband width: [ширина люфта]. Initial output. [начальное значение выходного сигнала]. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Сигнал на выходе блока будет равен заданному значению Initial output, пока входной сигнал при возрастании не достигнет значения (Deadband width)/2 (где U - входной сигнал), после чего выходной сигнал будет равен U-(Deadband width)/2. После того как произойдет смена направления изме- нения входного сигнала, выходной сигнал будет оставаться неизменным, пока входной сигнал не изменится на величину (Deadband width)/2, после чего выходной сигнал будет равен U+(Deadband width)/2. Пример: На рис. 2.66 показана схема с блоком Backlash и диаграммы, иллюстри- рующие его работу. Входной сигнал блока - гармонический, с линейно воз- растающей амплитудой. 132
2. Библиотека блоков SIMULINK Hit Crossing Блок определения момента пересечения порогового значения Пиктограмма: Hit Crossing Назначение: Определяет момент времени, когда входной сигнал пересекает заданное пороговое значение. 133
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters: НИ Croxi HitCrossrig Compares the input signal to the hit crossng offset value If the signal rises above, lais below or remains at the offset value, the block outputs 1 Otherwise the block outputs zero. For variable-step solvers, SimcAnk takes a lime step before and after the W crossing time Parameters Hit crossing offset: Hit crossing tfceclion: [rthw Д jv Show output pott p ЕплЫе zero crossing detection | OK | Cencel | Hetp | fippV | Параметры блока: Hit crossing offset: [порог]. Значение, пересечение которого входным сигналом требуется иден- тифицировать. Hit crossing direction. [направление пересечения] Выбирается из списка: • rising - возрастание; • failing - убывание; • either - оба направления. Show output port: [показать выходной порт]. В том случае, если этот флажок снят, то точка пересечения сигналом порогового уровня находится, но выходной сигнал блоком не генерируется. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. В момент пересечения порогового уровня блок вырабатывает единичный сигнал длительностью в один такт дискретности. Пример: Схема использования блока Hit Crossing показана на рис. 2.67 Блок оп- ределяет моменты пересечения в обоих направлениях синусоидальным сиг- налом уровня 0.5 134
2. Библиотека блоков SIMULINK 2.6. Math Operations - блоки математических операций [Abe ] Блок вычисления модули Пиктограмма: > |U| > Abs Назначение: Выполняет вычисление абсолютного значения величины сигнала. Окно задания пара петров: Block PHTSneletr^^ Abs - ~ У-М Pawnetes р Enable zero crossing detection OK | Cancel | Hdp [| Параметры б чока: Saturate on integer overflow: [подавлять переполнение целого] При выстановленном флажке ограниче- ние сигналов целого типа выполняется корректно. 135
И. В. Черных. SIMULINK: среда создания инженерных приложений Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Пример 1 Схема использования блока Abs для вычисления текущего значения мо- дуля синусоидального сигнала показана на рис. 2.68. BE;, . [□[ Х| mBppp лгаа в ъ Пример 2 Блок Abs может использоваться также для вычисления модуля ком- плексного сигнала. На рис. 2 69 показан пример вычисления модуля ком- плексного сигнала вида и =cos(£0/) + isin(tor). Модуль этого сигнала (как и следовало ожидать) равен единице для любого момента времени. Sum Сумматор Пиктограмма: Назначение: Выполняет вычисление суммы текущих значений сигналов. 136
2. Библиотека блоков SIMULINK Рис. 2.69 Окно задания параметров: Block Parameters: Su 2^• - М Sum i I Add и subtract inputs Specify one of the folowing a) string containing + и - for each input port I for spacer between ports (eg. +4HJ b) scalar >= 1 A value > 1 sums aH inputs; 1 sums elements of a single input vector Parameters -----< | Icon shape ( round 2 I I List of signs: ! F“ Jj P -----------Show additional parameters---------- Г Retire al inputs to have same data type Output data type mode: jSpecify via dialog 7] । Output data type (eg. $fe(16), utritfS), floatfsingle'J): [sim(16) Output scaling value (Slope, e g. 2^-9 or [Slope Bias], eg [1.25 3JJ: 1 fro ----------‘ “ Il Г Lock output scaling against changes by the autoscating tool Round wieger calculations toward (Floor 7] G? Saturate on integer overflow OK j Caned j Help j Apply [ 137
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Icon shape: [форма блока]. Выбирается из списка: • round - круг; • rectangular - прямоугольник. List of sign: [список знаков]. В списке можно использовать следующие знаки: + (плюс), - (минус) и | (разделитель знаков). Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке ото- бражается окно списка Output data type mode. Require all inputs to have same data type: [все входы должны иметь одинаковый тип данных]. При установке этого параметра все входные сигналы должны иметь одинаковый тип. Output data type mode: [выбор типа выходных данных]. Для выбора используется раскрывающийся список. Тип выходного сигнала может наследоваться от блока назначения (inherit via back propagation) или от блока, подключенного к первому входу (same as first input), задан одним из стандартных типов, например int8, либо определен с помощью дополнительных окон списка (Specify via dialog). В последнем случае появятся дополнительные окна списков Output data type и Output scaling value. Output data type: [тип выходных данных]. В 1рафс можно задать требуемый тип данных, вклю- чая типы данных с фиксированной точкой, например sfix(16), uint(8) и т п. Output scaling value: [величина масштаба]. Параметр задается как основание системы счисления со смещением, например [1.25 3]. Смещение допускается не указывать. Lock output scaling against changes by the autoscaling tool: [запретить масштабирование]. Round integer calculations toward. [способ округления]. Параметр устанавливает способ округления выходного сигнала в арифметике с фиксированной точкой. Значение параметра выби- рается из списка: • Zero - округление отсутствует; - • Nearest - ближайшее целое; 138
2. Библиотека блоков SIMULINK • Floor - ближайшее меньшее целое; • Ceiling - ближайшее большее целое. Saturate on integer overflow: [подавлять переполнение целого]. При выстановленном флажке ограниче- ние сигналов целого тина выполняет ся корректно. Количество входов и операция (сложение или вычитание) определяются списком знаков параметра List of sign. При этом метки входов обозначаются соответствующими знаками. В параметре List of sign можно также указать число входов блока. В этом случае все входы будут суммирующими. Если количество входов блока превышает 3, то удобнее использовать блок Sum прямоугольной формы. Блок может использоваться для суммирования скалярных, векторных или матричных сигналов. Размерности суммируемых сигналов должны сов- падать. Если количество входов блока больше чем один, то блок выполняет по- элементные операции над векторными или матричными сигналами. При этом количество элементов в матрице или векторе должно быть одинаковым. Если в качестве списка знаков указать цифру 1 (один вход), то блок можно использовать для определения суммы элементов вектора. Пример: Варианты схем с использованием блока Sum показаны на рис. 2.70. Constants Рис. 2.70 139
И. В Черных. SIMULINK: среда создания инженерных приложений Product Блок умножения и деления Пиктограмма: Product Назначение: Выполняет вычисление произведения текущих значений сигналов. Окно задания параметров: Block Parameters: TroduiJ ' (-Product -------------- ------------------------- ——------------- Multiply от divide inputs Choose element-wise or matfix product and specify one of the following: a) ** of / tot each input port (eg, ’V) bj scalar specifies the number of input ports to be multiplied Scalar value of T for element-wise product causes afl elements of a single input vector to be multiplied. If / is specified with matrix product, compute the inverse of the corresponding input. Parameters ------- — — Number of inputs. [2 ! 1 Multiplication: |Etenant-wisef“) p" ---------Show addtiond parameters—*---------- I Г" Require aS inputs to have same data type Output data type mode: ^Specrfy via dialog y*| Output data type (eg. sfix(16], uint(8), floatfsingle1]]: I—— Output scaling value (Slope, eg 2'*’-9 ot (Slope Bias], eg (1.25 3]): I |F6 —- Г Lock output scaling against changes by the autoscaling tool Round integer calculations toward: iFloor j^j I P Saturate on integer overflow ок I Cancel | Help [ Apply | Параметры блока: Number of inputs: [количество входов]. Параметр может задаваться как число или как список зна- ков. В списке знаков можно использовать знаки * (умножить) и / (разделить). 140
2. Библиотека блоков SIMULINK Multiplication; [способ выполнения операции] Параметр может принимать значения из списка: • Element-wise - поэлементный; • Matrix - матричный. Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке ото- бражается окно списка Output data type mode. Require all inputs to have same data type: [все входы должны иметь одинаковый тип данных]. При установке этого параметра все входные сигналы должны иметь одинаковый тип. Output data type inode. [выбор тнпа выходных данных]. Для выбора используется раскрывающийся список. Тип выходного сигнала может наследоваться от блока назначения (inherited via back propagation) или от блока, подключенного к первому вхо- ду (same as first input), задан одним из стандартных типов, например int8, либо определен с помощью дополнительных окон списка (Specify via dialog). В последнем случае появятся окна списков Output data type и Output scaling value. Output data type [тип выходных данных]. В графе можно задать требуемый тип данных, включая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Output scaling value: [величина масштаба]. Параметр задается как основание системы счисления со смещением, например [1.25 3]. Смещение допускается не указывать. Lock output scaling against changes by the autoscaling tool: [запретить масштабирование]. Round integer calculations toward: [способ округления]. Параметр устанавливает способ округления для вы- ходного сигнала в арифметике с фиксированной точкой. Значение парамет- ра выбирается из списка: • Zero - округление отсутствует; • Nearest - ближайшее целое; • Floor - ближайшее меньшее целое; • Ceiling - ближайшее большее целое. 141
И. В. Черных. SIMULINK: среда создания инженерных приложений Saturate on integer overflow: [подавлять переполнение целого]. При установленном флажке ограничение сигналов целого типа выполняется корректно. Если параметр Number of inputs задан списком, включающим кроме зна- ков умножения также знаки деления, то метки входов будут обозначены символами соответствующих операций. Блок может использоваться для операций умножения или деления ска- лярных, векторных или матричных сигналов. Размерности входных сигна- лов блока должны совпадать. Если в качестве количества входов указать цифру 1 (один вход), то блок можно использовать для определения произ- ведения элементов вектора. Пример 1: Варианты схем с использованием блока Product при выполнении скаляр- ных и поэлементных операций показаны на рис. 2.71. Constants Рис. 2.71 Пример 2: При выполнении матричных операций необходимо соблюдать правила их выполнения. Например, при умножении двух матриц необходимо, чтобы количество строк первой матрицы равнялось количеству столбцов второй матрицы. Варианты схем, в которых блок Product используется для выпол- 142
2 Библиотека блоков SIMULINK нения матричных операций, показаны на рис. 2.72. В примере показаны операции формирования обратной матрицы, деления матриц, а также умножения матриц. Constants Рис. 2.72 Sign | Пиктограмма: Блок определения знака сигнала Sign Назначение: Определяет знак входного сигнала. Окно задания параметров: Block Parameters ion Signurn ... Output 1 fa positive input. -1 for negative input, end 0 fa 0 input, у - signamfu) Parameters p Enable zero crossing detection .J | OK | Cancel | fctelp j ‘£i-. j 143
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Блок работает в соответствии со следующим алгоритмом: • если входной сигнал блока положителен, то выходной сигнал равен 1; • если входной сигнал блока отрицателен, то выходной сигнал равен -1; • если входной сигнал блока равен 0, то выходной сигнал также равен 0. Пример: Рис. 2.73 иллюстрирует работу блока Sign. I Gain, Matrix Gain Усилитель Пиктограмма: Gain Назначение: Выполняет умножение входного сигнала на постоянный коэффициент 144
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters. Gain Gain - —............. - • - j Element-wise gan (у = К ”u) a matrix gain (y = K"u wy « u*K|. Parameters —*- - - ~ Gam, ! [l Multpfcdiion |EteiTtenl-wisejK-M ж f K7 ------Show additional parameters ..— ‘ Parameter data type mode; {specify via dialog 3 Parameter data type (eg. sfix(16). uirt(8) floatfsingle’}): Parameter scaling mode ||Jse specified seeing —————— । Parameter scaing (Slope cm [Slope Bras], e.g. Output data type mode; {specify via dialog j] Output data type (e.g. sfixfl6). tint[8I fioatfsjngle’fl: J—— Output scaling value (Slope, e g. 2~-9 or (Slope Brasi. e.g. (1.2531). |?0 f“ Lock output scaling against changes by the arXoscaSng tool Round integer calculalions toward | Floor ~ p Saturate on integer overflow OK Cancel [ HelP | ApP^r Параметры блока: Gain: {коэффициент усиления]. Multiplication: [способ выполнения операции]. Значение параметра выбирается из списка: • Element-wise K*u - поэлементный. • Matrix K*u - матричный. Коэффициент усиления является левосторон- ним операндом. • Matrix u*K - матричный. Коэффициент усиления является правосторон- ним операндом. 145
И. В Черных. SIMULINK; среда создания инженерных приложений • Matrix K*u (u vector) - векторный. Коэффициент усиления является ле- восторонним операндом. Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке ото- бражается окна списков Parameter data type mode. Output data type mode. Parameter data type mode: [выбор типа параметра]. Для выбора используется раскрывающийся список. Тип коэффициента усиления может наследоваться от блока, подключенного к первому входу (same as input), либо быть определен с помощью дополни- тельных окон списка (Specify via dialog). В последнем случае появятся до- полнительные окна списков Parameter data type и Parameter scaling. Parameter data type: [тип выходных данных]. В графе можно задать требуемый тип данных, включая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Parameter scaling mode: [метод масштабирования]. Parameter scaling: [величина масштаба для параметра]. Параметр задается как основание сис- темы счисления со смещением, например [1.25 3]. Смещение допускается не указывать. Output data type mode: [тип выходных данных]. В графе можно задать требуемый тип данных, включая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Output scaling value: [величина масштаба для выхода]. Параметр задается как основание системы счисления со смещением, например [1.25 3]. Смещение допускается не ука- зывать. Lock output scaling against changes by the autoscaling tool: [запретить масштабирование]. Round integer calculations toward: [способ округления] Параметр устанавливает способ округления при вычис- лениях в арифметике с фиксированной точкой. Значение параметра выбира- ется из списка: 146
2. Библиотека блоков SIMULINK • Zero - округление отсутствует; • Near est - ближайшее целое; • Floor - ближайшее меньшее целое; • Ceiling - ближайшее большее целое. Saturate on integer overflow: [подавлять переполнение целого]. При установленном флажке ограничение сигналов целого типа выполняется корректно. Блоки усилителей Gain и Matrix Gain по сути есть один и тот же блок, но с разными начальными установками параметра Multiplication. Параметр блока Gain может быть положительным или отрицательным числом, как больше, так и меньше единицы. Коэффициент усиления можно задавать в виде скаляра, матрицы или вектора, а также в виде вычисляемого выражения. В том случае, если параметр Multiplication задан как Element-wise K*u, блок выполняет операцию умножения на заданный коэффициент скалярно- го сигнала или каждого элемента векторного сигнала. В противном случае блок выполняет операцию матричного умножения сигнала на коэффициент, заданный матрицей. Для операции поэлементного усиления входной сигнал может быть ска- лярным, векторным или матричным любого типа, за исключением логиче- ского (boolean). Элементы вектора должны быть одного типа. Выходной сигнал блока будет иметь тот же самый тип, что и входной сигнал. Пара- метр блока Gain может быть скаляром, вектором или массивом любого ти- па, за исключением логического (boolean). При вычислении выходного сигнала блок Gain использует следующие правила. Если входной сигнал действительного типа, а коэффициент усиления комплексный, то выходной сигнал будет комплексным. Если тип входного сигнала отличается от типа коэффициента усиления, то Simulink пытается выполнить приведение типа коэффициента усиления к типу входного сигнала В том случае, если такое приведение невозможно, расчет будет остановлен с выводом сообщения об ошибке. Такая ситуация может возникнуть, например, если входной сигнал есть беззнаковое целое (uint8), а параметр Gain задан отрицательным числом. Пример 1: Варианты схем с использованием блока Gain при выполнении скалярных и поэлементных операций показаны на 2.74. 147
И. В. Черных. SIMULINK: среда создания инженерных приложений Рис. 2.74 Пример 2: Для операций матричного усиления (матричного умножения входного сигнала на заданный коэффициент) входной сигнал и коэффициент усиле- ния должны быть скалярными, векторными или матричными значениями комплексного или действительного типа single или double. Примеры ис- пользования блока Matrix Gain при выполнении матричных операций пока- заны на рис. 2.75. Slider Gain J Ползунковый регулятор Пиктограмма: Slider Gain Назначение: Обеспечивает установку коэффициента усиления с помощью ползунко- вого регулятора. 148
2. Библиотека блоков SIMULINK Окно задания параметров: > Slider Gam Low High I 0 I T I 2 Help | Ctose | Параметры блока: Low; [нижний предел коэффициента усиления]. High: [верхний предел коэффициента усиления]. Для изменения коэффициента усиления блока Slider Gain необходимо передвинуть ползунок регулятора. Перемещение ползунка вправо приведет к увеличению коэффициента усиления, перемещение влево - к уменьшению. 149
И. В. Черных. SIMULINK: среда создания инженерных приложений Изменение коэффициента усиления будет выполняться в пределах диапазо- на, заданного параметрами Low и High. Если щелкнуть с помощью мыши на левой или правой стрелках шкалы регулятора, то коэффициент усиления изменится на I % от установленного диапазона. Если щелкнуть с помощью мыши на самой шкале регулятора слева или справа от ползунка, то коэффициент усиления изменится на 10 % от установленного диапазона. Можно также просто задать требуемое значе- ние коэффициента в среднем окне блока. Блок может выполнять поэлементное усиление векторного или матрич- ного сигнала. Входной сигнал может быть комплексным. Пример: Схемы с использованием блока Slider Gain показаны на рис. 2.76. Constant Display Slider Gain Gainl Displayl Рис. 2.76 Dot Product | Пиктограмма: Блок скалярного произведения Dot Product Назначение: Выполняет вычисление скалярного произведения двух векторов. Окно задания параметров: Block Parameters Dot Product Doi Product (mask) (bnk) —...............~..........— Inner (dot) product у - *um(conj(u1 The operand u! corresponds to the top (or left) input pot СК I Cancel I Help | 150
, 2. Библиотека блоков SIMULINK Паромеры блока: Нет. Блок выполняет вычисление выходного сигнала в соответствии с выра жением у - suin(coHj(ul}}.*и2), где ul и и2 - входные векторы; conj - операция вычисления комплексно-сопряженного числа; sum - операция вычисления суммы. Если оба входных вектора являются действительными, то выходной сиг- нал также будет действительным. Если хотя бы один из входных векторов содержит комплексный сигнал, то выходной сигнал будет комплексным. Пример: Схемы, иллюстрирующие работу блока Dot Product, показаны на рис. 2.77. Рис. 2.77 |Math Function | Математическая функции Пиктограмма: Мл th Function Назначение: Выполняет вычисление заданной математической функции входного сигнала и. 1М
И В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters: Math Math - - - - -— ---- - ---- Mathematical Junctions including logarithmic, exponential. ролег, and modulus functions When the function has тле (han one argument. the’ first argument corresponds Io the lop (or left) input port. . — J Parameters - - ---~i— ~ ——--------- Function: | exp ' *1 OurpJ signal type |aj0 V] j pK | Cancel j Help | fax. Параметры блока: Function: [вид вычисляемой функции]. Нужная функция выбирается из списка: • ехр - экспоненциальная функция еи; • log - натуральный логарифм ln(u); • 10Ли - вычисление степени 10й; • log 10 - десятичный логарифм lg(u), • magnitude^ - вычисление квадрата модуля входного сигнала |и’|; • square - вычисление квадрата входного сигнала U"; IP • sqrt - квадратный корень и • pow - возведение в степень uk; • conj - вычисление комплексно-сопряженного сигнала и*; • reciprocal - вычисление сигнала 1/и; • hypot - вычисление корня квадратного из суммы квадратов входных сигна- лов ((и2 + к,2 )|/2); • rem - функция остатка от деления первого входного сигнала на второй rem(U|. и,); • птоф - функция остатка от деления с учетом знака mod(u(, m); • transpose - транспонирование сигнала UT; • hermitian - вычисление эрмитово-сопряженного сигнала UH. Output signal type: [тип выходного сигнала]. Тип сигнала выбирается из списка: 152
2. Библиотека блоков SIMULINK • auto - автоматическое определение типа; t real - действительный сигнал; • complex - комплексный сигнал. Тип выходного сигнала в зависимости от типа входного сигнала, вычисляе- мой функции и параметра блока Output signal type приведен в табл. 2.1. Таблица 2.1 Функции Входные сигналы Выходной сигнал Auto Real Complex Exp, log, 10u, log 10, square. real real real complex sqrt, pow, reciprocal, conjugate, transpose, hermitian complex complex error complex magnitude squared real real real complex complex real real complex hypot, rem, mod real real real complex complex error error error Пример: Схемы с использованием блока Math Function показаны на рис. 2.78. Conrtar>t1 Math Display) Function! Рис. 2.78 153
II. В. Черных. SIMULINK: среда создания инженерных приложений [Trigonometric I Function Пиктограмма: Тригонометрическая функция Trigonometric F unction l /означение: Выполняет вычисление выбранной тригонометрической функции. Окно задания параметров: Block t'nrnmeteis' Ггнзспе пнДпс Гuni Trigonometry - ---------'-к-------- ; Trigonometric and hyperbole functions Whan the function hw more than one argumer*. the first argument corresponds to the top (or left J input port РатЛвк-----------— Function: Output ttgndfyp* I auto ,ч L_________ о* И И fhtr• | ancel j НЦ> j Пара метры блока: Function: [вит вычисляемой функции]. Вид функции выбирается из списка: sin, cos, tan. asin, acos, atan, atan2, sinh, cosh и tanh. Output signal type: | run выходного сигнала]. Тип сигнала выбирается из списка: • auto - автоматическое определение типа; • real - действительный сигнал; • complex - комплексный сигнал. При векторном или матричном входном сигнале блок выполняет поэле- ментное вычисление заданной функции. При мер: Схемы с использованием блока Trigonometric Function показаны на рис. 2.79. Н4
2 Библиотека блоков SIMULINK Constant Trigonomatnc Display Function Constant! Trigonometric Display! Function! Puc. 2 79 Complex to Real-Image Блок вычисления действительной и (или) мнимой части комплексного числа Пиктограмма: ' ftn(u) > Complex to Reel-lmjg Назначение: Вычисляет действительную и (или) мнимую часть комплексного числа. Окно задания параметров: Block Parameters: Comt k.' to Complex Io Real-1 mag * Output the real and/or anagrrary components of the input Parameters - - - -...........- -.............. ......... • , Output | Real andimag~ ~ I OK I Cancel [ Help [| 155
И. В. Черных. SIMULINK среда создания инженерных приложений Параметры блока Output: [выходной сигнал]. Тип сигнала выбирается из списка: • Real - действительная часть; • Image - мнимая часть; • Real&Image - действительная и мнимая часть. Входной сигнал блока может быть скалярным, векторным или матричным Пример 1: Схемы с использованием блока Complex to Real-Image показаны на рис. 2.80 Complex to Magnitude-Angle Real-lmig2 Рис. 2.80 Блок вычисления модуля и (или) аргумента комплексного числа Пиктограмма: 5 > Complex to Magnitude-Angle Назначение: Вычисляет модуль и (или) аргумент комплексного числа. 156
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters: Co не гтч!ЛЛ' у •' v| жпшая. ± * imutk 2SJ CompleK toMagnilude^Angle - --— «------------——. Compute magnitude and/ос radian phase angle of the input. ( Parameters Output J Magnitude arid angle "~*П I ок I Cancel | Help | Л | Параметры блока: Output. [выходной chi нал]. Тип выходного сигнала выбирается из списка: • Magnitude - модуль; • Angle - аргумент; • MagmtudeAndAngle - модуль и аргумент. Входной сигнал блока может быть скалярным, векторным или мат- ричным. Пример: Схемы с использованием блока Complex to Magnitude-Angle показаны на рис. 2.81. Magmtude-Angl*2 Рис. 2 81 157
И. В. Черных. SIMULINK: среда создания инженерных приложений Real-Image to Complex Блок вычисления комплексного числа по его действительной н мнимой части Пиктограмма: ЯКе-\_ Real-lmag to Complex Назначение: Расчет комплексного числа по его действительной и мнимой части. Окно задания параметров: SEE®» Block Parameters: Real-tm Red-lmag To Complex ComUuct a complex output from real and/or imaginary input. Parameters OK ~| Cancel | Help | Apfl?| Параметры блока: Input: [входной сигнал]. Значение параметра выбирается из списка. • Real - действительная часть; • Image - мнимая часть; • ReaiAndlinage - действительная и мнимая часть. Image part: [мнимая часть]. Параметр доступен, если параметр Input задан как Real. Real part: [действительная часть]. Параметр доступен, если параметр Input задан как Image. Входные сигналы блока могут быть скалярными, векторными или мат- ричными. Параметры Image part и Real part должны задаваться как векторы или матрицы, если входной сигнал является вектором или матрицей. 158
2. Библиотека блоков SIMULINK Пример 1: Схемы с на рис. 2.82. использованием блока Real-Image to Complex показаны Complex* Pepliyl Complex2 Puc. 2.82 Magnitude-Angle to Complex Блок вычисления комплексного числа по его модулю и аргументу Пиктограмма: >11л_ > £-Г> Magnitude-Angle to Complex Назначение: Вычисляет комплексное число по его модулю и аргументу Окно задания параметров: Block Parameters M.-unituJ MagnAude Angle to Complex ..........-~-“ Construct a complex output from magnitude and/or radian phase angle input Parameters Input | Magnitude and angle OK | Cancel | НФ | 159
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Input: [входной сигнал]. Значение параметра выбирается из списка: • Magnitude - модуль; • Angle - аргумент; • Magnitude and angle - модуль и аргумент. Angle: [аргумент]. Параметр доступен, если входной сигнал Input объявлен как Magnitude. Magnitude: [модуль]. Параметр доступен, если входной сигнал Input объявлен как Angle. Входные сигналы блока могут быть скалярными, векторными или мат- ричными. Параметры Angle и Magnitude должны задаваться как векторы или мат- рицы, если входной сигнал является вектором или матрицей. Пример: Схемы с использованием блока Magnitude-Angle to Complex показаны на рис. 2.83. to Compltxt Displayl to Complex^ Puc. 2.83 160
2. Библиотека блоков SIMULINK Min Max j Блок вычисления максимального или минимального значения Пиктограмма: > min > Min Мах Назначение: Определяет максимальное или минимальное значение изо всех сигналов, поступающих на его входы. Окно задания параметров: Block Parameters: M|i . MinMex ..... Output min or max of input. For a sngle input, operators are applied ' across the input vector. For multiple inputs, operators are applied across therputs. I . Parameters Function: j.] Number of input ports: . p i 1 p Enable zero crossng detection | OK | Cancel | Help | | Параметры блока: Function: [выходное значение]. Вид вычисленного значения выбирается из списка: • min - минимальное значение; • max - максимальное значение. Number of input ports: [количество входных портов]. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Входные сигналы блока могут быть скалярными или векторными. Блок определяет максимальное или минимальное значение изо всех скалярных сигналов, поступающих на его входы. Если входные сигналы являются век- торными, то блок выполняет поэлементную операцию поиска минимального или максимального значения В этом случае размерности векторов должны совпадать. Если количество входных портов блока задано 161
И. В. Черных. SIMULINK: среда создания инженерных приложений должны совпадать. Если количество входных портов блока задано равным единице, то блок может использоваться для нахождения минимального или максимального значения во входном векторе. Пример: Схемы с использованием блока MinMax показаны на рис. 2.84. Constant? MlnMaxt Oiiplayt Пиктограмма: > floor > Rounding Function Назначение: Выполняет операцию округления числового значения. Окно задания параметров: Block Rourxknj- — - Bocndng operation! Paramelw? Cureton. | fox I [ OK | Cancel | Це» | У, | 162
2. Библиотека блоков SIMULINK Параметры блока: Function: [функция округления]. Функция выбирается из списка: • floor - округление до ближайшего меньшего целого; • ceil - округление до ближайшего большего целого; • round - округление до ближайшего целого; • fix - округление усечением дробной части. Входные сигналы блока могут быть скалярными, векторными или мат- ричными действительного или комплексного тина. При векторном или мат- ричном входном сигнале блок выполняет поэлементные операции. Пример: Схемы с использованием блока Rounding Function показаны иа рис. 2.85. 2.1 -----> floor ----> Constant Rounding Function Display Constant Rounding Display^ Function4 Puc. 2.85 163
И. В. Черных. SIMULINK.: среда создания инженерных приложений Relational Operator Блок выполнения операций отношения Пиктограмма: Relational Operator Назначение: Блок сравнивает текущие значения входных сигналов. Окно задания параметров: Block Parameters: Relate al Relational Operator Applies the selected relational operator to the inputs and outputs the result. The top (or left) input corresponds to the first operand. 1 • - - ..... J Parameters Relational Operator: p» “""VI P-------Show additional parameters- p Requite al inputs to have same data 135» Outpt* data type mode: |Specify via dialog 7] Output data type (e.g. игЖЗД, WTt(32JJ: I p® ——- i p” Enable zero crossing detection I OK I Cancel ) Help | Apply | Параметры блока: Relational Operator: [тип операции отношения]. Выбирается из списка: • = - - тождественно равно; • ~ = - не равно; • < - меньше; • < = - меньше или равно, • > = - больше или равно; • > - больше. 164
2 Библиотека блоков SIMULINK Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке ото- бражаются дополнительные окна списков. Require all inputs to have same data type: [все входы должны иметь одинаковый тип данных]. При установке этого параметра все входные сигналы должны иметь одинаковый тип Output data type mode: [выбор типа выходных данных] Для выбора используется раскрывающийся список. Тип сигнала может быть Boolean (двоичный), logical (логический) или задан с помощью дополнительных граф в окне параметров (Specify via dialog). В последнем случае в окне параметров появится дополнительная графа Output data type. Output data type: [тип выходных данных]. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. В операции отношения первым операндом является сигнал, подаваемый на первый (верхний) вход блока, а вторым операндом - сигнал, подаваемый на второй (нижний) вход. Выходным сигналом блока является 1, если ре- зультат вычисления операции отношения есть ИСТИНА и 0, если резуль- тат-ЛОЖЬ. Входные сигналы блока могут быть скалярными, векторными или мат- ричными. Если оба входных сигнала - векторы или матрицы, то блок вы- полняет поэлементное сравнение, при этом размерности входных сигналов должны совпадать. Если один из входных сигналов - вектор или матрица, а другой входной сигнал - скаляр, то блок выполняет сравнение скалярного входного сигнала с каждым элементом массива. Размерность выходного сигнала в этом случае будет определяться размерностью векторного или матричного сигнала, подаваемого на один из входов. Для операций = = (тождественно равно) и ~ = (не равно) допускается ис- пользовать комплексные входные сигналы. Входные сигналы также могут быть логического типа (boolean). 165
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример: Схемы с использованием блока Relational Operator показаны на рис. 2.86. Constants Рис. 2.86 Logical Operation Блок выполнения логических операций Пиктограмма: У AND > >| [ Logical Ope г at о г Назначение: Реализует одну из базовых логических операций. 166
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters: Loyical с perutii Logical Operator ----— — --------------- Logical operators. For a single nput, operators are applied across the input vector. For multiple inputs, operators are appfied across the inputs Parameters Oper or: | AND 3 Number of riput ports: P p —Show addhonal parameters- P Require al inptrts and output to have same data type Otfpc* data type mode: [s^rSy via Aaiog 5 Output data type (e g. uirt(8). $int(32)): j , — I | OK | Cancel | Help | Apply | Параметры блока: Operator: [вид реализуемой логической операции]. Выбирается из списка: • AND - логическое умножение (операция ЛОГИЧЕСКОЕ И); • OR - логическое сложение (операция ЛОГИЧЕСКОЕ ИЛИ); • NAND - операция И-НЕ; • NOR - операция ИЛИ-НЕ; • XOR - ИСКЛЮЧАЮЩЕЕ ИЛИ (операция сложения по модулю 2); • NOT - логическое отрицание (ЛОГИЧЕСКОЕ НЕ). Number of input ports: [количество входных портов]. Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке ото- бражаются дополнительные окна списков. Require all inputs to have same data type: [все входы должны иметь одинаковый тип данных]. При установке этого параметра все входные сигналы должны иметь одинаковый тип. 167
И. В. Черных. SIMULINK. среда создания инженерных приложений Output data type mode: [выбор типа выходных данных]. Для выбора используется раскрывающийся список. Тип сигнала может быть Boolean (двоичный), logical (логический) или задан с помощью дополнительных окон списков (Specify via dialog). В последнем случае появится окно списка Output data type. Output data type: [тип выходных данных]. Выходным сигналом блока является 1, если результат вычисления логи- ческой операции есть ИСТИНА, и 0, если результат - ЛОЖЬ. Входные сигналы блока могут быть скалярными, векторными или мат- ричными. Если входные сигналы - векторы или матрицы, то блок выполня- ет поэлементную логическую операцию, при этом размерности входных сигналов должны совпадать. Если часть входных сигналов - векторы или матрицы, а другая часть входных сигналов - скаляры, то блок выполняет логическую операцию для скалярных входных сигналов и каждого элемента векторных или матричных сигналов Размерность выходного сигнала в этом случае будет определяться размерностью векторных или матричных вход- ных сигналов. При выполнении логической операции отрицания блок будет иметь лишь один входной порт. Входные сигналы могут быть как действительного, так и логического типа (boolean). Пример: На рис. 2.87 показаны схемы с использованием блока Logical Operation. Блок побитовых логических операций Bitwise Logical Operator Пиктограмма: bitwise > АНО > [*FF FF* Bibvise Logical Operator Назначение. Реализует одну из базовых логических операций по отношению к цело- му числу в двоичном представлении. 168
2. Библиотека блоков SIMULINK Constant! Const a nt6 Constant? Logical Display3 Operators Puc. 2.87 Окно задания параметров: Block Parameters: Bitwise Lo BitvflseOperetor (maskj (Ink] - ------ —~ --------------* • : -i Perform a bitwise operation on unt8, uintl 6 or uint32 input port data with values from the Second operand parameter Hex values can be entered as strings, e.g . T-FOO* Parameters - ------ - Bitwise operator [aND ~ 3 Second operand: OK | Caned I Help 169
И. В. Черных. SIMULINK: среда создания инженерных приложений 2 Библиотека блоков SIMULINK Параметры блока: Bitwise operator: [битовый оператор]. Вид реализуемой логической побитовой операции вы- бирается из списка: • AND - логическое умножение (операция ЛОГИЧЕСКОЕ И); • OR - логическое сложение (операция ЛОГИЧЕСКОЕ ИЛИ); • XOR - ИСКЛЮЧАЮЩЕЕ ИЛИ (операция сложения по модулю 2); • NOT - логическое отрицание (ЛОГИЧЕСКОЕ НЕ); • SH1FT_LEFT - поразрядный сдвиг влево; • SHIFT_RIGHT - поразрядный сдвиг вправо. Second operand: [второй операнд]. Задается шестнадцатеричным числом в символьном виде. Одним из операндов блока Bitwise Logical Operator является сигнал, по- даваемый на вход блока, а вторым - параметр блока Second operand. Входными сигналами блока должны быть беззнаковые переменные типа uint8, uintl6 или uint32. Входной сигнал блока может быть скаляром, вектором или массивом. Если входной сигнал - вектор или массив и второй операнд также вектор или массив, то операция выполняется поэлементно, при этом размерности операндов должны совпадать. Если один из операндов - вектор или массив, а другой операнд - скаляр, то блок выполняет логическую операцию для скалярного операнда и каждого элемента вектора или массива. Размерность выходного сигнала в этом случае будет определяться размерностью вектора или массива. При выполнении логической операции отрицания блок будет иметь лишь один операнд (входной сигнал). Пример: Схемы с использованием блока Bitwise Logical Operator показаны на рис. 2.88. Combinatorial Logic | Блок комбинаторной логики Пиктограмма: Combinatorial Logic Constants Bitwise Displays Logical Operators Bibvise Displays Logical Operators Puc. 2.88 Назначение: Преобразует входные сигналы в соответствии с таблицей истинности. Окно задания параметров: [Block Parameters: Combinatorial Combinatorial Logic -r—y— Look up the elements of the input vector (treated as boolean values) in p the truth table and outputs the corresponding row of the 7 ruth table' i parameter The input side d the truth table is implicit Parameters Truth table, ||00.01.01;1 0.01:1 0.1 0;1 1] ' I [ OK | Caned | Help | | Параметры блока: Truth table: [таблица истинности]. 170 171
И. В. Черных. SIMULINK.: среда создания инженерных приложений Блок Combinatorial Logic обеспечивает преобразование входного сигнала в соответствии с правилами, определяемыми таблицей истинности. Таблица истинности представляет собой список возможных выходных значений блока. Такое описание работы устройств принято в теории конечных авто- матов. Число строк в таблице истинности определяется соотношением number of rows = 2 Л (number of inputs), где number of rows - число строк таблицы истинности; number of inputs - число входных сигналов Входные сигналы при составлении таблицы истинности считаются за- данными. Они определяют индекс (номер) строки, в которой записываются выходные значения блока. Индекс каждой строки определяется выражением row index = 1 + и(т) 2° + и(т -1) • 21 +... + п(1) • 2™"*, где row index — индекс строки; т - количество входных сигналов (элементов во входном векторе); и(т) - последний входной сигнал (последний элемент входного вектора); и(1) - первый входной сигнал (первый элемент входного вектора). Пример: В случае операции ЛОГИЧЕСКОГО И (AND) для двух операндов вы- ражение, определяющее индекс строки, будет выглядеть следующим образом: row index = 1 + и(2) 2° + и(1) 2° . Ниже приведен пример формирования таблицы истинности операции ЛОГИЧЕСКОГО И (AND) для двух операндов (талб. 2.2): Таблица 2.2 Вход 2 Вход 1 Выражение для индекса строки Значение индекса строки Таблица истинности (Выход) 0 0 1 + 0-2°+0-21 I 0 I 0 1+1'2° + 0 21 2 ° 0 1 1+0-2° +1-2* 3 0 1 1 1+1-2° + Г21 4 1 172
2. Библиотека блоков SIMULINK Ла рис. 2.89 показана схема, в которой операция ЛОГИЧЕСКОГО И реа- лизована с помощью блока Combinatorial Logic. Параметр блока Truth table задан выражением [0; 0; 0; 1]. Рис. 2.89 Algebraic Constraint Блок решения нелинейных уравнений Пиктограмма: , ... So Ive т Algebraic Constraint Назначение: Решение нелинейных алгебраических и матричных уравнений. Блок находит такое значение выходного сигнала, при котором значение входного сигнала становится равным нулю. При этом входной сигнал дол- жен быть прямо или опосредованно связан с выходным сигналом. Целесо- образно задать начальное приближение, чтобы повысить эффективность решателя. Окно задания параметров: Block Parameters:< Algebraic Constrartt (mask) (Ink) Constfans irpU signal f(z) to zero and outputs ai algebraic stale z. Ths block outputs the value necessary to produce a zero al the nput. The output must affect the input though some feedback рейх Provide an initial guess of the output to improve algebraic loop solver efficiency. Parameters ----------------- • ----------- Initial guess: ! 1°.......... । i I OK | Cancel j Help | | Параметры блока: Initial guess: [начальное значение выходного сигнала]. 173
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример 1: На рис. 2.90 показана схема, в которой реализуется решение системы нелинейных алгебраических уравнений х1 + у1 = 6, л + у = 2. Поскольку данная система уравнений имеет два решения, то начальные значения блоков Algebraic Constraint заданы в виде векторов. Для первого (верхнего) блока начальное значение задано вектором [1 -I], а для второго (нижнего) блока - вектором [-1 1 ]. Рис. 2.90 Пример 2: Блок Algebraic Constraint можно использовать также и для решения нелинейных матричных уравнений. На рис. 2.91 показана схема модели для решения нелинейного матричного уравнения. 13 Х2+2Х+1= 4 4 4 9 -3 4 -3 57 Assignment | Блок присваивания элементам массива новых значений Пиктограмма: >1U1 Y > U2 -> ¥(Е) Assignment 174
2. Библиотека блоков SIMULINK Display Constant ХЛ3+ЗХ+1-М Рис. 2.91 Назначение: Присваивает указанным элементам вектора или матрицы новые значения. Окно задания параметров: Параметры блока: Список параметров блока изменяется в зависимости от типа входного сигнала. 175
И. В. Черных. SIMULINK: среда создания инженерных приложений Input Туре. [тип входного сигнала]. Выбирается из списка: • vector - вектор; • matnx - матрица. Source of element indices: [источник индексов элементов вектора]. Выбирается из списка: • internal - внутренний. Индексы выбираемых элементов вектора задаются параметром Elements. • external - внешний. Индексы элементов вектора задаются с помощью внешнего входного сигнала • Elements - список индексов элементов входною вектора, передаваемых на выход блока. Задается в виде вектора. Значение параметра -1 (минус единица) предписывает выбор всех элементов вектора. Source of row indices: [источник индексов строк элементов матрицы]. Rows; [список индексов строк матрицы]. Параметр доступен, если выбран внут- ренний источник индексов строк матрицы. Source of column indices: [источник индексов столбцов элементов матрицы]. Columns; [список индексов столбцов матрицы]. Параметр доступен, если выбран внутренний источник индексов столбцов матрицы. Блок выполняет замену отдельных элементов первого входного массива на элементы второго входного массива в соответствии со списком индексов. Список индексов может задаваться как параметр блока или подаваться на дополнительный вход блока Внешний вид блока изменяется в зависимости от установленных пара- метров блока. При выборе внешних источников индексов элементов на изо- бражении блока появляются дополнительные входы, обозначенные сле- дующими символами: • Е - вход сигнала, задающего индексы выбираемых элементов вектора; • R - вход сигнала, задающего индексы строк матрицы, • С - вход сигнала, задающего индексы столбцов матрицы. Пример: На рис 2.92 приведены схемы с использованием блока Assignment для различных вариантов настройки блока. 176
2. Библиотека блоков SIMULINK Constants Matrix Concatenation Рис. 2.92 Блок объединения сигналов в матрицу Пиктограмма: Horiz Cat Matrix Concatenation Назначение: Блок выполняет объединение (конкатенацию) входных векторов или матриц. Окно задания параметров: Block Parameters: Май гм с -нпс Ж,- Matrix Concatenation (mask) (link)- Perform horizontal or vertical concatenation 1-D vector input signals are treated as cotumn vectors, i.e., (Mx1 ] matrices The output is always a matrix. Parameters Number of inputs. Concatenation method [Horizontal | OK | Cancel | Help 177
И. В Черных. SIMULINK.: среда создания инженерных приложений Параметры блока: Number of inputs: [количество входов]. Concatenation method: [способ объединения]. Выбирается из списка: • Horizontal - горизонтальный. Массивы объединяются добавлением новых массивов справа. • Vertical - вертикальный. Массивы объединяются добавлением новых массивов снизу. Пример: Схемы с использованием блока Matrix Concatenation приведены на рис. 2.93. Display^ Рис. 2 93 Reshape J Преобразователь размерности сигнала Пиктограмма: > ис: ) > Reshape Назначение: Блок изменяет размерность векторного или матричного сигнала. 178
2. Библиотека блоков SIMULINK Окно /афания параметров: Strict PniEme’Fis: RBStinre Reshape (mask) (ink) ---- Change the dimensions d a vector or matfix input signal. Output a one-dimensional array (vector), - a column vector (Mx1 matrix), - a row vector (1 xN matrix), or - a matrix or vector wth specified dmensions, e.g, [M, Parameters Output dimensional [customize Output dimensions: [nn I OK I Cancel | Н» | Ws | Параметры блока: Output dimensionality: [вид размерности выходного сигнала]. Выбирается из списка: • 1 -D array - одномерный массив (вектор). • Column vector-вектор-столбец. • Row vector - вектор-строка. • Customize - матрица или вектор заданной размерности. Для векторного выходного сигнала параметр задается как скаляр, определяющий число элементов выходного вектора. Для матричного выходного сигнала пара- метр задается как вектор, определяющий количество строк и столбцов выходной матрицы. Значение параметра должно соответствовать коли- честву элементов во входном массиве. В случае матричных сигналов данные выбираются из столбцов входной матрицы и последовательно заносятся в столбцы выходной матрицы. Output dimensions: [размерность выходного сигнала]. Параметр доступен, если вид размерно- сти установлен как Customize. Пример: Схемы, иллюстрирующие работу блока Reshape, показаны на рис. 2.94. 179
И В. Черных. SIMULINK: среда создания инженерных приложений Display Output dimension: [3 2] DisplayZ Displays Output dimension: (3 2] Puc. 2.94 Polynomial [ Вычисления полинома Пиктограмма: Polynomial Назначение: Реализует нелинейную зависимость, задаваемую степенным многочленом. Окно задания параметров: Block Parameters: Polynomial Polyvai (mask) (link) - ™~ -г——г— - ——-~j Polynomial evaluation. Calculates P[u) given by the polynomial coefficient array P. P is sorted highest order to lowest order, the form accepted by MATLAB’s polyval function. Parameters- ------------— ------ Polynomial coefficients: | I 010. -8 536863453^-006. .1.621573104e-001. -8087801117е<Ю1 ] | | | OK | Cancel | Не» | tcp. | I 180
2 Библиотека блоков SIMULINK Параметры блока: polynomial coefficients: [вектор коэффициентов полинома]. Коэффициенты должны располагаться в векторе по убыванию степени независимой переменной. Например, для полинома х2+2х+5 необходимо задать вектор коэффициентов [1 2 5]. Коэффициенты должны быть действительного типа. Блок вычисляет значение полинома по его коэффициентам и величине входного сигнала. Если входной сигнал вектор или матрица, блок вычисля- ет результат для каждого элемента массива. Пример. На рис. 2.95 показаны схемы моделей с блоком Polynomial. Для первого полиномиального блока коэффициенты многочлена заданы вектором [1 2 5], а для второго - [ 1 2 0 5]. Dispiayl Рис. 2.95 2.7. Signal&Routing - блоки маршрутизации сигналов Мих Мультиплексор Пиктограмма: М их Назначение: Объединяет входные сигналы в вектор. 181
И. В. Черных. SIMULINK. среда создания инженерных приложений Окно задания параметров. Block Parameters; Mux Mux MuWptex scater. vector, or matrix signals Ho a bus Parameters Number df inputs: |2 Oreplay option bat | OK | Cancel | He»> Параметры блока: Number of Inputs: [количество входов]. Display option: [способ отображения]. Выбирается из списка: • bar - вертикальный узкий прямоугольник черного цвета; • signals - прямоугольник с белым фоном и отображением меток входных сигналов; • попе - прямоугольник с белым фоном без отображения меток входных сигналов. Входные сигналы блока могут быть скалярными и (или) векторными. Если среди входных сигналов есть векторы, то количество входов можно задавать как вектор с указанием числа элементов каждого вектора. Напри- мер, выражение [2 3 1] определяет 3 входных сигнала: первый сигнал - век- тор из двух элементов, второй сигнал - вектор из трех элементов и послед- ний сигнал - скаляр. В том случае, если размерность входного вектора не совпадает с указанной в параметре Number of Inputs, то после начала рас- чета Simulink выдаст сообщение об ошибке. Размерность входного вектора можно задавать как -1 (минус единица). В этом случае размерность входно- го вектора может быть любой. Параметр Number of Inputs можно задавать также в виде списка меток сигналов, например: Vectorl,Vector2, Scalar. В этом случае метки сигналов будут отображаться рядом с соответствующими соединительными линиями. Сигналы, подаваемые на входы блока, должны быть одного типа (дейст- вительного или комплексного). 182
2 Библиотека блоков SIMULINK Пример: Схемы с использованием блока Мих показаны на рис. 2.96. Рис. 2.96 Demux | Демультиплексор Пиктограмма: I Demux Назначение: Разделяет входной векторный сигнал на отдельные составляющие. Окно задания параметров: Block Parameters: Detnux Demux.......—................-.... -• — -•*- — Split either (a) vector signals into scalars or smaler vectors, or (b) bus signals produced by the Mux block into their constituenl scalar, vector, or matrix signals. Check 'Bus Selection Mode’ to split bus signals. Parameters Number of outputs: F J Display option: |no,«, Vj Г* Bus selection mode J! Ok | Cancel| Help | Apply | 183
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Number of Outputs: [количество выходов]. Display option; [способ отображения]. Выбирается из списка: • bar - вертикальный узкий прямоугольник черного цвета; • попе — прямоугольник с белым фоном без отображения меток входных сигналов. Bus Selection Mode: [режим разделения векторных сигналов в шине]. Используется для разделе- ния сигналов, объединенных в шину. Входным ст налами в обычном режиме является вектор, сформирован- ный любым способом. Выходными сигналами являются скаляры или векто- ры, количество которых и размерность определяется параметром Number of Outputs и размерностью входного вектора. Если количество выходов Р (значение параметра Number of Outputs) рав- но размерности входного сигнала N, то блок выполняет разделение входно- го вектора на отдельные элементы. Если количество выходов Р меньше, чем размерность входного сигнала N, то размерность первых Р-1 выходных сигналов равна отношению N/P, округленному до ближайшего большего числа, а размерность послед- него выходного сигнала равна разности между размерностью входного сиг- нала и суммой размерностей первых Р-1 выходов. Например, если размер- ность входного сигнала равна 8, а количество выходов равно 3, то первые два выходных вектора будут иметь размерность ceil(8/3) = 3, а последний выходной вектор будет иметь размерность 8 - (3+3) = 2. Параметр Number of Outputs может быть задан также с помощью векто- ра, определяющего размерность каждого выходного сигнала. Например, выражение [2 3 1] определяет 3 выходных сигнала: первый сигнал - вектор из двух элементов, второй сигнал - вектор из трех элементов и последний сигнал - скаляр. Размерность можно также задавать как -1 (минус единица). В этом случае размерность соответствующего выходного сигнала определя- ется как разность между размерностью входного вектора и суммой размерностей заданных выходных сигналов. Например, если размерность входного вектора равна 6, а параметр Number of Outputs задан выражением [1 -1 3], то второй выходной сигнал будет иметь размерность 6 - (3+1) = 2. 184
2. Библиотека блоков SIMULINK Пример 1; Схемы использования блока Demux в обычном режиме показаны на рис. 2.97. Displays Display? Display? Рис. 2.97 Display! О Пример 2: В режиме Bus Selection Mode блок Demux работает не с отдельными элементами векторов, а с векторными сигналами в целом. Входной сигнал в этом режиме должен быть сформирован блоком Мих или другим блоком Demux. Параметр Number of Outputs в этом случае задается в виде скаляра, определяющего количество выходных сигналов, либо в виде вектора, каж- дый элемент которого определяет количество векторных сигналов в данном выходном сигнале. Например, при входном сигнале, состоящем из трех век- торов, параметр Number of Outputs, заданный вектором [2 1 ], определит два выходных сигнала, первый из которых будет содержать два векторных сиг- нала, а второй - один. Схемы использования блока Demux в режиме Bus Selection Mode пока- заны на рис. 2.98. 185
И. В. Черных. SIMULINK: среда создания инженерных приложений 2. Библиозека блоков SIMULINK Display3 Окно задания параметров: Block Parameters Ии. JQL*1 I Рис. 2.98 “Bus Creator Used to group signals into a single bus signal for graphical modeling convenience. IndMdual signals within the bus can be extracted using the Bus Selector block Hieracfy can be defined in the bus signal by cascading Bus Creator blocks OK_____| Cancel | Help j Apply j ~...................................... . ;j Bus Creator Шинный формирователь Пиктограмма: Bus Creator Назначение: Формирует шину из сигналов различных типов. Параметры блока: Parameters: [параметры]. Способ именования сигнала. Выбирается из списка: • Inherit bus signal names from input ports - наследовать имена входных сигналов; • Require input signal names to match signals below - ввести имена сигналов. Number of inputs ports: [количество входных портов]. Signals in bus: [список сигналов, объединяемых в шину]. Rename selected signal: [новое имя выделенного сигнала]. Параметр доступен, если выбрана опция Require input signal names to match signals below. Блок позволяет объединять любые сигналы (векторные, матричные, комплексные, действительные и целые разных типов) в единую шину. Такая шина позволяет сократить количество соединительных линий в модели. Для разделения шины на отдельные составляющие необходимо использовать блок Bus Selector. 186 187
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно параметров блока позволяет отыскать блок, который является ис- точником сигнала. Для такого поиска необходимо выделить название сиг- нала в списке Signals in bus и нажать с помощью мыши кнопку Find. Блок, являющийся источником выбранного сигнала, будет выделен цветом. Пример: На рис. 2.99 показана схема, в которой формирование шины выполняет- ся с помощью блока Bus Creator, а также приведено окно параметров этого блока. Там же показан выделенный цветом источник сигнала signal 2 - блок Constants, найденный с помощью изложенной выше процедуры. > Block Parameters. Bus О г i г ~Bu$ Crealoi ; Used to group signals into a single bus signal for graphical modeling convenience. Individual signals within the bus can be extracted using the Bus Selector block. Hierachy can be defined in the bus signal by cascading Bus Creator blocks. OK | Cancel | Help | Apply | Puc. 2.99 Шинный селектор Bus Selector Пиктограмма: Bus Selector Назначение: Выделяет из шины требуемые сигналы. 188
2 Библиотека блоков SIMULINK Окно задания параметрон: > Block Parameters: Bus Selector Виз Selector_________________________________________________________________________________________________________ This block accepts input from a Mux ст Bus Selector block. The left listbox shows the signals r the tnpui bus Use the Select button to select the output signals The right listbox shows the selections Use the Up, Down, or Remove button to reorder the selections Check ’Muxed output* to muliplex the output Параметры блока Signals in the bus. [имеющиеся в шине сигналы]. Входные сигналы. Selected signals: [выделенные сигналы]. Выходные сигналы. Muxed output: [смешанный выход]. Объединение всех выходных сигналов в один. Шина может быть сформирована блоком Мих или Bus Cieator. Для извлечения сигнала из шины необходимо открыть окно параметров блока, выделить сигнал в окне Signals in the bus и с помощью кнопки Select скопировать имя сигнала в окно Selected signals. Для удаления сигнала из списка Selected signals необходимо выделить его имя в правом списке ок- на параметров блока и затем воспользоваться кнопкой Remove. С помощью кнопок Up и Down можно изменить порядок расположения сигналов в шине, перемещая их в окне Selected signals вверх или вниз соот- ветственно. Установка параметра Muxed output позволяет объединить сигналы в шину. Пример: На рис. 2.100 показаны схемы с использованием блока Bus Selector и ок- но его параметров. 189
И. В. Черных. SIMULINK. среда создания инженерных приложений £«i«cto< Display? Рис. 2.100 Selector | Селектор Пиктограмма: Selector Block Parameters: Selector Назначение: Выбирает из вектора или матрицы требуемые элементы. Окно задания параметров: *1 Selector Select or reader the specified elements of an input vector ex matrix. y>44eiements) if input is a vector. y>u|rowsxoiurnn$) if input is a matrix The elements (Ej. rows (R), and columns (C) may be specified either in the block's dialog a though an external input port. Parameters - --------------~----------- Input Type. [Vector "3 Source of element indices: [internal ......3 Elements (-1 lor al elements): In3i_____ _____________ j Input port width: [з OK | Cancel | H<*> | | 190
2. Библиотека блоков SIMULINK Список параметров блока изменяется в зависимости от типа входного сигнала. Параметры блока: Input Туре: [тип входного сигнала]. Выбирается из списка: • vector - вектор; • matrix - матрица Source of element indices: [источник индексов элементов вектора]. Выбирается из списка: • internal - внутренний. Индексы выбираемых элементов вектора задаются параметром Elements. • external - внешний. Индексы элементов вектора задаются с помощью внешнего входного сигнала. Elements: [список индексов элементов входного вектора]. Задается в виде вектора. Значение параметра -1 (минус единица) предписывает выбор всех элемен- тов вектора. Input port width: [размерность входного вектора]. Source of row indices: [источник индексов строк элементов матрицы]. Rows: [список индексов строк матрицы]. Source of column indices: [источник индексов столбцов элементов матрицы]. Columns: [список индексов столбцов матрицы]. Внешний вид блока изменяется в зависимости от установленных пара- метров блока. При выборе внешних источников индексов элементов на изо- бражении блока появляются дополнительные входы, обозначенные сле- дующими символами: • Е - вход сигнала, задающего индексы выбираемых элементов вектора; • R - вход сигнала, задающего индексы строк матрицы; • С - вход сигнала, задающего индексы столбцов матрицы 191
И. В. Черных. SIMULINK: среда создания инженерных приложений Блок выбирает во входном векторе пли матрице и передает на выход только те сигналы, которые определены в параметрах блока или заданы внешним входным сигналом. Пример: На рис 2 101 приведены схемы с использованием блока Selector для раз- личных вариантов настройки блока. Constants [1.3 3 -1.4 21 -33 100 15 20 45 Display? Constantl Constants Merge Selector! Constants Puc. 2.101 Формирователь векторного сигнала Пиктограмма: Merge - Merge Назначение: Блок выполняет объединение входных сигналов в единый векторный сигнал 192
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters: Mer^e Merge —*-• ---------'----—---------т Merge the input signals into a single output signal whose initial value is specified by the Initial output’ parameter. II Initial output' is empty, the Merge block outputs the initial output of one of its driving blocks. Parameters • Number of inputs: ‘1 I I Iruhal output F? Allow unequal port widths Input port offsets. ... OK.....| ' Cancel J Help J Apply | Параметры блока: Number of inputs: [количество входов]. Initial output: [начальное значение выходного сигнала]. Если этот параметр не задан, то на выход блока проходит сигнал, значение которого было вычислено по- следним. Allow unequal port widths: [разрешить неодинаковую размерность входных портов]. Input port offsets: [смещение входного сигнала]. Задается в виде вектора, каждое значение ко- торого определяет расположение соответствующего сигнала в выходном векторе. Блок передаст на выход значение сигнала, вычисленное последним. С помощью параметра Input port offsets можно регулировать расположе- ние входных сигналов в результирующем векторе. Размерность выходного сигнала определяется в соответствии с выраже- нием max(w( +ор w2 + о2,..., wn + о„) > где w*.~ размерность k-го входного сигнала; о* - смещение к-го входного сигнала. 193
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример 1: На рис. 2.102 приведена схема с использованием блока Merge для объ- единения двух векторов. Параметр Input port offsets в примере задан векто- ром [0 3]. Display Рис. 2.102 Пример 2: Данная схема (рис. 2.103) демонстрирует свойство блока пропускать на выход сигнал, который был вычислен последним. В примере использова- ны блоки управляемых подсистем Enabled Subsystem, которые выполняют вычисления только в том случае, если на управляющий вход подсистемы подан ненулевой сигнал. В данном примере подсистема не выполняет ка- кие-либо вычисления, а лишь пропускает сигнал со своего входа на выход. Таким образом, на выход блока Merge поочередно проходят гармонический либо пилообразный сигнал. jgjxj a a ppp, ase e s w Signal Enabled Generator Subsystem Stne Wave Enabled Subsystem 1 Типе offset 0 Puc. 2.103 194
2. Библиотека блоков SIMULINK Goto | Блок передачи сигнала Пиктограмма: Goto Назначение: Блок выполняет передачу сигнала к блоку From. Использование блока совместно с блоком From обеспечивает передачу сигнала без линии связи. Окно задания параметров: > Block Parameters Got» Goto Send signals to From btocks that have the specified tag. If tag wsbflity к ‘scoped*, then a Goto Tag Visibiity block must be used to define the visbity of the tag The Mock icon displays the selected tag name (local tags are enclosed in brackets. (J, and scoped tag names are enclosed in braces. {}) Parameters Ta»___________________________________________________________ [a T og visibly: | local 3 Corresponding From Hocks: I 6 kГ | Caned | Help | | Параметры блока: Tag: [идентификатор сигнала]. Tag visibility: [признак видимости]. Выбирается из списка: • local - сигнал передается в пределах локальной подсистемы, • scoped - сигнал передается в пределах локальной подсистемы и в под- системах нижнего уровня иерархии; • global - сигнал передается в пределах всей модели. 195
И. В. Черных. SIMULINK: среда создания инженерных приложений Corresponding From blocks: [список блоков From, принимающих сигнал]. Для передачи могут использоваться сигналы любого типа. В зависимо- сти от выбранного параметра Tag visibility изменяется внешний вид блока Идентификатор сигнала помещается в квадратные скобки, если признак видимости имеет значение local, например [А], где А - идентификатор сиг- нала. Идентификатор сигнала помещается в фигурные скобки, если признак видимости имеет значение scoped, например {А}. Идентификатор сигнала отображается на пиктограмме блока без допол- нительных символов, если признак видимости имеет значение global. Пример: На рис. 2.104 показан "беспроводной" способ передачи сигнала от ис- точника синусоидального сигнала к блоку Scope в подсистему. о, а н & । е i EX_Goto_l/Sub; jsjxj File Edit View Simulation Format Tools Help Subtyrttm 11100% Puc. 2.104 From Блок приема сигнала Пиктограмма: [Al From Назначение: Блок выполняет прием сигнала от блока Goto. Использование блока со- вместно с блоком Goto обеспечивает прием сигнала без линии связи. 196
2. Библиотека блоков SIMULINK Окно задания параметров Block Parameters: From J5|x| From Receive signals from the Goto block with the specified tag If the tag i defined as scoped' in the Goto block, then a Goto Tag Visibily block must be used to define the visibility rf the lag After Update Diagram', the block icon dismays the selected tag name (local tags are enclosed in brackets. [], and scoped tag names are enclosed m braces. {}]. Parameters Goto tag | A Select tag »| Goto source' untitled!/Goto i OK j Cancel | Help | Параметры блока Goto tag: [идентификатор принимаемого сигнала]. Должен совпадать с идентифика- тором, указанным в соответствующем блоке Goto. С помощью кнопки Select tag (Выбрать идентификатор) пользователь может выбрать сигнал от требуемого блока Goto. Признак видимости сигнала отображается на пиктограмме блока таким же способом, что и у блока Goto. В модели может быть сколь угодно много блоков From, принимающих сигнал от одного блока Goto. Пример: На рис. 2.105 показана схема передачи сигналов в модели с помощью блоков From. На схеме один блок Goto передает сигнал трем блокам From (двум в основной модели и одному в подсистеме). 197
И. В. Черных. SIMULINK: среда создания инженерных приложений Рис. 2.105 Goto Tag Visibility | Блок признака видимости сигнал* Пиктограмма: {А} Goto Тлд Visibility Назначение: Блок отображает признак видимости сигнала, передаваемого блокМ Goto. Окно задания параметров: 198
2 Библиотека блоков SIMULINK Параметры блока: Goto tag: [идентификатор сигнала, передаваемого блоком Goto]. Блок необходимо включать в состав модели или подсистемы в том слу- чае, если для передаваемых сигналов задана область видимости scoped. Блок помещается в те подсистемы, на которые распространяется область видимости передаваемых данных. Блок не участвует в передаче сигнала, а лишь отображает имя передаваемого сигнала. Пример: Схема с использованием блока показана на рис. 2.106. (А} Goto Tig Visibility Рис. 2.106 Data Store Memory Блок создания общей области памяти Пиктограмма: А Data Store Memory Назначение: Блок создает именованную область памяти для хранения данных. 199
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметрон: -) Block Parameters. Date St яы Data Store Memory Define a memory region for use by the Data Store Read and Data Store W irte blocks АЯ Read and Write Mocks that are in the cut rent (subitem level or below and have the same data stere name wi be able to read from or write to this block. Parameters Data store name: [_____________---------------------------- Data store wrftejW) and iead(R) btocks: rntitledWata Store Writ d Initial value: Параметры блока: Data store name: [имя области памяти]. Data store write(W) and read(R) blocks: [список блоков Data Store Write и Data Store Read]. Список отображает бло- ки Data Store Wr ite и Data Store Read, работающие с данной областью памяти. Initial value: [начальное значение]. Interpret vector parameters as 1-D: [интерпретировать вектор параметров данных как одномерный вектор]. Параметры RTW storage class и RTW type qualifier задаются при созда- нии исполняемого кода с помощью инструмента Real-Time Workshop. Блок используется совместно с блоками Data Store Write (Запись дан- ных) и Data Store Read (Считывание данных). 200 *
2. Библиотека блоков SIMULINK Параметр Initial value задает не только начальное значение сигнала, но и его размерность. Например, если начальное значение сигнала задано матрицей [0 1; 2 3], то сохраняемый сигнал должен быть матрицей 2x2 Если блок Data Store Memory расположен в модели верхнего уровня, ю заданную им область памяти можно использовать как в самой модели, так и во всех подсистемах нижнего уровня иерархии. Если блок Data Store Memory расположен в подсистеме, то заданную им область памяти можно использовать в данной подсистеме и всех подсистемах нижнего уровня иерархии. Блок работает с действительными сигналами типа double. Пример: Схема с использованием блока Data Store Memory совместно с блоками Data Store Write и Data Store Read показана на рис. 2.107. Блок записи в именованную область памяти Data Store Write | Пиктограмма: > А Data Store Write 201
И. В. Черных. SIMULINK: среда создания инженерных приложений Назначение: Блок записывает данные в поименованную область памяти. Окно задания параметров: > Black Parameters. Data Store Write Write values to specified data store. Pacameteis Data stwe name: |a Select data stoie name »| Data store memay block. Data store lead blocks. --------------------------------------3 d Sample tune: ! OK | Cancel | Help | 11 Параметры блока: Data store name: [имя области памяти]. Data store memory block: [имя блока Data store memory]. Имя блока Data store memory, создавшего данную область памяти. Data store read blocks: [список блоков Data store read]. Список блоков, считывающих значения из данной области памяти. Sample time: [такт дискретности]. С помощью кнопки Select data store name пользователь может выбрать одну из нескольких существующих в модели областей памяти. Операция записи выполняется для значения сигнала, полученного на предыдущем шаге расчета. В модели могут использоваться несколько блоков Data Store Write, выполняющих запись в одну область памяти. Однако 202
2. Библиотека блоков SIMULINK если запись производится на одном и том же шаге расчета, то результат бу- дет непредсказуем. Пример: Схема с использованием блока Data Store Write совместно с блоками Data Store Memory и Data Store Read показана на рис. 2.107. Data Store Read Блок считывании из именованной области памяти Пиктограмма: А > Data Store Read Назначение. Блок считывает данные из поименованной области памяти Окно задания параметров: > Block Parameters: D' tr Ctoi Data Stole Read Read values from specified data store. Parameters Data store name: |a ~ Select data store name» Data store memory block: unt'rtledlTData Store Memory Data store write blocks: untitledl/Data Store Write I i d I Sample time: 1° 1 OK | Cancel | Help | | Параметры блока: Data store name. [имя области памяти]. 203
И. В. Черных. SIMULINK: среда созданий инженерных приложений Data store memory block: [имя блока Data store memory]. Имя блока Data store memory, создавшего данную область памяти. Data store write blocks: [список блоков Data store write]. Список блоков, записывающих значения в данную область памяти. Sample time: [такт дискретности]. С помощью кнопки Select data store name пользователь может выбрать одну из нескольких существующих в модели областей памяти. Операция считывания выполняется на каждом шаге расчета. В модели могут использоваться несколько блоков Data Store Read, вы- полняющих считывание данных из одной и той же области памяти. Пример: Схема с использованием блока Data Store Read совместно с блоками Data Store Memory и Data Store Write показана на рис. 2.107. В схеме использует- ся триггерная подсистема, выполняющая вычисления по переднему фронту управляющего сигнала. Таким образом, запись значений в общую область памяти происходит только в моменты изменения управляющего сигнала в положительном направлении. В остальные моменты времени значения данных в области памяти не изменяются. Switch Переключатель Пиктограмма: Switch Назначение: Выполняет переключение входных сигналов по сигналу управления. 204
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters: Switch Switch Pass through input 1 when input 2 satisfies (he selected criterion; otherwise, pass through input 3. The inputs are numbered lop to bottom [or left to right) The input 1 pass-through criteria are input 2 greater than or equal, greater than, or not equal to the threshhoH. The first and third input ports are data ports, and the second input port is the control port Parameters Criteria for passing fust input [i^ >-Threshold 3 Threshold: I® '• P V—— Show addtional parameters Г Require all data port inputs to have same data type 0utp<4 data type mode: [inherit via rtemai rule 2 Round integer calcdations toward; J Floc* P Saturate on integer overflow i P Enable zero crossing detection I OK ] Cancel [ Help [ Apply | Параметры блока: Criteria for passing first input: [условие прохождения сигнала через первый вход]. Значение параметра вы- бирается из списка: • u2>= Threshold - входной сигнал больше или равен пороговому значению; • u2> Threshold - входной сигнал больше порогового значения; • u2~= Threshold - входной сигнал не равен пороговому значению. Threshold: [порог]. Show additional parameters: [показать дополнительные параметры]. При выстановленном флажке ото- бражаются дополнительные окна списков. 205
И. В. Черных. SIMULINK: среда создания инженерных приложений Require all inputs to have same data type: [все входы должны иметь одинаковый тип данных]. При установке этого параметра все входные сигналы должны иметь одинаковый тип. Output data type mode: [выбор типа выходных данных]. Значение параметра выбирается из списка: • Inherited via back propagation - тип выходного сигнала наследуется от блока назначения; • Inherited via internal rule - тип выходных данных выбирается в соответ- ствии с внутренними правилами данного блока, а именно тип данных определяется типом данных входного сигнала, имеющего наибольшее значение. Round integer calculations toward: [способ округления]. Параметр устанавливает способ округления. Значение параметра выбирается из списка: • Zero - округление отсутствует; • Near est - ближайшее целое; • Floor - ближайшее меньшее целое; • Ceiling - ближайшее большее целое. Saturate on integer overflow: [подавлять переполнение целого]. При установленном флажке ограничение сигналов целого типа выполняется корректно. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Блок работает следующим образом. Если значение сигнала управления, подаваемого на средний вход, удовлетворяет выбранному условию, то на выход блока проходит сигнал с первого (верхнего) входа. В противном случае на выход блока будет поступать сигнал со второго (нижнего) входа. 206
2. Библиотека блоков SIMULINK Пример:, На рис. 2.108 показана схема работы блока Switch. Пороговое значение управляющего сигнала задано равным 0.5. В том случае, когда сигнал на управляющем входе ключа равен единице, на выход блока проходит гар- монический сигнал, если же управляющий сигнал равен нулю, то на выход проходит сигнал нулевого уровня от блока Ground. Pulse Generator Scope 0 1 2 3 4 5 6 T me offset. 0 Puc. 2.108 Multiport Switch Многовходовый переключатель Пиктограмма: Multiport Switch Назначение: Выполняет переключение входных сигналов по сигналу управления, задающему номер активного входного порта. 207
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Mufti-Port Switch *“----—-----------"------—-г-~~—- ; Pass though the input signals corresponding to the truncated va!ue of the first input. The inputs are numbered top to bottom (or left to right). The first input port e the control port. The other input ports are data ports. Parameters ' Number of inputs: I . ,________________________ ——--------------- Iv j——•— Show additional parameters — — < Г Use zero-based indexing Г” Requite aH data port inputs to have same data type Output data type mode: [inherit via internal rule v] Round integer calculations towaid. [floor vj p Saturate on integer overflow OK | Cancel | Help | Apply | Параметры б чока: Number of inputs: [количество входов]. Show additional parameters: [показать дополнительные параметры]. При установленном флажке в окне параметров отображаются дополнительные графы. Use zero based indexing: [использовать индексацию, начинающуюся с нуля]. При установленном па- раметре нумерация входных портов начинается с нуля, в противном слу- чае - с единицы. Require all inputs to have same data type: [все входы должны иметь одинаковый тип данных]. При установке этого параметра все входные сигналы должны иметь одинаковый тип. Output data type mode: [выбор типа выходных данных]. Значение параметра выбирается из списка: • Inherited via back propagation- тип выходного сигнала наследуется от блока назначения, • Inherited via internal rule - тип выходных данных выбирается в соответствии с внутренними правилами данного блока, а именно тип данных определяет- ся типом данных входного сигнала, имеющего наибольшее значение. 208
2. Библиотека блоков SIMULINK Round integei calculations toward [способ округления]. Параметр устанавливает способ окру! ления. Значение параметра выбирается из списка • Zero - округление отсутствует; . Nearest - ближайшее целое; • Floor - ближайшее меньшее целое; • Ceiling - ближайшее большее целое. Saturate on integer overflow: [подавлять переполнение целого]. При установленном флажке ограничение сигналов целого типа выполняется корректно. Блок многовходового переключателя Multiport Switch пропускает на выход сигнал с того входного порта, номер которого равен текущему значению управляющего сигнала. Если управляющий сигнал не является сигналом целого типа, го блок Multiport Switch производит округление зна- чения в соответствии со способом, выбранным в графе Round integer calcula- tions toward. Пример 1: На рис 2.109 показана схема с блоком Multiport Switch. Управляющий сигнал переключателя имеет 3 уровня и формируется с помощью блоков Constant, Step, Stcpl и Sum. На выход блока Multiport Switch, в зависимости от уровня входного сигнала, проходят гармонические сигналы, имеющие разные частоты. 209
И. В. Черных. SIMULINK: среда создания инженерных приложений 2. Библиотека блоков SIMULINK Пример 2: Количество входов блока Multiport Switch можно задать равным единице. В этом случае на вход блока необходимо подать векторный сигнал, а сам блок будет пропускать на выход тот элемент вектора, номер которого совпадает с уровнем управляющего сигнала. На рис. 2.110 показана схема с использованием блока Multiport Switch при векторном входном сигнале. Временные диаграммы работы для данного примера совпадают с рассмотренными в предыдущем примере (рис. 2.109). Командой на переключение является двойной щелчок левой клавишей мыши на изображении блока. При этом изображение блока изменяется, по- казывая, какой входной сигнал в данный момент проходит на выход блока. Переключение блока можно выполнять как до начала моделирования, так и в процессе расчета. Пример: На рис. 2.111 показана схема с использованием блока Manual Switch. Рис. 2.110 Ручной переключатель Пиктограмма: Ground Puc. 2.1 II 2.8. Signal Attributes - блоки определения свойств сигналов Data Type Conversion Пиктограмма: auto Преобразователь типа сигнала Data Type Conversion Назначение: Блок преобразует тип входного сигнала. Окно задания параметров: Manual Switch Назначение: Выполняет переключение входных сигналов по команде пользователя. Окно задания параметров: Нет. Параметры блока: Нет. Block Parameters: DataT; Data Type Conversion Convert input signal to specified data type Parameters Datatype. |^ut0 Г7 Saturate on integer overflow I ОК Нй> | 3' 210 211
И. В. Черных. SIMULINK.: среда создания инженерных приложений Параметры блока: Data lype: [тип данных выходного сигнала]. Может принимать значения из списка: auto, double, single, int8, int!6, inl32, uint8, uintl6, uint32 и boolean. Saturate on integer overflow; [подавлять переполнение целого]. При установленном флажке ограничение сигналов целого типа выполняется корректно. Значение auto параметра Data lype используется в том случае, если необ- ходимо установить тип данных такой же, как у входного порта блока, полу- чающего сигнал от данного блока. Входной сигнал блока может быть действительным или комплексным. В случае комплексного входного сигнала выходной сигнал также будет комплексным. Блок работает со скалярными, векторными и матричными сигналами. Пример: На рис. 2.112 показаны схемы, использующие блок Data Type Conversion. Constant D'b Type Conversion Display Puc. 2.112 Width Блок определения размера сигнала Пиктограмма: Width Назначение: Вычисляет длину (количество элементов) входного сиг нала. 212
2. библиотека блоков SIMULINK Окно задания параметров: Block Parameters: W> Width — ------- - ----------- Output the width of the input signal, using the specified output data type. Parameteis------------------------------ - & -----------Show additional parameters----------- Output data type. |choose intrinsic data type j Ottpji data type: | double |Г, . У Cancel | Help | j Параметры блока: Show additional parameters: [показать дополнительные параметры] При установленном флажке в окне параметров отображаются дополнительные графы. Output data type mode: [выбор типа выходных данных]. Значение параметра выбирается из списка: • Choose intrinsic data type - выбрать встроенный тип данных; • Inherited via back propagation - тип выходного сигнала наследуется от блока назначения; • AU ports the same data type - все порты имеют одинаковый тип данных. Входным сигналом блока может быть действительный или комплексный сигнал любого типа. Пример: Схемы с использованием блока Width показаны на рис. 2.113. Constant Width Display [::] —И1 ' 41 Constant! Width! Display! Constant? Width? Display? Puc. 2.113 213
И. В. Черных. SIMULINK: среда создания инженерных приложений IC j Блок установки начального значения Пиктограмма: IC Назначение• Задает начальное значение сигнала. Окно задания параметров: Block Parameters IC Initial Condition - ----| Initial condition fof signal. - Patarnetefs Initial value ' e-—____________________________: । I OK | Cancel | H«k> | | _____________________________________________J Параметры блока: Initial value: [начальное значение]. Выходной сигнал блока IC равен значению параметра Initial value на первом шаге расчета вне зависимости от величины входного сигнала блока. На остальных расчетных шагах входной сигнал проходит на выход блока без каких-либо изменений. Пример: Схема с использованием блока IC показана на рис. 2.114. В примере на- чальное значение сигнала задано равным 0.5. Шаг расчета задан равным 1 с. Signal Specification | Блок спецификации сигнала Пиктограмма: > Inherit > Signal Specification 214
2 Библиотека блоков SIMULINK ВЕШНННВМКМВМ “.n & а PPP Л S @ 0 fl •»* О 2 4 6 8 10 Т me offset: 0 Рис. 2.114 Назначение: Устанавливает требуемые пользователю спецификации сигнала. Окно задания параметров: Block Parameters: Si .n jl S ^i№< ' Signal Specification (mask) (link) Specify «tributes of signal line Parameters Dimensions (-1 inherit): F______ _ Sample time (-1 - inherit): p Data type. | Specify via dialog Output data type (e g sfix(16). un*(8), floatfsingie'J). |sfa(16) Output scaling value (Slope, e g Z’-S ot [Slope Bias], eg [1.25 3]): Signal bpe: [Lto Sampling mode: jauto OK [ Cancel | Help j Apply j 215
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Dimensions: [размер сигнала]. Задается скаляром, если входной сигнал векторный, или вектором вида [ m n] (т - количество строк, п - количество столбцов), если входной сигнал массива. Если значение параметра задано как -1 (минус единица), то допустим произвольный размер сигнала. Sample time: [такт дискретности]. Задается вектором вида [period offset!, где period - зна- чение шага модельного времени, offset - смещение. Если значение парамет- ра задано как -1 (минус единица), то допустимы произвольные значения па- раметров. Можно также задавать значение -1 (минус единица) и отдельно для параметров period или offset. Data Type: [тип данных]. Выбирается из списка: auto, double, single, int8, uint8, intl6, uintl6, int32, uint32 или boolean. Параметр также может быть задан как Spec- ify via dialog (задать в окне диалога). В этом случае в окне параметров появ- ляются дополнительные графы для ввода свойств сигнала. Output data type: [тип выходных данных]. Для выбора используется раскрывающийся список. Тип сигнала может быть Boolean (двоичный), logical (логический) или задан одним из стандартных типов, например uint(8). Output scaling value: [параметр масштаба и смещения]. Параметр задает обобщенное представле- ние сигнала в арифметике с фиксированной точкой. Смещение допускается не указывать. Signal type: [тип сигнала]. Выбирается из списка: auto, real, complex. Sampling mode: [режим]. Параметр может принимать значения: auto, Sample based или Frame based. На пиктограмме блока отображаются назначенные параметры сигнала и их значения. 216
2. Библиотека блоков SIMULINK Пример: Схема с использованием блока Signal Specification показана на рис. 2.115. Transfer Fen Display Рис. 2.115 Probe | Вывод параметров Пиктограмма: > W:0, Ts:|O О]. С;0, D:0 Probe Назначение: Блок позволяет получить численные значения параметров сигнала. Окно задания параметров: Block Parameters: PfQbe Piobe I ’ Probe a line for its width, sample time, complex signal or dimensions. j | Parameters ;----- p iProbewStH |y Piobe sample tine p Piobe complex signal |y Probe signal dimensions OK | Cancel | Help | ;l. | ) Параметры блока: Probe width: [длина сигнала]. Probe Sample time: [такт дискретности]. 217
И. В. Черных, SIMULINK: среда создания инженерных приложений Probe Complex Signal [тип сигнала]. На выходе соответствующего порта будет 1, если сигнал представлен в комплексном виде, и 0 в противном случае. Probe signal dimensions: [размер сигнала]. Установка флажка: для какого-либо параметра приводит к появлению на изображении блока порта, с которого можно считывать значение данного параметра сигнала. Пример: Схема с использованием блока Probe показана на рис 2 116. Рис. 2.116 Rate Transition Пиктограмма: Блок согласования дискретных сигналов Rate Transition Назначение: Согласование работы дискретных блоков, имеющих разные периоды квантования. 218
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters Rate Trrinsrti jd Rate_Tran$*Jon(fnask)(ir»k) ........ .......... Specify lhe data transfer mechanism between two rales of a muttkate system. The default configuration provides safe and determinrstic data barisfer, however, configuration ak*vs for determinism and data integrity to be compromised in favor of minimum delay and code efficiency. i Parameters--------------------- ~---.^.-.-.-1.—------------ P Ensure data integrity during data transfer p Ensure deterministic data transfer (maximum delay) Data tote Ь«гв»кп |sbwtofett J tribal condUorr l°“ | OK | Caned | Help | | Параметры блока: Ensure data integrity during data transfer: [гарантировать целостность передачи данных]. Ensure deterministic data transfer (maximum delay): [гарантировать детерминированную передачу данных (максимальная за- держка)]. Data rate transition: [режим передачи данных]. Выбирается из списка • Slow to fast - от "медленного" блока к "быстрому", • Fast to slow -- от "быстрого" блока к "медленному"; • Initial condition - начальное значение. Пример Схема с использованием блока Rate Transition показана на рис. 2.117. В примере блок Rate Transition выполняет согласование работы блока Dis- crete Transfer Fen и блока Discrete Filter Transfer Fen Puc. 2.117 219
И. В. Черных. SIMULINK: среда создания инженерных приложений 2.9. Look-Up Tables - блоки задания таблиц Look-Up Table Одномерная таблица Пиктограмма: Назначение: Задает в табличной форме функцию одной переменной. Окно задания параметров: Block Parameters: Look-Up Taftlt';, ~ Look-Up Table Perform 1 -0 Imear interpolation of inpul values using the specified table. Extrapolation is performed outside the table boundaries. I ........................... . . . .a......’ L_.> Parameters . Vector of input values: |_ Vector of output values: pr ----------show additional parameters------------ Look-up method: | Herpolation-E xtr apolation Out pul data type mode: | Specify via dialog Output data type (e.g. sfixflE], ипЦ8), floatf single’)): |sfix[16) Output scaling value (Slope, e.g. 2^-9 or (Slope Bias], e.g. (1.25 3J). |ro ' Г Lock output scaling against changes by the autoscaling tool Round integer calculations toward |Fbor * J? |v Saturate on integer overflow | '' OK | Cancel | Help | Apply | 220
2. Библиотека блоков SIMULINK Параметры блока: Vector of input values: [вектор значений входного сигнала]. Может быть задан в виде дискретных значений (например, [1 2 7 9]) либо в виде непрерывного диапазона (напри- мер, [0:10]). Элементы вектора или граница диапазона могут быть заданы в виде вычисляемого выражения, например [tan(5) sin(3)]. Vector of output values: [вектор выходных значений]. Show additional parameters: [показать дополнительные параметры]. При установленном флажке в окне параметров отображаются дополнительные графы. Look-up method: [метод расчета выходных значений]. Выбирается из списка: • Interpolation-Extrapolation - интерполяция и экстраполяция. Если вход- ной сигнал не совпадает ни с одним из элементов вектора входных зна- чений, то блок выполняет линейную интерполяцию между двумя бли- жайшими к нему элементами. Если входной сигнал выходит за границы вектора входных значений, то блок выполняет линейную экстраполяцию по двум крайним элементам. • Interpolation-Use End Values - интерполяция сигнала внутри диапазона табличных значений. При выходе входного сигнала за границы вектора входных значений выходной сигнал равен краевому табличному значе- нию. • Use Input Nearest - интерполяция и экстраполяция отсутствуют. При вы- числении выходного значения выбирается ближайшее табличное значение. • Use Input Below - интерполяция и экстраполяция отсутствуют. При вы- числении выходного значения выбирается ближайшее меньшее таблич- ное значение. • Input Above - интерполяция и экстраполяция отсутствуют. При вычис- лении выходного значения выбирается ближайшее большее табличное значение. Output data type mode: [выбор типа выходных данных]. Для выбора используется раскрывающийся список. Тип выходного сигнала может наследоваться от блока назначения (inherited via back propagation) или от блока, подключенного ко входу (same 221
И. В. Черных. SIMULINK: среда создания инженерных приложений as input), быть задан одним из стандартных типов, например, int8, либо мо- жет быть определен с помощью дополнительных граф окна диалога (Specify via dialog). В последнем случае в окне параметров появятся дополнительные графы Output data type и Output scaling value. Output data type: [тип выходных данных]. В графе можно задать требуемый тип данных, включая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Output scaling value: [масштабирующая величина]. Параметр задается как основание системы счисления со смещением, например [1.25 3]. Смещение допускается не ука- зывать. Lock output scaling against changes by the autoscaling tool: [блокировка масштабирования]. Round integer calculations toward: [метод округления]. Параметр устанавливает метод округления для выход- ного сигнала действительного типа с фиксированной точкой. Значение па- раметра выбирается из списка: • Zero - округление отсутствует; • Near est - ближайшее целое; • Floor - ближайшее меньшее целое; • Ceiling - ближайшее большее целое. Saturate on integer overflow: [подавлять переполнение целого]. При установленном флажке ограничение сиг налов целого типа выполняется корректно. График функции, заданный с помощью настроек блока, отображается па его пиктограмме. Входной сигнал блока может быть векторным. В этом случае блок вы- полняет поэлементную операцию. Пример: На рис. 2.118 показана схема с использованием блока Look-Up Table. В примере вектор входных значений равен [-5:5], а вектор выходных значе- ний равен tanh([-5:5]). 222
2. Библиотека блоков SIMULINK Sin* Wav* XY Giaph Puc. 2.118 Look-Up Table (2D) | Двумерная таблица Пиктограмма: Look-Up Table (2-D) Назначение: Задает в табличной форме функцию двух переменных. 223
-рных. SIMULINK: среда создания инженерных приложений но задания параметров: Block Parameters' Loor I 2-D Look-Up Table Performs 2-D linear interpolation of input values using the specified table Extrapolation is performed outside the table boundaries The first dimension corresponds to the top [or left) input port. : Parameters Row index input values: . j— . Column index input values. I J— _ Matrix of output values. |[4 5 6.16 1920.101823) ----------Show additional parameters-------- Look'-up method: ||interpolation-Exlrapoiation 2L i f~ Require all inputs to have same data type I Output data type mode: |Same as first input 4 Round integer calculations toward: plooT '•*] P Saturate on integer overflow r___________. | OK. j Cancel J Help j Apply Параметры блока: Row index input values: [строка]. Вектор значений первого аргумента. Задается аналогично пара- метру Vector of input values одномерной таблицы. Элементы вектора долж- ны быть упорядочены по возрастанию. Column index input values: [столбец]. Вектор значений второго аргумента. Задается аналогично преды- дущему параметру. Matrix output values: [таблица значений функции]. Задается в виде матрицы. Количество строк должно быть равно числу элементов вектора Row index input values, а коли- чество столбцов - числу элементов вектора Column index input values. Show additional parameters: [показать дополнительные параметры]. При установленном флажке в окне параметров отображаются дополнительные графы. 224
2. Библиотека блоков SIMULINK Look-Up method: [метод расчета выходных значений]. Выбирается из списка: • Interpolation-Extrapolation - интерполяция и экстраполяция. Если вход- ной сигнал не совпадает ни с одним из элементов вектора входных зна- чений, то блок выполняет линейную интерполяцию между двумя бли- жайшими к нему элементами. Если входной сигнал выходит за границы вектора входных значений, то блок выполняет линейную экстраполяцию по двум крайним элементам. • Interpolation-Use End Values - интерполяция сигнала внутри диапазона табличных значений. При выходе поступающего сигнала за границы вектора входных значений выходной сигнал равен краевому табличному значению. • Use Input Nearest - интерполяция и экстраполяция отсутствуют. При вы- числении выходного значения выбирается ближайшее таблггчное значение. • Use Input Below - интерполяция и экстраполяция отсутствуют. При вы- числении выходного значения выбирается ближайшее меньшее таблич- ное значение. • Input Above - интерполяция и экстраполяция отсутствуют. При вычис- лении выходного значения выбирается ближайшее большее табличное значение. Require all inputs to have same data type: [все входы должны иметь одинаковый тип данных]. При установке этого параметра все входные сигналы должны иметь одинаковый тип. Output data type mode: [выбор типа выходных данных]. Для выбора используется раскрывающийся список. Тип выходного сигнала может наследоваться от блока назначения (inherited via back propagation) или от блока, подключенного к первому вхо- ду (same as first input), может быть задан одним из стандартных типов, на- пример int8, либо может быть определен с помощью дополнительных граф окна диалога. В последнем случае в окне параметров появятся дополни- тельные графы Output data type и Output scaling value. Output data type: [тип выходных данных]. В графе можно задать требуемый тип данных, вклю- чая типы данных с фиксированной точкой, например sfix(16), uint(8) и т. п. Output scaling value. [параметр масштаба и смещения]. Параметр задает обобщенное представле- ние сигнала в арифметике с фиксированной точкой. Смещение допускается не указывать. 225
И. В, Черных. SIMULINK: среда создания инженерных приложений Lock output scaling against changes by the autoscaling tool: [блокировка масштабирования]. Round integer calculations toward: [метод округления]. Параметр устанавливает метод округления для выход- ного сигнала действительного типа с фиксированной точкой. Значение па- раметра выбирается из списка: • Zero - округление отсутствует; • Nearest - ближайшее целое; • Floor - ближайшее меньшее целое; • Ceiling - ближайшее большее целое. Saturate on integer overflow: [подавлять переполнение целого]. При установленном флажке ограничение сигналов целого типа выполняется корректно. Пример: Формирование таблицы значений функции показано в табл. 2.3. Таблица 2.3 Значения первого аргумента (Row) Значения второго аргумента (Column) 3 7 9 2 10 20 30 4 40 50 60 8 70 80 90 Для приведенной таблицы значения параметров блока будут следующими: Row - [2 4 8], Column - [3 7 9], Table - [10 20 30;40 50 60;70 80 90]. Схема модели с блоком Look-Up Table(2D) показана на рис. 2.119. Рис 2.119 226
2 Библиотека блоков SIMULINK Look-Up Table (п-Р) | Пиктограмма: Многомерная таблица Look-Up Table (n-D) Назначение: Задает в табличной форме функцию многих переменных. Окно задания параметров: Block Parameters: Look ЖЖЖ * LookupHDInterp (r»sskj (iirtkj Peifc<m n-dmenswnd interpolated table lookup including index searches. I | The table к a sampled represervation of a funebon in N variables. Breakpoint sets relate the input values to positions in the table. Thefrsi j dimension conespottds to the top (or left) input port OK | Cancel | Help | | 227
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Number of table dimensions. [количество размерностей таблицы (аргументов функции)]. Значение пара- метра выбирается из списка: 1, 2, 3, 4, More...(Много). First input (row) breakpoint set: [вектор значений первого аргумента (строка)]. Задается аналогично пара- метру Vector of input values одномерной таблицы. Элементы вектора долж- ны быть упорядочены по возрастанию. Second (column) input breakpoint set: [вектор значений второго аргумента (столбец)]. Задается аналогично пре- дыдущему параметру. Third input breakpoint set: [вектор значений третьего аргумента]. Параметр доступен, если количество размерностей таблицы задано больше чем 2. Fourth input breakpoint set: [вектор значений четвертого аргумента]. Параметр доступен, если количе-’ ство размерностей таблицы задано больше чем 3. Fifth .Nth input breakpoint sets (cell array): [массив значений пятого и остальных аргументов (массив ячеек)]. Параметр доступен, если количество размерностей таблицы задано больше чем 4. Explicit number of dimensions: [точное количество размерностей таблицы (аргументов функции)]. Пара- метр доступен и его необходимо задавать, если параметр Number of table dimensions имеет значение More. Index search method: [метод поиска по индексам]. Принимает значения из списка: • Evenly Spaced Points - поиск для равноотстоящих индексов. Дает наи- лучший результат по скорости поиска, если векторы аргументов имеют равноотстоящие друг от друга значения (например, [10 20 30]) • Linear Search - линейный поиск. Дает наилучший результат, если значе- ния входных сигналов на текущем шаге расчета отличаются от преды- дущих значений незначительно. • Binary Search - двоичный поиск. Дает наилучший результат, если значе- ния входных сигналов на текущем шаге расчета значительно отличаются от предыдущих значений. 228
2. Библиотека блоков SIMULINK Begin index searches using previous index results: [начинать поиск, используя результаты предыдущего поиска]. Use one (vector) input port instead of N ports: [использовать многомерный входной порт вместо нескольких одномерных]. Table data: [таблица значений функции]. Задается по правилам формирования много- мерных массивов. Interpolation method: [метод интерполяции]. Выбирается из списка: • None - интерполяция не выполняется; • Linear - линейная интерполяция; • Cubic Spline - кубическая сплайн-интерполяция. Extrapolation method: [метод экстраполяции]. Выбирается из списка: None, Linear, Cubic Spline. Action for out of range input: [реакция на выход входного сигнала за границы вектора значений аргумен- та]. Выбирается из списка: • None - реакция отсутствует; • Warning - вывод предупреждающего сообщения в командной строке MATLAB; • Error - вывод сообщения об ошибке в командной строке MATLAB и ос- тановка расчета. Пример: Схема использования блока Look-Up Table (n-D) для задания функции двух аргументов показана на рис. 2.120. Параметры блока заданы в соответ- ствии с табл. 2.3. Для расчета выходных значений задана кубическая сплайн- интерполяция. Constant Рис. 2.120 229
И. В. Черных. SIMULINK: среда создания инженерных приложений Direct Look-Up Table (n-D) Многомерная таблица с прямым доступом к элементам Пиктограмма: 2-0 Т[к] Direct Look-Up Table (n-D) Назначение: Задает многомерную таблицу с прямым доступом к ее элементам. Ин- дексация элементов начинается с нуля. Окно задания параметров: Block Parameters: Direct Look 11*. I r LookupNDDiecl (mask) (link) - j ! ' Table membet selection. Inputs are zero-basedindrces into the tdble. ; ’ ; е д. an riput of 3 returns the fourth element in that dimension. Block can ; ' also be used to select a coLmn or 2-D matrix out of the table. The first j i selection index corresponds to the top (or left) input port. | OK ~| Cancel| Help | fipp^r | j Параметры блока: Number of table dimensions: [количество размерностей таблицы (аргументов функции)]. Значение пара- метра выбирается из списка: 1, 2, 3,4, Моте...(Много). 230
2. Библиотека блоков SIMULINK Explicit number of dimensions: [точное количество размерностей таблицы (аргументов функции)]. Пара метр доступен и его необходимо задавать, если параметр Number of table dimensions имеет значение More. Inputs select this object from table: [задать вид выходного сигнала]. Выбирается из списка: • Element - элемент. Если на выходе блока необходимо получить отдель- ный элемент таблицы, то на вход блока должны подаваться значения всех индексов элемента. • Column - столбец. Если на выходе необходимо получить столбец, то на вход блока необходимо подавать на один индекс меньше по срав- нению с предыдущим вариантом. • 2-D Matrix - матрица. В этом случае на вход блока подается на два ин- декса меньше по сравнению с первым вариантом. Make table an input: [Установить вход для таблицы]. Таблица значений функции задается черс. отдельный вход блока, а не параметром Table data. Table data: [таблица значений функции]. Задается по правилам формирования много- мерных массивов. Action for out of range input: [реакция на выход входного сигнала за границы вектора значений аргумен- та]. Выбирается из списка: • None - реакция отсутствует; • Warning - вывод предупреждающего сообщения в командной строке MATLAB; • Error - вывод сообщения об ошибке в командной строке MATLAB и оста- новка расчета. Пример: Схемы с использованием блока Look-Up Table (n-D) для задания функ- ции двух аргументов показаны на рис. 2.121. В первом случае таблица зна- чений функции ([10 20 30;40 50 60;70 80 90]) задана в параметрах блока, а во втором подается через отдельный вход (установлен флажок Make table an input). 231
И. В. Черных. SIMULINK: среда создания инженерных приложений Constant Table Рис. 2.121 PreLook-Up Index Search Блок обработки индексов Пиктограл ша: PreLook-Up Index Search Назначение: Вычисляет значение индекса и относительную величину входного сиг- нала. Используется совместно с блоком Interpolation (n-D) using PreLook-Up. 232
2. Библиотека блоков SIMULINK Окно задания параметров: Block Paid ureters' PreLooMJp I ЕЖи. £ лГ j LookupIdxSearch (mask) (fink) - । Locale the input value's relative position Whir, a range ot numbers (Die I ‘"breakpoint data” set). Returns an array of the interval index "k"and I I distance fraction *T‘ that the input *V“ reaches into the klh interval Parameters - Breakpoint data ([10:10100] ——— Index search method | Binary Search Г" Begin index search using previous index rest* f Output огЛ> (he index Process out of range input: [Linear Extrapolation Action lor out of range input: [hone | OK | Cancel | Help | Параметры блока: Breakpoint data: [вектор узловых точек]. Данный параметр аналогичен вектору входного сигнала блоков, задающих табличные функции. Index search method: [метод поиска индексов]. Выбирается из списка • Evenly Spaced Points - поиск для равноотстоящих индексов; ♦ Linear Search - линейный поиск; ♦ Binary Search - двоичный поиск. Begin index search using previous index result: [начало поиска индекса с последнего результата]. Output only the index: [вывод только индексов]. Process out of range input: [тип процесса при выходе входного сигнала за заданные пределы]. Выбира- ется из списка: • Clip to Range - ограничить предельным значением; • Linear Extrapolation - линейная экстраполяция. 233
I. В. Черных. SIMULINK: среда создания инженерных приложений \ction for out of range input: [реакция на выход входного сигнала за границы вектора узловых точек]. Выбирается из списка: • None - реакция отсутствует; * Warning - вывод предупреждающего сообщения в командной строке MATLAB; • Error - вывод сообщения об ошибке в командной строке MATLAB и остановка расчета. Выходным сигналом блока является вектор, первый элемент вектора - найденный индекс, а второй - относительная величина входного сигнала. Ьчок находит индекс того элемента, значение которого не превышает величины входного сигнала. Например, для вектора узловых точек [0 5 10 20 50 100] входного сигнала, равного 55, найденный индекс будет равен 4. Относительная величина входного сигнала рассчитывается в соответст- вии с выражением. h = x-A(i) A(i + 1)-A(i)’ где л’ - входной сигнал; А - вектор узловых точек. i - найденный индекс; Для приведенных выше значений относительная величина входного сиг- нала будет равна 0.1. Пример: Схема, поясняющая работу блока, показана на рис. 2.122. PreLook-Up ОврИу Index Seirch Рис. 2.122 234
2. Библиотека блоков SIMULINK Interpolation (n-D) tiling PreLook-Up Блок интерполяции табличных данных Пиктограмма: Interpolation (n-D) using PreLook-Up Назначение: Вычисляет значение табличной функции по значению индекса и относи- тельной величине входного сигнала. Используется совместно с блоками PreLook-Up Index Search. Окно задания параметров: Block Parameters: I? i n LookupNDInterpIdx (mask] (Ink) - * - - - - - — — \ { Perform n-dimensional (n-D) inlerpoleted table lookup using precalculated ; indices and distance (factions. An n-D T able is a sampled representation j of a function in N variables This block is fed with the output of a * PreLook Up Index Search block. The first dimension corresponds to the top (or left) input port. Parameters ------------- * — —’ ™—•—*—j । Number of table dimensions: (Mote..." ' "....................... ExpScit number of table dimensions: P * ‘ ' Table data: "I |sqrt([1:tOni:1OJ) Interpolation method [Linear Extrapolation method [Linear j»] Action for out ol range input: [None -] | OK | Cancel | Help [ Apply | Параметры блока: Number of table dimensions: [количество размерностей таблицы (аргументов функции)]. Значение пара- метра выбирается из списка: 1,2, 3,4, More...(Много). 235
И. В. Черных. SIMULINK: среда создания инженерных приложений Explicit number of dimensions: [точное количество размерностей таблицы (аргументов функции)]. Пара- метр доступен и его необходимо задавать, если параметр Number of table dimensions имеет значение More. Table data: [таблица значений функции]. Задается по правилам формирования много- мерных массивов. Interpolation method: [метод интерполяции]. Выбирается из списка: • None - интерполяция не выполняется; • Linear - линейная интерполяция. Extrapolation method: [метод экстраполяции]. Выбирается из списка: • None - нет. Экстраполяция не выполняется; • Linear - линейная экстраполяция. Action for out of range input. [реакция на выход входного сигнала за границы вектора значений аргумен- та]. Выбирается из списка: • None - реакция отсутствует; • Warning - вывод предупреждающего сообщения в командной строке MATLAB, • Error - вывод сообщения об ошибке в командной строке MATLAB и ос- тановка расчета. Пример: Схема, поясняющая работу блока, показана на рис. 2.123. Таблица зна- чений функции задана матрицей [10 20 30;40 50 60:70 80 90]. Рис. 2.123 236
2. Библиотека блоков SIMULINK 2.10. Функции, определяемые пользователем Fen | Блок задания функции Пиктограмма: > \ Н > Fen Назначение: Задает выражение в стиле языка программирования С. Окно задания параметров: Параметры блока: Expression: [выражение]. Выражение, используемое блоком для вычисления выходного сигнала на основании входного. Это выражение составляется по правилам, принятым для описания функций на языке С. В выражении можно использовать следующие компоненты: • Входной сигнал. Входной сигнал в выражении обозначается и, если он является скаляром. Если входной сигнал вектор, необходимо указывать номер элемента вектора в круглых скобках. Например, и(1) и н(3) - пер- вый и третий элементы входного вектора. • Константы. • Арифметические операторы (+, -, *, /). • Операторы отношения (= =, != >, <, >-, <=). • Логические операторы (&&, 11, !). • Круглые скобки. • Математические функции: abs, acos, asin, atan, atan2, ceil, cos, cosh, exp, fabs, floor, hypot, In, log, log 10, pow, power, rem, sgn, sin, sinh, sqrt, tan и tanh. 237
И. В. Черных. SIMULINK: среда создания инженерных приложений • Переменные из рабочей области. Если переменная рабочей области яв- ляется массивом, то ее элементы должны указываться с помощью индек- сов в круглых скобках. Например, A(l, I ) - первый элемент матрицы А. Операторы отношения и логические операторы возвращают значения в виде логического нуля (FALSE) или логической единицы (TRUE). Операторы, допускаемые к использованию в выражении, имеют сле- дующий приоритет (в порядке убывания): • О • + ~ (унарные) • возведение в степень . I . / • + - (бинарные) • ><<=>= • = != . && • II Блок не поддерживает матричные и векторные операции. Выходной сиг- нал блока всегда скаляр. Пример: Схемы с использованием блока Fen показаны на рис. 2.124. Рис. 2.124 MATLAB Fcn| Блок задания М-функции Пиктограмма: matlab ь Function MATLAB Fen 238
2. Библиотека блоков SIMULINK Назначение: Задает выражение в стиле языка программирования MATLAB. Окно задания параметров: Block Parameters MATLAB Fen Параметры блока MATLAB function. [выражение на языке MATLAB]. Output dimensions: [размерность выходного сигнала]. Значение параметра -1 (минус единица) предписывает блоку определять размерность автоматически. Output signal type: [тип выходного сигнала]. Выбирается из списка: • real - действительный сигнал; • complex - комплексный сигнал; • auto - автоматическое определение типа сигнала. Collapse 2-D results to 1-D: [преобразование двумерного выходного сигнала в одномерный]. Входной сигнал в выражении обозначается и, если он является скаляром. Если входной сигнал - вектор, то необходимо указывать номер элемента вектора в круглых скобках. Например, и(1) и и(3) - первый и третий элемен- ты входного аектора. Если выражение состоит из одной функции, то ее можно задать без указания параметров. Выражение может содержать 239
И. В. Черных. SIMULINK: среда создания инженерных приложений также и собственные функции пользователя, написанные на языке МАТ- LAB и оформленные в виде m-файлов. Имя т-файла не должно совпадать с именем модели (mdl-файлом). Пример: Рис. 2.125 демонстрирует применение блока MATLAB Fen В примере используется функция MyMatlab Fcnl, вычисляющая произведение и сумму двух элементов входного вектора. Текст функции (файл My Matlab Fen 1.tn) приведен ниже: function y=My„Matlab_Fcn_l(x,k), y(l)=x*k, y(2)=x + k. Выражение для вызова функции, заданное параметром MATLAB func- tion, имеет вид: Му Matlab_Fcn_l(u(l),u(2)). Рис. 2.125 Раздел библиотеки Function & Tables содержит еще два блока: S-Function и S-Function Builder. Они будут подробно рассмотрены в разделе, посвя- щенном созданию S-функций. 2.11. Ports & Subsystems - порты и подсистемы Subsystem, Atomic Subsystem Пиктограмма: Создание подсистем Subs^-stem > tnl Outl > Atomic Subsystem Назначение: Подсистема - это фрагмент Simulink-модели, оформленный в виде от- дельного блока. Использование подсистем при составлении модели пресле- дует следующие цели: 240
2. Библиотека блоков SIMULINK • уменьшает количество одновременно отображаемых на экране блоков, что облегчает восприятие модели; • позволяет создавать и отлаживать отдельные фрагменты модели, что по- вышает технологичность создания модели; • позволяет создавать собственные библиотеки; • позволяет синхронизировать параллельно работающие подсистемы; • позволяет включить в модель собственные справочные средства; • позволяет связывать подсистему с М-файлом, обеспечивая запуск этого файла при открытии подсистемы Использование подсистем и механизма их маскирования позволяет соз- давать блоки, не уступающие стандартным по своему оформлению (собст- венное окно параметров, пиктограмма, справка и т. п.)_ Количество подсистем в модели не ограничено, кроме того, подсистемы могут включать в себя другие подсистемы. Уровень вложенности подсистем также не ограничен. Связь подсистемы с моделью (или подсистемой верхнего уровня иерар- хии) выполняется с помощью входных (блок Inport) и выходных (блок Out- poit) портов Добавление в подсистему входного или выходного порта при водит к появлению на изображении подсистемы метки порта, с помощью которой внешние сигналы передаются внутрь подсистемы или выводятся в основную модель Переименование блоков Inport или Outport позволяет изменить метки портов, от ображаемые на пиктограмме подсистемы со стан- дартных (In и Out) на те, которые нужны пользователю. В системе Simulink выделяется специальный класс подсистем, которые носят название Atomic Subsystem (Неделимая подсистема). Ее отличает по- следовательность моделирования входящих в нее блоков. Если для подсис- темы Subsystem порядок модерирования блоков в подсистеме и системе в целом произволен, то в случае неделимой подсистемы Atomic Subsystem моделируются все блоки, входящие в эту подсистему, и только потом моде- лируются все остальные блоки системы. В этом контексте подсистему Sub- system можно назвать свободной. Всякую подсистему можно сделать неделимой, если в окне параметров блока Subsystem выставить флажок Treat as atomic unit. После этого блок неделимой подсистемы будет выделен рамкой с более толстыми линиями. Условно управляемые системы всегда дожны быть неделимыми. Такие подсистемы имеют дополнительные управляющие входы, на которые по- ступают сигналы от других блоков. 241
И. В. Черных. SIMULINK: среда создания инженерных приложений Иногда бывает полезно объявить некоторую подсистему неделимой, чтобы проверить, что все ее блоки промоделированы. Подсистемы могут быть также управляемыми или неуправляемыми. Управляемые подсистемы всегда являются неделимыми. Управляемые под- системы имеют дополнительные (управляющие) входы, на которые посту- пают сигналы, активизирующие данную подсистему. Окно задания параметров: Доступ к окну параметров подсистемы осуществляется через меню Edit Subsystem Parameters... или с помощью такой же опции контекстного меню, вызываемого нажатием правой клавиши мыши на пиктограмме подсистемы. Параметры блока: Show port labels: [показать метки портов]. Treat as atomic unit: [считать подсистему неделимой]. 242
2. Библиотека блоков SIMULINK Read/Write Permissions: [разрешить чтение и запись]. Допустимы 3 опции: • ReadWrite - чтение и запись; • Readonly - только чтение; • NoReadOrWrite - ни чтения, ни записи. Name of error callback function: [имя функции ответного вызова]. Находящийся в библиотеке шаблон блока Subsystem или Atomic Subsys- tem содержит входной и выходной порты и линию связи между ними. После того как блок подсистемы скопирован из библиотеки в окно мо- дели, он становится доступным для редактирования. Пользователь может автоматически создать блок Subsystem. Для этого необходимо выделить с помощью мыши нужный фрагмент модели и вы- полнить команду Create Subsystem из меню Edit в окне модели. Выделенный фрагмент будет помещен в подсистему, а входы и выходы подсистемы бу- дут снабжены соответствующими портами. В дальнейшем, если это необхо- димо, можно объявить этот блок неделимым, изменив параметры, или сде- лать условно управляемым, добавив управляющие входы. Отменить группировку блоков в подсистему можно командой Undo. Пример: Рис. 2.126 иллюстрирует как создается подсистема для управляемого функционального генератора. На рис. 2.127 показан результат этого про- цесса. 243
И. В. Черных. SIMULINK: среда создания инженерных приложений Рис. 2.127 Enabled Subsystem, Enable Е-подсистема и блок управления Enable Пиктограмма: Л > Ini Outl > Enabled Subsystem Л Enable Назначение: Подсистема Enabled Subsystem (в дальнейшем - Е-подсистема) активи- зируется при наличии положительного сигнала на управляющем входе. Ес- ли входной сигнал векторный, то подсистема активизируется, если хотя бы один элемент принимает положительное значение. Величина выходного' сигнала в том случае, если система заблокирована, определяется настрой- ками выходных портов подсистемы (блоки Outport). Сама Е-подсистема яв- ляется неделимой подсистемой. Ее свойства определяются параметрами блока Enabled Subsystem и совпадают со свойствами блока Subsystem. Здесь: приводятся параметры блока управления Enable. 244
2. Библиотека блоков SIMULINK Окно задания параметров Block Parameters' Enable Enable Fort Piece ths block in a subsystem to create an enabled subsystem. :__________ _ . —J —____&SfcJ Parameters -• —----~------------ Slates when enabling: |hdd * } Г“ Show output port p Enable zero crossing detection I OK I Cancel [ Help j| Параметры блока: States when enabling: [состояние при запуске]. Параметр задает состояние подсистемы при каж- дом запуске. Выбирается из списка: • held - использовать предыдущее состояние (последнее состояние, когда система была активна); • reset - использовать начальное (исходное) состояние. Show output port: [показать выходной порт]. При выстановленном флажке на пиктограмме блока Enable появляется дополнительный выходной порт, сигнал с которого может быть использован для управления блоками внутри подсистемы. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. В том случае, если параметр Output when disabled (Вид сигнала на выхо- де подсистемы) выходного порта имеет значение held, выходной сигнал подсистемы равен последнему рассчитанному ею значению; если же этот параметр имеет значение reset, то выходной сигнал подсистемы равен зна- чению, задаваемому параметром Initial output (Начальное значение). Пример 1: На рис. 2.128 показана модель с Е-подсистемой и схема этой подсисте- мы. В примере параметр States when enabling блока управления Enable имеет значение held. Параметр Output when disabled первого выходного порта под- системы имеет значение reset, а второго — held. Как видно из временных диаграмм, при выключении подсистемы сигнал первого выходного порта равен начальному значению (нулю), а сигнал второго выходного порта ра- вен последнему рассчитанному значению в момент активности подсистемы. 245
И. В. Черных. SIMULINK: среда создания инженерных приложении Рис. 2.128 Пример 2: Схема на рис. 2.129 отличается от предыдущей настройкой блока управ- ления Enable подсистемы. В данном примере параметр States when enabling блока Enable имеет значение reset. На временных диаграммах видно, что при поступлении нового импульса от генератора выхода подсистемы сбра- сываются в начальное состояние. Triggered Subsystem, Trigger Т-подснстема н блок управления Trigger Пиктограмма: / > Ini Out/ Triggered Subsystem Trigger 246
2. Библиотека блоков SIMULINK Назначение: ' Подсистема Triggered Subsystem (в дальнейшем - Т-подсистема) вклю- чается фронтом (перепадом уровня) управляющего сигнала и выполняет моделирование только на том шаге, где произошло это изменение. Если входной сигнал векторный, то подсистема активизируется, если хотя бы в одном элементе изменяется уровень сигнала. Возврат Т-подсистемы в исходное состояние не происходит (подсистема сохраняет последнее зна- чение до следующего запуска), поэтому параметр States when enabling вы- ходных портов имеет значение held и недоступен для изменения. Сама Т- подсистема является неделимой подсистемой. Ее свойства определяются параметрами блока Triggered Subsystem и совпадают со свойствами блока Subsystem. Здесь приводятся параметры блока Trigger. 247
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters Tri j.ier Trigger Port - ....-----..t- — - Ptace this block in a subsystem to create a triggered subsystem. Parameters . ...... Trigger type: [rising V] Г" Show output port 1г-j | .............................. 2] p Enable zero crossing detection I „9* I Cancel | Help | | Параметры блока: Tugger type: [тип триггера]. Выбирается из списка: • rising - активизация подсистемы положительным фронтом; 3 i • falling - активизация подсистемы отрицательным фронтом; у • either - активизация подсистемы как положительным, так и отрицатель- ным фронтом; • function-call - активизация подсистемы определяется логикой работы вызываем S-функции. Show output port: [показать выходной порт]. При установленном флажке на пиктограмме бло- ка Trigger появляется дополнительный выходной порт, сигнал с которого) может быть использован для управления блоками внутри подсистемы. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Пример. На рис. 2.130 показана модель с Т-подсистемой Сама Т-подсистема со- держит лишь один усилитель с коэффициентом передачи, равным единице. Как видно из временных диаграмм, подсистема срабатывает по положи- тельному фронту управляющего сигнала. Выходной сигнал подсистемы ос- тается неизменным до следующего положительного фронта управляющего сигнала. 248
2. Библиотека блоков SIMULINK Enabled and Triggered Subsystem Пиктограмма: ЕТ-подсистема Л > In! Out! > Enabled and Triggered Subsystem Назначение: Подсистема Enabled and Triggered Subsystem (в дальнейшем - ЕТ-под- система) включается фронтом сигнала, поступающего на Т-вход системы при наличии положительного сигнала на Е-входе системы. Так же как и Triggered Subsystem, эта подсистема выполняет вычисления только на том шаге моделирования, где произошло изменение управляющего сигнала на Т-входе. Параметр States when enabling блока Enable не оказывает влия- ния на работу ЕТ-подсистемы. Оба управляющих сигнала могут быть векторными. Пример: Схема с ЕТ-подсистемой дана на рис 2 131. 249
И. В. Черных. SIMULINK.: среда создания инженерных приложений FC-подснстема Function-Call Subsystem Пиктограмма: functionO > Ini Outl > Function-Call Subsystem Назначение: K> function Подсистема, управляемая функцией, - Function-call subsystem (в даль- нейшем - FC-подсистема) является Т-подсистемой, которая управляется S-функцией, написанной на языке С. Во время работы FC-подсистемы исполнение S-функции приостанавли- вается, а по завершении возобновляется. Этот механизм позволяет создавать S-функции, которые могут запускать подсистемы, составленные из функ- циональных блоков. Способы написания таких S-функций описаны в доку- ментации по системе Simulink [13]. 250
2. Библиотека блоков SIMULINK Параметры блока управления function аналогичны параметрам блока управления Trigger с той лишь разницей, что установлен тип триггера func- tion-call. Для управления FC-подсистемой можно использовать внешний блок Function-Call Generator и средства пакета программ событийного моделиро- вания Slateflow [ 14]. Внешний блок управления FC-нодсистемой Function-Call Generator Пиктограмма: ю |> Fundi on-Cjll Generator Назначение: Блок задает количество исполнений FC-подсистемы на каждом такт мо- дельного времени. Окно задания параметров: Block Parameters Гит tion-Call -. X Function-Cai Generatoi (maskj (ink) This block implements an Aerator operation. On each lime-step as defined by the sample lime field, this block wil execute (he function-cal subsystem^} that A drives for the specified number of Aerations. Demux the block's output to execute muhple function-cal subsystems in a prescribed order. The system connected to first demux port is executed j first the system connected to second demux port is executed second, and so on. Parameters Sample time: Number of Aerations. ОК | Caned | Help | Л.уу | 251
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока; Sample time: [такт дискретности]. Number of iterations: [количество исполнений]. Пример: На рис. 2.132 приведены схемы моделей, иллюстрирующие работу FC-подсистемы и блока Function-Call Generator. В примере FC-подсистема на каждом такте выполняет накопление единичек. При этом для первой под- системы число исполнений задано равным единице, а для второй - трем. Subsyrteml ' Рис. 2.132 Блок условного оператора Пиктограмма: if(ul > 0) > > ul else > Назначение: Обеспечивает формирование управляющих сигналов для подсистем If Action Subsystem. Блок является аналогом оператора if-else языка про- граммирования С. 252
2 Библиотека блоков SIMULINK Окно задания параметров: Block Parameters И И Block —~ - ---------’ -—'- IF expression 1 Run the Action Subsystem connected to 1 st output port ELSEIF expression Run the Action Subsystem connected to 2nd output port ELSE Run the Action Subsystem connected to test output port END The number of Else! output ports in the block is equal to the number of comma-separated Elseif expressions entered in the dialog. The If and Ebeif expressions can use these MATLAB operators. >«ЛЛ * ( )• unary-minus on die input port signals named ul. u3. etc. Parameters • • !— ---- Number of inputs. j. tf expression (e g. ul *» OJ. |u1 >0 Ekeif expressions (comma-separated list, e g. u2 0. u3(2) < u2J. P Show else condition P Enable zero crossing detection f OK. | Cancel j Help | | Параметры блока: Number of inputs: [количество входов]. I If expression: [условное выражение]. Условное выражение может включать следующие операции отношения: <, <=, ==, ~=, >, >=, &, |, [ ], а также унарный минус. Если записанное условное выражение истинно, то на выходном If-порту блока формируется управляющий сигнал. Elseif expressions: [альтернативное условное выражение]. Одно или список альтернативных условных выражений, разделенных запятыми, вычисляющихся, если услов- ное выражение If expression ложно. Каждому условному выражению из спи- ска Elseif expressions соответствует выходной Elseif-порт пиктограммы, на котором формируется управляющий сигнал, если соответствующее ус- ловное выражение истинно. При этом алгоритм вычисления альтернатив- 253
И. В. Черных. SIMULINK: среда создания инженерных приложений ных условных выражений таков, что если одно из выражений окажется ис- тинным, то следующие в списке выражения не проверяются. Альтернатив- ное условное выражение может включать в себя те же операции отношения, что и выражение If expression. Show else condition: [показать Else-порт]. На выходе Else-порта формируется управляющий сиг- нал, если условное выражение и все альтернативные условные выражения ложны. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. На пиктограмме блока отображаются соответствующие условные выра- жения. Добавление каждого нового альтернативного условного выражения приводит к появлению нового Elseif выходного порта. Если входные сигналы блока являются скалярами, то для их обозначения в выражениях используется запись вида ul, п2, пЗ и т. д. Если входные сиг- налы векторные, то для обозначения элементов вектора применяются выра- жения вида ul(l), ul(2), u2(l), u2(2) и т. д. Пример: На рис. 2.133 показана схема использования блока If совместно с под- системами If Action Subsystem. В примере первая подсистема пропускает входной сигнал, если входной сигал блока If больше 1, вторая - если вход- ной сигнал меньше -1 (минус единицы), и третья - если входной сигнал ле- жит в интервале от -1 до +1. С-код, соответствующий алгоритму работы блока If в приведенном при- мере, выглядит следующим образом: if (ul > 1) { If Action Subsystem 1; } elseif (ul < -1){ If Action Subsystem 2; } else { If Action Subsystem 3,- } 254
2 Библиотека блоков SIMULINK Switch Case Блок переключателя Пиктограмма: case { 1 ]: > >ul default: > Switch Case Назначение: Обеспечивает формирование управляющих сигналов для подсистем Case Action Subsystem Блок является аналогом оператора Switch языка програм- мирования С. Окно задания параметров. lock Parameters Switch SwitchCase Block Perform a switch-case operation on the input The input must be a scalar and its value will be truncated The case conditions are specified using the MATLAB cell notation, where each case is a cell element. For example, entering {1Д2.3Д as the case condition implies that port 1 is run when the input is 1 and port 2 is run when the input is either 2 or 3. II the defaufc case is shown, then port 3 is fun for eH other inputs Parameters Case conditions (e g fl,(2,3)}). |й> [7 Show def auk case: 17 Enable zero crossing detection OK Cancel | Help | | 255
И. В, Черных. SIMULINK: среда создания инженерных приложений Параметры блока: Case conditions: [список значений входных сигналов (целое число)]. Каждому значению со- ответствует отдельный выходной Case-порт на пиктограмме блока. Если значение входного сигнала, поступающего на вход блока Switch Case, сов- падает с каким-либо значением из списка, то на соответствующем выходе блока формируется управляющий сигнал. Если входной сигнал не является целым, то его дробная часть отбрасывается. В выражении Case conditions можно использовать квадратные скобки, если необходимо вырабатывать управляющий сигал на каком-либо порту для нескольких значений входно- го сигнала Например, выражение {1,[7,9]} задает два выходных Case-порта. На первом из них управляющий сигнал формируется, если входной сигнал блока равен 1, а на втором - если входной сигнал равен 7 или 9. В выраже- нии Case conditions можно использовать также диапазоны значений. Напри- мер, выражение {1:5} определяет, что для единственного выходного Case- порта выходной сигнал будет вырабатываться, если входной сигнал блока равен 1, 2, 3, 4 или 5. Show default case: [показать default case-порт]. На выходе default case-порта формируется управляющий сигнал, если входной сигнал блока не совпадает ни с одним значением, перечисленным в списке Case conditions. Enable zero crossing detection: [фиксировать прохождение сигнала через нулевой уровень]. Пример: На рис. 2.134 показана схема использования блока Switch Case совмест- но с подсистемами Switch Case Action Subsystem. В примере первая подсис- тема пропускает входной сигнал, если входной сигнал блока Switch Case ра- вен 1, вторая - если входной сигнал равен -1 (минус единице), и третья - если входной сигнал не равен ни -1, ни +1. С-код, соответствующий алгоритму работы блока Switch Case в приве- денном примере выглядит следующим образом: switch (ul) { case 1: Switch Case Action Subsystem 1; break case -1 Switch Case Action Subsystem 2,- 256
2. Библиотека блоков SIMULINK break;. default; Switch Case Action Subsystem 3; } Subsystems Puc. 2.134 Action Subsystem Подсистемы, управляемые блоками If и Switch Case Пиктограмма: If Action Subsystem Switch Case Action Subsystem Назначение: Подсистема Action Subsystem предназначена для работы под управлени- ем блока If или Switch Case. В первом случае она называется If Action Sub- system, а во втором - Switch Case Action Subsystem. Параметры подсистемы определяются настройками ее выходных портов, а также настройкой блока Action Port, наличие которого в подсистеме и превращает ее в Action Subsystem. 257
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters Action Port Action Pori ---------- — — -• — ----------u— Place ths block in a subsystem to link to a signal from an II block Switch-Case block Параметры блока: States when execution is resumed: [состояние при возобновлении работы]. Параметр задает состояние подсис- темы при активизации подсистемы. Выбирается из списка: • held - использовать предыдущее состояние (последнее состояние, когда система была активна); • reset - использовать начальное (исходное) состояние. Пример: Схемы с использованием подсистем Action Subsystem показаны на рис. 2.133 и 2.134. Подсистема, управляемая циклом For For Iterator Subsystem Пиктограмма: > Inl for { .. } Outl > For Iterator Subsystem Назначение: Подсистема For Iterator Subsystem представляет собой подсистему, кото- рая выполняется неоднократно в течение одного такта моделирования. Ко- личество повторений должно быть известно заранее и может задаваться внешним источником сигнала или с помощью параметра блока. Основные свойства подсистемы задает итерационный блок For Iterator. Блок является аналогом оператора цикла For языка программирования С. Блок For может находиться в любом месте подсистемы. Его параметры перечислены ниже. 258
2. Библиотека блоков SIMULINK Окно задания параметров: Block. Parameters: For tterrtc For Iterator — Run the blocks in this subsystem for the specified number of iterations. The number of iterations may be specified either in the block’s dalog or through an external input port. If the output port is show, it wi output the cuftent iteration number starting at one. When the iteration is started, any stales in the sdbsyslem'may be ether reset to their initial value or held al their previous value Parameters Stales when staring- |held ' Source of number of iterations, prfernai Number of iterations'. p Show iteration number port: OUput data type: |r»32 5 OK | Cancel [ Help | Параметры блока: States when starting: [состояние подсистемы при запуске]. Значение параметра выбирается из списка: • held - использовать предыдущее состояние (последнее состояние, когда система была активна); • reset - использовать начальное (исходное) состояние. Source of number of iterations: [источник, задающий количество итераций]. Выбирается из списка: • internal - внутренний; • external - внешний. Number of iterations: [количество итераций]. Параметр доступен, если выбран внутренний источ- ник числа итераций. Show iteration number port: [отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации] Output data type: [тип данных выходного сигнала порта]. Значение параметра выбирается из списка: int32, inti6, int8, double. 259
И. В. Черных SIMULINK: среда создания инженерных приложений Пример: На рис. 2.135 показана схема с использованием For Iterator Subsystem. В примере выполняется накопление значений константы 10. Количество итераций задается внешним источником и равно 20. С-код, соответствующий алгоритму работы подсистемы For iterator Sub- system в приведенном примере, выглядит следующим образом: sum = О; iterations = 20; sum_increment = 10; for (i = 0; i < iterations; i + +) { sum = sum + sum_increment; } While iterator Subsystem Пиктограмма: > Ini while { ...} Outl > > IC Whila Iterator Subsystem Подсистема, управляемая циклом While 260
2. Библиотека блоков SIMULINK Назначение: Подсистема While Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений заранее неизвестно. Основные свойства подсисте- мы задает итерационный блок While Iterator. Цикл прекращается, если зна- чение логического сигнала на управляющем входе блока While Iterator Sub- system станет равно FALSE. Блок является аналогом оператора цикла while (do-while) языка программирования С. Свойства подсистемы While Iterator Subsystem определяются параметрами блока While Iterator, которые пере- числены ниже. Окно задания параметрон: Block Parameters. While Iterator Whfe Iterator--'-—. ~.rr—_ ------------------------- Run the blocks in this subsystem until the wMe-Aeralor condition t$ false or the maximum number of Aerations is reached. if the Mock is in do-while mode, al the blocks in the subsystem wi be run once before checking the whfc-rterator condition, otherwise an external signal must be fed into the IC port to check if the block should be run on the first Aeration. If the output port is shown, A wi8 output the current Aeration number starting at | rone. Parameters * ~~ *' - f Maximum number of Aerations (-1 for unfcrutedj: Г •' ...............................' ,1 Whde loop type: | while 3 States when starting: |he'id Я1 F7 jShow Aeration number port] Oiipul dale lype: |int32 ~~ 3 [ OK ~| Cancel | Help | App^ Параметры блока: Maximum number of iterations: [максимальное количество итераций]. Если значение параметра равно -1, то количество итераций не ограничивается. While loop type: [тип цикла]. Выбирается из списка: • while - цикл while; • do-while - цикл do-while. 261
И. В. Черных. SIMULINK: среда создания инженерных приложений Slates when starting: [состояние подсистемы при запуске]. Значение параметра выбирается из списка: • held - использовать предыдущее состояние (последнее состояние, когда система была активна); • reset - использовать начальное (исходное) состояние. Show iteration number port: [отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации]. Output data type [тип данных выходного сигнала порта]. Значение параметра выбирается из списка: int32, inti6, int8, double. Входной порт IC позволяет задать начальное значение сигнала, прекра- щающего выполнение цикла while. При использовании цикла do-while под- система будет выполнена хотя бы один раз (поскольку проверка условия в этом случае производится в конце цикла). Пример: На рис. 2.136 показана схема с использованием While Iterator Subsystem. В примере выполняется накопление значений константы 10. Выполнение цикла прекращается, когда величина суммы достигнет значения 100. С-код, соответствующий алгоритму работы While Iterator Subsystem в приведенном примере, выглядит следующим образом: sum = О; IC = 1; iteration_number = 0; cond = IC; while (cond '= 0) { iteration_number = iteration_number + 1; sum = sum + sum_increment; if (sum > 100 OR iterations > max_iterations) cond = 0; 1 Переконфигурируемая подсистема Configurable Subsystem Пиктограмма: Template Configurable Subsystem 262
2. Библиотека блоков SIMULINK Назначение: Блок Configurable Subsystem соответствует переконфигурируемой под- системе. Например, в модель системы управления можно поставить пере- конфигурируемую подсистему, наполнив ее различными вариантами регу- ляторов, и затем, перед проведением расчета, выбрать нужный регулятор. Окно задания параметров: 263
И. В. Черных. SIMULINK: среда создания инженерных приложений Параметры блока: List of block choices: [список блоков для выбора]. В данном окне отображается список блоков пе- реконфигурируемой подсистемь!. С помощью флажков (графа Member) можно исключать отдельные блоки из списка. Port information: [списки портов ввода и вывода блоков]. В случае нескольких входных и вы- ходных портов можно изменять их порядок с помощью кнопок Up (Вверх) и Down (Вниз). Для создания переконфигурируемой подсистемы необходимо: 1. Создать библиотеку (File/New/Library). 2. Добавить в созданную библиотеку блок Configurable Subsystem и все не- обходимые варианты конфигурации подсистемы. Каждый из вариантов должен представлять собой стандартный блок Simulink либо маскиро- ванную подсистему, имеющую собственное окно установки параметров. 3. Открыть подсистему Configurable Subsystem и выполнить ее настройку, отметив флажками нужные блоки и выбрав отображаемые входные и выходные порты подсистемы. 4. Поместить в окно модели блок Configurable Subsystem из созданной биб- лиотеки. Для выбора варианта конфигурации следует использовать команду Block choice (Вариант блока) контекстного меню (вызывается нажатием правой клавиши мыши на объекте). При открытии переконфигурируемой подсис- темы в окне модели будет автоматически открываться окно параметров того блока, который выбран командой Block choice. Пример: Схема модели, в которой используется переконфигурируемая подсисте- ма, и библиотека переконфигурируемой подсистемы показаны на рис. 2.137. В примере подсистема состоит из апериодического и колебательного звень- ев, которые могут выбираться при указании нужного варианта. 264
2. Библиотека блоков SIMULINK Subsystem Transter Fen Library: f ^lai.xi Eile Edit View Formal Help Transfer Fen Template ) Ini Out! > Configurable Subsystem Transfer FcnT Puc. 2.137 Раздел Ports & Subsystems библиотеки Simulink содержит также блоки Inport и Outport, которые являются копиями соответствующих блоков из разделов Sources и Sinks и подробно рассмотрены в описаниях этих раз- делов. 2.12. Model Verification - блоки верификации сигналов Check Static Lower Bound Блок контроля минимального уровня сигнала Пиктограмма: Check Static Lower Bound Назначение: Контроль минимального уровня сигнала. Блок устанавливает контроль выхода сигнала за установленное минимальное значение. Если значение сигнала достигнет (или станет меньше) заданного уровня, система Simulink остановит моделирование с выводом предупреждающего сообщения. 265
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: •Block Pnramptets: Жане lownt И Clwck^SMr<|m»k|(Hr)--------------г—-- ---------------~ „ Awert fr)M tie jignai ц creator than (or optional equal to) о »iabc • lower bound, 1— . . . ....._j Parameter» - •** • -r* r -— lowv bound P" Inclusive boundary P Enable шепюп Srdabon calback when euerbon felt (optional). P Stop simulation when assertion fol? Г Output aseetbon signal Select icon typ* [ouihic I OK | С»гкЫ | Ц* | № | Параметры блока: Lower bound: [нижняя граница]. Контролируемое минимальное значение сигнала. Inclusive boundary: [включая границу]. При установке флажка граничное значение будет вклю- чено в условие проверки. Enable Assertion: * [включить реакцию]. При снятом флажке проверка сигнала производится*, но реакция отсутствует. Simulation callback when assertion fails [функция ответного вызова при невыполнении заданного условия]. В этом окне пользователь может задать М-функцию, которую следует выполнить при невыполнении условия. Stop simulation when assertion fails: [останов моделирования при невыполнении условия]. Output Assertion Signal. [выходной сигнал, если проверяемое условие выполнено]. При выставлен-, ном флажке появляется дополнительный порт, на который выводится вы-, ходной логический сигнал блока При невыполнении проверяемого условия выходной сигнал блока изменяет значение с TRUE на FALSE. 266
2. Библиотека блоков SIMULINK Select Icon Type: [вид пиктограммы]. Выбирается из списка: • graphic - графический; • text - текстовый. Пример: На рис. 2.138 приведена схема модели, в которой контролируется мини- мальное значение сигнала, равное -0.5. При достижении синусоидальным сигналом этого значения моделирование останавливается. Рис. 2.138 Check Static Upper Bound Пиктограмма: Блок контроля максимального уровня сигнала Check Static Upper Bound Назначение: Контроль максимального уровня сигнала. Блок устанавливает контроль выхода сигнала за установленное максимальное значение. Если значение сигнала достигнет (или станет больше) заданного уровня, Simulink остано- вит моделирование с выводом предупреждающего сообщения. 267
И. В. Черных. SIMULINK: среда создания инженерных приложений Окно задания параметров: Block Parameters: Check Static IJ Checks_SMax (mask) (fink) Assert that the input signa} is less than (or optionally equal to) a static upper bound. Parameters^—— ----------—:;—-—- Upper bound 0 Г? Inclusive boundary p Enable assertion Simulation callback v^hen assertion fails (optional) I 4 p Stop simulation v4wn assertion Fails Г Output assertion signal Select con type: | graphic 3 OK | Cancel | ЦеЬ | "c*' Параметры блока: Upper bound: [верхняя граница]. Контролируемое максимальное значение сигнала. Inclusive boundary: [включая границу]. При установке флажка граничное значение будет вклю- чено в условие проверки. Enable Assertion: [включить реакцию]. При снятом флажке проверка сигнала производится? но реакция отсутствует. Simulation callback when assertion fails: \ [функция ответного вызова при невыполнении заданного условия]. В этом окне пользователь может задать М-функцию, которую следует выполнить при выполнении условия. Stop simulation when assertion fails: [останов моделирования при выполнении условия]. Output Assertion Signal: ' [выходной сигнал, если проверяемое условие невыполнено]. При выстанов- ленном флажке появляется дополнительный порт, на который выводитсяг 268
2. Библиотека блоков SIMULINK выходной логический сигнал блока. При невыполнении проверяемого усло- вия выходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type [вид пиктограммы]. Выбирается из списка: • graphic - графический; • text - текстовый. Пример: На рис. 2.139 приведена схема модели, в которой контролируется мак- симальное значение сигнала, равное 0.8. При достижении синусоидальным сигналом этого значения моделирование останавливается. -<□1 х| s. -«s Рис. 2.139 Блок контроля нахождения сигналя внутри зоны Check Static Range Пиктограмма: Ch*ck Static Range Назначение: Контроль нахождения сигнала внутри заданной зоны значений. Блок ус- танавливает контроль выхода сигнала за установленное максимальное или 269
И. В. Черных. SIMULINK: среда создания инженерных приложений минимальное значение. При невыполнении проверяемого условия Simulink остановит моделирование с выводом предупреждающего сообщения. Окно задания параметров: Block Parameters Check Static Check s_S Range (mask) (Ink) Assert that the input signal fes between a static lower and upper bound or ogtionaly equals either bound. Parameters Upper txxnd.' [wo F7 inclusive upper bound Lower bound 1*7 Inclusive lower bound p Enable assertion Simulation calfcack when assertion Ms (optional): p Stop simulation when assertion Fails Г Cutout assertion signal Select icon type: | №apHc 3 . I OK | Cancel [ Це» | Ap;»- | Параметры блока: Upper bound: [верхняя граница]. Контролируемое максимальное значение сигнала. Inclusive upper bound [включая верхнюю границу]. При установке флажка верхнее граничное зна- чение будет включено в условие проверки. Lower bound: [нижняя граница]. Контролируемое минимальное значение сигнала. Inclusive lower bound: [включая нижнюю границу]. При установке флажка нижнее граничное зна- чение будет включено в условие проверки. Enable Assertion: [включить реакцию]. При снятом флажке проверка сигнала производится, но реакция отсутствует. 270
2. Библиотека блоков SIMULINK Simulation callback when assertion fails: [функция ответного вызова при невыполнении заданного условия]. В этом окне пользователь может задать М-функцию, которую следует выполнить при срабатывании защиты. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: [выходной сигнал при невыполнении заданного условия]. При выставлен- ном флажке появляется дополнительный порт, на который выводится вы- ходной логический сигнал блока. При невыполнении заданного условия вы- ходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type: [вид пикзтараммы]. Выбирается из списка: • graphic - графический; • text - текстовый. Пример: На рис. 2.140 приведена схема модели, в которой контролируется мак- симальное значение сигнала, равное 0.8, и минимальное -0.5. При достиже- нии синусоидальным сигналом этих значений моделирование останавлива- ется. Поскольку в примере случай превышения сигналом верхней границы наступает первым, то вид отображаемого сигнала в окне осциллографа сов- падает с представленным на рис. 2.139. Time offset: 0 Рис. 2.140 271
И. В. Черных. SIMULINK: среда создания инженерных приложений Check Static Gap Блок контроля нахождения сигнала вне зоны Пиктограмма: Check Static Gap Назначение: Контроль нахождения сигнала вне заданной зоны значений. Блок уста- навливает проверку входа сигнала в установленную зону. При невыполне- нии этого условия Simulink остановит моделирование с выводом предупре- ждающего сообщения. Окно задания параметров: Block Parameters. Check ' < Check$_SGap (mask) (link) ----------------------- ---------*— (Assert that the input signal is less than (or optonafy equal to) a static lower bound or greater than (or optionally equal to) a static upper bound Parameters Upper bound; [__ ................... - - p Inclusive upper bound Lower bound: [6 p Inclusive lower bound Enable assertion Simulation callback when assertion fails (optional): J7 Stop simulation when assertion fafc Г Output assertion signal Select icon type: | graphic OK | Cancel | НФ Параметры блока: Upper bound: [верхняя граница]. Контролируемое максимальное значение сигнала. 272
2. Библиотека блоков SIMULINK Inclusive upper bound [включая верхнюю границу]. При установке флажка верхнее граничное зна- чение будет включено в условие проверки. Lower bound: [нижняя граница]. Контролируемое минимальное значение сигнала. Inclusive lower bound: [включая нижнюю границу]. При установке флажка нижнее граничное зна- чение будет включено в условие проверки. Enable Assertion: [включить реакцию]. При снятом флажке проверка сигнала производится, но реакция на вход сигнала в контролируемую зону отсутствует. Simulation callback when assertion fails: [функция ответного вызова при невыполнении условия]. В этом окне поль- зователь может задать М-функцию, которую следует выполнить при невы- полнении заданного условия. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: [выходной сигнал при невыполнении заданного условия]. При выставлен- ном флажке появляется дополнительный порт, на который выводится вы- ходной логический сигнал блока. При невыполнении заданного условия вы- ходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type: [вид пиктограммы]. Выбирается из списка: • graphic - графический; • text - текстовый. Пример: На рис. 2.141 приведена схема модели, в которой контролируется зона сигнала от -0.5 до 0.8. При входе смещенного синусоидального сигала в контролируемую зону моделирование останавливается. 273
И В Черных. SIMULINK: среда создания инженерных приложений ) Scope -Ij Check Dynamic Lower Bound Пиктограмма: Check Dynamic Louver Bound Рис. 2.141 i\uV Блок контроля изменяющегося минимального уровня гияЯ q Оп| •ГЛ-’ 1 СЛ- Ч НС J ,|oiz| Назначение: гэ,‘1 Контроль изменяющегося минимального уровня сигнала. Блок устанаде) ливает проверку выхода сигнала за минимальное граничное значение. Гр^-j ничное значение может меняться во времени (оно подается на отдельцдоД вход блока). Если значение контролируемого сигнала достигает границу Simulink прекращает моделирование с выводом предупреждающего сообя щения.
2. Библиотека блоков SIMULINK Окно задания пара метров: Block Parameters Check ChecksJjMin (mask) (Irk) Assert that one signal it always lest than another signal. The l«st input ts the lower-bound signal The second input it the test signal OK [ Cancel | Help [ d&t | Параметры блока: Enable Assertion: [включить реакцию]. При снятом флажке проверка сигнала производится, но реакция на выход сигнала за минимальное значение отсутствует. Simulation callback when assertion fails: [функция ответного вызова при невыполнении заданного условия] В этом окне пользователь может задать М-функцию, которую следует выполнить при невыполнении заданного условия. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: [выходной сигнал при невыполнении заданного условия]. При выстанов- лениом флажке появляется дополнительный порт, на который выводится выходной логический сигнал блока. При невыполнении заданного условия выходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type: [вид пиктограммы]. Выбирается из списка: • graphic - графический; • text - текстовый. 275
И. И. Черных. SIMULINK: среда создания инженерных приложений Пример: На рис. 2.142 приведена схема модели, в которой граничное минималь- ное значение ступенчато изменяется с уровня -0.2 до -0.5. При достижении синусоидальным сигналом граничного значения моделирование останавли- вается. Ttl< Блок контроля изменяющегося максимального уровня Check Dynamic Upper Bound Пиктограмма: Check Dynamic Upper Bound iiqi- ,ol?, 4 III' ) ад] КЯ1 Назначение: 1 ,я Контроль изменяющегося максимального уровня сигнала. Блок установи ливает проверку выхода сигнала за максимальное граничное значение. Гр«и ничное значение может меняться во времени (оно подается на отделы вход блока). Если значение контролируемого сигнала достигает границы^ Simulink прекращает моделирование с выводом предупреждающего сооб- щения. 276
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters: CherK dynamic l'| Check$_DMax (mask) (ink) ------ Assert that one signal is always great er than another signal. The first input й the upper-bound signal The second input is the test signal. Parameters — — su. P £ nable assefborj Simulation callback when assertion fails (optional) p S top simulation when assertion fails Output assertion signal Select icon type. [^арЫс 3 I OK | Cancel | Bdo [| Параметры блока: Enable Assertion: [включить реакцию]. При снятом флажке проверка сигнала производится, но реакция на выход сигнала за максимальное значение отсутствует. Simulation callback when assertion fails: [функция ответного вызова при невыполнении заданного условия]. В этом окне пользователь может задать М-функцию, которую следует выполнить при невыполнении заданного условия. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: [выходной сигнал при невыполнении заданного условия]. При выстанов- ленном флажке появляется дополнительный порт, на который выводится выходной логический сигнал блока. При невыполнении заданного условия в/лходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type: [ЙЙд пиктограммы]. Выбирается из списка: •I graphic - графический; • text - текстовый. 277
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример На рис. 2.143 приведена схема модели, в которой максимальное гранич- ное значение сигнала ступенчато изменяется с уровня 1.2 до 0.5. При дос- тижении синусоидальным сигналом граничного значения моделирование останавливается. ) Scope__________ s§ ppp лssiеs-«t Trnetffcet. 0 Puc. 2.143 Check Dynamic Range Блок контроля нахождения сигнала внутри изменяющейся зоны Пиктограмма: Check Dynamic Range Назначение: Контроль нахождения сигнала внутри заданной зоны значений. Блок устанавливает проверку выхода сигнала за границы зоны Граничные значе- ния могут меняться во времени (они подаются на отдельные входы блока).1 При невыполнении заданног условия Simulink остановит моделирование с выводом предупреждающего сообщения. • 278
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameteis Check i , . Checkt_DRange (made.) (Ink) — -- ———-— i Assert that one signal always be; between two other signals. The first | I input is the upper-bound signal the second input the lower-bound: the Hwd input, the test signal j L__ ___________ ___________________________ Parameters Simulation cafcack when assertion fails (optonaft: P Stgp simuiahon when assertion fails Г Output assertion signal Select icon type: l^aphc "3 . . - . ... ... ^. . - - . - .. . X? . I OK | Caned | Help | Mfr' | Параметры блока: Enable Assertion: [аключить реакцию]. При снятом флажке проверка сигнала производится, но реакция на выход сигнала за границы контролируемой зоны отсутствует. Simulation callback when assertion fails: [функция ответного вызова при невыполнении заданного условия]. В этом okhe пользователь может задать М-функцию, которую следует выполнить при невыполнении заданного условия. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: [выходной сигнал при невыполнении заданного условия]. При выстанов- ленном флажке появляется дополнительный порт, на который выводится выходной логический сигнал блока. При невыполнении заданного условия выходной сигнал блока изменяет значение с TRUE на FALSE, и > Select Icon Type: [вид пиктограммы]. Выбирается из списка; graphic - графический; • text - текстовый. 279
И в v 4JLINK: среда создания инженерных приложений риведена схема модели, в которой контролируется нахо- ..а внутри динамической зоны. Максимальное граничное зна- ступенчато меняется от 1.2 до 0.5, а минимальное — от -1.2 до -0.5. При достижении синусоидальным сигналом верхнего граничного значения моделирование останавливается. Пиктограмма: Check Dynamic бар Назначение: :| Контроль нахождения сигнала вне заданной зоны значений. Блок уста- навливает проверку входа сигнала в границы зоны. Граничные значения мд- гут меняться во времени (они подаются на отдельные входы блока). При не- выполнении заданного условия Simulink остановит моделирование с выво- дом предупреждающего сообщения. 280
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters: Check Check$_DGap(rnask)(lnk) - - -j ! Assert that the input signal *яд‘ is arrays less than the lower bound ’meV or greater than the upper bound ‘max*. The first input is the ijjper-bound d the gap, the second input, the lower-bound, the thrd input, the test signal Parameters |7 [Enable assertion Simulation сЛаск when assertion fails (optional): P Stop simulation when assertion fails Г" Output assertion signal Setae* коп type jotspl.ic TJ | OK | Cancel | HeV | At 11 | Параметры блока: Enable Assertion: [включить реакцию]. При снятом флажке проверка сигнала производится, но реакция на вход сигнала в границы контролируемой зоны отсутствует. Simulation callback when assertion fails: [функция ответного вызова при невыполнении заданного условия]. В этом окне пользователь может задать М-функцию, которую следует выполнить при невыполнении заданного условия. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: [выходной сигнал при невыполнении заданного условия]. При выстанов- ленном флажке появляется дополнительный порт, на который выводится выходной логический сигнал блока. При невыполнении заданного условия выходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type: [вид пиктограммы]. Выбирается из списка: • graphic - графический; • text - текстовый. 281
И. В. I* LINK, среда создания инженерных приложений П изведена схема модели в которой контролируется нахож- цинамической зоны. Максимальное граничное значение -.-я от -0.2 до -0.5, а минимальное - от -0.5 до -0.8. При достижении синусоидальным сигналом верхнего граничного значения делирование останавливается. мо- Пиктограмма: а н Assertion Назначение: Контроль нулевого значения сигнала. Блок устанавливает проверну на равенство нулю входного значения сигнала При выполнении этого усло- вия Siinuhnk остановит моделирование с выводом предупреждающего со- общения. 282
2. Библиотека блоков SIMULINK Окно задания параметров: Ыиск Рсишь»-!. js <-Assertion —- r-'~-—- ---------:— —" I Assert that the input signal is nonzero. The default behavior in the ; absence of a calback is to output an error message when the assertion Hals. Parameters P |Enab^sjwtoq Simulation calback when assertion fais if P Slop simulation v^en assertion fails | OK | Cancel | Heti | | Параметры блока: Enable Assertion: [включить реакцию]. При снятом флажке проверка сигнала производится, но реакция отсутствует. Simulation callback when assertion fails: [функция ответного вызова при невыполнении заданного условия]. В этом окне пользователь может задать М-функцию, которую следует выполнить при невыполнении заданного условия. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: [выходной сигнал при невыполнении заданного условия]. При выстанов- ленном флажке появляется дополнительный порт, на который выводится выходной логический сигнал блока. При невыполнении заданного условия выходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type [вид пиктограммы]. Выбирается из списка: • graphic - графический; • text - текстовый. 283
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример: На рис. 2.146 приведена схема модели, в которой контролируется равен- ство сигнала нулю. Значение ступенчатого входного сигнала изменяется от 1 до 0 в момент времени, равный 1 с. В этот же момент времени модели- рование останавливается. > Scope ' О : Р РГР А ® ОI В $ О 0.2 0.4 0.6 0.8 1 12 Типе offset 0 Рис. 2.146 Check Diacrate Gradient Пиктограмма: Блок контроля градиента дискретного сигна ю |Г‘ и Check j] Discrete Gradient ) Назначение: Контроль градиента дискретного сигнала. Блок устанавливает проверку превышения градиентом дискретного сигнала установленного значения. При выполнении этого условия Simulink остановит моделирование с выво- дом предупреждающего сообщения. ч 284
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters. Check Discre. . rai Checks ^Gradient (mask) (knk) Asset! Uiat the absolute value of the (Ufetence between successive samples of a dscreie signal is lets than an upper bound. L _________________ - — - - - Parameters-------‘--------------———— Maxinum gradient: р Enable assertion 1 SfnUafon cdback wtien assertion fah (opbond). F? Stop simulation н^еп asserbon fah П Output assetlion signal Select icon l>pe: Cancel | Help | Параметры блока: Maximum gradient: [максимальное значение градиента]. Enable Assertion: [включить реакцию]. При снятом флажке проверка градиента сигнала про- изводится, но реакция на превышение максимального значения отсутствует. Simulation callback when assertion fails: [функция ответного вызова при выполнении проверяемого условия]. В этом окне пользователь может задать M-функцию, которую следует выполнить при выполнении проверяемого условия. Stop simulation when assertion fails: [останов моделирования при выполнении проверяемого условия]. Output Assertion Signal: [выходной сигнал при выполнении проверяемого условия]. При выставлен- йом флажке на пиктограмме блока появляется дополнительный порт, через который выводится выходной логический сигнал блока. При выполнении проверяемого условия выходной сигнал блока изменяет значение с TRUE на FALSE. Select Icon Type: [вид пиктограммы]. Выбирается из списка: 285
И. В. Черных. SIMULINK: среда создания инженерных приложений • graphic - графический; • text - текстовый. Пример: На рис. 2.147 приведена схема модели, в которой контролируется вели- чина градиента сигнала. При достижении градиентом сигнала критического значения, равного 0.9, моделирование останавливается. 1й12<1 J S<xrpe Рис. 2.147 Check input Resolution Блок контроля разрешающей способности Пиктограмма: Check Input Resolution Назначение: Контроль разрешающей способности сигнала. Блок устанавливает про- верку разрешающей способности сигнала, вычисляя остаток от деления ве- личины входного сигнала на параметр блока Resolution, и, если результат превышает величину 10’3, то разрешающая способность оказывается пре- вышенной. В этом случае Simulink остановит моделирование с выводом предупреждающего сообщения. 286
2. Библиотека блоков SIMULINK Окно задания параметров: Block Parameters: Check Input rUrofrutiofi; Resolution- |T— Checks_R ©solution (mask} (link) ~ —---------*- — ——- Assert that th© input signal has a specified resolution If the resolution is a scalar the input signal must be a multiple of the resulion withn a 10e-3 tolerance If the resolution is a vector, the input signal must equal an elemert of the resolution vector p Enable assertion Simulation caflback when assertion fails (optional): p Stop simulation when assertion fails J~ Output assertion signal OK | Cancel | Help | /-.ri Параметры блока: Resolution: [разрешающая способность сигнала]. Enable Assertion: (включить реакцию]. При снятом флажке проверка производится, но реак- ция отсутствует. Simulation callback when assertion fails: [функция ответного вызова при невыполнении заданного условия]. В этом окне пользователь может задать М-функцию, которую следует выполнить при невыполнении заданного условия. Stop simulation when assertion fails: [останов моделирования при невыполнении заданного условия]. Output Assertion Signal: -r< [выходной сигнал при невыполнении заданною условия]. При выстанов- ленном флажке появляется дополнительный порт, на который выводится выходной логический сигнал блока. При невыполнении заданного условия выходной сигнал блока изменяет значение с TRUE на FALSE. 287
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример: На рис. 2.148 показана схема, в которой входной сигнал блока Check In- put Resolution в момент времени t = 5 с изменяется от 1 до 1.01. Параметр Resolution задан равным единице. В итоге блок Check Input Resolution оста- навливает расчет в этот момент времени. Рис. 2.148 г 2.13. Model-Wide Utilities - библиотека дополнительных утилит Model Info I Блок информации о модели Пиктограмма: Model Info Назначение: Блок отображает информацию о модели. 288
2 Библиотека блоков SIMULINK Окно задания параметров: Параметры блока: Model properties [свойства модели]. Created: [дата и время создания модели]. Creator: [разработчик]. Modified by: [изменено, кем]. ModifiedDate: [дата изменения]. ModifiedComment. [комментарий изменений]. ModelVersion: [версия модели]. 289
И. В. Черных. SIMULINK: среда создания инженерных приложений Description: [описание модели]. LastModificationDate: [дата последнего изменения]. Horizontal text alignment: [способ выравнивания текста]. Выбирается из списка: • Center - по центру, • Left - по левому краю; • Right - по правому краю. Show block frame: [отобразить рамку блока]. 1 V Для отображения данных на пиктограмме блока необходимо с помощью кнопки I—скопировать нужный параметр из окна Model properties в окно редактирования. В блоке может отображаться статическая информа- ция, которую пользователь вносит сам (например, данные об авторе, описа- ние модели и т. п.), и динамически обновляемая информация (например, да- та создания модели, дата последней модификации и т. п.). Динамически обновляемая информация представляется в окне блока как ссылка на пере- менную. Ссылка имеет вид %<имя_переменной>. Например, ссылка %<LastModificationDate> означает, что в требуемой позиции будет выведе- но значение переменной LastModificationDate, содержащей дату последней модификации модели. На пиктограмме блока отображается также часть информации, заданная с помощью команды Model Properties меню File окна модели. Пример: Модель с блоком Model Info показана на рис. 2.149. Model info Рис. 2.149 290
2. Библиотека блоков SIMULINK DocBlock I Пиктограмма: L DOC Блок документации Назначение: Создание описания модели и сохранение его в текстовом виде. При выполнении двойного щелчка на пиктограмме блока запускается текстовый редактор Editor пакета MATLAB. В окне файле можно записать необходимую информацию о модели. После закрытия окна текст будет со- хранен в файле модели. Пример: На рис. 2.150 показана пиктограмма блока документации и окно тексто- вого редактора системы MATLAB. ___________________________________ LQlJtJ File Edit View Text Debug Breakpoints Web Window Help >> С \DOCUME~ l\933S~1\LOCALS>' 1 \ I -п| —L оос o^H & м л 1 Type your docuaentacion here. 2 This is a text description of Model. Puc. 2.150 Timed-Based Linearization Пиктограмма: Блок линеаризации T=1 Timed-Dased Linearization Назначение: Линеаризация модели в заданный момент времени. 291
И. В. Черных. SIMULINK.: среда создания инженерных приложений Окно задания параметров; Block Parameters Time! T med bnaattzabon (mask) (fink] Generate bneai models in the base workspace at specific tines. Parameters ------- Linearization time Sample time (ol Sneanzed rrocW). I ок НЙ> | Aotfr | J Параметры блока: \\ Linearization time: [момент времени, когда выполняется линеаризация модели]. Sample time (of linearized model): [такт дискретности линеаризованной модели (при создании дискретной мо- дели)]. ' \\ В результате в рабочей области системы MATLAB будет создана струк- тура с именем Mode/_Timed_Based_Linearization (model - имя модели), со- держащая параметры линеаризованной модели. Структура содержит сле- дующие поля: • a,b,c,d - матрицы уравнений в пространстве состояния линеаризованной модели. • StateName - имена переменных состояния модели. • OutputName - имена выходных переменных • InputName - имена входных переменных. • OperPoint - рабочая точка. Поле, в свою очередь, является структурой с полями х (переменные состояния), и (входные сигналы) и t (время). • Тз - такт дискретности. Пример: На рис. 2.151 показана схема с использованием данного блока линеари- зации. Линеаризация выполняется для момента времени t = 5 с. 292
2. Библиотека блоков SIMULINK Timed-Based Linearization Trigger-Based Linearization Рис. 2 151 Блок линеаризации, управляемой извне Пиктограмма: ~5~ Trigger-Based , Linearization Назначение: Создание линеаризованной модели в момент времени, заданный управ- ляющим сигналом. Окно задания параметров: Параметры блока: Trigger type: [тип триггера]. Параметр задает способ активизации блока. Выбирается из списка: • rising - активизация блока положительным фронтом; • falling - активизация блока отрицательным фронтом; 293
И. В. Черных SIMULINK среда создания инженерных приложений • either - активизация блока как положительным, так и отрицательным фронтом; • function-call - активизация блока определяется логикой работы заданной S-функции. Sample time (of linearized model): [такт дискретности линеаризованной модели (при создании дискретной мо- дели)]. В момент времени, определяемый сигналом управления, в рабочей об- ласти Workspace системы MATLAB будет создана структура с именем »i<?</e/_Trigger_BasedJLinearization (model - имя модели), содержащая пара- метры линеаризованной модели. Состав полей структуры такой же, как и при использовании блока Timed-Based Linearization. Пример: На рис. 2.152 показана схема с использованием данного блока линеари- зации. Линеаризация выполняется для момента времени t = 5 с. Trigger-Based Linearization Рис. 2.152 2.14. Редактор дифференциальных уравнений DEE Пиктограмма: Differential Equation Editor DEE ,| Назначение: Система Simulink имеет в своем составе специальный блок Differential Equation Editor (Редактор дифференциальных уравнений). С помощью этого блока можно задать системы обыкновенных дифференциальных уравнений 294
2. Библиотека блоков SIMULINK в форме Коши и выполнить их моделирование. Вызов редактора реализует- ся вводом команды dee в командном окне системы MATLAB Окно задания параметров: SWus BEADY Нф Rebuild Параметры блока: Name: [имя модели]. В этой графе пользователь может задать имя создаваемой мо- дели. # of inputs: [количество входных портов]. Данный параметр определяется числом вход- ных переменных. dx/dt = [производные]. В этой графе задаются правые части системы дифференци- альных уравнений 1-го порядка. Каждое выражение записывается в отдель- ной строке. хО: [начальные условия]. Начальные значения переменных состояния. V (выходные переменные]. В этой графе задаются уравнения выхода в виде системы алгебраических уравнений. Каждое выражение записывается в от- дельной строке. 295
И. В. Черных. SIMULINK; среда создания инженерных приложений Значения постоянных коэффициентов системы уравнений можно зада- вать не только как числовые константы, но и использовать переменные ра- бочей области MATLAB. Для применения редактора дифференциальных уравнений сначала необ- ходимо подготовить задачу в требуемой форме и лишь затем обращаться к окну диалога блока dee. Пример 1: Применение редактора дифференциальных уравнений рассмотрим на примере конкретной задачи. В качестве примера рассмотрим расчет пе- реходных процессов в последовательном колебательном контуре. Задача за- ключается в нахождении тока, протекающего в электрической цепи, и на- пряжения на конденсаторе после замыкания ключа. Схема цепи показана на рис. 2.153. Начальные условия полагаем нулевыми (ток в цепи отсутст- вует и конденсатор не заряжен). Рис. 2.153 Предварительно составляем систему дифференциальных уравнений, описывающих электрическую цепь: , di ’ п . . _ du e=L—+R-Hur, i = C— dt dt где i - ток в цепи; - напряжение на конденсаторе Записываем данную систему уравнений в явной форме Коши: di' . D . . .. du I . — = (e-Ri-u)/L, ------—i. dt c dt c Введем "машинные" переменные: z->XD, и( —»х(2), е -> н(1). Введение "машинных" переменных связано с тем, что редактор диффо- ренциальных уравнений требует задавать в виде векторов входные воздей- ствия (и) и переменные состояния (л) и имена этих векторов жестко заданы; 296
2. Библиотека блоков SIMULINK В итоге система уравнений примет вид: = L«(1) - R х(1) - х(2)]/ L, 1 • х(1). dt dt с После получения системы дифференциальных уравнений с использова- нием "машинных" переменных необходимо запустить редактор командой dee в окне MATLAB. Затем требуется поместить блок редактора в окно мо- дели и открыть его. Далее в окно редактора необходимо ввести систему дифференциальных уравнений, начальные условия, а также алгебраические уравнения для расчета выходных сигналов (в рассматриваемой задаче вы- ходные переменные равны переменным состояния). Также необходимо ука- зать размерность вектора входного сигнала (# of inputs). Схема модели и ок- но редактора для данной задачи показаны на рис. 2.154. Там же приведены и результаты моделирования. Step DEE Scope Рис. 2.154 Пример 2: и Достоинством редактора DEE является также то, что коэффициенты дифференциального уравнения могут быть переменными и задаваться 297
И. В. Черных. SIMULINK: среда создания инженерных приложений так же, как и входные сигналы (через входной порт). На рис. 2.155 показан вариант предыдущей модели, в котором величина сопротивления возрастает скачком в 10 раз в процессе моделирования. В системе дифференциальных уравнений сопротивление контура задано входным сигналом и(2). Рис. 2.155 М оп в г |;н П) и ш н 298
3. МАСКИРОВАНИЕ ПОДСИСТЕМ 3.1. Общие сведения Механизм маскирования подсистем позволяет оформить подсистему как полноценный библиотечный блок, т. е. снабдить подсистему собствен- ным окном задания параметров, пиктограммой, справочной системой и ат- рибутами. Маскирование подсистем дает пользователю следующие преимущества: • расширяет возможности пользователя по управлению параметрами мо- дели; • позволяет создавать дружественный интерфейс; • повышает наглядность блок-диаграмм; • расширяет возможности построения сложных моделей; • защищает модель от несанкционированного доступа. Для маскирования подсистемы необходимо предварительно выполнить следующие действия: • Определить, какие параметры должны задаваться пользователем в окне задания параметров создаваемой подсистемы. Задать эти параметры с помощью идентификаторов (имен). • Определить графический интерфейс задания параметров в окне диалога (с помощью строки ввода, окон списка или контроля). • Создать эскиз пиктограммы блока. • Разработать справочную информацию. Маскирование подсистемы выполняется с помощью редактора маски Mask Editor. Для запуска редактора необходимо выделить маскируемую подсистему и выполнить команду Mask Subsystem... из меню Edit. Можно также воспользоваться контекстным меню. После запуска Mask Editor на экран будет выведено окно редактора (рис. 3.1), имеющее 4 вкладки: Icon (Пиктограмма), Parameters (Параметры), Initialization (Инициализация) и Documentation (Документация). Первая из вкладок обеспечивает создание пиктограммы подсистемы, вторая - дает возможность создать окно диалога для ввода параметров, третья - задать выражения для инициализации блока, и четвертая - позволяет ввести описание блока и создать справку. /1И4ЛОГ7П1ЮИ 299
И. В. Черных. SIMULINK: среда создания инженерных приложений В нижней части окна имеется 5 кнопок управления редактором: • Unmask - снять маску с подсистемы. До закрытия файла модели маску можно восстановить, воспользовавшись командой Edit Mask... из меню Edit. • ОК - сохранить внесенные изменения и закрыть окно • Cancel - отменить внесенные изменения и закрыть окно. • Help - открыть окно справки редактора маски. • Apply - сохранить внесенные изменения, не закрывая окно редактора. Mask editor Subsystem Рис. 3.1 Повторный вызов редактора маски осуществляется командой Edit Mask... из меню Edit (или аналогичной опцией контекстного меню). После того как маскирование подсистемы будет выполнено, двойной- щелчок на ее пиктограмме будет открывать окно задания параметров, а не окно модели. Открыть саму подсистему (окно модели) для редактиро- вания или просмотра можно опцией Look under mask из меню Edit или кон- текстного меню. 300
3- Маскирование подсистем 3.2. Создание окна задания параметров Окно задания параметров создается с помощью вкладки Parameters (Параметры), редактора маски (рис. 3.2). -Ю|х| Parameters | initialization | Documentation ] I* •) Mask editor Subsystem Р Р | Variable const Options for selected parameter Popups (one per line): tn dialog P Show parameter P Enable parameter type [Evaluate Tunable [ e(M ZJ p popup D;atofl parameters Й] Prompl Constant value Voltage Callbeck Unmask Рис. 3.2 Это окно содержит следующие элементы: Dialog Parameters: [параметры окна диалога]. Панель, в которой задаются параметры окна диа- лога формируемой маскированной подсистемы. В панели необходимо ввести: • Prompt - текстовое описание параметра. В качестве описания параметра ч обычно используется его название в виде текста, например Gain, Con stant value и т. п. • । Variable - имя переменной, с помощью которой задается данный пара- г метр. Как правило, это должен быть одни из тех идентификаторов, кото- рые использовались при задании параметров блоков внутри подсистемы (хотя это необязательно, поскольку параметр может быть использован и для модификации самого окна диалога). Все переменные, идентифика- торы которых заданы на вкладке Initialization, помещаются в Mask Work- 301
И. В. Черных. SIMULINK: среда создания инженерных приложений space - локальную рабочую область маски и доступны только внутри подсистемы. • Туре - тип элемента интерфейса: Edit (Редактируемое поле ввода), Checkbox (Флажок) или Popup (Раскрывающийся список). В последнем случае в графе Popups потребуется ввести элементы списка (по одному в каждой строке). • Evaluate - вычислить. Установка флажка означает, что в строке ввода параметра можно вводить вычисляемые выражения. Если же флажок не выставлен, то переменной Variable, связанной с данным параметром, будет присвоено текстовое выражение. • Tunable - изменить. Установка флажка означает, что пользователь может изменить значение параметра в процессе моделирования. Options for selected parameter: [свойства выделенного параметра]. Панель, в которой пользователь может задавать следующие свойства выделенного параметра: • Popups - элементы списка. Каждое значение вводится в отдельной стро- ке. Если выделенный параметр имеет другой тип, то данная графа неак- тивна. • Callback — процедура (функция) ответного вызова. Текст М-функции, выполняемой в случае изменения данного параметра. С помощью функ- ций ответного вызова можно изменять окно диалога, схему подсистемы, а также пиктограмму блока. • Show parameter - показать параметр. Снятие флажка для выделенного параметра позволяет удалить его из окна диалога. • Enable parameter - включить параметр. Снятие флажка для выделенного параметра позволяет сделать графу для ввода параметра неактивной. В левой верхней части вкладки находятся также кнопки Add (Добавить), Delete (Удалить), Move up (Передвинуть вверх) и Move down (Передвинуть вниз), позволяющие добавлять или удалять новый параметр окна диалога,, а также изменять его положение в общем списке параметров. Таким образом, для создания поля ввода параметра с его описанием,, необходимо выполнить следующие действия: 1. Нажать кнопку Add (Добавить). 2. Ввести описание параметра в поле Prompt (Текстовое описание параметра). f 3. Задать имя переменной, связанной с параметром, в поле Variable (Пере- менная). 302
3. Маскирование подсистем 4. рыбрать тип элемента интерфейса, задающего параметр из списка Туре (Тип параметра): Edit, Checkbox или Popup. 5. Установить свойства параметра Evaluate (Вычислять) и Tunable (Изменять). 6. При необходимости задать свойства для каждого параметра в панели Op- tions for selected parameter (Свойства выделенного параметра). Пример: В качестве примера маскированной подсистемы рассмотрим функцио- нальный генератор. Схема модели генератора показана на рис. 3.3. Frequency Рис. 3.3 а Модель генератора обладает следующими возможностями: •г значения амплитуды и частоты сигнала можно задать либо как парамет- ры генератора в его окне диалога, либо через входные порты; форма выходного сигнала генератора (треугольный, прямоугольный или синусоидальный) задается в окне диалога. Вид окна диалога, созданного с помощью редактора маски, показан на рис. 3.4. 303
И. В. Черных. SIMULINK: среда создания инженерных приложений Block Parameters: Sub ystem I OX j Caned | Help | 64» | Puc. 3.4 Название параметра, имя связанной с ним переменной, тип элемента ин- терфейса и его свойства приведены в табл. 3.1. Таблица 3.1 Prompt Variable Гуре Evaluate Tunable Назначение Internal source of frequency signal Internal- freq Окно кон- троля К? Fz Способ задания час- тоты сигнала: внут- ренний или внешний Frequency (Hz) Freq Редактор списка М Kz Частота сигнала Wave form Wave- form Раскры- вающийся список Kz Jv* Форма выходного сигнала, треуголь- ный, прямоугольный или синусоидальный Internal source of magnitude signal Internal- magn Окно кон- троля К? |v* Способ задания амп- литуды сигнала: внутренний или внешний Magnitude Magn Редактор списка к? Fz Амплитуда сигнала Окно редактора маски с открытой вкладкой Parameters, в котором описа- но окно задания параметров генератора, показано на рис. 3.5. 304
3. Маскирование подсистем мни -!□! х| Parameters | Initialization ] Documentation | ”1 (evaluate] Tunable] ЛИИ! Variable Type edit checkbox ▼[' Internal source of magnitude signal jnternaLmagn Magnitude Magn ) Mask edit л Subsystem |Freq Wave_form internal source of frequent j signal [internal freq [checkbox Frequency (Hz) Wave form Dialog parameters Prompl edit I*7 Enable parameter Callback: Unmask | Puc. 3.5 Options for selected parameter Popupsfone per line) In dialog 17 Show parameter 17 17 17 Выбор способа задания частоты (внутренний или внешний) осуществля- ется с помощью блока Selectorl (см. рис. 3.3). Для этого значение параметра Elements блока Selectorl задано как [(Internal freq+l)]. Таким образом, если флажок параметра Internal source of frequency signal выставлен, то числовое значение переменной Internal_freq равно 1, и на выход селектора проходит сигнал от внутреннего источника. Если же флажок снят, то на выход селек- тора проходит сигнал от входного порта системы (т. е. от внешнего по отно- шению к генератору источника) Аналогично с помощью переменной Inter- nal_magn и блока Selector? выполняется выбор способа задания амплитуды. Выбор формы выходного сигнала выполняется также с помощью блока Selector. Треугольный, прямоугольный и синусоидальный сигналы объеди- няются в вектор с помощью блока Мих, а затем в зависимости от числового значения переменной Wave_form блок Selector выполняет выбор нужного элемента входного вектора. Значение параметра Elements блока Selector за- дано как [Wave_form]. Таким образом, если, например, параметр генератора Wave form имеет значение Sine, то числовое значение переменной Wave_form равно 3 и, следовательно, на выход селектора проходит третий элемент входного вектора, т. е синусоидальный сигнал. 305
И. В. Черных. SIMULINK: среда создания инженерных приложений 3.3. Использование команд инициализации Команды инициализации, если это необходимо, следует задавать на вкладке Initialization (рис. 3.6). Команды инициализации представляют собой обычные выражения на языке MATLAB и могут включать любые конструкции, допустимые в языке MATLAB Такие команды, как правило, задают переменные, которые будут находиться в рабочей области маскиро- ванной подсистемы. Эти переменные доступны только внутри подсистемы и могут быть использованы в качестве параметров блоков, входящих в со- став подсистемы, для создания автоматически изменяемых окон задания па- раметров, а также для создания пиктограммы подсистемы. Команды ини- циализации выполняются в следующих случаях: • при открытии окна модели; • при запуске модели на выполнение; • при выполнении команды Edit/Update diagram, • при вращении блока маскированной подсистемы (в этом случае команды инициализации обеспечивают перерисовку пиктограммы); • при автоматическом изменении пиктограммы, зависящей от параметров блока. На вкладке Initialization находятся две панели. Dialog variables: [переменные окна диалога]. Список переменных, заданных в поле Variable на вкладке Parameters. Эти переменные можно использовать в командах инициализации. Initialization commands: [команды инициализации] Выражения на языке MATLAB, которые выпол- няются при инициализации модели. Пример: Рассматриваемая модель функционального генератора может вырабаты- вать сигнал трех видов: прямоугольный, треугольный и синусоидальный. Вполне естественно, что на пиктофамме блока должна быть показана фор- ма выбранного сигнала. Это можно сделать с помощью команды plot(x,y), определенной на вкладке Icon, а векторы задания формы х и у должны быть описаны на вкладке Initialization следующим образом: switch Wave_form c ase 1 % Треугольный сигнал Х=[-6.28 -4.71 -1.57 1.57 4.71 6.28]; у=[0 1-11-1 0]; 306
3. Маскирование подсистем c ase 2 % Прямоугольный сигнал х=[-6.28 -6.28 -3.14 -3.14 0 0 3.14 3.14 6.28 6.28J; у=[0 1 1 -1 -1 1 1 -1 -1 0]; c ase 3 % Синусоидальный сигнал х=(-314*2:314*2)/100; y=sin(x); end; В зависимости от значения переменной Wave_form векторам х и у будут присваиваться разные значения, и, следовательно, на пиктограмме подсис- темы будут построены разные формы Панель Initialization редактора маски с оформленным оператором switch представлена на рис. 3.6. Рис. 3.6 3.4. Создание пиктограммы Пиктограмма подсистемы создается с помощью вкладки Icon (Пикто- грамма) редактора маски (рис. 3.7). 307
И. В. Черных. SIMULINK: среда создания инженерных приложений -> Mask nditor Subsystem . !□! х| Icon | Pirsmeters | Initiwzation | Documentaton | Drawing commands Icon options Frame Visible Rotation Fixed Units Transparency lopaque Examples of drawing commands — Command |<tpoly ₽10tt(-6.28 -6.26),[1.2 -1.2)) ploC((-e.2S B],(0 0]).- plot(x,y): color('vhite'); plot((-10,-10),t-1.2 -1.2]) I Autoscale (show transfer function) Syntax dpotyflO 01]. [1 21|, 2) Unmask | OK | Cancel | Help | Apply Puc.3.7 Вкладка содержит следующие 3 области : Drawing commands: [операторы графики]. Окно ввода графических операторов. Команды рисо- вания являются выражениями допустимыми в языке MATLAB. Icon options: [опции пиктограммы]. В этой области расположены 4 окна раскрывающих- ся списков для задания свойств пикт ограммы: • Frame - отображение рамки пиктограммы: Visible (Видима) и Invisible (Невидима); • Transparency - прозрачность: Opaque (Непрозрачна) и Transparent (Про- зрачна); • Rotation - вращение: Fixed (Фиксировано) и Rotates (Вращение); • Units - способ рисования: Autoscale (Автоматическое масштабирование), когда рисунок занимает максимально возможную площадь внутри пик- тограммы; Normalized (Нормируемое относительно левого нижнего угла пиктограммы (0,0) и правого верхнего угла (1,1)); Pixel (В пикселах). 308
3. Маскирование подсистем Examples of drawing commands: [примеры операторов графики]. В этой области имеется окно раскрывающе- гося списка Command, с помощью которой можно выбрать нужный опера- тор, и строка Syntax, где приводится синтаксис выбранного оператора. Здесь же расположено окно, в котором отображается построенная пикто- грамма. Пример: Для создаваемой подсистемы использованы следующие графические операторы: plot([-6.28 -6.28],[1.2 -1,2]); plot ([-6.28 8), [О 0]>; plot(х,у); color('white'); plot([-10,-10),(-1.2 -1.2]) Первые два оператора строят вертикальную и горизонтальную оси, тре- тий строит форму сигнала, заданную векторами х и у. С помощью послед- них двух команд в левом нижнем углу рисуется точка белого цвета (цвета фона), что позволяет сместить рисунок пиктограммы вправо, чтобы освобо- дить место для надписей портов. Пример, демонстрирующий все 3 варианта пиктограммы генератора, представлен на рис. 3.8. Subsystem SubsysUml Subsystem? Wave form is "sine" Wave form Is Triangular' Wave form Is ’rectangular" Puc. 3.8 Вывод текста Для вывода текста могут использоваться следующие команды: • disp('text') или disp(variablename) - вывод текста ’text' или значения сим- вольной переменной variablename в центре пиктограммы. • text(x, у, 'text') или text(x, у, variablename) - вывод текста 'text' или значе- ния символьной переменной variablename начиная с позиции, заданной координатами х и у. • text(x, у, 'text', 'horizontalAlignment', halign, 'verticalAlignment', valign) - вывод текста 'text' в позиции, заданной координатами х и у, и с указани- ем способов выравнивания относительно этой позиции по вертикали 309
И. В. Черных. SIMULINK: среда создания инженерных приложений и горизонтали. Параметр halign может принимать значения 'left', 'right' или 'center'. Параметр valign может принимать значения 'base', 'bottom' или 'middle' • fprintfflext’) или fprintf('format', variablename) - форматированный вывод (по правилам языка С) текста 'text' или значения символьной переменной variablename в центре пиктограммы. • port_label(port type, port_number, label) - вывод на пиктограмме метки порта. Например, выражение port_label(’input', 1, 'а') выводит на пикто- грамме метку а первого входного порта. Для вывода текста в несколько строк допускается использование симво- ла \п для перехода на новую строку. Пример: Пиктограммы маскированных подсистем с различными вариантами тек- стовых надписей даны на рис. 3.9. Значения текстовых переменных заданы на вкладке Initialization в графе Initialization commands. dispftexO text(10.1O.lext) > text «tring variablename=Text string' dispfvariabtename) Subsysteml text string variablename=text string' text(35,25,varlablename) Subsystem? text(0.5,0.5,Text"horizontalAiignmenr,'center',verticalAlignment','bottom3 variabtename=text\n string' text(0.5,0.5,variabiename.'horizonta (Alignment1,'center',VerticatAlignment'.'bottom) > pl- 3.14000000 • tbrintf(pi=%12.8f.3.14) SubsystemG > pi “3.1415®260e*000 > Subsystem? fprintffpi =%12.8e’,pi) > port A portB > portjabelCinput', 1, port A) portJabelCoutput’, 1. 'port B) Subsystem? Puc. 3.9 Построение графиков Для построения графиков на пиктограмме могут использоваться еле дующие команды: 310
3 Маскирование подсистем • plot(Y) - в том случае, если Y является вектором, то строится график, но оси абсцисс которого откладываются значения индекса элемента, а по оси ординат - значения самого элемента. В том случае, если Y явля- ется массивом - строятся линии для каждого столбца По оси абсцисс в этом случае также откладывается значение индекса элемента. • plot(Xl,Yl,X2,Y2. ) —строятся графики вида Y1(X1), Y2(X2) и т. д. Примеры маскированных подсистем с различными вариантами графиков представлены на рис. 3.10. Значения переменных заданы на вкладке Initiali- zation в графе Initialization commands Отображение передаточных функций Для отображения на пиктограмме передаточной функции используются следующие операторы' • dpoly(num, den) - отображение дробно-рациональной передаточной функ- ции (num - вектор коэффициентов числителя, den - вектор коэффициен- тов знаменателя). Переменной этой функции по умолчанию является символ s; • dpoly(num, den, 'character') - отображение дробно-рациональной переда- точной функции. Переменная этой функции задается символом character; • dpoly(num, den, 'z') - отображение дискретной передаточной функции функции от аргумента z, • dpoly(num, den, 'z-')- отображение дискретной передаточной функции от аргумента 1/z; • droots(z, р, к) - отображение Zpk-формы передаточной функции Для рассматриваемого выражения может быть добавлен четвертый аргумент в форме 'Z' или 'z-' для отображения дискретных передаточных функций 311
И. В. Черных. SIMULINK. среда создания инженерных приложений Пример: Пиктограммы маскированных подсистем с различными вариантами ото- бражения передаточных функций показаны на рис. 3.11. $2*2s+3 dpolyfll 2 3], [4 5 6 ZD 3 p2»2p»3 num=(1 2 3); ’ den= (4 5 6 7J; dpoly(num.derVp) 4s3*5i2+B>+7 4p3+5p2+6p4j Subsystem Subsysteml ’ dpoly((1 2 3). (4 5 6 Zl.« 5 1+2zl3z2 ’ dpolyfn 2 3J. {4 5 6 7]» 4z3*5z2+Cz+7 4+5z'1*6z'3-7r‘3 Subsystem? Subsystems (t4Xs5Xs-e) ’ droots((1 2], (4 5 6J.10) 3 1O(P-1XP2) (P-4XP-5XP-B) ’ droots((1 2I,(4 5 6J.1O,pl SubsystemA Subsystem© 1<Xz.1X*2) > droots((1 2], (4 5 6],10,il 3 lOfz-llXrU) ’ droots<(1 21. (4 5 61,10,4-1 (Z-4XZ-5XZ.6) (Z-l4Xz-l5Xzr1e) Subsystem© Puc. 3. Subsystem? 11 Вывод изображения Для отображения на пиктограмме некоторого изображения из графиче- ского файла используются следующие операторы: • 1таёе(1тгеас1('<имя_файла>') - вывод изображения из файла с заданным именем. Для правильной работы этого оператора необходимо поместить файл изображения в ту же папку, где размещен файл модели, и сделать эту папку рабочей. Допускается также указывать в качестве имени файла полный путь доступа. • image(a, [х, у, w, hl) - вывод изображения, соответствующего перемен- ной а. Ширина и высота выводимого изображения определяются пара- метрами w и h соответственно. Левый нижний угол рисунка расположен в точке с координатами х, у. Прочитать изображение из файла и присво- ить его переменной с помощью оператора а = 1тгеас1('<имя_файла>'). • image(a, [х, у, w, h], rotation) - команда аналогична предыдущей, но по- зволяет задать вращение рисунка. Значение параметра rotation, равное 'on', позволяет поворачивать рисунок вместе с пиктограммой подсистемы. • patch(x, у) - отображение закрашенного многоугольника, координаты которого заданы векторами х и у. Цвет рисунка - черный. • patch(x, у, [г g b]) - команда аналогична предыдущей, но позволяет за- дать цвет рисунка с помощью rgb-палитры. 312
3. Маскирование подсистем Пример: Примеры маскированных подсистем с различными способами вывода изображений показаны на рис. 3.12 image<imread('image_1 bmp)) a=imtead('image_1 bmp), image(a,[0.3 0 31 1]) SIMVI.INK SIMULINK Subsystem Subsystem^ a=imread(lmage_1 bmp), image(a,[0 01 1],‘on) patch®) 51J, [0 1 01) patch®) 511, [0 1 OJ, [1 0.5 0 51) Subsyst*m2 Subsystems Puc. 3.12 Изменение цвета С помощью команды color ('<цвет>') можно изменять цвет текста и гра- фиков. Параметр <цвет> может принимать следующие значения: black (чер- ный), white (белый), red (красный), green (зеленый), blue (синий), yellow (желтый), magenta (фиолетовый), cyan (голубой), gray (серый), orange (оранжевый), lightBIue (светло-синий), darkGreen (темно-зеленый). Пример: С помощью приведенных ниже команд выполняется изменение цвета линий на пиктограмме функционального генератора. Вертикальная ось бу- дет иметь красный цвет, горизонтальная - зеленый, а сам график - синий цвет. color('red'); plot([-6.28 -6.281,(1.2 -1.2]); color(‘green'); 313
И. В. Черных. SIMULINK: среда создания инженерных приложений plot([-6.28 8], [О ОJ > ; color('blue'); plot(х,у); Редактор пиктограмм Для создания пиктограмм можно также использовать редактор пикто- грамм iconedit Для его вызова используется команда iconedit('modelname1,'Subsystem'), где modelname - имя файла модели (без расширения); Subsystem - имя подсистемы, д ля которой будет создаваться пиктограмма. Пиктограмма создается по точкам, расположение которых указывается с помощью мыши. Точки соединяются прямыми линиями. Для того чтобы начать новую линию, необходимо нажать клавишу п на клавиатуре. Для от- мены последней введенной точки используется клавиша d. Выход из редак- тора с автоматическим обновлением пиктограммы осуществляется клави- шей q. По завершении работы с редактором необходимо закрыть его окно. Кроме обновления пиктограммы, завершение работы с редактором пикто- грамм сопровождается выводом в командной строке системы MATLAB графической команды построения пиктограммы. Пример: Пиктограмма, созданная с помощью редактора пиктограмм iconedit, ок- но редактора, а также текст графической команды построения пиктограммы показаны на рис. 3.13. ptot(0,0,100,100,(20,50,8t.50.20],(50,19,5 0,80,50],(40,60,60,40,40],[60,60,40,40,60]) Рис 3.13 314
3. Маскирование подсистем 3.5. Создание справки маскированной подсистемы Для создания описания и справки маскированной подсистемы служит вкладка Documentation (Документация), общий вид которой представлен на рис. 3.14. Рис. 3.14 Вкладка содержит следующие элементы: Mask type: [имя маскированной подсистемы]. Текст, введенный в окне Mask type, ото- бражается в верхней части в качестве имени маскированной подсистемы. Mask description: [описание маскированной подсистемы] В этом окне приводится краткое описание маскированной подсистемы. Mask help: [справка о маскированной подсистеме]. В окне Mask help вводятся команды, обеспечивающие загрузку файлов справки, созданных пользователем. Эти команды описаны в документации по системе Simulink [14, 15]. Наиболее 315
И. В. Черных. SIMULINK: среда создания инженерных приложений удобным форматом файла справки является 1Пт(Н1т1)-формат. Вызов шаб- лона htm-файла справки выполняется командой web([‘file:///‘ which!'helpfile.htm'> ] ); где helpfile.htm - имя файла справки. Для правильной работы справочной системы необходимо, чтобы файл справки находился в той же папке, в которой находится и файл модели, и данная папка являлась рабочей. Допускается также вместе с именем файла указыват ь его полный путь. Пример: Окно справки для функционального генератора, демонстрирующее из- ложенную методику, показано на рис. 3 15. Рис. 3.15 3.6. Динамически обновляемые окна диалога Динамически обновляемое окно диалога - это такое окно, внешний вид которого изменяется в зависимости от значения параметров, заданных в са- мом окне. Например, для рассматриваемой в данной главе модели функцио- нального генератора, в случае выбора внешних способов задания частоты и амплитуды, окна, в которых вводятся эти значения, могут отсутствовать или быть неактивными. Создание динамически обновляемых окон диалога 316
3. Маскирование подсистем осуществляется с помощью функций ответного вызова. Вызов такой функ- ции выполняется на вкладке Parameters (рис. 3.5). При вызове функции можно изменять следующие параметры: MaskEnables: [активность строки ввода]. В случае, если значение MaskEnables для какого- либо параметра будет задано как off, то графа этого параметра в окне диалога будет не активна. В не активную графу нельзя ввести новое значение параметра. Mask Visibilities: [видимость строки ввода]. В случае, если значение Maskvisibilities для какого-либо параметра будет задано как 'off, то графа этого параметра в окне диалога отображена не будет. MaskType: [имя маскированной подсистемы]. MaskDescription: [описание маскированной подсистемы]. MaskPromptString: [строка приглашения]. Предназначена для задания имен параметров маски- рованной подсистемы. MaskValueString: [строка значений]. Предназначена для задания значений параметров маски- рованной подсистемы. Присвоение новых значений вышеперечисленным параметрам выполня- ется с помощью функции sel_param [14]. Для создания динамически обнов- ляемого окна задания параметров необходимо: 1. Выделить блок и ввести в командном окне MATLAB следующее выра- жение: setjparam(gcb, 'MaskSelfModiftable', 'on'). После чего модель необходимо сохранить. Данная команда дает разрешение на динамиче- ское обновление окна диалога. 2. Разработать и ввести текст функций ответного вызова в строке callback. Пример: В модели функционального генератора амплитуду и частоту выходного сигнала можно задавать как в окне диалога, так и от внешних источников, подключаемых к входным портам генератора. В последнем случае соответ- ствующая строка для задания параметра может отсутствовать или быть 317
И. В. Черных. SIMULINK: среда создания инженерных приложений неактивной. Примем, что при выборе внешних источников задания ампли- туды и частоты строка задания частоты должна быть неактивной, а строка задания амплитуды невидимой. Ниже приводится текст функции ответного вызова для параметра Inter- nal_fieq, определяющего способ задания частоты (табл. 3.1): Freq_param = get_param(gcb, 1 Intemal_freq') ; % Присвоение переменной Freq_param значения параметра Internal_freq if stramp(Freq_param,'on') enable={'on *, 'on',' on' , 'on','on'}; else; enable={1 on1,'off1,'on','on','on'}; end set_param(gcb,'MaskEnables'.enable); Функция проверяет значение параметра Internal_freq. Если значение рав- но 'on', то вектор enable имеет все элементы равные 'on', если же значение параметра Intemal_freq равно 'off (используется внешний способ задания частоты), то второй элемент вектора enable имеет значение 'off, и оператор set_parain(gcb, 'MaskEnables', enable) сделает строку ввода второго параметра неактивной. Аналогичным образом выглядит функция ответного вызова для пара- метра Intemaljmagn, определяющего способ задания амплитуды (табл. 3.1): Magn_param=get_param(gcb,'Internal_magn'); % Присвоение переменной Magn_param значения параметра Internal_magn if strcmp(Magn_param,'on') visible={'on',‘on','on','on,on'}; else visible={'on','on','on','on', 'off'}; end set_param(gcb,'Maskvisibilities',visible) Функция проверяет значение параметра Intemal_magn. Если значение равно 'on', то вектор visible имеет все элементы равные 'on', если же значе- ние параметра Internal_magn равно 'off (используется внешний способ зада- ния амплитуды), то пятый элемент вектора visible имеет значение 'off, и оператор setjaram(gcb, 'Maskvisibilities', visible) сделает строку ввода пятого параметра невидимой. 318
3. Маскирование подсистем Block Parameters: Generator Вид окна диалога для внешнего способа задания частоты и амплитуды показан на рис. 3.16. *1 Srgnal Generator (mask) This is region for Signal Generator description Parameters — - - - — Г* Internaksource of frequency signal ! 1 req’zrtX’.’IH.- r—......................................... Wave form |srre VJ Г internal source of mayirtude serial | OK | Cancel | Help j Apply | Puc. 3.16 Из анализа рисунка следует, что при не выставленных флажках способа задания частоты и амплитуды, строка задания частоты является неактивной, а строка задания амплитуды невидимой. < ( 3.7. Управление портами маскированной подсистемы Для того чтобы отобразить на схеме модели генератора различные спо- собы задания частоты и амплитуды сигнала, необходимо уметь управлять портами маскированной системы, отображая на схеме внешние источники задания параметров или удаляя их в случае применения внутренних источ- ников. Для этого необходимо создать такие функции ответного вызова, ко- торые могли бы удалять или восстанавливать порты маскированной систе- мы. Основная идея при этом заключается в том, чтобы в случае, когда внешний источник не используется, заменить входной порт подсистемы на блок Ground, а если внешний источник используется — выполнить обрат- ную замену. Такие замены легко выполняются с помощью команд управле- ния Simulink-моделью. Для наглядности на пиктограмме генератора стан- дартные названия входных портов Ini и 1п2 изменены на М (входной порт для задания амплитуды) и F (входной порт для задания частоты). Пикто- грамма генератора и его схема показаны на рис. 3.17. 319
И В Черных. SIMULINK: среда создания инженерных приложений Frequency "EX_Mask_Subsystem_10/Gen * File Edit View Simulation Fermat Tools Help Текст функции ответного вызова, управляющей заданием частоты, при- веден ниже. % Первая часть (управление окном диалога) Freq param = get_param(gcb,’Internal—freq'); if strcmp(Freq_param,'on') enable = {'on','on','on','on','on'}; else enable = {'on’,'off','on’,'on','on’}; end set_param(gcb,'MaskEnables’,enable) % Вторая часть (управление портами) Magn—param = get_param(gcb,’Internal—magn'); % Присвоение переменной Magn_param значения параметра lnternal_magn %(способ задания амплитуды:внутренний или внешний). In_2_BlockType = get_param([gcb,'/F'],'BlockType'); % Определение типа блока, имеющего метку F. if strcmp(Freq_param,’on')&(In_2—BlockType==’Inport1); % Если значение переменной Freq param равно 'on' % (внутренний способ задания частоты), а блок с меткой 320
3. Маскирование подсистем % F - это блок 'Inport', то выполняется его замена % на блок Ground. replace_block(gcb,’Name','F','Ground','noprompt') % Порт с меткой F с пиктограммы исчезает. end if strcmp(Freq param.'off')&(In_2_BlockType=='Ground') % Если значение переменной Freq_param равно 'off' % (внешний способ задания частоты), а блока с меткой F - зто % блок 'Ground', то выполняется его замена на блок Inport. replace_block(gcb,'Name','F','Inport','noprompt') % На пиктограмме появляется порт с меткой F. end if strcmp(Freq_param,'off')bstrcmp(Magn_param,'off') % Если значения переменных Freq param и Magn_param равны % 'off' (частота и амплитуда генератора задаются извне, % то должна быть выполнена проверка правильности нумерации % входных портов. Порт с меткой М должен быть первым, % а порт с меткой F - вторым. Port_l_param = get_param([gcb,'/М'],'port'); % Переменной Port_l_param присваивается номер порта с меткой М. Port_2_param = get_param([gcb,'/F'],'port'); % Переменной Port_2_param присваивается номер порта с меткой F. if (Port_l_param = = ' 2 ' ) & (Port_2_param = = ' 1') ,- % Если нумерация портов нарушена, то порт с меткой F % временно заменяется на блок Ground. replace_block(gcb,'Name','F','Ground','noprompt') replace_block(gcb,'Name','F'. 'Inport','noprompt') % Блок с меткой F заменяется на входной порт, end end Первая часть функции управляет окном диалога (она полностью повто- ряет приведенную в предыдущем параграфе), а вторая часть выполняет управление входным портом F (задание частоты) и содержит операторы, ко- торые проверяют правильность нумерации портов и восстанавливают нуж- ную нумерацию, если она нарушена. 321
И, В. Черных. SIMULINK: среда создания инженерных приложений Функция ответного вызова, определяющая способ задания амплитуды, аналогична приведенной выше и дается без комментариев: % Первая часть (управление окном диалога) Magn_param=get_param(gcb,'Internal_magn'); if stremp(Magn_param,'on'); visible={'on', 'on', 'on', 'on1, 'on ' } ; else; visible={'on','on','on','on','off}; end; set_param(gcb,'MaskVisibilities'.visible); % Вторая часть (управление портами) Freq param=qet_param(gcb, ' Internal_freq' ) ; In_l_BlockType=get _param([geb,'/М'],'BlockType'); if stremp(Magn_param,'on')&(In_l_BlockType=='Inport'); replace_block(geb,'Name','M','Ground','noprompt') end; if stremp(Magn_param,'off')&(In_l_BlockType= ='Ground'); replace_block(gcb,'Name','M','Inport','noprompt') end; if stremp(Freq param.'off')bstremp(Magn_param,'off') Port_l_param=get _param([geb,'/М'], 'port'); Port—2_param=get_param([geb,'/F'],'port'); if (Port_l_param = = '2')&(Port_2_param = = '1') replace_block(geb, 'Name', 'F', 'Inport', noprompt *) end; end; * Первая часть функции управляет окном диалога, и аналогична приве- денной в предыдущем параграфе Вторая часть - управляет первым вход- ным портом подсистемы и содержит операторы, которые проверяют пра- вильность нумерации портов и восстанавливают нужную нумерацию, если она нарушена. На рис. 3.18 приведена модель генератора для случая, когда способ зада- ния амплитуды является внутренним, а способ задания частоты - внешний. 322
3. Маскирование подсистем Block Parameters: Gen Signal Generator (mask) —--------- --------—--—«-------- ! This is region for S tgnal Generator description L... ---------*----------_-------------—.—-— -Parameters--------- —---------------7----- — J Г internal source of frequency signa] I Frequency fi M ' I5 ........................ Wave lam | triangular p Internal souice of magnitude signal Magnitude |i j OK j Cancel | Help | Puc. 3.18 Из анализа рисунка следует, что при выборе внутреннего способа зада- ния амплитуды (выставлен флажок Internal source of magnitude signal) соот- ветствующий входной порт на пиктограмме отсутствует, а в самой модели генератора входной порт М заменен блоком Ground. При этом амплитуда задается блоком Constant2 внутри подсистемы, а частота сигнала - от внеш- него источника через входной порт с меткой F. 323
4. интерфейс системы simulink С ПРОДУКТАМИ СЕМЕЙСТВА MATLAB 6 Система Simulink представляет собой систему графического программи- рования структурных схем. Потребность в такой системе возникает при ра- боте со многими пакетами программ, где структурная схема является неотъ- емлемой частью исследуемого объекта. Поэтому в составе программных продуктов семейства MATLAB 6 можно встретить пакеты программ и на- боры блоков, предназначенные для моделирования летательных аппаратов (Aerospace Blockset), электрических систем (SimPowerSystems), связи и ком- муникаций (Communications Blockset), систем управления (Control System Toolbox), пультов управления и приборных досок (Dials&Gauges Blockset), цифровой обработки сигналов (DSP Blockset), реализации операций с фик- сированной точкой (Fixed-Point Blockset), систем реального времени (Real- Time Workshop). Прн установке на компьютере этих программных продук- тов все библиотеки блоков оказываются доступными для формирования структурных схем. Это обусловлено тем, что система Simulink имеет интер- фейс с этими системами. Ниже мы рассмотрим только интерфейс системы Simulink с системой MATLAB и ИС LTI-Viewer пакета программ Control System Toolbox, а также набор инструментов Simulink Performance Tools. 4.1. Интерфейс с системой MATLAB При разработке графического интерфейса пользователя, создании S-функ- ций, решении других задач, требующих управления конфигурацией и параметрами Simulink-моделей, возникает необходимость использовать операторы языка MATLAB. С помощью них можно открывать и закрывать модель, запускать моделирование, добавлять и удалять блоки, изменять их параметры, выполнять многие другие операции. Справку о том или ином операторе можно получить, набрав в командной строке системы MATLAB команду следующего вида: help <имя_оператора> Ниже приведено описание операторов системы MATLAB для работы с системой Simulink из командной строки. Операторы расположены в алфа- витном порядке. ЛМЛОГ/МИФИ 324
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 add block | Добавить блок Назначение: Добавить новый блок в модель. Синтаксис: add_block('src1,'dest') Команда добавляет блок с именем 'src' в модель с именем dest1. add_block('src',’dest','parameter!',valuel,...) Команда добавляет блок с именем 'src' в модель с именем dest' и уста- навливает значения параметров блока. 7 Пример 1: Команда add_block('built-in/Gain', 'EX_add_block/Gain') добавляет в мо- дель EX_add_block.mdl усилитель Gain из встроенной библиотеки блоков системы Simulink. ГТ , "Т Пример 2: ci р Команда add_block('EX_add_block/ In)', 'EX_add_block/My_Subsystem/ Ini') копирует блок входного порта Ini из модели EX_add_block.mdl в под- систему My_Subsystem той же модели. ( Пример 3: Команда add_block('built-in/Constant', lEX_add_block/Constant', Value', '150') добавляет в модель EX_add_block.mdl блок Constant и устанавливает пара- метр Value равным 150. add llne~~] Добавить линию Назначение: Добавить новую линию связи в модель. Синтаксис: h = add_line('sys','oport','iport') Команда добавляет новую линию связи в схему модели с именем sys от выходного порта oport к входному порту iport. Параметры oport и iport задают полные пути доступа. h = add_line('sys','oport','iport','autorouting','on') Команда аналогична предыдущей. Дополнительный параметр autorouting (автоматическая трассировка), значение которого равно on, обеспечивает создание линии без пересечения пиктограмм блоков. По умолчанию значе- ние этого параметра off. 325
И. В. Черных. SIMULINK: среда создания инженерных приложений h = add_line(‘syspoints) Команда добавляет новую линию связи в схему модели sys в соответст- вии с координатами, заданными аргументом poinls. Началом системы коор- динат окна модели считается левый верхний угол. Пример 1: Команда addline('EX_add line', 'Step/Г, 'Sum/2') добавляет новую линию связи в схему модели EX_add_line.mdl между выходом блока Step (блок имеет один выход) и вторым входом блока Sum. Пример 2: Команда add_line('EX_addJine', 'Step 1/Г, 'Sum/2', ‘autorouting', 'on') до- бавляет новую линию связи в схему модели EX_add_line.mdl между выхо- дом блока Stepl и вторым входом блока Sum при включенном режиме автома- тической трассировки. ПримерЗ: Команда add_line('EX_add_line', [20 55; 40 10; 60 60]) добавляет новую линию связи в схему модели EX_add_line.mdl в соответствии с координата- ми, заданными массивом [20 55;40 10;60 60]). add param | Добавить параметр Назначение: Добавить новые параметры в модель. Синтаксис: Команда add_param('sys', valuel, value2...) добавляет в модель sys новые параметры parameterl, parameter2... и присваивает им значения valuel, value2... Новые параметры доступны командам get_param, set_param и ни- чем не отличаются от стандартных параметров Simulink-модели. Следует заметить, что имена параметров нечувствительны к выбору регистра, а зна- чения параметров чувствительны. Пример: Команда add_param('EX_add_param', 'data', '01 December 2002’, 'time', '21.00') добавляет в модель EX_add_param.mdl новые параметры data и time и при- сваивает им значения '01 December 2002' и '21.00' соответственно. 326
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 bdclose | Закрыть модель без сохранения изменений Назначение: Команда закрывает одну Simulink-модель или все модели без сохранения изменений. Синтаксис: Л 'Я bdclose Команда закрывает активную модель. bdclose(’sys’) Команда закрывает модель sys. bdclose(’all ’) Команда закрывает все открытые модели Пример: Команда bdclose('my_niodel') закрывает модель my_model.mdl. bdroot | >' bbi Определить имя модели :’)t < Назначение: Определяет имя модели (подсистемы верхнего уровня). Синтаксис: bdroot Команда возвращает имя активной модели. bdroot (' obj 1) /• Команда возвращает имя модели, содержащей объект obj. Пример: Команда bdroot(gcb) возвращает имя модели, которая содержит выде- ленный блок. close system | Закрыть модель с сохранением изменений Назначение: Команда закрывает модель с сохранением изменений. Синтаксис: close_system Команда закрывает модель или подсистему. Если модель или подсисте- ма была изменена, то на экран будет выведено окно с запросом о сохране- нии изменений. 327
И. В. Черных. S1MUHNK: среда создания инженерных приложений close_system('sys') Команда закрывает модель или подсистему с указанным именем sys. close_system('sys',saveflag) Команда закрывает модель или подсистему и в зависимости от парамет- ра saveflag выполняет или не выполняет сохранение изменений. В случае, если параметр saveflag равен 0, изменения не сохраняются. Если же значе- ние параметра равно 1, то внесенные в модель или подсистему изменения сохраняются close_system('sys','newname') Команда сохраняет модель sys под новым именем newname. close_system('blk') Команда закрывает окно диалога блока, полный путь которого задан па- раметром blk, или вызывает функцию CloseFcn, если такая функция для блока определена Пример /. |< 1 Команда close_system('my_moder, 'new_model') сохраняет модель my_mo- del.mdl под новым именем new_modelmdl. Пример 2: Команда close_system('my_moder, 1) сохраняет модель my_model.mdl со всеми изменениями. compare model Назначение: Сравнение моделей. Синтаксис: Сравнить модели compare_model('modell','model2', 0) Команда выполняет сравнение моделей modell.mdl и model2.mdl, воз- вращая массив ячеек, который содержит информацию о различиях. compare_model('modell','model2',1) Команда отличается от предыдущей тем, что выявляет только неграфи- ческие отличия. delete block | Назначение: Удалить блок из модели. Удалить блок 328
4 Интерфейс системы SIMULINK с продуктами семейства MATLAВ 6 Синтаксис: delete_block('blk' ) Команда удаляет блок с именем blk. Пример: Команда delete_block('EX_delete_block/My_Subsystem/Inl') удаляет вход- ной порт Ini из подсистемы My_Subsystem модели EX_delete_block.mdl. delete line | Удалить линию Назначение: ч Удалить линию связи. Синтаксис: delete_line('sys','oport','iport1) Команда удаляет линию связи в модели sys от выходного порта oport ко входному порту iport. Параметры oport и iport задают полные пути блоков. delete_line('sys',[х у]) Команда удаляет линию связи, которой принадлежит точка с координа- тами х, у. Пример!: >' Команда delete_line('EX_delete_line', 'Step/Г, 'Sum/2') удаляет линию свя- зи в модели EX_delete_line.mdl между выходом блока Step (блок имеет один выход) и вторым входом блока Sum. Пример?: Команда delete_line('EX_delete_line', [20 55]) удаляет линию связи, кото- рой принадлежит точка с координатами (20, 55). delete param | Удалит ь параметр Назначение: Удалить параметры модели. Синтаксис: delete_param('sys','parameterl','parameters Команда удаляет из модели sys параметры parameterl, parameter2... Пример: Команда delete_param('EX_delete_param', 'data', 'time') удаляет из модели EX_delete_param.mdl параметры data и time. 329
И. В. Черных. SIMULINK: среда создания инженерных приложений find system | Найти S-объект Назначение: Поиск моделей (подсистем) блоков, линий, портов и текстовых описаний. Синтаксис: find_system(sys,'cl *,cvl,’ c2 1 ,cv2,...'pl',vl,' p21,v2,...) Команда выполняет поиск моделей (подсистем), блоков, линий, портов и их описаний, полный путь доступа к которым задан аргументом sys, с учетом опций, заданных параметрами cl, с2, которые принимают значения vl, v2. *" Допустимые опции приведены в табл. 4.1, а значения используемых по умолчанию параметров указаны в фигурных скобках. Таблица 4.1 Опция Значение Описание ’SearchDepth’ scalar Устанавливает глубину поиска (0 - только для открытых систем, 1 - для блоков н под- систем верхнего уровня, 2 - для системы верхнего уровня и ее дочерних подсистем. Значение по умолчанию all - все уровни 'LookUnderMasks' 'none' Пропуск маскированных блоков ('graphical'} Поиск внутри маскированных блоков, не имеющих окон диалога и рабочей области маски. Этот параметр используется по умол- чанию 'functional' Поиск внутри маскированных блоков, не имеющих окон диалога 'all' Поиск внутри всех маскированных блоков 'FollowLinks' 'on'| ('off} Если параметр имеет значение 'on', то отсле- живаются связи с библиотечными блоками. Значение по умолчанию 'off 'FindAll' 'on'| {’off} Если параметр имеет значение on', то по- иск распространяется иа линии, порты и текстовые описания в пределах текущей модели. Значение по умолчанию off 'CaseSensitive' fon'Jl'off Поиск с учетом регистра символов (при по- иске строковых параметров). Значение по умолчанию 'on' 'RegExp' 'on'| ('off} Если параметр имеет значение 'on', то допус- кается проводить поиск с использованием шаблонов. Значение по умолчанию 'off 330
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 Для поиска с использованием шаблонов можно применять специальные символы, приведенные в табл. 4.2. Таблица 4.2 Символ Описание • Заменяет любой символ. Например, шаблону 'а.' соответствуют выражения 'аа', 'ab', 'ас' и т. п. * Заменяет любую последовательность символов (включая пустую). Например, шаблону 'а*' соответствуют выражения 'a', 'ab', 'abc' Шаблону '.*' соответствует любая строка, в том числе и пустая + Заменяет любое количество предшествующих символов. Напри- мер, шаблону 'ab+' соответствуют выражения 'ab', 'abb', 'abbb' Л Отмечает начало последовательности символов. Например, шаб- лону ,Ла' соответствует любая строка, начинающаяся с символа 'а' $ Отмечает последний символ строки символов. Например, шабло- ну 'Sa' соответствует любая строка, заканчивающаяся символом 'а' \ Предписывает считать следующий символ обычным текстовым символом. Например, шаблон W соответствует строке, содержа- щей символ V [] Определяет набор символов в выражении поиска. Например, шаблон 'Поа]г' соответствует выражениям 'for1 и 'far'. Символ (-) задает диапазон символов. Например, шаблон '[a-zA-ZI-9]' соответствует всем алфавитно-цифровым символам. Символ (Л) определяет исключаемые символы при поиске. Например, шаблон 'f[Ai]r' соответствует строкам 'far' and 'for', но не соответствует строке 'fir' \w Задает поиск строк, содержащих только алфавитно-цифровые символы. Например, шаблон ,A\w' соответствует строке 'mu', ио не соответствует строке '&mu' \d Задает поиск строк, содержащих только цифровые символы. На- пример, шаблон 4d+' задает поиск любого целого числа \D Задает поиск строк, не содержащих цифровых символов (аналог шаблона (А0-9]) \s Задает пробел в выражении поиска (аналог шаблона ( \t\r\n\f]) \S Исключает пробелы из выражения поиска (аналог шаблона [A\t\r\n\f]) \<WORD\> Задает поиск слова (последовательности символов, отделенных с обеих сторон пробелами). Например, шаблону "\<1о\>' соответст- вует слово 'to', ио не соответствует слово 'today' 331
И. В. Черных. SIMULINK: среда создания инженерных приложений Пример 1: Команда find_system возвращает массив ячеек, содержащих имена всех открытых подсистем и блоков. Пример 2: Команда find_system('type', 'block-diagram') возвращает массив ячеек, со- держащих имена всех открытых моделей. Пример 3: Команда find_system('my_moder, 'SearchDepth', 2, 'BlockType', 'Product') выполняет поиск блоков умножения Product в модели my_model.mdl н в ее вложенных подсистемах. Пример 4: Команда find_system('my_model', 'BlockType', 'Constant', 'Value', '100') вы- полняет поиск блоков Constant, у которых значение параметра Value рав- но 100. Пример 5: Команда find_system('my_moder, 'regexp', 'on', 'blocktype', ’port') задает поиск входных и выходных портов в модели my_model.mdl. gcb | Получить путь доступа к текущему блоку Назначение: Определить путь доступа к текущему блоку. Синтаксис: gcb Команда возвращает полный путь доступа к текущему блоку. gcb('sys') Команда возвращает полный путь доступа к текущему блоку в модели sys. Под текущим блоком понимается блок, выделенный в окне модели. Это может быть блок, который выполняется в данный момент времени под управлением S-функции; блок, для которого выполняется функция ответно- го вызова; маскированный блок, для которого выполняется функция ини- циализации. Команду удобно использовать при работе с операторами определения и установки параметров get_param и set_param. Пример : Команда get_param(gcb,'Gain') для текущего блока Gain возвращает зна- чение параметра Gain. 332
4 Интерфейс системы SIMULINK с продуктами семейства MATLAВ 6 дев | Получить путь доступа к текущей модели Назначение: Определение пути доступа к текущей модели. Синтаксис и правила использования этой команды аналогичны команде gcb. get perem | Определить значение параметра Назначение: Получить значения параметров модели или блока Синтаксис: get_param(’obj',’parameter') Команда возвращает значение параметра parameter для объекта, полный путь доступа к которому задан аргументом obj. Пример I: Команда get_param('EX_get_param/Constant', 'Value') определяет значе- ние параметра Value блока Constant модели EX^get_param.mdl. Пример 2: Команда get_param('EX_get_parain/Constant’, 'ObjectParameters') опреде- ляет все атрибуты блока Constant модели EX_get_param.mdl. Пример 3: Команда get_parain('EX_gel_param/Constant', 'DialogParameters') опреде- ляет параметры задаваемые в окне диалога блока Constant модели EX_get_param.mdl. Пример 4: Команда get_param('EX_get_param’, 'MaxStep') определяет значение па- раметра MaxStep (максимальный шаг расчета) модели EX geCparam.mdl. model | Выполнить отдельный этап моделирования Назначение: Выполнение отдельного этапа моделирования. Синтаксис: [sys,хО,str,ts ]=model(t,x,u,flag) Функция позволяет выполнить отдельный этап моделирования в соот- ветствии со значением переменной flag. Назначение остальных переменных 333
И. В Черных SIMULINK среда создания инженерных приложений описано в разделе, посвященном написанию S-функций. Переменная flag может принимать следующие значения: • 'sizes’ - выполняется этап инициализация модели, • 'compile' - выполняется этап компиляции модели. Выполнение функции с этим значением аналогично выполнению опции Update Diagram (Ctrl-D) меню Edit; • 'update' - обновление значений переменных в момент времени t; • 'outputs' - вычисление значений выходных переменных в момент време- ни Г, • 'deriv' - вычисление производных переменных состояния в момент вре- мени Г, • 'term' - завершение моделирования. Пример: Команда model ((1, | J, [ J, 'sizes') выполняет этап инициализации модели model.mdl newaystem | Создать модель Назначение: Создание новой модели. Синтаксис: new_system('sys *) Команда создает новую модель sys. При этом окно модели не открывает- ся. Для открытия окна следует использовать команду open_system('sys'). Пример: Команда new_system('my_model') создает модель my_model.mdl. openeystem ~| Открыть объект Назначение: Команда открывает окно модели, подсистемы, окно диалога блока. Синтаксис open_system('sys1) Команда открывает модель sys.mdl. open_system('blk') Команда открывает окно диалога блока blk модели sys.mdl. 334
4 Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 open_systein( ' sys/Subsystem' , ' force ') Команда открывает маскированную подсистему Subsystem модели sys.mdl Команда аналогична опции меню Look Under Mask. Пример 1: Команда open_system('my_moder) открывает модель my_model.mdl. Пример 2: Команда open_system( my_model/Constant') открывает окно диалога бло- ка Constant модели my_model.mdl. Пример 3: Команда open_system('my_model/Subsystem') открывает окно маскиро- ванной подсистемы Subsystem модели my_.model.mdl. replace block Заменить блок Назначение: Команда выполняет замену одного блока другим. Синтаксис: replace_block('sys','blkl','blk2',1noprompt') Команда заменяет все блоки типа blkl на блоки Ь1к2 модели sys без за- проса на подтверждение операции Если Ь1к2 не является библиотечным блоком, то требуется указать полный путь к блоку. replace_block(1sys', 1 Parameter 1, 1 value','blk Команда заменяет все блоки, параметр которых Parameter равен value, на блоки blk модели sys. Пример 1 Команда replace_block(’EX_replace_block', 'Step', 'Inport', 'noprompt') заме- няет в модели EX replace block mdl блок Step на блок Inport без запроса на подтверждение операции. Пример 2: Команда replace_bIock('EX_replace_block', 'Value', '100', 'Gam', 'noprompt') заменяет в модели EX_replace_block.mdl блоки, параметр которых равен 100, на блоки Gain без запроса на подтверждение операции. save system | Сохранить модель Назначение: Сохранение файла модели. 335
И. В. Черных. SIMULINK; среда создания инженерных приложений Синтаксис. save_system Сохранение открытой модели под текущим именем. save_system('sys') Сохранение модели sys под текущим именем. save_system('sys1,'newname') Сохранение модели sys под новым именем newname. Пример 1: Команда save_system('my_moder) сохраняет модель в файле my_.model.mdl. Пример 2: Команда save_system('my_model, 'new_model') сохраняет модель в файле new_model.mdl. set param~| Задать параметр Назначение: Установка параметров модели или блока. Синтаксис: set_param('obj',1parameterl'.valuel,'parameter2',value2,...) Команда выполняет присваивание новых значений valuel, value2... па- раметрам parameterl, parameter?... модели (блока) obj. Следует заметить, что имена параметров нечувствительны к выбору регистра, а значения па- раметров чувствительны. Пример 1: Команда set_param('EX_set_param', 'Solver', 'ode 15s', 'StopTime', '100') ус- танавливает для модели EX_set_param.mdl метод решения (параметр Solver) odel5s и время окончания моделирования (параметр StopTime) 100. Пример 2: Команда set_param(’EX_set_param/Step‘, 'After', '1.5') устанавливает пара- метр Final Value блока Step модели EX set jiaram.mdl равным 1.5. Пример 3: Команда set_param(’EX_set_param/Transfer Fen', 'Numerator', '[5 7 9]', 'Deno- minator', '[2 3 0]') устанавливает параметры блока Transfer Fen таким обра- зом, чтобы получить передаточную функцию следующего вида: 5j2+7t + 9 2?+Зт 336
4, Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 Команду можно применять для изменения параметров модели или блока в процессе моделирования. Однако не все параметры блоков можно изме- нять таким способом. Например, нельзя изменить в процессе моделирова- ния размеры входных и выходных портов, параметры блоков библиотеки Power System Blockset. Следует также иметь в виду, что имя параметра, присвоенное в окне диалога, может отличаться от имени переменной (фактическое имя), кото- рой присваивается значение параметра. Так например, для блока Step пара- метр Initial Value имеет фактическое имя Before, а параметр Final Value - имя After. Для определения фактических имен параметров следует в каком- либо текстовом редакторе открыть файл модели и просмотреть секцию, где описан нужный блок. Приведем пример текстового описания блока Step в файле модели. Block { BlockType Step Name "Step" Position [125, 75, 155, 105] Time "0.1" Before "10" After "20" SampleTime "0” VectorParamslD on } Из приведенного фрагмента хорошо видно, какие фактические имена имеют параметры данного блока. sim Выполнить моделирование Назначение: Запуск модели на выполнение. Синтаксис: [t.x,y] = sim('model', timespan, options,ut) Функция выполняет моделирование системы с именем model.mdl. До- полнительные входные аргументы: • timespan - массив, содержащий границы времени моделирования [tStart tFinalj; • options - структура, созданная функцией simset и содержащая параметры модели; • ut - входные сигналы. 337
И. В. Черных. SIMULINK: среда создания инженерных приложений Возвращаемые значения: • I - вектор времени; • х - вектор переменных состояния, • у - вектор выходного сигнала. Пример: Команда simCmodel’) запускает файл model.mdl на выполнение. simget Создать структуру параметров модели Назначение: Создание или изменение структуры, содержащей параметры указанной модели. Синтаксис: struct = simget(model) Функция создает структуру struct, в которой сохраняются параметры мо- дели model, mdl. value = simget(model,property) Функция присваивает переменной value значение параметра property модели model.mdl. value = simget(Optionstructure,property) Функция присваивает переменной value значение параметра property, заданное в структуре OptionStructure. Пример: Команда refine = simget('vdp', 'Refine') присваивает переменной refine значение параметра Refine модели vdp.mdl. simpiot Построить графики Назначение: Построение графиков по данным из рабочей области системы MATLAB Синтаксис: simpiot(data) Команда строит график по данным, содержащимся в структуре data simpiot(time,data) Команда строит график по данным, содержащимся в векторах time и data. 338
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 simset j Изменить параметры модели Назначение: Создание или изменение структуры, содержащей параметры модели. Синтаксис: options = simset(property,value,...) Функция создает структуру options, в которой параметру property при- сваивается значение value. options = simset(old_opstruct, property, value, ...) Функция создает структуру options на основе структуры old opstruct, в которой параметру property присваивается значение value. options = simset(old_opstruct, new_opstruct) Функция создает структуру options путем комбинации структур old_opstruct и new opstruct. Если в структурах имеются одинаковые поля, то данные берутся из структуры new_opstruct. Пример: Функция myopts = simset('MaxDataPoints', 100, 'Refine', 2) создает струк- туру myopts, в которой параметру MaxDataPoints присваивается значение 100, а параметру Refine - значение 2. simulink | Запустить обозреватель библиотеки Simulink Назначение: Команда открывает окно библиотеки блоков системы Simulink. Синтаксис: simulink sldiscmdi"] Построение дискретной модели Назначение: Построить дискретную модель. Синтаксис: sldiscmdi(’sys’,sampletime,'method',cf,{options}) Команда выполняет построение дискретной модели для модели sys. mdl с тактом дискретности samplctime. В качестве дополнительных параметров могут быть указаны метод экстраполяции 'method', критическая частота cf и другие параметры в виде массива ячеек options. 339
И. В. Черных. SIMULINK.: среда создания инженерных приложений Пример 1: Команда sldiscmdlfmoder, 1.0) выполняет построение дискретной модели для динамической модели model.mdl с тактом 1 с. Пример 2 Команда sldiscmdlf model',[1.0 0.1 ],'zoh') выполняет построение дискрет- ной модели для динамической модели model.mdl с тактом 1 с и задержкой 0.1 с, используя метод экстраполяции нулевого порядка. l,mdldtecul । CUI-ндтерфейе "остро™». рискрстной модерн Назначение Запуск графического интерфейса построения дискретной модели. Синтаксис: slmdldiscui('name’I Команда запускает графический интерфейс построения дискретной мо- дели и открывает модель или библиотеку с именем name.mdl. Пример: Команда slmdldiscui(’model') запускает графический интерфейс построе- ния дискретной модели для системы с именем model.mdl. 4.2. Интерфейс с ИС LTI-Viewer Инструментальное средство LTI-Viewer входит в состав пакета приклад- ных программ Control System Toolbox и предназначено для анализа линей- ных стационарных систем. С помощью этого инструмента можно легко по- строить частотные характеристики исследуемой системы, получить ее отклики на единичное ступенчатое и импульсное воздействия, найти нули и полюса системы и т. д. Правила работы с ИС LTI-Viewer в среде системы Simulink приведены ниже. Запуск LTI-Viewer 1. Выполнить опцию Linear Analysis... меню Tools в окне Simulink-модели. В результате откроется окно Model_Inputs_and_Outputs, как это показано на рис. 4.1, а также пустое окно ИС LTI-Viewer. 340
4 Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 '["EX S_.LT~ .lOl xf! file Edit View Simulation Format loole Help Puc. 4.1 2. Установить блок Input Point в начале, а блок Output Point в конце участка исследуемой системы, как это показано на рис. 4.2. EX S LTl V* „|р|х| Lite Edit View Simulation Format Tools Help Trinsfat Fen 1 Puc. 4.2 3. В окне LTI Viewer инициировать опцию Get Linearized Model меню Simulink. В результате будет выполнена линеаризация участка модели и построена реакция линаризованной системы на единичное ступенчатое воздействие (рис. 4.3). 341
И В. Черных. SIMULINK: среда создания инженерных приложений 9 LTI Viev/er: EX 5 LT1 V Если система имеет несколько входов и выходов и для всех них установлены блоки Input Point и Output Point, то на графике будет отображено несколько окон, показывающих реакцию каждого выхода на каждый вход. 4 Для получения других характеристик необходимо использовать опцию Plot Configurations, меню Edit В результате откроется окно Plot Confi- gurations (рис. 4.4). 342
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 В этом окне можно выбрать вид отображаемых графиков (область Response type) и способ их размещения (область Select a response plot configuration). Доступны следующие типы графиков и диаграмм: • Step - реакция на единичное ступенчатое воздействие, • Impulse - реакция на единичное импульсное воздействие; • Bode - логарифмические амплитудная и фазовая частотные характери- стики, • Bode Magnitude - логарифмическая амплитудная частотная характери- стика, • Nyquist - диаграмма Найквиста; • Nichols - годограф Николса; • Sigma - сингулярные числа, • Pole/zero - нули и полюса системы. На рис. 4.5 показано окно LTI-Viewer с различными характеристиками исследуемой системы. 343
И. В. Черных. SIMULINK.. среда создания инженерных приложений Оформить внешний вид графиков - выбрать тип и цвета линий, тип мар- керов и т п. - можно с помощью опции Line Styles... меню Edit. Настройка LT1-Viewer Опция меню EditWiewer Preferences... позволяет выполнить следующие виды настройки: 1. Установить единицы измерения (вкладка Units). Вид окна при настройке единиц измерений показан на рис 4.6. Вкладка Units позволяет задать единицы измерений частоты (рад/с или Гц), уровня (dB или абсолютные единицы), фазы (градусы или радианы), а также установить масштаб оси частот (логарифмический или линей- ный). Рис. 4 6 2. Установить стиль графиков (вкладка Style). На этой вкладке можно вы- полнить настройку шрифтов (область Fonts), выбрать цвет фона (область Colors), а также задать или отменить вывод сетки (флажок Show grids). Внешний вид вкладки Style показан на рис. 4.7. 344
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 ОК [ Cancel | Help | Apply Рис. 4.7 3. Установить параметры характеристик переходного процесса (вкладка Characteristics). Данная вкладка позволяет изменить параметры времени нарастания и длительности переходного процесса, первоначально уста- новленные по умолчанию. Так, например, ИС LTI-Viewer вычисляет по умолчанию время переходного процесса как время, когда переходная функция входит в 2 % зону и в дальнейшем не выходит из нее (параметр Show setting time within). У нас принято указывать 5 % зону. Также мож- но изменить параметры для времени нарастания переходного процесса (Show rise time from). На данной вкладке имеется еще и флажок Unwrap phase, установка которого позволяет избежать разрывов при отображе- нии фазовой частотной характеристики. Внешний вид вкладки Character- istics показан на рис. 4.8. 345
И. В. Черных SIMULINK: среда создания инженерных приложений 4. Установить векторы засечек времени и частоты (вкладка Parameters) для расчета переходного процесса (область Time Vector) и частотных харак- теристик (область Frequency Vector). Внешний вид вкладки Parameters показан на рис. 4 9 .=131 *1 J LTI Viewer Preferences 346
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 Векторы засечек времени и частоты можно генерировать в автома- тическом режиме (Generate automatically), указав длительность процесса (Define stop time) или диапазон значений частот (Define range), либо задать непосредственно вектор засечек времени и/или частоты (Define vector). Экспорт модели Опция Export меню File позволяет выполнить экспорт линеаризованной модели в рабочую область MATLAB или в файл в виде матриц уравнений в пространстве состояний При этом открывается окно диалога (рис. 4.10), в котором необходимо выбрать вариант экспорта. '”1 Setocl Modcie to Export •J LTI Viewer Export Model Size Class Export AS EX_S_LTI_VJ 1x1 ss EX_S_LTI_V_1 . — | ExpcrttoWxlspace~] Export to Disk | Cancel Help Puc. 4.10 В случае экспорта в рабочую область системы MATLAB в ней появ- ляется структура с именем имя модели_1 (при последующих операциях экспорта имя_модели_2, имямоделиЗ и т. д.). Для модели с именем EX S LTI V.mdl имя структуры будет EXSLTIV I. Для просмотра матриц необходимо ввести в командной строке системы MATLAB имя структуры и нажать клавишу Enter. В командном окне появится распечатка соответствующих векторов и матриц: » EX_S_LTI_V_1 % Ввод с клавиатуры (символы » не вводятся) EX_S_LTI_V/T EX_S_LTI_V/T EX_S_LTI_V/T EX_S_LTI_V/T -0.5 -1 -10 EX_S_LTI_V/T 1 0 0 EX_S_LTI_V/T 0 1 -10 347
И. В. Черных. SIMULINK: среда создания инженерных приложений ь = Input Point 1 0 0 EX_S_LTI_V/T EX_S_LTI_V/T EX_S_LTI_V/T с Output Point EX_S_] LTI_V/T 0 EX_S_LTI_V/T 1 EX_S_LTI_V/T 0 d Output Point Input Point 0 Continuous-time model. Для удобства работы можно извлечь матрицы из структуры, используя следующие операторы присваивания: А = <имя_структуры>а\ В = <имя_структуры>.Ь’, С = <имя_структуры>.с, D = <имя_структуры>.<1', Применительно к рассматриваемой модели это будут следующие опера- торы: » А = EX_S_LTI_V_1.а % Ввод с клавиатуры (символы » не вводятся) А = -0.5000 -1.0000 -10.0000 1.0000 0 0 0 1.0000 -10.0000 » В = EX_S_LTI_V_1.Ь % Ввод с клавиатуры (символы » не вводятся) В = 1.0000 0 0 » С = EX_S_LTI_V_1.с % Ввод с клавиатуры (символы » не вводятся) С = 0 1.0000 0 348
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 » D=EX_S_LTI_V_1.d % Ввод с клавиатуры (символы » не вводятся) D = О Сформированные в рабочей области системы MATLAB матрицы А, В, С и D можно использовать для дальнейших исследований (создание LTI- объектов, переход к передаточным функциям, переход к дискретным моде- лям и т. д.). 4.3. Набор инструментов Simulink Performance Tools Simulink Performance Tools включает 4 инструментальных средства (ИС), которые расширяют возможности системы Simulink, и позволяют сущест- венно повысить производительность моделирования. Использование этих инструментов значительно сокращает время разработки Simulink-моделей. Набор инструментов включает следующие инструментальные средства: 1. ИС Accelerator (Ускоритель) позволяет значительно сократить время мо- делирования за счет перехода от интерпретации исходного кода к его компиляции. 2. ИС Profiler (Профилировщик) собирает данные о процессе моделирова- ния и генерирует отчет, содержащий информацию о времени выполне- ния каждого этапа моделирования. 3. ИС Model Coverage Tool (Анализатор модели) помогает выявить в моде- лях Simulink и Stateflow те блоки, которые являются критическими. Приложение генерирует детальный HTML отчет, показывающий какие блоки, состояния и условия были задействованы в процессе моделирования. 4. ИС Graphical Merge Tool (Сравнение моделей) позволяет сравнить две модели Simulink и отобразить их различия в графической форме. Материал этого раздела основан на документации по системе Simulink [15]. Ускоритель ИС Accelerator использует компоненты системы Real-Time Workshop для автоматической генерации С-кода динамической модели. Затем сформиро- ванный С-код компилируется в исполняемый код с помощью компилятора 1сс, входящего в состав системы Simulink. Исполняемый модуль получает имя <имя_модепи>_асс^11. Теперь в окне модели пользователь может уста- новить один из двух режимов работы: неускоренный и ускоренный. Соот- ветственно опции Normal и Accelerator меню Simulation. Применение ИС Accelerator обеспечивает: 349
И. В. Черных. SIMULINK.: среда создания инженерных приложений • ускорение моделирования в 2 - 6 раз по сравнению с режимом интерпре- тации. Степень повышения производительности связана с размером и сложностью модели. Увеличение размера или сложности обычно приводит к росту производительности; • полную совместимость с наборами блоков Fixed-Point Blockset и DSP Blockset. Это означает, что Simulink-модели с блоками из этих наборов могут быть откомпилированы, и в процессе моделирования будут вы- полняться более быстро; • полную совместимость с отладчиком системы Simulink. При этом про- цесс отладки больших и сложных моделей значительно ускоряется. • поддержку командного режима работы из командного окна системы MATLAB и из М-файлов. При использовании ускоренного режима следует иметь в виду, что мо- дели, имеющие замкнутые алгебраические контуры, не могут моделиро- ваться в этом режиме. Пример: Сравним время моделирования модели П4 без использования и с ис- пользованием ускорителя Accelerator. Режим интерпретации (опция Normal меню Simulation в окне модели): tic,(t,x,y] = sim(1f14 *,1000);toe elapsed_time = 3.576 Установим режим ускорителя: set_param('fl4‘'simulationmode‘,‘Accelerator’) tic,[t,x,y]=sim('fl4‘,1000);toe elapsed_time = 1.001 Время моделирования в режиме Accelerator в 3.5 раза меньше, чем в режиме Normal Профилировщик ИС Profiler собирает данные о времени выполнения этапов моделирова- ния, а затем на основании собранных данных генерирует отчет, называемый профилем модели. Этот отчет оформлен в виде HTML-файла, состоящего из двух частей: обобщенный отчет и детальный отчет. Обобщенный отчет аккумулирует информацию о времени выполнения каждого этапа и упоря- дочивает ее по времени выполнения. Детальный отчет уточняет, как долго выполнялся каждый блок и каждая функция, использованная для моделиро- вания. 350
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 Для выполнения профилирования необходимо инициировать опцию Pro- filer меню Tools и запустить процесс моделирования. По завершении будет открыт файл отчета в окне справочной подсистемы Help. Гиперссылки, при- сутствующие в отчете, позволяют просмотреть детальные отчеты для каж- дого блока. В результате можно выявить те блоки, которые требуют наи- большего времени выполнения, и принять меры по их оптимизации. Пример: На рис. 4.11 приведен пример модели и фрагмент отчета профилиров- щика. Рис. 4.11 Трассировщик моделей ИС Model Coverage Tool предназначено для тестирования сложных ими- тационных моделей, создаваемых с применением систем Simulink и State- flow. При исследовании моделей, имеющих сложную логику переключений сигналов, пользователь должен разработать тест, который охватывал бы все 351
И. В. Черных. SIMULINK: среда создания инженерных приложений возможные пути прохождения сигнала, чтобы быть уверенным в ее досто- верности. Такая процедура проверки называется трассировкой модели. Ис- пользуя ИС Model Coverage Tool, пользователь может проверить функцио- нирование отдельных блоков Simulink и объектов Stateflow, определить состояние каждого блока в различных тестах и оценить вероятность его на- хождения в том или ином состоянии, а также выявить избыток или недоста- ток блоков, либо функций модели. Для обеспечения полноты трассировки возможно использовать комбинации данных из различных прогонов Simulink Model Coverage обеспечивает: • фиксацию выполнения блоков Simulink и объектов Stateflow; • формирование HTML-документа, содержащего информацию по трасси- ровке отдельных блоков и узлов модели; • сохранение и загрузку данных о трассировке между сеансами моделиро- вания; • поддержку командного режима трассировки модели. ИС Model Coverage Tool позволяет контролировать уровень тестирова- ния разработки и определить количество тестов, необходимых для полной проверки. Процедура трассировки модели существенно уменьшает риски возникновения ошибок на последующих стадиях моделирования При применении ИС Model Coverage Tool необходимо задать параметры отчета, используя опцию Coverage Setting меню Tools. По завершении моде- лирования в окне справочной системы Help будет открыт файл отчета. Пример: На рис. 4 12 приведена схема модели и отчет, полученный с помощью ИС Model Coverage Tool. Из анализа приведенной информации следует, что в процессе прогона была выполнена трассировка только 50 % элементов модели. В данном случае для полной проверки элементов модели необхо- димо, чтобы сигнал, подаваемый на управляющий вход ключа, менял свою полярность. 352
4. Интерфейс системы SIMULINK с продуктами семейства MATLAB 6 Slap Heli. File Edit View go Web Window Help & i Find in page: |f | EX_Coverage_1 Coverage Report Summary Model HierarchyKZompteKfty: ______________! •^ I Add Io Favorites I D1 50% Teetl Cl NA 1 EX Coverage, 1 Details: 1. Model "EX_Covorage_1“ Metric Coverage (this object) Cydomatic Complexity 1 Decision (01) NA Switch block "Switch" Parent: Uncovered Links: Metric Cydomatic Complexity Decision (DI) Decisions analyzed: trigger threshold i ‘ false (output is from 3rd input port) /EX Coverage, 1 MCDC TBl NA NA Coverage (inc. descendents) 2 50% (1/2) decision outcomes Coverage 1 50% (1/2) decision outcomes 50% 0/107 2 true (output is from 1 st input port) 107/107 Puc. 4.12 ИС сравнения моделей ИС Graphical Merge Tool позволяет выполнить сравнение двух Simulink- моделей и отобразить различия между ними в графической форме. Рис. 4.13 поясняет принцип функционирования этого инструментального средства. На рисунке показано 3 окна: окно ИС Graphical Merge Tool - Simulink Graphical Merge, окна моделей - EX_Differencing_l и EX_Differencing_2. 353
И. В. Черных. SIMULINK: среда создания инженерных приложений Одинаковые блоки на структурных схемах моделей отмечены красным цве- том, а блоки, принадлежащие единственной модели, синим цветом. Пользо- ватель может настроить характеристики ИС так, чтобы просмотреть только блоки с графическими, либо с неграфическими отличиями или блоки с лю- быми отличиями. Для запуска ИС Graphical Merge Tool необходимо выполнить опцию Model differences\Merge\Compare two models меню Tools окна первой моде- ли и в процессе диалога выбрать файл второй модели. Как следует из анализа рис. 4.13, различие этих моделей заключается в разных значениях параметров блока Transfer Fen. fife View Merge Options Д* Д* i S Hep д’ “д I x (T .55 [c tUsersUlyatMlat v | EX_Differer)Cing_1 V Scope Q 1?вГ] V step I d? Step 1 [Scope 1 й? Step:1 [Transfer Fcr -si I J |c:lUserstilyalM w | Й? 9 EX__Dfflferencing_2 ф Scope 0 Transfer Fen Q Constant • Constant 1 [Scop Constant 1 [Trane d I jJ JgT] Parameter differences X Parameter | Model one | Model two | Denominator _ it 1) Ready »(10511 Constant TianrterF'.i й JEi*J File Edit View ’Simulation Format Tools Help Transfer Fen File Edit View Simulation Format Tools Help Puc. 4.13 354
5. ОТЛАДЧИК SIMULINK-МОДЕЛЕИ Отладчик Simulink-моделей является инструментом для поиска и диаг- ностирования ошибок в моделях Simulink. Он дает возможность выявить проблемы, которые возникают при моделировании любого блока модели. Отладчик Simulink-моделей работает как в режиме графического интерфей- са, так и в режиме командной строки. Графический интерфейс наиболее прост и удобен для пользователя, но обеспечивает доступ только к основ- ным функциям отладчика. Командный режим позволяет реализовать все возможности отладчика. Пользователь, как правило, работает в режиме 1рафического интерфейса и обращается к режиму командной строки только по мере необходимости. 5.1. Графический режим Запуск отладчика Simulink-моделей в режиме графического интерфейса возможен одним из двух способов: 1. С помощью опции меню Tools/Debugger окна Si mu link-модели. 2. С помощью кнопки 1^ панели инструментов окна Simulink-модели. После запуска отладчика на экране появится его окно (рис. 5.1). C В в ₽ > |й= Э еа Ф Й Я Рис. 51 /тта/пиои 355
И. В Черных. SIMULINK; среда создания инженерных приложений Окно отладчика содержит следующие элементы: • панель инструментов; • область задания точек прерывания Break/Display points; • панель задания точек прерывания по условию Break on conditions; • окно сообщений. Панель инструментов Общий вид панели инструментов показан на рис. 5.2. М ► Ж | -0- Л I -о-1 ? I 11 I II I I 1 2 3 4 5 6 7 8 Рис. 5.2 Панель имеет следующие кнопки: 1. Next Block - переход к следующему блоку. С помощью данной кнопки осуществляется режим отладки с остановкой процесса после моделиро- вания каждого блока. 2. Next Time Step - переход к следующему шагу моделирования. С помо- щью данной кнопки выполняется пошаговый режим отладки. 3. Start/Continue - запуск/продолжение отладки. Нажатие данной кнопки после запуска отладчика приводит к запуску процесса моделирования и остановке его перед первым исполняемым блоком. Данная кнопка служит также для продолжения процесса отладки после останова в точ- ках прерывания (контрольных точках). Если в модели установлены точ- ки прерывания, то нажатие данной кнопки позволяет продолжить моде- лирование, которое остановится в следующей контрольной точке. Повторное нажатие кнопки возобновляет процесс моделирования и вы- зывает остановку в следующей точке. Если текущий шаг моделирования завершен, то происходит переход на следующий шаг и останов в первой точке прерывания. 4. Stop - останов отладки. 5. Break before selected block - установка точки прерывания перед выде- ленным блоком. Для установки точки прерывания достаточно выделить блок в окне модели и затем нажать данную кнопку. Название блока немедленно появится в области Break/Display points окна отладчика, как это показано на рис. 5.3. 356
5. Отладчик SIMULINK-моделей J Simulink debugger EX_SL_Debi jEf*!-: Close |. Outputs | Execution Order | Status | BreakfOispiay points Warning: SiBUlink debugger is disabling block teduc_ ...Transfer Fen 3 3 | Remove selected pointj > In C:\KATLAB6p5\toolbox\siMulink\siMulink\sldebug» [Тж - 0 ] ««Start** of syste» (sidebug 60:0 1 * * * * 6 7EX_SL_Debug_l/Step*): Break on conditions Г* Zero crossings Г Step size limited by state Г~ Minor time steps Г“ NaN values Break at time: | [Тж - 0 ] Breaking at block 0: (sidebug 60:1 'EX_SLJDebug_l/Transfer Fen’) 01 - [0] CSTATE - [0 0] Y1 - [0] Puc. 5.3 Точка прерывания не может быть установлена для неисполняемого (вир- туального) блока. Примером такого блока является мультиплексор Мих (рис. 5.1). Список исполняемых блоков текущей модели можно увидеть на вкладке Execution Order окна отладчика или вывести командой slist при работе в командном режиме. При попытке установить точку преры- вания для неисполняемого блока отладчик выведет на экран предупреж- дающее сообщение. 6. Display I/O of selected block with executed - отображать значения вход- ных и выходных сигналов. Данная кнопка позволяет установить режим просмотра входных и выходных сигналов исполняемого блока. Режим можно установить как для блока, для которого установлена точка пре- рывания, так и для блока, для которого такая точка не установлена. Зна- чения входных и выходных сигналов отображаются на вкладке Outputs окна отладчика. Входные сигналы имеют идентификаторы Ul, U2, U3 и т. д., а выходные - Yl, Y2, Y3 и т. д. Дополнительно здесь же отобра- жаются значения переменных состояния - CSTATE (рис. 5.3). 7. Display current I/O of selected block - показать значения входных и вы- ходных сигналов для выделенного блока. Данной кнопкой удобно пользоваться, когда необходимо просмотреть значения сигналов какого- либо блока в момент останова. Например, если для модели на рис. 5.1 установлена точка прерывания на входе блока Transfer Fen и останов моделирования в этой точке уже произошел, то можно просмотреть значения сигналов сумматора, выделив этот блок в окне модели и нажав 357
И. В, Черных. SIMULINK: среда создания инженерных приложений сигналов сумматора, выделив этот блок в окне модели и нажав кнопку отладчика. 8 Help - вызов справки по отладчику. Список точек прерывания Область задания точек прерыва- ния Break/Display points (рис. 5.4) со- держи! список блоков, для которых установлены точки прерывания (гра- фа Blocks), а также свойства этих то- чек, отмеченные с помощью флаж- ков. Пользователь, выставляя или снимая флажки, может изменять со- стояние точки прерывания, а имен- BreaWDispiay points EXjSL_Debug_l/TransfeK Fen K7 Г 1 EX_SLDebuu_l/'5um Д move selected/>oini| Puc. 5.4 но задать/убрать точку прерывания на входе блока, выставив флажок или включить/выключить режим вывода входных н выходных сигналов блока, выставив флажок 1йЙ. Для того чтобы удалить точку прерывания, следует выделить ее в списке и нажать кнопку Remove selected point (Убрать выделенную точку). Панель задания точек прерывания Панель задания точек прерывания Break on conditions (рис. 5.5) содер- жит список условий, при наступле- нии которых моделирование должно быть остановлено. Список включает следующие ус- ловия: • Zero crossings - переход сигнала Break on conditions Г Zero crossings Г Step size limned by slate Г Minor time steps Г NaN values Break al time | Puc. 5.5 через нулевой уровень. • Step size limited by state - установить такт моделирования в зависимо- сти оз значения вектора состояния модели. Опция заставляет отладчик остановить моделирование, если используется решатель с переменным шагом интегрирования и требуется ограничить этот шаг. Опция полезна при отладке моделей, требующих, по мнению пользователя, большого числа шагов моделирования. 358
5. Отладчик SIMULINK-моделей • Minor time steps - режим от ладки с шагом интегрирования. При выпол- нении моделирования для достижения нужной точности система Simu- link может уменьшать шаг интегрирования. Для того чтобы увидеть про- цессы на уровне шага интегрирования, необходимо установить опцию Minor time steps. • NaN values - значения NaN. Моделирование будет остановлено, если вычисленное значение сигнала бесконечно или лежит вне диапазона значений, которые могут быть представлены компьютером, т. е. соответ- ствует значению NaN в стандарте IEEE арифметики с плавающей точкой. • Break at time - останов в заданный момент времени. При достижении этого момента моделирование будет остановлено и включен отладчик в пошаговом режиме. Данный режим удобен, если ошибка возникает не в начале интервала моделирования, а в какой-либо более поздний мо- мент. В этом случае можно установить время останова непосредственно перед возникновением ошибки, а затем продолжить отладку в пошаго- вом режиме. Окно сообщений Это окно содержит три вкладки: • Outputs - отображение результатов в режиме отладки. На данной вклад- ке (рис. 5 6) отображается текущее время Тт (или Ti для внутренних ша- гов), индекс контролируемого блока в виде @s:b, где s - номер модели (подсистемы), b - номер блока, а также имя блока с указанием полного пути доступа. На этой же вкладке выводятся значения входных (U) и вы- ходных (Y) сигналов блока, если установлена соответствующая опция. Рис. 5.6 359
И. В. Черных SIMULINK: среда создания инженерных приложений • Execution Order - порядок выполнения. На вкладке отображается спи- сок блоков в порядке их исполнения. Блоки, расположенные в начале списка выполняются раньше, чем блоки, расположенные в конце списка. На рис. 5.7 показан пример данной вкладки для модели, изображенной на рис. 5.1. •^Simulinkdebugger EX SL Debi M gS* ► Ж О- *0= j -0- ? Close j Outputs Execution Order | status | ---- Sorted list for EXSLDebugl' [5 nonvirtual blocks, directfeed-O] 0:0 'EX-SLDebugl/Step' (Step) 0:1 'EX St Debug 1/Transrer Fen* (TransferFcn) 0:2 1EX_St_Debug_l?Scope• (Scope) 0:3 'EX_SL_Debug_l/Transfer Fcnl' (TransCerFcn) 0:4 ,ЕХ_2Г_ЬеЬид_1/Бил’ (Sua) ____ J LJ Puc. 5 7 Status - статус отладчика. На данной вкладке (рис. 5.8) отображается информация о настройках и текущем состоянии отладчика: значение те- кущего временного шага, количество точек прерывания, информация об установке точек прерывания по условию и т. п. Puc 5.8 360
5. Отладчик SIMULINK-моделей Таким образом, запустив отладчик в графическом режиме, пользователь может провести поблочную или пошаговую отладку модели, установив при необходимости нужные точки прерывания. 5.2. Командный режим Режим командной строки предоставляет пользователю доступ ко всем возможностям отладчика. Запуск отладчика в этом режиме необходимо выполнять из командного окна системы MATLAB: sidebug('My_model') , где Му model - имя отлаживаемой модели. При работе с отладчиком требуется вводить команды, список которых в приведен в алфавитном порядке в табл. 5.1. Столбец Повтор указывает на возможность повтора команды при нажатии клавиши Enter. Таблица 5.1 Команда Краткая форма Повтор Назначение ashow <gcb | s:b> as Нет Выделить подсветкой блок с ука- занным индексом ashow s#n as Нет- Выделить подсветкой алгебраи- ческий контур с указанным ин- дексом ashow clear as Нет Отменить выделение atrace level . at Нет Глубина просмотра алгебраичес- кого контура (0 - просмотра нет, 4 - детальный просмотр) bafter <s:b | gcb> ba Нет Установить точку прерывания при выходе из блока break <s:b | gcb> b Нет Установить точку прерывания при входе в блок bshow s:b bs Нет Выделить блок с указанным ин- дексом clear <s:b | gcb> cl Нет Удалить точку прерывания с ука- занного блока continue c Да Продолжить моделирование 361
И. В. Черных. SIMULINK среда создания инженерных приложений Команда Краткая форма Повтор Назначение disp [s b | gcb] d Да Включить блок в список отобра- жаемых блоков emode e Нет Информация о режиме моделиро- вания (Normal или Accelerator) help h Справка об отладчике ishow i Нет Включить/выключить вывод ин- формации, касающейся характе- ристик интегрирования minor m Нет Режим отладки на уровне шага итерирования nanbreak na Нет Установить/снять флажок NaN values при задании точки преры- вания next n Да Переход к следующему шагу мо- делирования probe [s:b | gcb] p Нет Вывести сигналы указанного блока probe level {all) | io Нет Установить уровень вывода сиг- налов блока (все, либо только входные и выходные) quit q 'Нет Завершить моделирование run r Нет Завершить режим отладки и про- должить моделирование slist sll Нет Вывести список исполняемых блоков states state Нет Вывести текущие значения пере- менных состояния модели status [all] stat Нет Информация о состоянии отлад- чика step s Да Перейти к следующему блоку stop sto Нет Останов моделирования systems sys Нет Вывести список исполняемых подсистем tbreak ft] tb Нет У станов ить/удалить точку преры- вания для указанного или по умолчанию для текущего момен- та времени 362
5. Отладчик SIMULINK-моделей Команда Краткая форма Повтор Назначение trace <s b | gcb> tr Л.Л Выполнить трассировку указан- ного блока undisp <s:b | gcb> und Да Удалить блок из списка отобра- жаемых untrace <s:b | gcb> unt Да Удалить блок из списка трасси- ровки xbreak X Нет Установить/сиять флажок Step size limited by state при задании точки прерывания zebreak zeb Нет Установить/снять флажок Zero crossings при задании точки пре- рывания zclist zcl Нет Вывести список блоков, для ко- торых возможно пересечение ну- левого уровня Часть команд, приведенных в таблице, требуют указания индекса блока. При использовании таких команд вместо имени блока можно указывать ко- манду gcb (get current block - получить путь доступа к текущему блоку), предварительно выделив нужный блок в окне модели. Пример командного окна системы MATLAB в процессе отладки модели показан на рис. 5.9. ) Command Window Lite Edit View Web Window Help dgjxj (sidebug 80:1 'EX_SL_Debugl/Transfer Fen'): s Ul - [0] ESTATE - [0 0] Y1 - [0] (sidebug 80:2 'EX_SL_Debug_l/Scope'): s Ul - [o 0] %--------------------------------------------- (sidebug 80:3 ’EXSLDebugl/Transfer Fcnl’): s Ul - [0] ESTATE - [0] Puc. 5.9 363
И. В. Черных. SIMULINK: среда создания инженерных приложений 5.3. Источники повышения эффективности моделирования Решатели ОДУ, применяемые в системе Simulink, обладают высокой точностью и скоростью интегрирования. Однако в некоторых случаях мож- но добиться большей эффективности, если произвести специальные на- стройки параметров решателя. Кроме того, следует учитывать особенности реализации тех или иных блоков, наличие алгебраически замкнутых конту- ров, проявление свойства жесткости ОДУ, организацию структурной схемы модели. Априорная информация о предполагаемом поведении системы и ее динамических свойствах также является источником повышения эффектив- ности моделирования. Источники роста скорости Для того чтобы предпринять шаги к повышению скорости моделирова- ния, следует знать те причины, которые вызывают увеличение времени ис- полнения отдельных блоков. Среди таких причин можно выделить следующие: 1. Наличие блоков MATLAB Fen. Эти блоки организуют вызов М-функ- ций, и их использование в Simulink-модели приводит к тому, что на каж- дом шаге моделирования вызывается интерпретатор языка MATLAB. Рекомендуется вместо этих блоков применять блоки Fen и Math Function. 2. Применение S-функций на языке MATLAB. Замедление моделирова- ния здесь также связано с тем, что на каждом шаге вызывается интер- претатор языка MATLAB. Поэтому рекомендуется применять S-функции, написанные на языках С или Fortran и откомпилированные в исполняемый машинный код. 3. Наличие блоков памяти. Включение в структурную схему модели бло- ков памяти Memory заставляет решатели ОДУ, которые используют ме- тоды интегрирования разных порядков (odel5s и odel 13), понижать по- рядок метода до 1 -го. 4. Выбор шага интегрирования. Значительное влияние на скорость моде- лирования оказывает выбор параметра решателя Max step size, опреде- ляющего максимальный шаг интегрирования. По умолчанию значение этого параметра auto. Если значение этого параметра было изменено и выбрано слишком малым, то время моделирования существенно воз- растает. Поэтому следует либо увеличить его значение, либо вернуться к значе- нию по умолчанию. 364
5. Отладчик SIMULINK-моделей 5. Завышенная точность интегрирования Обычно значение параметра относительной погрешности Relative tolerance, равное 0.1 %, достаточно для большинства расчетов. При малых значениях этого параметра шаг интегрирования может оказаться слишком малым, что приведет к замед- лению вычислений. 6. Завышен интервал моделирования. Как правило, при моделировании динамических систем переходный режим представляет больший инте- рес, нежели установившаяся стадия. По достижении установившегося значения моделирование можно прекратить, поскольку для устойчивых моделей ожидать каких-либо изменений в состоянии модели не прихо- дится. Поэтому, планируя моделирование, следует заранее оценить возможный интервал времени, исходя из динамических свойств модели. 7. Жесткая система ОДУ. Исследуемая модель относится к классу жест- ких динамических систем с большим разбросом собственных значений. В этом случае следует выбирать специальные методы интегрирования, предназначенные для моделирования жестких систем ОДУ. Рекомендуется применить методы ode 15s и ode23tb и сравнить время моделирования. 8. Системы с различными тактами дискретности. Такне модели возни- кают при моделировании дискретно-непрерывных систем и многокон- турных дискретных систем В этом случае в структуре модели исполь- зуются блоки с различными значениями тактов дискретности Sample time, которые могут оказаться некратными. В этом случае система Simu- link уменьшает т акт дискретности до значения, соответствующего наи- меньшему общему кратному этих тактов. Например, если такты дис- кретности двух блоков равны 0.5 с и 0.7 с, то система установит значе- ния тактов равными 0.1. 9. Наличие алгебраических контуров. Алгебраические контуры рассчи- тываются в системе Simulink на каждом шаге интегрирования с помо- щью итерационной процедуры, что замедляет вычисления. 10. Использование блоков Random Number. При формировании струк- турной схемы модели не рекомендуется использовать на входе интегра- тора блоки формирования случайного числа Random Number. Предпочтительнее применить блок Band-Limited White Noise block из библиотеки источников Sources. 11. Наличие большого количества осциллографов. Если модель включает большое число блоков Scope, которые требуют значительного объема 365
И В Черных. SIMULINK: среда создания инженерных приложений памяти для хранения отображаемых данных, то это может привести к существенному увеличению времени моделирования. 12 Параметр Limit data points to last. Если в блоках Scope параметр Limit data points to last задан значительно меньшим, чем фактическое число модельных шагов, либо снят флажок с этого параметра, то при превы- шении значения этого параметра для отображения каждой новой расчет- ной точки будет выполняться процедура выделения дополнительной па- мяти, что существенно замедлит скорость моделирования. Рекомендуется заранее установить значение этого параметра большим, чем фактическое число модельных шагов и задать параметр Decimation (Прореживание) большим единицы, чтобы сократить количество дан- ных, сохраняемых блоком Scope. Используя ускоритель Accelerator, можно также повысить скорость мо- делирования в несколько раз. Этот режим предусматривает компиляцию модели в исполняемый код (dll-файл). Некоторые дополнительные затраты времени на компиляцию с лихвой окупаются ускорением процесса модели- рования в 2-6 раз. Однако при изменении структуры модели процедура компиляции будет повторена. К сожалению, режим ускорителя не может быть использован в моделях, которые содержат алгебраические контуры. Существенный выигрыш по времени моделирования может дать исполь- зование дискретных моделей взамен непрерывных. Наиболее существенным с точки зрения скорости вычислений может оказаться правильный выбор уровня детализации модели. К примеру, если выполняется моделирование системы электроснабжения города, вряд ли стоит моделировать каждый потребитель электрической энергии: электри- ческий двигатель, чайник, сварочный аппарат и т. п. Вполне достаточным будет создание обобщенных моделей электрических потребителей на уров- не заводского цеха, жилого дома, трамвайного парка и т. п. Источники повышения точности Интегрирование нелинейных дифференциальных уравнений - это всегда искусство. Поэтому получение достоверного результата доступно только искушенному пользователю. Тем не менее, можно дать некоторые общие советы, как быть уверенным, что результаты моделирования достоверны. Широко используемый прием - это сравнительное моделирование с раз- ными значениями параметра относительной погрешности Relative tolerance. К примеру, можно провести моделирование с заданным по умолчанию зна- чением этого параметра 1е-3 и с меньшим значением, например 1е-4. Если 366
5. Отладчик SIMULINK-моделей результаты отличаются незначительно, то можно полагать, что найденное решение является верным. Если решения значительно отличаются на начальной стадии, то следует уменьшить начальный шаг интегрирования Initial step size. Если решение оказывается неустойчивым, то это может быть связано, либо с неустойчивостью самой моделируемой системы, либо с неправиль- ным выбором метода интегрирования. Если решение кажется неточным, то следует задать в явном виде пара- метр абсолютной погрешности Absolute tolerance и выполнить ряд прого- нов, уменьшая величину этого параметра. Если при уменьшении абсолютной погрешности точность не повышает- ся, следует уменьшить относительную погрешность, либо задать достаточно малое значение максимального шага интегрирования. 367
6. S-ФУНКЦИИ И ИХ ПРИМЕНЕНИЕ Набор стандартных блоков системы Simulink, достаточно обширен, однако в практике моделирования встречаются ситуации, когда нужного блока нет, либо структурное моделирование делает модель слишком сложной, В этом случае для создания нужного блока целесообразно применять технологию S-функций. Simulink-функции, или S-функции являются описанием блока на одном из языков программирования: MATLAB, С, C++, Ada или Fortran С помощью языков программирова- ния пользователь можно создавать описание сколь угодно сложных бло- ков и включить их в Simulink-модель, при этом с точки зрения взаимо- действия пользователя с моделью блоки, реализующие S-функции, ничем не отличаются от стандартных библиотечных блоков системы Simulink. Создаваемые блоки могут реализовывать непрерывные, дис- кретные или гибридные (дискретно-непрерывные) модели. S-функции, созданные на языках С, C++, Ada или Fortran, компилируются в испол- няемые файлы с расширением * .dll. Это обеспечивает высокую скорость выполнения таких блоков. S-функции могут обрабатывать разные типы данных (целые, действительные и комплексные числа), использовать массивы в качестве входных и выходных переменных, а также иниции- ровать функции ответного вызова. Чаще всего S-функции применяются для написания новых библио- течных блоков; блоков, обеспечивающих взаимодействие системы Simu- link с аппаратными средствами; при создании блоков на основе матема- тических уравнений; блоков, реализующих анимационные возможности, а также при подключении к модели Simulink программного кода на язы- ках высокого уровня. При написании этой главы были использованы ма- териалы работы [15]. /тютлшои 368
6. S-функции и их применение 6.1. Описание S-функции | S-functlon~| Пиктограмма: ) system > S-Function Назначение: Подключение S-функции к модели. Окно задания параметров: S-функцця Block Parameters: SdFundion S-Functon —-----------------—---------- - -—---------------I User-definableblock. BlocksmaybewritteninM.C.FodiancfAcbend must conform Io S-function stendads. t.x.u end flag ate automaticafer I passed Io the S function by Simulink. "Extra” parameters may be specified in the *S-function parameters* field. Paiameleis •------------------------ ———------------------- S-funcbon name: [system S -function parameters: OK j Cancel [ tjet> | epoly | Параметры блока: S-function name: [имя S-функции]. Имя S-функции не должно совпадать с именем модели (mdi-файла). S-function parameters: (параметры S-функции]. Параметры S-функции, передаваемые через окно диалога блока S-function. Они записываются в окне диалога в том же поряд- ке, в каком присутствую! в заголовке S-функцни. Simulink-блок однозначно описывается наборами входных переменных и, переменных состояния х и выходных переменных у (рис. 6.1). 369
И. В. Черных. SIMULINK: среда создания инженерных приложений и (вход) (состояния) и (выход) Рис. 6.1 В математической форме блок можно описать смешанной системой дифференциальных, разностных и алгебраических уравнений: хс =fc(LX,u); x = xc+xj; у = g(f,x,u), где xf - вектор непрерывных переменных состояния, хс - вектор производных переменных состояния; - вектор дискретных Переменных состояния; у - вектор выходных переменных; ф fc - функция вычисления производных вектора состояния; f j - функция вычисления дискретных переменных; g - функция вычисления выходов системы. 6.2. Организация процесса моделирования Процесс моделирования выполняется системой Simulink в несколько этапов. Сначала производится инициализация модели - подключение биб- лиотечных блоков, определение размеров сигналов, типов данных, величин такта дискретности, задание параметров блоков, а также порядка их выпол- нения, выделение оперативной памяти. Затем Simulink начинает выполнять собственно цикл моделирования, в процессе которого реализуется интегри- рование и вычисление функциональных зависимостей, описываемых бло- ками в том порядке, который был установлен на этапе инициализации. Для каждого блока система Simulink вызывает функции, которые вычисляют пе- ременные состояния х, их производные, а также выходы у на текущем шаге модельного времени. Этот процесс продолжается, пока моделирование не будет завершено На рис. 6.2 показана упрощенная диаграмма, иллюсз- рирующая этот процесс. 370
6, S-фуикцни и их применение Рис. 6.2 Процедуры ответного вызова Каждая внутренняя задача при вызове S-функции решается с помощью следующих процедур ответного вызова: I. mdllnitializesizes - процедура инициализации. В рамках этой процедуры Simulink выполняет следующие операции: • инициализирует структуру с именем SimStruct, которая содержит ин- формацию об S-функции; • определяет количество входных и выходных портов, а также размеры соответствующих векторов сигналов; • устанавливает такт дискретности; • выделяет память для хранения переменных и устанавливает размеры массивов. 371
3 Черных. SIMULINK: среда создания инженерных приложений 2. mdlGetTimeOfNextVarHit - процедура вычисления времени следующего срабатывания блока (для блоков с переменным тактом дискретности). 3. mdlOutputs - процедура вычисления выходных сигналов и передача их на выходные порты. 4. mdlUpdate - процедура вычисления дискретных переменных состояния, которые сохраняют свои значения до следующего цикла моделирования. 5. mdlDerivatives - процедура вычисления производных переменных со- стояния. 6. mdlTerminate - процедура завершения S-фуикции. Если S-функцня содержит непрерывные переменные состояния, Simulink вызывает процедуры ответного вызова mdlDerivatives и mdlOutputs для рас- чета производных переменных состояния и выходных переменных в про- цессе интегрирования уравнений. Вызов той или иной процедуры ответного вызова задается с помощью переменной flag, которая является входным аргументом S-фуикции. Реализация S-функцни Для того чтобы создать S-функцию, необходимо придерживаться неко- торых базовых понятий, используемых при ее написании. К таким понятиям относятся: 1. Direct feedthrough - прямая передача. Это понятие связано со сквозной передачей входных сигналов непосредственно на выход системы, минуя динамические блоки. Необходимость реализации в S-фуикции механиз- ма прямой передачи возникает в тех случаях, когда в уравнениях выхода присутствуют входные переменные, либо они используются при расчете времени следующего срабатывания блока. Установка правильного зна- чения параметра Direct feedthrough крайне важна, поскольку именно этот параметр фиксирует возможное возникновение замкнутых алгебраиче- ских контуров. 2. Dynamically sized inputs - динамически изменяемые размеры входов. S-функция может быть написана так, чтобы обеспечить обработку векторов произвольных размеров. Фактические размеры векторов пере- менных состояния и выхода устанавливаются равными размеру вектора входа. Чтобы задать динамически изменяемый размер для вектора пере- менной, необходимо указать для этой переменной размер равным -1 в соответствующем поле структуры sizes (см. приведенный далее шаб- лон S-функции). 372
6. S-функции и их применение 3. Setting sample times and offsets - установка тактов дискретности модель- ного времени и задержек Возможны следующие способы задания мо- дельного времени: • Continuous sample time - непрерывное время. Применяется при моде- лировании непрерывных динамических систем. В этом случае S-функ- ция выполняет вычисления в соответствии с методом интегрирова- ния, установленным в решателе дифференциальных уравнений. • Continuous but fixed in minor time step sample time - непрерывное вре- мя с фиксированным тактом. В этом случае выходные переменные должны изменяться в соответствии с заданным тактом моделирова- ния и оставаться неизменными при интегрировании. • Discrete sample time - дискретное модельное время. Применяется при моделировании дискретных элементов системы. В этом случае дол- жен быть задан такт дискретности (sample time) и задержка (offset), чтобы определить моменты времени, когда Simulink должен вызвать на выполнение данный блок. Величина задержки не можез превы- шать величины такта дискретности. Время срабатывания блока опре- деляется выражением: TimeHit = п • sample _ time + offset, где п - целое число. Если модельное время определено как дискретное, то система Simulink обращается к процедурам ответного вызова mdlUpdate и mdlOutputs только в дискретные моменты времени на каждом цикле моделиро- вания. • Variable sample time - переменный такт дискретности. Модельное время дискретное, но интервалы времени между срабатываниями пе- ременные. На каждом шаге моделирования S-функция должна опре- делить значение момента следующего срабатывания. Для этого при- меняется процедура ответного вызова mdlGetTimeOfNextVarHit • Inherited sample time - наследуемый такт дискретности. В некоторых случаях работа блока не зависит от способа задания такта дискретно- сти. Например, для блока Gain величина такта дискретности несуще- ственна. В подобных случаях параметр sample time может быть на- следован от предыдущего или последующего блока, либо от блока, имеющего наименьшее значение такта. 373
И. В. Черных. SIMULINK: среда создания инженерных приложений 6.3. Создание S-функций на языке MATLAB Наиболее простой и быстрый путь создать S-функцню - это написать ее па языке MATLAB с использованием имеющегося шаблона. Создание S-функцнй на языке MATLAB имеет некоторые ограничения: такая функ- ция может иметь только один входной и одни выходной порт, передаваемые и принимаемые данные через эти порты могут быть только скалярами или векторами типа double. Ниже приведен шаблон S-функции с авторским переводом коммен- тариев. Оригинальный файл шаблона sfuntmpl.m находится в папке ...\toolbox\simulink\blocks. function [sys,хО,str,ts] = sfuntmpl(t,x,u,flag) % % SFUNTMPL - Шаблон для создания S-функции на языке MATLAB. % С помощью S-функции пользователь может задать системы % обыкновенных дифференциальных, разностных и алгебраических % уравнений, которые описывают работу Simulink-блока. % % Базовая форма синтаксиса S-функции имеет вид: % [sys,xO,str,ts] = sfunc(t,x,u,flag.pl,...,pn) % % Параметры S-функции: % % t - Текущее время. % x - Вектор переменных состояния. % и - Вектор входных сигналов. % flag - Целое число, определяющее номер процедуры % ответного вызова. % pl,...,рп - Параметры S-функции, которые задаются в окне диалога блока ”S-function". % % Результат, возвращаемый S-функцией в момент времени t, % зависит от значения переменной flag, значения вектора % состояния х и текущего значения вектора входного сигнала и. % % Результаты работы S-функции в зависимости от значения % переменной flag приведены в следующей таблице: 374
6. S-функцни и их применение % Значе- | 1 <*> dP dP ние | flag | |. Результат - Выполняемая процедура ответного вызова 1 Описание | 1 1 % ° i [sizes,хО, mdllni tializesizes | Инициализация: | % % 1 1 str,ts) | формирование массива| 1 записей sizes, | % % 1 1 1 вектора начальных | 1 условий хО, массива | % % % % 1 1 1 1 1 dx .. mdlDer i va 11ve s | тактов дискретности | 1 и задержек ts, пус | 1 того массива str. | | Вычисление значений | % % % % % % % % 1 1 2 1 1 1 3 | 1 4 к 1 ds У tnext | производных вектора I | состояния системы. | mdlUpdate | Вычисление вектора | 1 состояния дискретной! 1 части системы. | mdlOutputs | Вычисление вектора | 1 выхода. | mdlGetTimeOfNextVarHit| Вычисление следующей! % % % % % % % % % 1 1 1 1 1 5 1 1 9 1 — 1- (1 mdlTerminate | точки расчета для | 1 дискретной или | 1 гибридной системы | 1 с переменным тактом | | дискретности. | 1 Зарезервированное | 1 значение. | 1 Завершение расчета | -1 1 % % Параметры pl,...,pn передаются в S-функцию при любом % значении переменной flag. % % При вызове S-функции со значением переменной flag = О % рассчитываются следующие величины: % % sys(l) - Число непрерывных переменных состояния. % sys(2) - Число дискретных переменных состояния. % sys(3) - Число выходных переменных. % sys(4) - Число входных переменных (размер вектора и). % Любой из первых четырех элементов вектора sys % может быть равен -1, что означает динамическое % определение размеров соответствующих переменных. % Фактические размеры при вызове S-функции % с другими значениями переменной flag будут % определяться размером входного вектора и. 375
И. В. Черных, SIMULINK: среда создания инженерных приложений % sys(5) - Зарезервировано для вычисления корней % алгебраического уравнения. Должно быть нулевым. % sys(6) - Прямая передача. Значение, равное 1, соответствует % сквозному прохождению входного сигнала на выход. % Значение, равное 0, определяет, что при значении % переменной flag = 3 входной сигнал не используется % для вычисления выходного сигнала. % sys(7) - Количество тактов дискретности (число строк % массива ts). % % хО - Вектор начальных значений переменных состояния. % Если переменных состояния нет - значение % параметра равно пустому массиву [] . % % str - Зарезервированный параметр. Значение параметра % задается равным пустому массиву []. % % ts - Массив размера шх2, задающий такты дискретности % и значения задержек, ш - число строк массива ts. % % Например: % % ts = [0 0, Такт квантования и задержка для % непрерывной части системы. % 01, Постоянный шаг интегрирования % непрерывной части системы. % period offset. Постоянный период квантования для % дискретной части системы period > 0; % задержка offset < period. % -20]; Переменный период квантования для % дискретной части системы. При вызове % S-функции со значением переменной % flag = 4выполняется вычисление % следующего момента срабатывания % блока. % % Если в массиве ts задано несколько значений тактов % дискретности, то они должны быть записаны в порядке. % возрастания В этом случае требуется проверка времени % срабатывания блока в явном виде: % abs(round((T-OFFSET)/PERIOD) - (T-OFFSET)/PERIOD) % Обычно принимаемая погрешность равна 1е-8. Она зависит % от значений такта дискретности и времени окончания расчета. 376
6. S-функции и их применение % Можно также задать, чтобы значение такта дискретности % передавалось в блок ”S-function" из предшествующего блока. % Для функций,выходной сигнал которых изменяется в пределах % такта,должно быть задано sys(7) = 1 и ts = [-1 0). % Для функций, которые не изменяются в пределах такта, % должно быть задано % sys(7) =1 и ts = [-1 1J. % % Copyright 1990-2001 The MathWorks, Inc. % SRevision: 1.17 $ % Авторский перевод комментариев: Черных И. В. % switch flag, % В зависимости от значения переменной flag происходит % обращение к той или иной процедуры ответного вызова: % %===============% % Инициализация % %===============% case 0, [sys,хО,str,ts]=mdlInitializeSizes; % %========================% % Вычисление производных % %========================% case 1, sys=mdlDerivatives(t,x,u); % %=======================================================% % Вычисление вектора состояния дискретной части системы % %=======================================================% case 2, sys=mdlUpdate(t,x,u); % %======================================% % Вычисление вектора выходных сигналов % %======================================% case 3, sys=mdlOutputs(t,x,u); % %======================================================== % Вычисление момента времени следующей точки срабатывания % дискретного блока системы %========================================================: case 4, sys=mdlGetTimeOfNextVarHit (t, х, u) ,- % dP сАР сА° dP 377
И. В. Черных. SIMULINK: среда создания инженерных приложений %====================% % Завершение расчета % %====================% case 9, sys=mdlTerminate(t,x,u); % %===============================г!======% % Неизвестное значение переменной flag % %======================================% dP dP dP dP dP otherwise error(['Unhandled flag = ',num2str(flag)J); end % % Конец функции sfuntmpl % %==========================================================% % mdllnitializeSizes % Функция инициализации % Расчет начальных условий, тактов дискретности, % размеров векторов сигналов, массива тактов и задержек %========================================================== function [sys,хО,str,ts]=mdllnitializeSizes % % Все приведенные ниже значения носят иллюстративный характер, sizes = simsizes; % % Первый вызов функции simsizes создает массив записей sizes % со следующими полями: sizes.NumContStates = 0; % Число непрерывных переменных % состояния sizes.NumDiscStates = 0; % Число дискретных переменных % состояния sizes.NumOutputs = 0; % Число выходных переменных sizes.Numinputs = 0; % Число входных переменных sizes.DirFeedthrough = 1; % Параметр, задающий прямую % передачу входного сигнала % на выход. sizes.NumSampleTimes = 1; % Размер вектора тактов квантования % Минимальное значение равно 1 % (одна строка в массиве ts) . % sys = simsizes(sizes); % Второй вызов функции simsizes. % Данные о размерах векторов передаются в Simulink. 378
6. S-функции и их применение % хО = [); % Задание вектора начальных условий. % str = []; % Задание параметра str в виде пустого массива. % ts - [0 0); % Массив из двух колонок, задающий такты % квантования и задержки '% % Конец процедуры mdllnitializeSizes % %==========================================================% % mdlDerivatives % % Вычисление производных вектора состояния % % непрерывной части системы % %==========================================================% function sys=mdlDerivatives(t,х,u) % sys = []; % % Конец процедуры mdlDerivatives % %==========================================================% % mdlupdate % % Вычисление вектора состояния % % дискретной части системы % %==========================================================% function sys=mdlUpdate(t,x,u) % sys = []; % % Конец процедуры mdlUpdate % %=========================================================% % mdlOutputs % % Вычисление вектора выходных сигналов % %========================================================% function sys=mdlOutputs(t,х,u) % sys = []; % % Конец процедуры mdlOutputs % 579
И. В. Черных. SIMULINK: среда создания инженерных приложений %==========================================================% % mdlGetTimeOfNextVarHit % % Вычисление моментов времени для следующей расчетной % % точки при моделировании дискретной части системы % % с переменным тактом дискретности. % % В этом случае параметр ts для процедуры mdllnitializeSizes % % должен быть задан равным [-20] % %==========================================================% function sys=mdlGetTimeOfNextVarHit(t,х,u) % sampl eTime = 1; sys = t + sampleTime; % Время срабатывания блока % увеличивается на 1 секунду. % Конец процедуры mdlGetTimeOfNextVarHit % %=========================================% % mdlTerminate % % Функция завершения моделирования % %=========================================% function sys=mdlTerminate(t,х,u) % sys = [1; % % Конец процедуры mdlTerminate 6.4. Примеры S-функций на языке MATLAB Простейшая S-функция Одним из самых простых примеров S-функции, поставляемой в составе системы Simulink, является функция timestwo (файл timestwo.m). Данная функция выполняет умножение входного сигнала на коэффициент 2. Ниже приведен текст этой S-функции. S-функция timestwo: function [sys,хО,str,ts] = timestwo(t,x,u,flag) % % TIMESTWO - Пример S-функции. Выходной сигнал равен % входному, умноженному на коэффициент 2: % у = 2 * и; % % Шаблон для создания S-функции - файл sfuntmpl.m % 380
6. S-функции и их применение % Copyright 1990-2001 The MathWorks, Inc. % $Revision: 1.6 $ % Авторский перевод комментариев: Черных И.В. % switch flag, % В зависимости от значения переменной flag % происходит обращение к той или иной процедуры % ответного вызова: % %===============% % Инициализация % %===============% case 0 [sys,хО,str,ts]=mdlInitializeSizes; % %===========================================% % Вычисление вектора выходных сигналов % %===========================================% % case 3 sys=mdlOutputs(t,х,u); % %=========================================% % Неиспользуемые значения переменной flag % %=========================================% % % В примере не используется процедура завершения S-функции, % нет непрерывных и дискретных переменных состояния, % поэтому значения переменной flag = 1, 2, 4, 9 % не задействованы. % Результатом работы S-функции в этих случаях % является пустой массив. % case ( 1, 2, 4, 9 } sys=[]; % %======================================% % Неизвестное значение переменной flag % %======================================% otherwise error(['Unhandled flag = ',num2str(flag)]); % end % % Конец функции timestwo % ЗЯ1
И. В. Черных. SIMULINK: среда создания инженерных приложений %==========================================================% % mdllnitializeSizes % % mdllnitializeSizes % % Функция инициализации % % Расчет начальных условий, тактов дискретности, % % размеров векторов сигналов, массива тактов и задержек % %==========================================================% % function [sys,хО,str,ts] = mdllnitializeSizes() % sizes = simsizes; sizes.NumContStates = 0; % Число непрерывных переменных % состояния. sizes.NumDiscStates = 0; % Число дискретных переменных % состояния. sizes.NumOutputs = -1; % Число выходных переменных. % Задается динамически. sizes.Numinputs = -1; % Число входных переменных % Задается динамически. sizes.DirFeedthrough = 1; % Прямая передача входного % сигнала на выход. sizes.NumSampleTimes = % sys = simsizes(sizes); 1; % Размер вектора тактов % квантования. str = []; % Параметр зарезервирован для % будущего использования. xO = [ ] ; % Задание вектора начальных % значений переменных состояния ts = [-1 0]; sizes = simsizes; % Такт квантования и задержка. % Такт наследуется от % предшествующего блока. % % Конец процедуры mdllnitializeSizes % %========================================================% % mdlOutputs % % Функция вычисления вектора выходных сигналов % %========================================================% % function sys = mdlOutputs(t, х, u) 382
6. S-функции и их применение % sys = и * 2; % Выходной сигнал блока есть входной сигнал, % умноженный на коэффициент 2. % % Конец процедуры mdlOutputs Пример: Схема модели с S-функцией timestwo приведена на рис. 6.3. На осцилло- грамме видно, что амплитуда выходного сигнала в два раза больше входного. Sine Wave S-Function Рис. 63 Модель непрерывной системы Модель непрерывной системы, описываемой уравнениями в пространст- ве состояний, представлена файлом csfunc.m. Соответствующая S-функция моделирует непрерывную систему с двумя входами, двумя выходами и двумя переменными состояния. Параметры модели (значения матриц А, В, С, D) задаются в теле S-функции и передаются в процедуры ответного вызова через их заголовки в виде дополнительных аргументов. Ниже приведен текст этой S-функции. function [sys,xO,str,ts] = csfunc(t,x,u,flag) % CSFUNC Пример S-функции. С помощью уравнений пространства % состояния моделируется непрерывная система: 383
И. В. Черных. SIMULINK: среда создания инженерных приложений % % х' = Ах + Ви % у = Сх + Du % % Значения матриц передаются в callback-методы через их % заголовки в качестве дополнительных параметров % % Шаблон для создания S-функции - файл sfuntmpl.m. % % Copyright 1990-2001 The MathWorks, Inc. % $Revision: 1.8 $ % Авторский перевод комментариев: Черных И.В. % % Задание матриц: % А=[-0.09 -0.01 1 0]; % Матрица системы. % В=[ 1 -7 0-2]; % Матрица входа. % С=[ 0 2 1 -5]; % Матрица выхода. % D=[-3 0 1 0]; % Матрица обхода. % switch flag, % В зависимости от значения переменной flag % происходит вызов того или иного метода: % %===============% % Инициализация % . %===============% case 0, [sys,хО,str,ts]=mdlInitializeSizes(A,B,C,D); % %========================% % Вычисление производных % %========================% case 1, sys=mdlDerivatives(t,x,u,A,B,C,D); % 384
6. S-функции и их применение %===========================================% % Вычисление вектора выходных сигналов % %===========================================% case 3, sys =mdlOutputs (t,x,u,A,B,C,D) ; % %=========================================% % Неиспользуемые значения переменной flag % %=========================================% % % В примере не используются методы для завершения работы % S-функции и нет дискретных переменных состояния, поэтому % значения переменной flag = 2, 4, 9 не используются. % Результатом S-функции в этом случае является пустая % матрица. % case {2, 4, 9 } sys=[]; % %======================================% % Неизвестное значение переменной flag % %======================================% otherwise error([’Unhandled flag = ',num2str(flag)]); % end % Конец csfunc % %==========================================================% % mdllnitializeSizes % % Функция инициализации % % Расчет начальных условий, тактов дискретности, % % размеров векторов сигналов, массива тактов и задержек % %==========================================================% % function [sys,хО,str,ts]=mdl!nitializeSizes(A, В, C,D) % sizes = simsizes; sizes.NumContStates = 2; % Число непрерывных переменных % состояния. sizes.NumDiscStates = 0; % Число дискретных переменных % состояния. 385
И. В. Черных. SIMULINK: среда создания инженерных приложений sizes.NumOutputs = 2; % Число выходных переменных. sizes.Numinputs = 2; % Число входных переменных. sizes.DirFeedthrough = 1; % Прямая передача. sizes.NumSampleTimes = 1; % Размер вектора тактов % дискретности. sys = simsizes(sizes); хО = zeros(2,1); % Задание вектора начальных условий str = []; % Параметр зарезервирован для % будущего использования. ts = [0 0); % Массив,определяющий такты % дискретности и задержки. % % Конец процедуры mdllnitializeSizes % %==========================================================% % mdlDerivatives % % Вычисление значений производных вектора % % состояния непрерывной части системы % %==========================================================% % function sys=mdlDerivatives(t,x,u,A,B,C,D) % sys = A*X + B*U; % % Конец процедуры mdlDerivatives % %«=========================================================% % mdlOutputs % % Вычисление значений вектора выходных сигналов % %==========================================================% function sys=mdlOutputs(t,x,u,A,B,C,D) % sys = C*x + D*U; % % Конец процедуры mdlOutputs Пример: Схема модели с S-функцисй csfunc приведена на рис 6.4 386
6. S-функции и их применение Рис. 6.4 Медель дискретной системы Модель дискретной системы, описываемой уравнениями в пространстве состояний, представлена М-файлом dsfunc.т. Эта S-функция, написанная иа языке MATLAB, позволяет смоделировать дискретную систему с двумя входами, двумя выходами и двумя переменными состояния. Параметры мо- дели (значения матриц А, В, С и D) задаются в теле S-функции и передают- ся процедурам ответного вызова в качестве входных аргументов через их заголовки. function [sys,хО,str, ts] = dsfunc(t,х,u,flag) % DSFUNC Пример S-функции. % Модель дискретной системы в пространстве состояний: % х(п+1) = Ах(п) + Bu(n) % y(n) = Cx(n) + Du(n) % % Значения матриц передаются в процедуры ответного вызова % в виде входных аргументов 387
И. В. Черных, SIMULINK: среда создания инженерных приложений % % Шаблон для создания S-функции - файл sfuntmpl.ш. % % Copyright 1990-2001 The MathWorks, Inc. % $Revision: 1.8 $ % Авторский перевод комментариев: Черных И. В. % % Задание матриц: А = (0,9135 0.1594 -0.7971 0.5947J; % Матрица системы. % В = (0.05189 0 0.4782 0]; % Матрица входа. % С = (0 1 10); % Матрица выхода. % D = [0.01 0 0 -0.02); % Матрица прямой передачи. % switch flag, % В зависимости от значения переменной flag % происходит обращение к той или иной % процедуре ответного вызова: % %===============% % Инициализация % % = = =! = = = = =. = = = = = = % case 0, [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D); % %==========================================================% % Вычисление вектора состояний дискретной части системы % %==========================================================% case 2, sys = mdlUpdate(t,x,u,A,B,C,D); % %==========================================================% % Вычисление вектора выходных сигналов % % непрерывной части системы % %==========================================================% case 3, sys = mdlOutputs(t,x,u,A,C,D); % lea
6. S-функции и их применение %=========================================% % Неиспользуемые значения переменной flag % %=========================================% % % В примере не используются процедуры завершения, % нет непрерывных переменных состояния. % Значения переменной flag =1, 4, 9 не используются. % Результатом S-функции в этих случаях является % пустой массив. % case {1, 4, 9 } sys=[]; % %======================================% % Неизвестное значение переменной flag % %======================================% otherwise error(['unhandled flag = ’,num2str(flag)]); end % % Конец процедуры dsfunc % %==========================================================% % mdllnitializeSizes % % Функция инициализации % % Расчет начальных условий, тактов дискретности, * % % размеров векторов сигналов, массива тактов и задержек % %==========================================================% % function [sys.xO,str,ts] = mdllnitializeSizes(А,В,C,D) % sizes = simsizes; sizes.NumContStates = 0; % % Число непрерывных переменных. sizes.NumDiscStates = size(A,1); % % Число дискретных переменных. sizes.NumOutputs = size(D,1); % % Число выходных переменных. sizes.Numinputs = size(D,2); % % Число входных переменных. 389
И. В, Черных. SIMULINK: среда создания инженерных приложений sizes.DirFeedthrough =1; % Прямая передача сигнала, sizes.NumSampleTimes =1; % Размер вектора % тактов дискретности. % sys = simsizes(sizes); % хО = zeros(sizes.NumDiscStates.1); % Задание вектора начальных условий по переменным состояния. str = []; % Параметр зарезервирован. ts = [0.2 0]; % Массив, задающий, % такт дискретности и задержку. % % Конец процедуры mdllnitializeSizes % %========================================================% % mdlupdate % % Вычисление вектора состояния % % дискретной части системы % %========================================================% % function sys = mdlupdate(t,х,и,А,В,С,D) sys = A*x+B*u; % % Конец процедуры mdlupdate % %=======================================================% % mdlOutputs % % Вычисление вектора выходных сигналов % %====s==================================================% % function sys = mdlOutputs(t,x,u,A,C,D) sys = C*x+D*u; % % Конец процедуры mdlOutputs Пример: Схема модели с S-функцией dsfunc приведена на рис. 6.5. 390
6. S-функции и их применение Модель гибридной системы Модель гибридной системы, содержащей как непрерывные, так и дис- кретные компоненты, представлена файлом mixedm.m. Рассматриваемая S-функция моделирует систему, состоящую из последовательно включен- ных интегратора (1/s) и блока задержки (l/z). Особенность S-функции для гибридной системы в том, что обращение к процедурам ответного вызова при моделировании дискретных компонентов выполняется в те же моменты времени, что и для непрерывных компонентов. Поэтому пользователь, при написании S-функции, должен предусмотреть проверку правильности об- ращения к процедурам ответного вызова, моделирующих дискретную часть системы. S-функция dsfunc: function [sys,хО,str,ts] = mixedm(t,x,u,flag) % MIXEDM Пример S-функции. % S-функция моделирует систему, которая состоит % из последовательности интегратора (1/s) % и блока задержки (l/z). 391
И. В. Черных. SIMULINK: среда создания инженерных приложений % % Шаблон для создания S-функции - файл sfuntmpl.т. % % Copyright 1990-2001 The MathWorks, Inc. % $Revision: 1.27 $ % Авторский перевод комментариев: Черных И. В. % % Такт дискретности и задержка для дискретной части системы: dperiod = 1; doffset = 0; % switch flag % В зависимости от значения переменной flag % происходит обращение к той или иной % процедуре ответного вызова: % %===============% % Инициализация % %===============% case 0 (sys,хО,str,ts]=mdlInitializeSizes(dperiod,doffset); % %========================% % Вычисление производных % %========================% case 1 sys=mdlDerivatives(t,x,u) ; % %==========================================================% % Вычисление вектора состояний дискретной части системы % %==========================================================% case 2, sys=mdlupdate(t,х,u,dperiod,doffset); % %===========================================% % Вычисление вектора выходных сигналов % %===========================================% case 3 sys=mdlOutputs(t,x,u,doffset,dperiod); % %==========================% % Завершение моделирования % %==========================% case 9 sys = []; % 392
6. S-функции и их применение %======================================% % Неизвестное значение переменной flag % %======================================% otherwise error(['unhandled flag = ',num2str(flag)]); % end % % Окончание mixedm % %==========================================================% % mdllnitializeSizes % % Функция инициализации % % Расчет начальных условий, тактов дискретности, % % размеров векторов сигналов, массива тактов и задержек % %==========================================================% function (sys.xO,str,ts)=mdlInitializeSizes(dperiod,doffset) % sizes = simsizes; sizes.NumContStates = 1; % Число непрерывных переменных . - % состояния. sizes.NumDiscStates =1; % Число дискретных переменных % состояния. sizes.NumOutputs =1; % Число выходных переменных. sizes.Numinputs =1; % Число входных переменных sizes.DirFeedthrough = 0; % Прямая передача сигнала, sizes.NumSampleTimes = 2; % Размер вектора % тактов дискретности. sys = simsizes(sizes); хО = zeros (2,1); % Задание вектора начальных % значений переменных состояния. str = (]; % Параметр зарезервирован, ts = [0 0; % Такт дискретности для % непрерывной части системы. dperiod doffset); % Такт дискретности для % дискретной части системы. % % Конец процедуры mdllnitializeSizes % %================================================% % mdlDerivatives % % Вычисление производных вектора состояния % % непрерывной части системы % %================================================% 393
И. В. Черных. SIMULINK: среда создания инженерных приложений function sys=mdlDerivatives(t,x,u) % sys = U; % % Конец процедуры mdlDerivatives % % ============= ================= = = = = = = == = = = = = = = ==5 = = = = = = = = = = = = % % mdlUpdate % % Вычисление вектора состояния % % дискретной части системы % %===========================р===============================% % function sys=mdlUpdate(t,x,u,dperiod,doffset) % Z„. % Вычисление переменных состояния дискретной части % выполняется в моменты времени, определяемые % с погрешностью, которая нё превышает 1е-15. % Если условие, заданное оператором if истинно, то выходной % сигнал блока изменяется. В противном случае выходной % сигнал остается равным значению на предыдущем шаге. % if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) < le-15 sys = x(1); else sys = []; end % % Конец процедуры mdlUpdate % %===================================«====================% % mdlOutputs % % Вычисление вектора выходных сигналов % %========================================================% % function sys=mdlOutputs(t,x,u,doffset,dperiod) % % Вычисление выходного сигнала системы выполняется в моменты % времени, определяемые с погрешностью, которая не превышает % 1е-15. % Если условие, заданное оператором if истинно, то выходной % сигнал блока изменяется. В противном случае выходной % сигнал остается равным значению на предыдущем шаге. % 394
6. S-функции и их применение if abs(round((t doffset)/dperiod) (t - doffset)/dperiod) < le 15 sys = x(2); else sys = [] ; end % % Конец процедуры mdlOutputs Пример: Схема модели с S-функцией mixedm приведена на рис. 6.6. Модель дискретной системы с переменным тактом квантования Модель дискретной системы с переменным тактом квантования пред- ставлена в файле vsfunc.m. Рассматриваемая S-функция моделирует устрой- ство задержки сигнала. Время задержки определяется величиной входного сигнала. Для вычисления момента времени срабатывания блока использует- ся процедура ответного вызова mdlGetTimeOfNextVarHit, вызываемая при значении переменой flag = 4. Поскольку время срабатывания блока зависит от входного сигнала, то параметр DirFeedthrough должен иметь значение равное I. Ниже приведен текст этой S-фуикции. S-функция dsfunc: 395
И. В. Черных. SIMULINK: среда создания инженерных приложений function [sys,хО,str,ts] = vsfunc(t,x,u,flag> % VSFUNC Пример S-функции. % S-функция моделирует устройство задержки сигнала % с переменным тактом квантования % Время задержки определяется величиной сигнала, % поступающего на второй вход: % % dt = u(2) % y(t4dt) = u(t) % % Сопутствующие функции: SFUNTMPL, CSFUNC, DSFUNC. % % Copyright 1990-2001 The MathWorks, Inc. % $Revision: 1.9 $ % Авторский перевод комментариев: Черных И. В. % switch flag, % В зависимости от значения переменной flag % происходит обращение к той или иной % процедуре ответного вызова: % %===============% % Инициализация % %===============% case 0, [sys,хО,str,ts]=mdlInitializeSizes; % %==========================================================% % Вычисление вектора состояний дискретной части системы % %==========================================================% case 2, sys=mdlUpdate(t,x,u); % %===========================================% % Вычисление вектора выходных сигналов % %===========================================% case 3, sys—mdlOutputs(t,х,u); % %==========================================================% % Вычисление времени срабатывания для следующей % % расчетной точки дискретной части системы % %=======================================«:==================% case 4, sys=mdlGetTiineOfNextVarHit (t, х, u) ,- % 396
6. S-фуикцни и их применение %==========================% % Завершение моделирования % %==========================% case 9, sys=mdlTerminate(t,x,u); % %=========================================% % Неиспользуемые значения переменной flag % %=========================================% % % В примере нет непрерывных переменных состояния, поэтому % значение переменной flag = 1 не используется. Результатом % S-функнии в этом случае является пустой массив. case 1, sys = []; % dP d₽ %======================================% % Неизвестное значение переменной flag % %======================================% otherwise error(('Unhandled flag = ’,num2str(flag)]); % end % % Конец функции vsfunc % %============================================== % mdllnitializeSizes % Функция инициализации % % Расчет начальных условий, тактов дискретности, % % размеров векторов сигналов, массива тактов и задержек % %==========================================================% % function (sys,хО,str,ts]=mdlInitializeSizes % sizes = simsizes; % sizes.NumContStates = 0; % Число непрерывных переменных % состояния. sizes.NumDiscStates =1; % Число дискретных переменных % состояния. sizes.NumOutputs = 1; % Число выходных переменных. sizes.Numinputs = 2; % Число входных переменных. sizes.DirFeedthrough =1; % Прямая передача сигналад. % Используется в процедуре % mdlGetTimeOfNextVarHit. 397
И. В. Черных. StMULINK: среда создания инженерных приложений_ sizes.NumSampleTimes =1; % Размер вектора тактов % дискретности. sys = simsizes(sizes); хО - [0); % Задание вектора начальных % значений. str = [); % Параметр зарезервирован. ts = (-2 0]; % Переменный такт дискретности. % При вызове S-функции со значением flag - 4 выполняется % расчет следующей точки срабатывания. % % Конец процедуры mdllnitializeSizes % %==========================================================% % mdlUpdate % % Вычисление вектора состояния дискретной части системы % %==========================================================% % function sys=mdlUpdate(t,x,u) % sys = U (1) ; % % Конец процедуры mdlUpdate % %======================================================^=% % mdlOutputs % % Вычисление вектора выходных сигналов % %========================================================% % function sys=mdlOutputs(t,х,u) % sys = X(1); % % Конец процедуры mdlOutputs % %====================================================== % mdlGetTimeOfNextVarHit % Вычисление следующей расчетной точки % для дискретной части системы. % Функция используется только в случае моделирования % дискретной части с переменным тактом дискретности. % В этом случае массив ts должен быть задан как [-2 0). %====================================================== 398
6. S-функции и их применение % function sys=mdlGetTimeOfNextVarHit(t,х,u) % sys = t + u(2); % % Конец процедуры mdlGetTimeOfNextVarHit % %=========================================% % mdlTerminate % % Завершение моделирования % %=========================================% % function sys=mdlTerminate(t,x,u) % sys = []; % % Конец процедуры mdlTerminate Пример: Схема модели с S-функцией vsfunc показана на рис. 6.7. В примере вре- мя задержки сигнала увеличивается с 0.0005 с до 0.0015 с. Puc. 6.7 399
И. В. Черных. SIMULINK: среда создания инженерных приложений 6.5. Непрерывная модель электродвигателя постоянного тока В этом разделе на примере двигателя постоянного тока независимого возбуждения (ДПТ НВ) рассмотрим создание S-функции для модели реаль- ного объекта. Математическое описание ДПТ НВ Двигатель постоянного тока независимого возбуждения (рис. 6.8), опи- сывается следующей системой дифференциальных и алгебраических урав- нений в абсолютных единицах: и = е+ R-i+ L- ——-, (6.1) d t d и> M-MC=J----- c d t (6.2) M-CMQ>i, (6.3) е = СшФ-со, где и - напряжение на якорной обмотке двигателя, е - электродвижущая сила (ЭДС) якоря, i - ток якоря, Ф - поток, создаваемый обмоткой возбуждения, М - электромагнитный момент двигателя, Мс - момент сопротивления движению, со- скорость вращения вала двигателя, R - активное сопротивление якорной цепи, L - индуктивность якорной цепи, J - суммарный момент инерции якоря и нагрузки, Сш - коэффициент связи между скоростью и ЭДС, См - коэффициент связи между током якоря и электромагнитным моментом. Входными воздействиями здесь являются напряжение якоря и и момент сопротивления движению Мс, выходными переменными - электромагнит- ный момент двигателя М и скорость вращения вала двигателя со, а перемен- ными состояния - ток якоря । и скорость вращения вала двигателя со. Ос- тальные переменные, входящие в состав уравнений (6.1)-(6.4), являются (6.4) Якорь Рис. 6.8 Обмотка возбуждения 400
6. S-функцни и их применение параметрами, численные значения которых необходимо будет задавать при проведении расчетов Приведем дифференциальные уравнения (6.1) и (6.2) к явной форме Ко- ши и выполним подстановку. Система уравнений примет вид; $ = -~[«-Сш-Ф-со-Я,|. (6.5) ^ = 1-1СЛ/Ф/-/Ис], (6.6) М=СмФ1, (6.7) со = со. (6.8) Последнее уравнение есть отражение того факта, что переменная состоя- ния со является также и выходной переменной. Введем "машинные" переменные. Входные переменные: и —> и0, Мс —> И, . Выходные переменные: М -> у0, со —> у, Переменные состояния: i —> х0, со —> х,. С учетом "машинных" переменных уравнения (6.5)-(6.8) примут вид: dx0 R СШФ 1 - х0 . ’*] + - Ho+O-U], at L L L (6.9) dxj См ’Ф n n 1 xo+O aj +0 w0 -и,, at J J (6.Ю) У о — CM Ф • x0 + 0 x,, (611) y, =Oxo+xl. Перепишем систему уравнений в матричной форме: dx . п — = А х + Ви, dt (6.12) (6.13) у = Сх. (6.14) 401
И. В. Черных SIMULINK: среда создания инженерных приложений где __R L СМФ J См ф о о 1 Отметим, что в получившейся системе уравнений входные переменные не участвуют в формировании выходных переменных (матрица прямой пере- дачи D отсутствует) и, следовательно, параметр sizes.DirFeedthrough, опре- деляемый при инициализации S-функции, должен быть задан равным нулю. Пример S-функции для ДПТНВ Для создания S-функции модели ДПТНВ за основу взят файл примера модели Непрерывной системы csfunc.m. Принципиальные отличия нового файла от образца сводятся к следующему: 1. Для расчета матриц А, В и С используются параметры, передаваемые в S-функцию через окно диалога блока S-function. Эти параметры (L, R, J, Cm, Cw, Fi) записываются в конце списка аргументов в заголовке S- функции: function (sys,хО,str,ts) = dpt_sfunc_l(t,х,u,flag,L,R,J,Cm,Cw,Fi) 2. Для исключения повторяющихся вычислений расчет матриц А, В и С выполняется с помощью процедуры mdllnitializeSizes. Для этого параметры блока передаются в процедуру mdllnitializeSizes через ее заголовок. [sys,xO,str,ts] = mdllnitializeSizes(L,R,J,Cm,Cw,Fi) Поскольку инициализация модели происходит лишь один раз, то и рас- чет матриц А, В и С будет выполнен также один раз, что значительно повы- сит скорость моделирования. 3. Передача рассчитанных в процедуре mdllnitializeSizes матриц выпол- няется с помощью глобальных переменных. Для этого в теле S-функции,- процедуре mdllnitializeSizes (где выполняется расчет этих матриц), а также в процедурах mdlDerivatives и mdlOutputs (где эти матрицы используются для расчетов) должны быть предусмотрены объявления вида: V global АВС ? 4. Поскольку в уравнениях модели матрица прямой передачи D отсутст-j вует (входные переменные не участвуют в формировании выходных пере- менных), то параметр sizes.DirFeedthrough в процедуре mdllnitializeSizes за- дан равным нулю. 402
6. S-функции и их применение Ниже приведен текст S-функции dptsfunc 1. function (sys,хО,str,ts] = dpt_sfunc_l(t,x,u,flag,L,R,J,Cm,Cw,Fi) % DPT_SFUNC_1 Пример S-функции для моделирования двигателя % постоянного тока независимого возбуждения. % % В примере выполняется моделирование следующих уравнений: % х' = Ах + Ви % у = Сх 4 Du % % Copyright 2002, Chernykh ILya % $Revision: 1.8 % Автор: Черных И. В. % % Параметры S-функции, передаваемые через окно диалога блока % S-function: % % L - индуктивность цепи якоря. % R - активное сопротивление цепи якоря. % J - момент инерции. % Ст - коэффициент связи между моментом и током. % Cw - коэффициент связи между потоком и скоростью вращения % вала. % Fi - поток, создаваемый обмоткой возбуждения. % global АВС; % Объявление глобальных переменных switch flag, % В зависимости от значения переменной flag % происходит обращение к той или иной % процедуре ответного вызова: % %===============% % Инициализация % %===============% case О, (sys,хО,str,ts}=mdlInitializeSizes(L,R,J,Cm,Cw,Fi); % %========================% % Вычисление производных % %========================% case 1, sys=mdlDerivatives(t,x,u) ,- % 403
И. В. Черных. SIMULINK: среда создания инженерных приложений %===========================================% % Вычисление вектора выходных сигналов % %===========================================% case 3, sys=mdlOutputs(t,х,u); % %=========================================% % Неиспользуемые значения переменной flag % %=========================================% case { 2, 4, 9 }, sys = [ 1 ; % %======================================% % Неизвестное значение переменной flag % %======================================% otherwise error([’Unhandled flag = ',num2str(flag)]); % end % Конец функции dpt_sfunc_l % %========================================================== % mdllnitializeSizes % Функция инициализации % Расчет начальных условий, тактов дискретности, % размеров векторов сигналов, массива тактов и задержек %=====================«==================================== % function [sys,хО,str,ts]=mdlInitializeSizes(L,R,J,Cm,Cw,Fi) % sizes = simsizes; % sizes.NumContStates = 2; % Число непрерывных переменных состояния. % В данном случае этот параметр равен 2 % (ток якоря и скорость вращения вала). % sizes.NumDiscStates = 0; % Число дискретных переменных состояния. % В данном случае этот параметр равен 0, % поскольку модель непрерывная. % sizes.Numoutputs = 2; % Число выходных переменных. % В данном случае этот параметр равен 2 % (скорость вращения и момент на валу). % dP dP о\о dP dP dP 404
6. S-функции и их применение sizes.Numinputs = 2; % Число входных переменных. % В данном случае этот параметр равен 2 %(напряжение на обмотке якоря и момент сопротивления). % sizes.DirFeedthrough = 0; % Прямая передача сигнала. % Значение параметра равно нулю, поскольку матрица D % отсутствует (входные переменные не участвуют % в формировании выходных переменных). % sizes.NumSampleTimes = 1; % Размерность вектора тактов дискретности. % sys = simsizes(sizes) ; % хО = zeros(2,1); % Задание вектора начальных значений переменных состояния. % Начальные условия нулевые. % str = [J; % % Зарезервированный параметр ts = (0 0J; % Массив, задающий такт % % дискретности и задержки. % Далее в тело процедуры mdllnitializeSizes добавлены % операторы вычисления матриц А, В и С % global АВС; % Объявление глобальных переменных, % необходимых для расчетов внутри процедур % mdlDerivatives и mdlOutputs. % % Расчет матриц А, В и С: % А = (-R/L -Cw*Fi/L Cm*Fi/J 0 ]; % В = [1/L 0 0 -1/JJ; % С = [Cm*Fi 0 0 1] ; % % Конец процедуры mdllnitializeSizes % 405
И. В. Черных. SIMULINK: среда создания инженерных приложений %=========================================================% % mdlDerivatives % % Вычисление производных вектора состояния % % непрерывной части системы % %=========================================================% % function sys=mdlDerivatives(t,x,u) % global A В; % Объявление глобальных переменных. sys = А*х + B*u; % % Конец процедуры mdlDerivatives % %========================================================% % mdlOutputs % % Вычисление вектора выходных сигналов % %========================================================% % function sys=mdlOutputs(t,x,u) % global С; % Объявление глобальной переменной. sys = С*х; % % Конец процедуры mdlOutputs Пример: На рис. 6.9 показаны модели двигателя постоянного тока на базе S-функции и с использованием стандартных блоков. Результаты расчета для обеих мо- делей идентичны. Окно диалога блока S-function для рассматриваемого примера изображе- но на рис. 6.10. Параметры S-функции заданы с помощью переменных, зна- чения которых (в единицах СИ) заданы в рабочей области MATLAB: L = 0.001; R = 0.1, J = 10; Cm = 10; Cw = 10; V = 220; Fi = 1; Tnabr = 0.2; Mnabr = 2500. 406
6. S-функции и их применение Рис. 6.9 Block Parameters: S Function r S-Function----------7"------- —-'T"----------------- ———I— User-definable block, Blocks may be witton in M C Fatten or Ada and must conform to S-function standards, tx.u and flag are automatical passed to the S-function by Simulink, "Ektra" parameters may be | specified in the ‘S-function parameters’ field. Parameters S-function name: |dptsfunc_1 S-function parameters: |l RJ£m£w,Fi I OK "~| Cancel | Help [ | Puc. 6.10 6.6. ИС S-Function Builder Инструментальные возможности системы Simulink предоставляют поль- зователю два способа создания S-функций на языке С: с помощью графиче- ского интерфейса S-Function Builder и вручную с применением шаблона 407
И. В. Черных. SIMULINK: среда создания инженерных приложений (аналогично созданию S-функции на языке MATLAB). Второй способ более универсален, первый менее трудоемок. Рассмотрим применение ИС S-Func- tion Builder, который позволяет легко и быстро создать нужную S-функцию в виде исполняемого dll-файла. Пример: Создание S-функции рассмотрим на примере ДПТНВ. Его математиче- ское описание представлено в предыдущем разделе. Поскольку в стандарте языка С отсутствуют матричные операции, то уравнения (6.9)- (6.12) пере- пишем в скалярной форме: , = А) 0 ‘ Х0 *" А) I ’ Х1 *" ®оо ’ «О ’ at -^ = А10л0 + 8|1-и|, (616> at Уо=Соо-хо, (6.17) У, =С,, л,, (6.18) ИС S-Function Builder оформлено в виде обычного Simulink-блока, раз- мещенного в библиотеке Functions&Tables (Функции и таблицы). Пикто- грамма блока показана на рис. 6.11. S-Function Builder Рис 6 .11 Двойной щелчок на пиктограмме блока открывает окно ИС S-Function Builder (рис. 6.12), которое содержит панель параметров (Parameters) с окна- ми редактирования для ввода имени S-функции (S-function name) и значе- ний параметров S-функции (S-function parameters). Здесь же находится кнопка Build, которая предназначена для запуска процесса компиляции S-функции. В нижней части окна S-Function Builder находятся кнопки Help (Вызов справки) и Cancel (Закрыть окно). Среднюю часть окна занимают 7 вкладок, предназначенных для задания свойств S-функции и фрагментов ее кода: 408
6. S-функции и их применение 1. Initialization - инициализация. 2. Data Properties - свойства данных. 3. Libraries - библиотеки. 4. Outputs - выходы 5. Continuous Derivatives - производные непрерывных переменных. 6. Discrete Update - обновление дискретных переменных. 7. Build Info - информация о компоновке. ->S Function Builder Build_DPT_Sfunc_1_C/S-t unc&hu Parameters .........-............- 6-function name: lDPT.ls_Fun_1_C /1. Inilialtzation \ 2. Data Properties\ 3. Libraries \ 4 Outputs \ 5. Continuous Derivatives Y~6. Discrete Update X~7~Bulld lnfo\ Description The S-Function Builder block creates a wrapper C-S-function with multiple input ports, multiple output ports and variable number of scalar, vector or matrix parameters. The Inputs and output ports can propagate Simulink built-in data types, complex, frame, 1 -D and 2-D signals. You can use this block to enter your own code or import ’ legacy C code. This block also supports discrete and continuous states. The states must be of type real Optionally j the S-Funclion Builder block Wil generate a TLC file to be used with Real Time Workshop Cor code generation j-S-functionsettings ------- . - - — — - Number of discrete states: [J Number of parameters: | Discrete stales IC: [p Sample mode [continuous | Number of continuous stales Г? continuous statesic; [rio Cancel I Help I Puc. 6.12 Инициализация На вкладке Initialization (Инициализация) задаются следующие свойства S-функции- 409
И. В. Черных. SIMULINK: среда создания инженерных приложений Number of discrete states: [число дискретных переменных]. Discrete states IC: [начальные значения дискретных переменных]. Значения вводятся через за- пятую. Number of continuous states: , [число непрерывных переменных]. Continuous states IC: [начальные значения непрерывных переменных]. Значения вводятся через запятую. Number of parameters: [количество параметров]. В графе отображается число параметров блока, заданных на вкладке Data Properties. Sample mode: [режим модельного времени]. Может принимать значения из списка: • Inherited - наследуемый; • Continuous - непрерывный; • Discrete - дискретный. Discrete sample time value: [значение такта дискретности]. Параметр доступен для ввода, если режим модельного времени дискретный. Окно ИС S-Function Builder с открытой вкладкой Initialization показано на рис. 6.12. Для рассматриваемого примера число входных переменных равно двум (напряжение на обмотке якоря и момент сопротивления). Число выходных переменных равно двум (момент и скорость). Количество пере- менных состояния также равно двум (ток якоря и скорость). Число парамет- ров S-функции, передаваемых через окно диалога, равно 6, режим модель- ного времени - непрерывный, число дискретных переменных состояния - О, начальные значения дискретных и непрерывных переменных состояния ну- левые. Свойства данных На вкладке Data Properties (Свойства данных) (рис. 6.13) задаются имена и свойства входных и выходных сигналов, а также данных, передаваемых через окно задания параметров блока S-function. Вкладка Data Properties со- держит, в свою очередь, 3 вкладки: 410
6. S-функцин и их применение Input ports [входные порты]. На вкладке задаются следующие свойства портов: • Port name - имя порта. По умолчанию входные порты имеют имена иО, ul, и2 ит. д., однако пользователь имеет возможность изменить стан- дартное название порта. • Data type - тип входного сигнала. • Dimensions - размерность входного сигнала. Пользователь имеет воз- можность выбрать одномерный (1-D) или двумерный (2-D) тип входного сигнала. • Row - число строк двумерного входного сигнала. • Column - число столбцов двумерного входного сигнала. • Complexity - тип сигнала, real (действительный) или complex (комплекс- ный). • Frame - фрейм. Разделение сигнала на фреймы: on - есть, off - нет. /1. Initialization У 2 Data Properties У 3. libraries Ya.Oulputs Y 5 Continuous Dertealwes Y 6- Discrete Update Y 7. Budd info\ Description ------— —----« ---л; r--r? Use the Add and Delete buttons lo add/remove ports and parameters to the S-function. Use the table below to configure the dale type, dimensions, complexity and frameness of each S-function port and to configure the data i type and complexity of each parameter Puc. 6.13 С помощью расположенных в левой части кнопок можно добавлять но- вые порты, перемещать порты вверх или вниз списка, а также удалять нх. Output ports: [выходные порты]. На вкладке задаются свойства выходных портов по ана- логии со входными портами. Имена выходных портов по умолчанию - уО, у 1, у2 и т. д. Так же как и для входных портов, пользователь имеет возмож- ность изменить стандартные названия портов. 411
И. В. Черных. SIMULINK: среда создания инженерных приложений Parameters: [параметры]. На вкладке задаются имена и свойства параметров блока, ис- пользуемых в окне диалога блока. Пользователь может задать тип данных входного сигнала (double, real, int8 и т. п.) и вид сигнала (действительный илн комплексный). Вкладка Initialization с открытой вкладкой Parameters показана на рис. 6.14. /1 initialization У 2 Data Properties \ 3 Libraries \ 4, Outputs У~5~СопЬпиооь Derivatives \ 6, Discrete Update Y7Bulla lrlf0 \ Description - “*—--------------------—* ---- ----- - - --------- Use the Add and Delete buttons to add/remove pods and parameters to the S-function Use the table below to I configure the data type, dimensions, complexity and frameness of each S-function port and to configure the data I type and complexity of each parameter. Port and Parameter properties — — Puc. 6.14 Для модели двигателя постоянного тока заданы 6 параметров действи- тельного типа двойной точности. Библиотеки Вкладка Libraries (Библиотеки) используется для указания библиотеч- ных и других подключаемых файлов. На вкладке имеется 3 окна для ввода фрагментов С-кода: • Library/Object/Source files - имена подключаемых библиотечных (* *.hb) и объектных (*.obj) файлов. Указанные файлы должны находиться в те- кущей рабочей папке, либо следует указать путь доступа к этим файлам. Для каждого имени файла предназначена одна строка. • Includes - директивы для подключения заголовочных (*.h) и обычных (*.с, *.срр) файлов. Например: # include <math.h> # include "myutils.c" 412
6 S-функции и их применение В данном окне следует записать файлы, содержащие функции пользова- теля, которые будут использоваться в проекте. • External Function Declarations - объявления внешних функций, если они отсутствуют в заголовочных или иных подключаемых файлах. Например: extern double func(double a); Вкладка Libraries показана на рис. 6.15. /1 Initialization у 2 Data Properties У 3. Libraries \ 4. Outputs \ S Continuous Der'rralwes Y 6 Discrete Update XT'Build lrito\ Enter any libraryfobject or source Hies used by the S-function. Then, specify any necessaiy include files i or enter the trfemtl function dedal ebons. These functions can be caned in the Outputs, Dsrtvattves and '« Update methods. Puc. 6.15 Выходные переменные На вкладке Outputs (Выходные переменные) задаются выражения для вычисления выходных переменных. Вкладка содержит текстовое окно, предназначенное для ввода числовых выражений, в которых можно исполь- зовать (не объявляя специально) имена входных и выходных портов, а так- же имена параметров блока S-function. Кроме перечисленных в выражениях могут быть использованы следующие переменные: • хС[0], хС( 1 ], хС[2] и т. д. -- непрерывные переменные состояния. Тип пе- ременных - double. • xD[0], xDfl], xD[2] ит. д. - дискретные переменные состояния. Тип пе- ременных - double. • p_widlhO, p_widthl, p_width2 - и т. д. Переменные целого типа, значения которых равны размерам нулевого, первого, второго и т. д. параметров блока S-function. 413
И В Черных SIMULINK: среда создания инженерных приложений • u_width - фактический размер входного сигнала (переменная целого ти- па). Размер наследуем, если на вкладке Initialization указано значение -1. Если входной сигнал двумерный - значением переменной u_width будет вектор из двух элементов. • y_width - фактический размер выходного сигнала (переменная целого типа). Размер наследуем, если на вкладке Initialization указано значение -1. Если выходной сигнал двумерный - значением переменной y_width будет вектор из двух элементов. Для рассматриваемого примера расчетные выражения выглядят сле- дующим образом: double COO = Cm[0]*Fi[0], Cll = 1; yO[0] = C00*xC[0]; yl[0] = Cll*xC[lJ; В первой строке рассматриваемого примера объявляются и вычисляются переменные С00 и С11, входящие в уравнения (6.17-6.18). Во второй и третьей записаны выражения для расчета выходных сигналов в соответст- вии с уравнениями (6.17) и (6.18). На вкладке имеется также флажок для установки параметра Inputs аге needed in the output function (direct feedthrough) - использование входных сигналов для расчета выходных (прямая передача). Вкладка Outputs показана на рис. 6.16. /1. Initialgefion yz~Data Properties У 3. Libraries / 4. Outputs Y 5. Continuous Derivatives YTPtscrete Update \ 7. Budd info \ r code description Enter your C-code or call your algorithm. U available, discrete and continuous states should be referenced as xD|0] ..xD|n], xCJO] xC[n] respectively. Input ports, output ports and parameters should be referenced using the symbols specified In the Data Properties These references appear directly tn the generated S-function i Code for the mdlOutputs function - " - " — -- ..... double C00-Cm[0] *Fi[O], Cll- 1, y0[0) - C0O«xC[01; yl[01 - С11»кС[Ц; Р Inputs are needed in the output lUncttorHdireclfesdthrough) Puc. 6.16 414
6 S-функции и их применение Производные непрерывных переменных состояния Вкладка Continuous Derivatives (Производные непрерывных перемен- ных) содержит текстовое окно, предназначенное для ввода выражений для вычисления производных непрерывных переменных состояния. В расчет- ных выражениях можно использовать те же переменные, что и на вкладке Outputs, за исключением дискретных переменных xD. Сами производные обозначаются как dx[0], dx( 1 ], dx[2] и т. п. Для рассматриваемого примера выражения для расчета производных вы- глядят следующим образом: double АО0 = -R[0]/L[0], А01 = -Cw[0]*Fi[0]/L[0], BOO = 1/L[0]; double А10 = Cm[0]*Fi[0]/ J [ 0], Bll = -l/J[0]; dx[0] = A00*xC[0]+A01*xC[1]+B00*u0[0]; dx[l] = A10*xC[0]+Bll*ul[0]; » В первых двух строках объявляются и рассчитываются коэффициенты А00 - В11, а в оставшихся строках записаны выражения для расчета произ- водных. Вкладка Continuous Derivatives показана на рис. 6.17. /1 Initialization x/2~Dele Properties / 3. Libraries / 4 Outpuls / 5. Continuous Derivatives Y 6. Discrete Update \ 7. Build Info \ - Code description ' This section is optional and use to calculate the derivatives. It is called only if the S-function has one or more continuous states. The statas and derivatives of the S-fUnction are of type double and must be referenced asxC{O].xCni, etc and dxfO] and dx[11 etc respectively input ports, output ports and parameters should be referenced using the symbols specified In the Data Properties. These references appear directly in the generated S-function. < Code for the mdlDerivatives function --j? — —- . — - ------ -- double AOO - -R[O]/L[O] , A01 - -Cv[0]’Fi[O]/L[O] , BOO - 1/L[O]; double A10 - Cm[0]’Fi[O]/J[O] , Bil - -1/J[O); dx[0) - AOO’xCfO]+A01’xC [ 1]+B0O*u0[0] ; dx[l] - AlO’xCfO] +Bll’ul[0] ; r1 Puc. 6.17 Обновление дискретных переменных В текстовом окне вкладки Discrete Update (Обновление дискретных пе- ременных) записываются выражения для расчета дискретных переменных состояния. В расчетных выражениях можно использовать те же перемен- 415
И. В. Черных. SIMULINK: среда создания инженерных приложений ные, что и на вкладке Outputs, за исключением непрерывных переменных состояния хС. Сами дискретные переменные состояния обозначаются как xD[0], xD( 1], xD[2] и т. и. Вкладка Discrete Update показана на рис. 6.18. / 1 Initialization У 2 Data Properties У 3 Libraries У 4. Oulputs У 5 Continuous Derivatives У 6 Discrete Update \ 7. Build Info \ Code description ......•• - -— - - ~ This section Is optional and use to update the discrete states It is called only If the S-funclion has one or more discrete states The stales of the S-function are of type double and must be referenced as xD|0],xD|lj, etc. respectively. Inpul ports, output ports and parameters should be referenced using the symbols specified in the Data Properties. These references appear directly hi the generated S-function Code for the mdlUpdate function -- ------- ----------------- ---------------------- ---- ----------- • * Code example • xD[Oj - uO[O): *7 LT1 Puc. 6.18 Поскольку рассматриваемая модель является непрерывной, то на рисун- ке показан лишь шаблон. Информация о компоновке На вкладке Build Info (Информация о компоновке) в окне Compilation diagnostics (Диагностические сообщения о ходе компиляции) отображается информация о процессе компоновки S-функции. На вкладке с помощью флажков можно установить следующие параметры: • Show compile steps - отображать стадии компиляции. При установ- ленном флажке в окне Compilation diagnostics будут отображены все со- общения компилятора. Данный параметр желательно устанавливать при сборке S-функции, используюшей внешние функции. • Create a debuggable MEX-file - создавать отлаживаемый исполняемый файл. При установленном флажке в процессе компиляции будет создан файл, позволяющий выполнять отладку Simulink-модели. • Generate wrapper TLC - создать оболочку для компилятора объектного языка TLC (Target Language Compiler). Флажок устанавливается, если предполагается использовать ускоритель объектного кода или ППП Real-Time Workshop. 416
6. S-функции и их применение • Save code only - сохранить только код. Если флажок установлен, то бу- дут созданы только текстовые файлы на языке С. Перед началом компиляции необходимо выполнить настройку компиля- тора. Для этого в командном окне системы MATLAB следуег ввести команду: тех -setup и далее следовать диалогу с компилятором. В составе системы MATLAB поставляется компилятор Lee. Ниже приводится пример такого диалога: >> тех -setup Please choose your compiler for building external interface (MEX) files: Would you like тех to locate installed compilers [y]/n? n Select a compiler: [1] Borland C++Builder version 6.0 [2] Borland C++Builder version 5.0 [3] Borland C++Builder version 4.0 [4] Borland C++Builder version 3.0 [5] Borland C/C++ version 5.02 [6] Borland C/C++ version 5.0 [7] Borland C/C++ (free command I line tools) version 5.5 [8] Compaq Visual Fortran version 6.1 (9) Compaq Visual Fortran version 6.6 [10] Digital Visual Fortran version 6.0 [11] Digital Visual Fortran version 5.0 [12] Lee C version 2.4 [13] Microsoft Visual C/C++ version 7.0 [14] Microsoft Visual C/C++ version 6.0 [15] Microsoft Visual C/C++ version 5.0 [16] WATCOM C/C++ version 11 [17] WATCOM C/C++ version 10.6 [0] None Compiler: 12 Your machine has a Lee C compiler located at C:\MATLAB6P5\sys\lcc. Do you want to use this compiler [у]/п? у - Ответ пользователя 417
И. В. Черных. SIMULINK: среда создания инженерных приложений Please verify your choices: Compiler: Lee C 2.4 Location: C:\MATLAB6P5\sys\lcc Are these correct?([у]/п): у The default options file: “C:\Documents and Settings\Администратор\АррИса11оп Data\MathWorks\MATLAB\R13\mexopts.bat" is being updated from C:\MATLAB6P5\BIN\WIN32\mexopts\lccopts.bat... Процесс компиляции начинается после нажатия на кнопку Build Об ус- пешном завершении процесса компиляции свидетельствует сообщение вида: ### S-function 'DPT_Sfunc_l_C.dll' created successfully. По завершении процесса компиляции в рабочей папке будут созданы текстовые файлы с названиями вида: sfun_C.c, sfun_wrapper.c и sfun dll. Последний файл является исполняемым; в файле sfun_C.c находится текст S-функции, а в файле sfun_wrapper.c - процедуры ответного вызова, сгене- рированные ИС S-Function Builder. Окно ИС S-Function Builder с открытой вкладкой Build Info показано на рис. 6.19. /1. Initialization У 2. Data Properties / 3 Libraries У~< outputs У 5. Continuous Derivatives /^Discrete Update / 7 Build Info \ , Compilation diagnostics ' - — ### DPT S Fun 1 CC created successfully 8 fun t C wgpper.c' created successfully ****DPT S Fun .1 С Ж created successfully : ### S-fUnction OPT_S_Fun_1_C.dlt created successfully Build options Г Show compile steps I Create a debuggable MEX-flle ueneraie wrapper jlu Г* Save code only Puc 6 19 418
6. S-функции и их применение На рис. 6.20 показана модель ДПТНВ на основе S-функции, созданной ио изложенной методике. Результаты моделирования, выполненные с помо- щью этой S-функции, полностью совпадают с результатами предыдущею раздела. Скорость моделирования с использованием S-функции на языке С в несколько раз выше, чем при использовании языка MATLAB. Рис. 6.20 6.7. Корректировка S-функций S-функции, созданные с помощью ИС S-Function Builder, обладают од- ним существенным недостатком. В большинстве случаев при вычислении переменных состояния, выходных сигналов, производных должны исполь- зоваться некоторые ранее вычисленные константы. В задаче моделирования двигателя постоянного тока - это элементы матриц уравнений в простран- стве состояний, рассчитываемые через параметры двигателя (сопротивле- ние, индуктивность и т. п.). В примере на языке MATLAB расчет матриц выполнялся в процедуре mdllnitializeSizes только один раз - на этапе ини- циализации модели. Затем эти матрицы использовались для вычисления производных в процедуре mdlDerivatives и выходных сигналов - в процеду- ре mdlOutputs. Такая компоновка S-функции обеспечивала наибольшую скорост ь вычислений. 419
И. В. Черных. SIMULINK: среда создания инженерных приложений К сожалению, при применении ИС S-Function Builder отсутствует воз- можность ввести фрагмент кода на вкладке Initialization, а также скрыты заго- ловки процедур ответного вызова, что делает невозможным добавление но- вых параметров, которые могли бы передаваться в эти процедуры. Такая ситуация приводит к тому, что константы, которые можно было бы вычис- лить всего один раз и затем лишь использовать, вычисляются вновь и вновь на каждом шаге моделирования (в примере с ДПТНВ - это паарметры А00, А01, В00 и т. п.). И если в относительно простых моделях с эти еще можно смириться, то для сложных моделей с большим объемом предварительных вычислений такая ситуация приводит к существенному замедлению процес- са моделирования. Выходом из такой ситуации является корректировка кода, автоматиче- ски сгенерированного ИС S-Function Builder. Такая корректировка должна обеспечить вычисление констант только один раз на этапе инициализации и передачу их в нужные процедуры ответного вызова. В рассматриваемом примере модели ДПТНВ на этапе инициализации должны вычисляться кон- станты А00, А01, В00 и т. д., а затем, передаваться в процедуры для расчета производных и выходных переменных. Для реализации поставленной зада- чи следует проанализировать полученные с помощью ИС S-Function Builder файлы DPT_Sfunc_l_C.c и DPT_Sfunc_l_C_wrapper.c. Первый файл содер- жит исходный текст S-функции, а второй - тексты процедур ответного вы- зова. Текст файла DPT_Sfunc_l_C.c приведен ниже. /* * File: DPT_S_Fun_l_C.с * --- THIS FILE GENERATED BY S-FUNCTION BUILDER: 2.0 ---- * * This file is an S-function produced by the S-Function * Builder which only recognizes certain fields. Changes * made outside these fields will be lost the next time the * block is used to load, edit, and resave this file. This * file will be overwritten by the S-function Builder block. * If you want to edit this file by hand, you must change it * only in the area defined as: * * %%%-SFUNWIZ_defines_Changes_BEGIN * #define NAME 'replacement text' * %%% SFUNWIZ_defines_Changes_END 420
6. S-фуикции и их применение * DO NOT change NAME--Change the 'replacement text' only. * * For better compatibility with the Real-Time Workshop, the * “wrapper" S-function technique is used. This is * discussed in the Real-Time Workshop User's Manual in the * Chapter titled, "Wrapper S-functions". * | See matlabroot/simulink/src/sfuntmpl—doc.c for a more | * j detailed template *__________________________________________________________ * Created: Sun Jun 29 13:03:29 2003 */ «define S_FUNCTION_NAME DPT_S_Fun_l_C «define S_FUNCTION_LEVEL 2 /*««««««««<««<«<««««««««««<««<««*/ /* %%%-SFUNWIZ_defines_Changes_BEGIN - EDIT HERE TO _END */ «define NUM_INPUTS 2 /* Input Port 0 */ «define IN_PORT_0_NAME uO «define INPUT_0_WIDTH 1 «define INPUT_DIMS_0_COL 1 «define INPUT_0_DTYPE real_T «define INPUT_0_COMPLEX COMPLEX_NO «define IN_O__FRAME_BASED FRAME-NO «define IN_0_DIMS 1-D «define INPUT_0_FEEDTHROUGH 1 /* Input Port 1 */ «define IN_PORT_1_NAME «define INPUT_1_WIDTH «define INPUT_DIMS_1_COL «define INPUT_1_DTYPE «define INPUT_1_COMPLEX «define IN_1_FRAME_BASED «define IN_1_DIMS «define INPUT_1-FEEDTHROUGH «define NUM_OUTPUTS /* Output Port 0 */ «define OUT_PORT_0_NAME ul 1 1 real_T COMPLEX_NO FRAME_NO 1-D 1 2 yO 421
И. В. Черных. SiMULINK: среда создания инженерных приложений «define OUTPUT„0_WIDTH «define OUTPUT_DIMS_0_COL ((define OUTPUT„0_DTYPE «define OUTPUT_0_COMPLEX ((define OUT_0_FRAME.BASED ((define OUT.O.DIMS 1 1 real_T COMPLEX_NO FRAME_NO 1-D /* Output Port 1 */ «define OUT_PORT_1_NAME yi «define OUTPUT_1_WIDTH 1 «define OUTPUT_DIMS_1_COL 1 «define OUTPUT_1_DTYPE real_T «define OUTPUT_1_COMPLEX COMPLEX_NO «define OUT_1_FRAME_BASED FRAME_NO «define OUT_1_DIMS 1-D «define NPARAMS 6 /* Parameter 1 */ «define PARAMETER_O_NAME L «define PARAMETER_O_DTYPE real_T «define PARAMETER_0_COMPLEX COMPLEX_NO /* Parameter 2 */ «define PARAMETER_1_NAME R «define PARAMETER_1_DTYPE real_T «define PARAMETER-!-COMPLEX COMPLEX_NO /* Parameter 3 */ «define PARAMETER_2_NAME J «define PARAMETER_2_DTYPE real_T «define PARAMETER.2_C0MPLEX COMPLEX_NO /* Parameter 4 */ «define PARAMETER_3_NAME Cm «define PARAMETER_3_DTYPE real_T «define PARAMETER_3„COMPLEX COMPLEX_NO /* Parameter 5 */ «define PARAMETER_4_NAME Cw «define PARAMETER_4_DTYPE real_T «define PARAMETER_4_C0MPLEX COMPLEX_NO /* Parameter 6 */ / «define PARAMETER_5_NAME Fi «define PARAMETER_5_DTYPE real_T «define PARAMETER_5_C0MPLEX COMPLEX_NO «define SAMPLE_TIME_O 0 «define NUM_DISC_STATES 0 «define DISC_STATES_IC [0] 422
6. S-функции и их применение «define' «define NUM_CONT_STATES CONT_STATES._IC 2 (0,0] «define SFUNWIZ_GENERATE_TLC 1 «define SOURCEFILES "" «define PANELINDEX 3 «define SFUNWIZ_REVISION 2.0 /* %%%-SFUNWIZ_defines_Changes_END EDIT HERE ТО _BEGIN */ /*««<<«<«<««<«<<«<<<««<<<«<<<<<««<<<«<««<*/ #include "simstruc.h" i «define PARAM_DEFO(S) ssGetSFcnParam(S, 0) «define PARAM_DEF1(S) ssGetSFcnParam(S, 1) «define PARAM_DEF2(S) ssGetSFcnParam(S, 2) «define PARAM_DEF3(S) ssGetSFcnParam(S, 3) «define PARAM_DEF4(S) ssGetSFcnParam(S, 4) «define PARAM_DEF5(S) ssGetSFcnParam(S, 5) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) &&\ImxIsEmpty(pVal) && lmx!sSparse(pVal) && imxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) &&\ImxIsEmpty(pVal) && ImxIsSparse(pVal) && irnxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) &&\ImxIsEmpty(pVal) && ImxIsSparse(pVal) && imxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && 'mxIsLogical(pVal) &&\ImxIsEmpty(pVal) && 'mxIsSparse(pVal) && imxlsComplex(pVal) && mxIsDouble(pVal)) «define IS„PARAM_.DOUBLE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) ImxIsEmpty(pVal) && ImxIsSparse(pVal) && imxIsComplex(pVal) && mxIsDouble(pVal)) 423
И. В. Черных. SIMULINK: среда создания инженерных приложений #define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && imxIsLogical(pVal) &&\!mx!sEmpty(pVal) && .'mxIsSparse (pVal) && !mxIsComplex(pVal) && mxIsDouble(pVal)) extern void DPT_S_Fun_l_C_Outputs_wrapper(const. real_T *u0. const real_T *ul. real_T *y0. real_T *yl. const real_T *xC, const real_T *L, const int_T p_widthO, const real_T *R, const int_T p_widthl. const real_T *J, const int_T p_width2. const real_T ‘Cm, const int_T p_width3. const real_T *Cw, const int_T p_width4. const real_T *Fi, const int_T p_width5); extern void DPT_S_Fun_l_C_Update_wrapper(const real_T *u0. const real_T *ul. const real_T *yO, const real_T *yl. const real_T ‘L, const int_T p_widthO, const real_T *R, const int_T p_widthl. const real_T *J, const int_T p_width2, const real_T ‘Cm, const int_T p_width3. const real_T *Cw, const int_T p_width4. const real_T *Fi, const int_T p_width5); extern void DPT_S_Fun_l_C_Derivatives_wrapper(const real_T *u0. const real_T ‘ul, const real_T *y0. const real_T *yl. real_T *dx. real_T ‘xC, const real_T ‘L, const int. _T p_widthO, const real_T ‘R, const int. _T p_widthl, const real_T const int. _T p_width2. const real_T ‘Cm, const int. _T p_width3, const reaI_T ‘Cw, const int. _T p_width4, const real_T *Fi, const int. _T p_width5) /*====================* * S-function methods * *====================*/ #define MDL_CHECK_PARAMETERS #if defined(MDL_CHECK_PARAMETERS) && defined(MATLAB_MEX_FILE) 424
6. S-функции и их применение /* Function: mdlCheckParameters =========================== * Abstract: * Validate our parameters to verify they are okay. */ static void mdlCheckParameters(SimStruct *S) ( fldefine PrmNumPos 46 int paramindex = 0; bool validParam = false; char paramVector[) ={'1,,,2,,'3',,4,,,5,,,6’}; static char parameterErrorMsg[] ="The data type and/or complexity of parameter does not match the information " "specified in the S-function Builder dialog. For non-double parameters you will need to cast them us ing int8, intl6," "int32, uint8, uintl6, uint32 or boolean."; /* All parameters must match the S-function Builder Dialog */ { const mxArray *pValO = ssGetSFcnParam(S,0); if (!IS_PARAM_DOUBLE(pVa10)) { validParam = true; paramlndex = 0; goto EXIT_POINT; ) ) ( const mxArray *pVall = ssGetSFcnParam(S,1); if (!IS_PARAM_DOUBLE(pVa11)) { validParam = true; paramindex. = 1; goto EXIT_POINT; } } { const mxArray *pVa!2 = ssGetSFcnParam(S,2); if (IS_PARAM_DOUBLE(pVa12)) { validParam = true; paramindex = 2; goto EXIT_POINT; } } 425
И. В. Черных. SIMULINK: среда создания инженерных приложений ( const mxArray *pVa!3 = ssGetSFcnParam(S,3); if (!IS_PARAM_DOUBLE(pVa13)) { validParam = true; paramindex = 3 ; goto EXIT .POINT; } } { const mxArray *pVa!4 = ssGetSFcnParam(S, 4) ; if (!IS_PARAM_DOUBLE(pVa14)) { validParam = true; paramindex = 4; goto EXIT_POINT; ) 1 { const mxArray *pVa!5 = ssGetSFcnParam(S,5); if (!IS_PARAM_DOUBLE(pVal5)) { validParam = true; paramindex = 5; goto EXIT_POINT; } } EXIT_POINT: if (validParam) { parameterErrorMsg[PrmNumPos] = paramVector[paramindex]; ssSetErrorStatus(S.parameterErrorMsg); } return; ) #endif /* MDL.CHECK—PARAMETERS */ /* Function: mdllnitializeSizes ============================ * Abstract: * Setup sizes of the various vectors. */ static void mdllnitializeSizesCSimStruct *S) { DECL-AND-INIT-DIMSINFO(inputDimsInfo); DECL—AND—INIT—DIMSINFO(outputDimsInfo); SsSetNumSFcnParams(S, NPARAMS); 426
6. S-функции и их применение /* Number of expected parameters */ # i f de fined(MATLAB—MEX_FILE) if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) mdlCheckParameters(S); if (ssGetErrorStatus(S) != NULL) ( return; } } else ( return; /* Parameter mismatch will be reported by Simulink */ ) tendif ssSetNumContStates(S, NUM_CONT_STATES); ssSetNumDiscStates(S, NUM_DISC_STATES); if (!ssSetNumlnputPorts(S, NUM_1NPUTS)) return; /♦Input Port 0 */ ssSet!nputPortWidth(S, 0, INPUT_0_WIDTH); /* */ ssSetlnputPortDataType(S, 0, SS_DOUBLE); ssSetlnputPortComplexSignal(S, 0, INPUT_0_COMPLEX); ssSet!nputPortDirectFeedThrough(S, 0, INPUT_0_FEEDTHROUGH); ssSetlnputPortRequiredContiguous(S, 0, 1) ; /*direct input signal access*/ /*Input Port 1 */ ssSet!nputPortWidth(S, 1, INPUT_1_WIDTH); /* */ ssSetlnputPortDataType(S, 1, SS_DOUBLE); ssSetlnputPortComplexSignal(S, 1, INPUT_1_COMPLEX); ssSet!nputPortDirectFeedThrough(S, 1, INPUT_1_FEEDTHROUGH); ssSetlnputPortRequiredContiguous(S, 1, 1) ; /*direct input signal access*/ if (IssSetNumOutputPorts(S, NUM-OUTPUTS)) return; /♦Output Port 0 */ ssSetOutputPortWidthJS, 0, OUTPUT_0_WIDTH); ssSetOutputPortDataType(S, 0, SS_DOUBLE); ssSetOutputPortComplexSignal(S, 0, OUTPUT_0_COMPLEX); /•Output Port 1 */ ssSetOutputPortWidth(S, 1, OUTPUT_1_WIDTH); ssSetOutputPortDataType(S, 1, SS_DOUBLE); ssSetOutputPortComplexSignal(S, 1, OUTPUT—1_COMPLEX); 427
И. В. Черных. SIMULINK: среда создания инженерных приложений ssSetNumSampleTimes(S, 1) ; ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0) ; ssSetNumModes(S, 0) ; ssSetNumNonsampledZCs(S, 0 > ; /* Take care when specifying exception free code - see sfuntmpl_doc.c */ SSSetOptions(S, (SS_OPTION_.EXCEPTION_FREE_CODE | SS_OPTION_USE_TLC_WITH_ACCELERATOR | SS_OPTION_WORKS_WITH_CODE_REUSE)); ) # define MDL_SET_INPUT_PORT_FRAME_DATA static void mdlSetlnputPortFrameData(SimStruct *S, int_T port, Frame_T frameData) { ssSetlnputPortFrameData(S, port, frameData); } /* Function: mdllnitializeSampleTimes ====================== * Abstract: * Specifiy the sample time. */ static void mdllnitializeSampleTimes(SimStruct *S) ( ssSetSampleTime(S, 0, SAMPLE_TIME_0); ssSetOffsetTime(S, 0, 0.0); } #define MDL_INITIALIZE_CONDITIONS /* Function: mdllnitializeConditions ======================= * Abstract: * Initialize the states */ static void mdllnitializeConditions(SimStruct *S) { real_T *xC = ssGetContStates(S); xC(0] = 0; xC[l] = 0; } #define MDL_SET_INPUT_PORT_DATA_TYPE 428
6. S-фуикции и их применение static void mdlSetlnputPortDataType(SimStruct *S, int port, DTypeld dType) ( ssSetlnputPortDataType( S, 0, dType); } #de f ine MDL_SET_OUTPUT_PORT_DATA_TYPE static void mdlSetOutputPortDataType(SimStruct *S, int port, DTypeld dType) { ssSetOutputPortDataType(S, 0, dType); 1 #define MDL_SET_DEFAULT_PORT_DATA—TYPES static void mdlSetDefaultPortDataTypes(SimStruct *S) { ssSetlnputPortDataType( S, 0, SS_DOUBLE); ssSetOutputPortDataType(S, 0, SS_DOUBLE); 1 /* Function: mdlOutputs ============================ */ static void mdlOutputs(SimStruct *S, int_T tid) { const real_T const real_T real T real_' const conat conat conet conat conat conat conat conat conat conat conat conat real_T int_I int_» int_T int—T int_T int_T real—» real—T real.» real_T real—T real_T * u0 = (const real_T*) ssGetlnputPortSignal(S,0); *ul = (const real—T*) ssGetlnputPortSignal(S,1); *y0 = (real_T *)ssGetOutputPortRealSignal(S,0) ; *yl = (real_T *)ssGetOutputPortRealSignal(S,1); *xC = ssGetContStates(S); pwidthO mxQotNumborOfKlomenta(PARAM_DKFO(S)); p_widthl mxQotNumberOfRlements(PARAM_Derl(S)); p_width2 mxQetNumberoniemonta(PARAM-DCr2(8)); p_width3 " mxGatNumberOfBlemante(PARAMDRP3(8)); p_width4 " mxGatNumberOfKlemente(PARAM DRP4(8)); p_width5 - mxGetNu>*berOfKlemente(PARAM_DKr5 (8)) ; *L " mxGatData(PARAM DK70(8)); * R mxGetData(PARAMDKrl(8)); * J ntxGetData(PARAM_DKF2(S)); * Cm - mxGetData(PARAM_DKr3(S)); * Cw - mxGetData(₽ARAM_DRFA(8)); • Pi - mxGetData(PARAM—DKT5(8)); DPT—S—Fun_l_C_OutputS—wrapper(u0,ul,y0,yl, xC, L, p_widthO, R, p_widthl, J, p_width2. Cm, p_width3, Cw, p—width4, Fi, p_width5); 429
И. В. Черных. SIMULINK: среда создания инженерных приложений #undef MDL__UPDATE /* Change to ttdefine to use the function */ #if defined(MDL_UPDATE) /* Function: mdlupdate ==================================== * Abstract: * This function is called once for every major integration * time step. * Discrete states are typically updated here, but this * function is useful for performing any tasks that should * only take place once per integration step. */ static void mdlupdate(SimStruct ’S, int_T tid) { const real_T const real_T real_T real_T real_T const int_T const int_T const int_T const int_T const int_T const int_T const real! const real_T const real_T const real_T const real__T const real_T *u0 = (const real_T*) ssGetlnputPortSignal(S, 0) ; *ul = (const real_T*) ssGetlnputPortSignal(S,1); *xD = ssGetDiscStates(S); *y0 = (real_T *)ssGetOutputPortRealSignal(S,0); *yl = (real_T *)ssGetOutputPortRealSignal(S,1); p._width0 " mxGetNumberOfElements(PARAMDEFO(S)); pjwidthl = mxGetNumberOfElements (PARAM_.DEF1(S) ); p_width2 = mxGetNumberOfElements(PARAMDEF2(S)); p_width3 " mxGetNumberOfElements(PARAMDEF3(S)); p_width4 mxGetNumberOfElements(PARAMDEF4(s)); p_width5 = mxGetNumberOfElements(PARAM. DEF5(S)>; * L = mxGetData(PARAMDEFO(S)); * R = mxGetData(PARAMDEFl(S)); * J - mxGetData(PARAMDEF2(S)); * Cm mxGetData(PARAMDEF3(S)); • Cw = mxGetData(PARAM_DEF4(S)); * Fi = mxGetData(PARAMDEF5(S)); DPT_S_Fun_l_C_Update_wrapper(u0,ul,y0,yl, L, p_width0, R, p_widthl, J, p_width2. Cm, p_width3, Cw, p_width4, Fi, p_width5) ,- } #endif /* MDL_UPDATE */ ttdefine MDL_DERIVATIVES /* Change to #undef to remove function */ #if defined(MDL_DERIVATIVES) /* Function: mdlDerivatives =========================== * Abstract: * In this function, you compute the S-function block’s * derivatives. * The derivatives are placed in the derivative vector, * ssGetdX(S). * / 430
6. S-функции и их применение static void mdlDerivatives(SimStruct *S) ( const real_T const real_T real_T real_T real_T real_T const int__T const int_ T const int_.T const int_T const int._T const int_T const real_.T const real_T const real__T const real_.T const real_T const real_T * u0 = (const real__T*) ssGetlnputPortSignal(S,0); *ul = (const real_T*) ssGetlnputPortSignal(S,1); *dx = ssGetdX(S)’; * xC = ssGetContStates(S); * y0 = (real_T *)ssGetOutputPortRealSignal(S, 0); * yl = (real_T *)ssGetOutputPortRealSignal(S,1); p_width0 “ mxGetNumberOfElements(PARAMDEFO(S)); pwidthl = mxGetNumberOfElements(PARAM_DEF1(S)); p width2 “ mxGetNumberOfElements (PARAMDEF2 (S)) ; pwidth3 = mxGetNumberOfElements(PARAMDEF3(S)); p_width4 = mxGetNumberOfElements(PARAMDEF4(S)); p_width5 = mxGetNumberOfElements(PARAMDEF5(S)); *L = mxGetData(PARAM_DEF0(S)); * R = mxGetData(PARAM_DEF1(S)) ; • J = mxGetData(PARAMDEF2(S)); • Cm = mxGetData(PARAM_DEF3(S)); • Cw = mxGetData(PARAMDEF4(S)); •Fi mxGetData(PARAM_DEF5(S)); DPT_S_Fun_l_C_Derivatives_wrapper(u0,ul,y0,yl, dx, xC, L, p_width0, R, p_widthl, J, p_width2, Cm, p_width3, Cw, p_width4, Fi, p_width5); } (fendif /* MDL_DERIVATIVES */ /* Function: mdlTerminate ================================== * Abstract: * No termination needed, but we are required to have this * routine. */ static void mdlTerminate(SimStruct *S) ( } Kifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */ ((include "simulink.c" /* MEX-file interface mechanism */ #else ((include "cg_sfun.h" /* Code generation registration function */ #endif Полужирным шрифтом в тексте S-функции выделены те строки кода, которые обеспечивают считывание параметров блока S-function, заданных в окне диалога. При инициализации S-функции создается структура с именем S, которая содержит в численном виде все свойства S-функции и из которой 431
И. В. Черных. SIMULINK: среда создания инженерных приложений собственно и происходит извлечение параметров с помощью указанных строк кода. Например, строка const real_T *paramO = mxGetPr (PARAM_DEF0 (S) 1 ; обеспечивает извлечение первого (из списка в окне параметров блока S- function) параметра, а в строке const int_T p_widthO = mxGetNumberOfEle- ments(PARAM_DEFO(S)); переменной p_widthO присваивается значение размерности этого же пара- метра (параметры блока S-function могут быть не только скалярами, но и векторами). Отметим также, что такие строки кода имеются в каждом из методов - mdlDerivatives, mdlOutputs и mdlUpdate, благодаря чему пара- метры блока S-function являются доступными в каждом из методов. Таким образом, пользователю остается добавить выделенные строки в метод mdllnitializeSizes, записать в этом же методе выражения для вычисления нужных констант и обеспечить передачу рассчитанных значений в методы mdlDerivatives, mdlOutputs и mdlUpdate. Удобнее всего это сделать с помо- щью специально написанной функции. Ниже приводится текст такой функ- ции (SfunGetParameters.c) для рассматриваемого примера. Файл Sfun_Get_Paiameters.c: double А00, А01, А10, BOO, Bll, С00, СП; void Sfun_Get_Parameters(SimStruct *S) const const const const const const real_T real_T real_T real_T real_T real_T const const const const const const int_T int_T int_T int_T int_T int_T * L = mxGetPr(PARAM_DEFO(S)>; *R = mxGetPr (PARAM. DEFI (S >); * J = mxGetPr(PARAM_DEF2(S) ) ,- *Cm = mxGetPr (PARAM_DEF3 (S) ) ; *Cw = mxGetPr(PARAM_DEF4(S)); * Fi = mxGetPr (PARAM..DEF5 (S)) ; p_widthO = mxGetNumberOf Elements(PARAM_DEFO(S)); p_widthl = mxGetNumberOfElements(PARAM_DEF1(S)); p_width2 = mxGetNumberOfElements(PARAM_DEF2(S)); p_width3 = mxGetNumberOf Elements (PARAM..DEF3 (S) ) ; p_width4 = mxGetNumberOfElements (PARAM..DEF4 (S)) ; p_width5 = mxGetNumberOf Elements (PARAM...DEF5 (S) ) ; AGO = -R[O]/L[OJ; A01 = -Cw[0]*Fi[0]/L[0]; BOO = 1/L[OJ; A10 = Cm[01*Fi[0]/J[0]; Bll = -1/J[O]; COO=Cm[0]*Fi[0]; Cll= 1; 432
6. S-функции и их применение В первой строке файла выполнено объявление переменных А00. А01, А10, BOO, Bll, COO. Cl 1. Благодаря тому что это объявление выполнено вне тела функции, указанные переменные являются глобальными. Это облегча- ет реализацию их передачи в нужные процедуры ответного вызова. Затем в файле функции следует объявление самой функции, и, наконец, несколько строк кода, извлекающие параметры и их размерность из структуры S. Да- лее идет расчет значений переменных А00, А01, А10, BOO, Bl 1, COO, Cl 1. В итоге в исходный файл DPT_Sfunc_l_C.c требуется внести 2 изменения: 1. Вписать строку для подключения файла функции Sfun_.Get_Para- meters: ttinclude "Sfun_Get_Parameters.c". Указанную директиву необходимо записать вслед за директивами //in- clude и #defme. 2. В конце текста процедуры mdllnitializeSizes записать вызов функции S fun_Get_Parameters: Sfun_Get_Parameters(S),- В результате файл DPT_Sfunc_l_C.c будет выглядет ь следующим обра- зом (полужирным шрифтом выделены добавления): /* * File: DPT_S_Fun_l_C.С * * ----- THIS FILE GENERATED BY S-FUNCTION BUILDER: 2.0 ------- * * This file is an S-function produced by the S-Function * Builder which only recognizes certain fields. Changes made * outside these fields will be lost the next time the block is * used to load, edit, and resave this file. This file will * be overwritten by the S-function Builder block. If you * want to edit this file by hand, you must change it only * in the area defined as: * * % % %-S FUNWIZ_de f ines_Chang es_BEGIN * #define NAME 'replacement text* * %%% SFUNWIZ_defines_Changes_END * * DO NOT change NAME--Change the 'replacement text’ only. * * For better compatibility with the Real-Time Workshop, * the "wrapper" S-function technique is used. This is * discussed in the Real-Time Workshop User's Manual in * the Chapter titled, "Wrapper S-functions". 433
И. В. Черных. SIMULINK: среда создания инженерных приложений * | See matlabroot/simulink/src/sfuntmpl_doc.с for * j a more detailed template *__________________________________________________________ * Created: Sun Jun 29 13:03:29 2003 «define S—FUNCTION—NAME DPT_S_Fun_l_C «define S_FUNCTION_LEVEL 2 /*<«<<<<<«««««<««<«<<<<<<«<«««<««««<<«<<*/ /* %%%-SFUNWIZ_defines_Changes—BEGIN-EDIT HERE TO _END */ «define NUM_INPUTS 2 /* Input Port 0 */ «define in_port_o_name uO «define INPUT_0_WIDTH 1 «define INPUT_DIMS_0_COL 1 «define INPUT_O_DTYPE real_T «define INPUT_0_COMPLEX COMPLEX_NO «define IN_0_FRAME—BASED FRAME_NO «define IN_O_DIMS 1-D «define INPUT_0_FEEDTHROUGH 1 /* Input Port 1 »/ «define IN_PORT_1_NAME ul «define INPUT_1_WIDTH 1 «define INPUT_DIMS_1_COL 1 «define INPUT_1_DTYPE real—T «define INPUT_1_COMPLEX COMPLEX_NO «define IN_1_FRAME—BASED FRAME_NO «define IN_1_DIMS 1-D «define INPUT-1_FEEDTHROUGH 1 «define NUM-OUTPUTS 2 /* Output Port 0 */ «define OUT_PORT_0_NAME yo «define OUTPUT_0_WIDTH 1 «define OUTPUT_DIMS_0_COL 1 «define OUTPUT_0_DTYPE real—T «define OUTPUT_0_COMPLEX COMPLEX_NO «define OUT.0_FRAME—BASED FRAME-NO «define OUT_0_DIMS 1-D 434
6. S-функции и их применение /* Output Port 1 */ «define OUT_PORT_1_NAME «define OUTPUT_1_WIDTH «define OUTPUT_DIMS_1_COL «define OUTPUT_1_DTYPE «define OUTPUT„1_COMPLEX «define OUT_1_FRAME_BASED «define OUT_1_DIMS «define NPARAMS /* Parameter 1 */ «define PARAMETER—O_NAME «define PARAMETER_O_DTYPE «define PARAMETER_0_COMPLEX /* Parameter 2 */ «define PARAMETER—1_NAME «define PARAMETER_1_DTYPE «define PARAMETER_1_COMPLEX /* Parameter 3 */ «define PARAMETER_2_NAME «define PARAMETER_2_DTYPE «define PARAMETER—2—COMPLEX /* Parameter 4 */ «define PARAMETER_3_NAME «define PARAMETER—3_DTYPE «define PARAMETER—3_COMPLEX /* Parameter 5 */ «define PARAMETER_4_NAME «define PARAMETER_4_DTYPE «define PARAMETER_4_COMPLEX /* Parameter 6 */ «define PARAMETER_5_NAME «define PARAMETER_5_DTYPE «define PARAMETER_5_C0MPLEX «define SAMPLE_TIME_O «define NUM_DISC_STATES «define DISC_STATES_IC «define NUM_CONT_STATES «define CONT_STATES_IC У1 1 1 real_T COMPLEX—NO FRAME_NO 1-D 6 L real_T COMPLEX_NO R real_T COMPLEX_NO J real—T COMPLEX_NO Cm real_T COMPLEX_NO Cw real—T COMPLEX_NO Fi real_T COMPLEX_NO 0 0 10] 2 [0,0] «define SFUNWIZ_GENERATE—TLC 1 «define SOURCEFILES «define PANELINDEX 3 «define SFUNWIZ_REVISION 2.0 /* %%%-SFUNWIZ—defines—Changes—END EDIT HERE TO -BEGIN */ /‘««««««««««««««««««««««««««««‘У 435
И. В. Черных. SIMULINK: среда создания инженерных приложений «include "simstruc.h" «define PARAM_DEFO(S) ssGetSFcnParam (S, 0) «define PARAM_DEF1(S) ssGetSFcnParam(S, 1) «define PARAM_DEF2(S) ssGetSFcnParam(S, 2) «define PARAM_DEF3(S) ssGetSFcnParam(S, 3) «define PARAM_DEF4(S) ssGetSFcnParam(S, 4) «define PARAM_DEF5(S) ssGetSFcnParam(S, 5) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && imxIsLogical(pVal) ImxIsEmpty(pVal) && ImxIsSparse(pVal) && ImxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUBLE(pVal) . (mxIsNumeric(pValI && ImxIsLogical (pVal) &&\!mxIsEmpty'(pVal) && imxIsSparse(pVal) && ImxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) ImxIsEmpty(pVal) && ImxIsSparse(pVal) && ImxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) ImxIsEmpty(pVal) && imxIsSparse(pVal) && imxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUELE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) ImxIsEmpty(pVal) && ImxIsSparse(pVal) && ImxIsComplex(pVal) && mxIsDouble(pVal)) «define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && ImxIsLogical(pVal) &&\ImxIsEmpty(pVal) && ImxIsSparse(pVal) && ImxIsComplex(pVal) && mxIsDouble(pVal)) NEW CODE «include "Sfun_Oet_Faremetere.c" NEW CODE 436
f>. S-функции и их применение extern void DPT_S„Fun_1_С_Outputs—wrapper(const real_T *u0, const real_T *ul, real_T *y0. real_T *yl. const real—T *xC, const real_T *L, const int_T p_.widthO, const real._T *R, const int_T p_widthl, const real_T ‘J, const int_T p_width2. const real_T ‘Cm, const int_T p_width3. const real_T ‘Cw, const int_T p_width4. const real_T *Fi, const int_T p_width5); extern void DPT_S_Fun_1_C_Update_wrapper(const real—T *u0, const real_T *ul. const real_T *y0, const real_T *yl. const real_т *L, const int_T p_widthO, const real_T *R‘, const int_T p_widthl. const real_T ‘J, const int_T p_width2. const real_T *Cm, const int_T p_width3. const real_T ‘Cw, const int„T p_width4. const real_T *Fi, const int_T p_width5) extern void DPT_S._Fun_1_C_Derivatives—wrapper(const real_T *u0. const real_T *ul. const real_T *y0. const real_T *yl. real_' Г *dx. real—' Г *xC, const real_T *L, const int—T p_widthO, const real_T ‘R, const int_T p_widthl. const real_T *J, const int_T p_width2. const real—т *Cm, const int_T p_width3. const real_T *Cw, const int_T p_width4. const real_T *Fi, const int_T p_width5) /*====================* * S-function methods * *====================* / #define MDL_CHECK—PARAMETERS #if defined(MDL_CHECK_PARAMETERS) && defined(MATLAB_MEX_FILE) /* Function: mdlCheckParameters =========================== * Abstract: * Validate our parameters to verify they are okay. */ 437
И. В. Черных. SIMULINK: среда создания инженерных приложений static void mdlCheckParameters(SimStruct *S) { #define PrmNumPos 46 int paratnlndex = 0; bool validParam = false; char paramVector[] ={’!’,’ 2 ’, 13','4','5',' 6 ' } ; static char parameterErrorMsg[] = "The data type and/or complexity of parameter does not match the information " "specified in the S-function Builder dialog. For non-double parameters you will need to cast them using int8, intl6," "int32, uintB, uintl6, uint32 or boolean."; /* All parameters must match the S-function Builder Dialog */ ( const mxArray *pValO = ssGetSFcnParamfS,0); if (!IS_PARAM_DOUBLE(pVal0)> { validParam = true; paramindex = 0; goto EXIT.POINT; ) } ( const mxArray *pVall = ssGetSFcnParamfS,1); if (!IS_PARAM_DOUBLE(pVall)) { validParam = true; paramindex = 1; goto EXIT_POINT; } } { const mxArray *pVal2 = ssGetSFcnParamfS,2); if (!IS_PARAM—DOUBLE(pVa12)) { validParam = true; paramindex = 2; goto EXIT_POINT; ) ) < const mxArray *pVal3 = ssGetSFcnParam(S, 3 ) ,- if (!IS_PARAM.DOUBLE(pVa13)) { 438
6. S-функцни и их применение validParam = true; paramindex = 3; goto EXIT-POINT; ) } ( const mxArray *pVal4 = ssGetSFcnParam(S,4); if ( ! IS_PARAM_DOUBLE(pVa14)) ( validParam = true; paramindex = 4; goto EXIT_POINT; } ) ( const mxArray *pVal5 = ssGetSFcnParam(S,5); if (!IS_PARAM_D0UBLE(pVal5)) { validParam = true; paramindex = 5; goto EXIT-POINT; } ) EXIT_POINT: if (validParam) ( parameterErrorMsg[PrmNumPos] = paramVector[paramindex); ssSetErrorStatus(S,parameterErrorMsg); } return; ) Kendif /* MDL_CHECK_PARAMETERS */ /* Function: mdllnitializeSizes ============================ * Abstract: * Setup sizes of the various vectors. */ static void mdllnitializeSizes(SimStruct *S) { DECL—AND—INIT—DIMSINFO(inputDimsInfo); DECL—AND—INIT—DIMSINFO(outputDimsInfo); ssSetNumSFcnParams(S, NPARAMS); /* Number of expected parameters */ #if defined(MATLAB—MEX_FILE) if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) ( 439
И. В. Черных. SIMULINK: среда создания инженерных приложений mdlCheckParameters(S); if (ssGetErrorStatus(S) != NULL) { return; } } else { return; /* Parameter mismatch will be reported by Simulink */ } flendif ssSetNumContStates(S, NUM_CONT_STATES); ssSetNumDiscStates(S, NUM_DISC_STATES); if (!ssSetNumlnputPorts(S, NUM_INPUTS)) return; /‘Input Port 0 */ ssSetlnputPortWidth(S, 0, INPUT_0_WIDTH>; I* */ ssSetlnputPortDataTypefS, 0, SS_DOUBLE); ssSetlnputPortComplexSignal(S, 0, INPUT_0_COMPLEX); ssSetlnputPortDirectFeedThrough(S, 0, INPUT_0_FEEDTHROUGH); ssSetlnputPortRequiredContiguous(S, 0, 1) ; /‘direct input signal access*/ /‘Input Port 1 */ ssSetlnputPortWidthfS, 1, INPUT_1_WIDTH); /* */ ssSetlnputPortDataType(S, 1, SS_DOUBLE); ssSetlnputPortComplexSignal(S, 1, INPUT_1_COMPLEX); ssSetlnputPortDirectFeedThrough(S, 1, INPUT_1_FEEDTHROUGH); ssSetlnputPortRequiredContiguous(S, 1, 1) ; /‘direct input signal access*/ if (!ssSetNumOutputPorts(S, NUM_OUTPUTS)) return; /‘Output Port 0 */ ssSetOutputPortWidth(S, 0, OUTPUT_0_WIDTH); ssSetOutputPortDataType(S, 0, SS_DOUBLE); ssSetOutputPortComplexSignal(S, 0, OUTPUT_0_COMPLEX); /‘Output Port 1 */ ssSetOutputPortWidth(S, 1, OUTPUT_1_WIDTH); ssSetOutputPortDataType(S, 1, SS_DOUBLE); ssSetOutputPortComplexSignal(S, 1, OUTPUT_1_COMPLEX); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWorktS, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); 440
6. S функции н их применение /* Take care when specifying exception free code - see sfuntmpl_.doc. c */ ssSetOptions(S, (SS_OPTION_EXCEPTION_FREE_CODE | SS_OPTION_USE_TLC_WITH_ACCELERATOR | SS_OPTION_WORKS_WITH_CODE_REUSE)); //======================= NEW CODE ========================= Sf un_Get__Parametere(S); //======================= new CODE ========================= } « define MDL_SET_INPUT_PORT_FRAME_DATA static void mdlSetInputPortFrameData(SimStruct *S, int_T port-, Frame_T frameData) { ssSetlnputPortFrameData(S, port, frameData); } /* Function: mdllnitializeSampleTimes ====================== * Abstract: * Specifiy the sample time. */ static void mdllnitializeSampleTimes(SimStruct *S) { ssSetSampleTime(S, 0, SAMPLE_TIME„0); ssSetOffsetTime(S, 0, 0.0); ) «define MDL_INITIALIZE_CONDITIONS /* Function: mdllnitializeConditions ======================= * Abstract: * Initialize the states */ static void mdllnitializeConditions(SimStruct *S) { real_T *xC = ssGetContStates(S); xC[0] = 0; XC[1] = 0; } «define MDL_SET_INPUT_PORT_DATA_TYPE static void mdlSetlnputPortDataType(SimStruct *S, int port, DTypeld dType) ( ssSetlnputPortDataType( S, 0, dType); 441
И. В. Черных. SIMULINK: среда создания инженерных приложений #define MDL_SET_OUTPUT_PORT_DATA_TYPE static void mdlSetOutputPortDataType(SimStruct *S, int port. DTypeld dType) ( ssSetOutputPortDataType(S, 0. dType); ) #define MDL_SET_DEFAUL.T_PORT—DATA—TYPES static void mdlSetDefaultPortDataTypes(SimStruct *S) < ssSetlnputPortDataType! S, 0, SS_DOUBLE); ssSetOutputPortDataType(S, 0. SS_DOUBLE); } /* Function: mdlOutputs ==================================== * */ static void mdlOutputs(SimStruct *S, int_T tid) ( const real_T *u0 = (const real—T*) ssGetlnputPortSignal(S,0); const real_T *ul = (const real_T*) ssGetlnputPortSignal(S,1); real_T *y0 = (real_T *)ssGetOutputPortRealSignal(S,0); real_T *yl = (real—T *)ssGetOutputPortRealSignal(S,1); const real_T *xC = ssGetContStates(S); const int_T p_WidthO = mxGetNumberOfElements(PARAM—DEFO(S)); const int_T p_widthl = mxGetNumberOfElements(PARAM_DEFI(S>); const int_T p_width2 = mxGetNumberOfElements(PARAM—DEF2(S>); const int_T p_width3 = mxGetNumberofElements(PARAM_DEF3(S)); const int_T p_width4 = mxGetNumberOfElements(PARAM_DEF4(S)); const int_T p_width5 = mxGetNumberOfElements(PARAM_DEF5(S)); const real„T *L = mxGetData(PARAM_DEF0(S)) ; const real_T *R = mxGetData(PARAM-DEFl(S)) i const real_T = mxGetData(PARAM_DEF2(S > > ; const real_T ‘Cm = mxGetData(PARAM_DEF3(S)); const real_T *Cw = mxGetData(PARAM_DEF4(S)) ; const real„T *Fi = mxGetData(PARAM_DEF5(S)>; DPT_S_Fun_l_C_Outputs_wrapper(u0,ul,y0,yl, XC, L, p_width0, R, p_widthl, J, p_width2, Cm, p_width3, Cw, p_width4, Fi, p_width5); ftundef MDL_UPDATE /* Change to tdefine to use the function */ #if defined(MDL_UPDATE) /* Function: mdlUpdate =================================== * Abstract: 442
6. S-функции и их применение * This function is called once for every major integration * time step. * Discrete states are typically updated here, but this * function is useful for performing any tasks that should * only take place once per integration step. */ static void mdlUpdate(SimStruct *S, int_T tid) ( const real„T const real_T real_T real_T real_T const const const const const const const const const const const const int_T int„T int_T int._T int_T int_T real_T real_T real_T real._T real_T real_T * u0 = (const real_T*) ssGetlnputPortSignal(S,0); •ul = (const real_.T*) ssGetlnputPortSignal(S,1); *xD = ssGetDiscStates(S); * y0 = (real_T •)ssGetOutputPortRealSignal(S,0) ; * yl = (real_T *)ssGetOutputPortRealSignal(S,1) ; p_width0 = mxGetNumberOfElements(PARAM_DEF0(S)); p_widthl = mxGetNumberOfElements(PARAM_DEF1(S)); p_width2 = mxGetNumberOf Elements (PARAM__DEF2 (S) ); p_width3 = mxGetNumberOfElements(PARAM_DEF3(S)); p_width4 = mxGetNumberOfElements (PARAM..DEF4 (S)) ; p_width5 - mxGetNumberOfElements (PARAM_DEF5 (S) ); *L = mxGetData(PARAM_DEF0(S)); * R = mxGetData(PARAM_DEF1(S)); * J = mxGetData(PARAM_DEF2(S)); • Cm = mxGetData(PARAM_DEF3(S)); • Cw = mxGetData(PARAM_DEF4(S)); * F i = mxGe tDa ta(PARAM_DEF5(S)) ; DPT_S_Fun_l_C_Update_wrapper(u0,ul,y0,yl, L, p_width0, R, p_widthl, J, p_width2. Cm, p_width3, Cw, p_width4, Fi, p_width5); } #endif /* MDL_U₽DATE */ «define MDL_DERIVATIVES /* Change to Kundef to remove function */ #if defined(MDL_DERIVATIVES) /* Function: mdlDerivatives =============================== * Abstract: * In this function, you compute the S-function block*s * derivatives. * The derivatives are placed in the derivative vector, * ssGetdX(S). «/ static void mdlDerivatives(SimStruct *S) ( 443
И. В, Черных. SIMULINK: среда создания инженерных приложений const const real_T real_T real_T real_T const const const const const const const const const const const const reaL.T real_T int_T int_T int_T int_T int_T int_T real_T real_T real._T real_T real_T real_T • uO = (const real_T*) ssGetlnputPortSignal(S,0); *ul - (const real„T*) ssGetlnputPortSignal(S,1) ; *dx = ssGetdX(S); ‘xC = ssGetContStates(S); * y0 - (real_T *)ssGetOutputPortRealSignal(S,0); * yl = (real_.T *) ssGetOutputPortRealSignal (S, 1) ; p_width0 = mxGetNumberOfElements(PARAM__DEF0(S)); p_widthl = mxGetNumberOfElements(PARAM_DEF1(S)); p_width2 = mxGetNumberOfElements(PARAM_DEF2(S)) ; p_width3 = mxGetNumberOfElements (PARAM._DEF3 (S) ) ; p_width4 = mxGetNumberOfElements(PARAM_DEF4(S)); p_width5 = mxGetNumberOfElements(PARAM. _DEF5(S)); * L = mxGetData(PARAM_DEF0(S)); * R = mxGetData(PARAM_DEF1(S)); * J = mxGetData(PARAM. DEF2(S)); * Cm = mxGetData (PARAM...DEF3 (S) ) ; * Cw = mxGetData(PARAM_DEF4(S)); * Fi = mxGetData(PARAM_DEF5(S)) ; DPT_S_Fun_l_C_Derivatives_wrapper(u0,ul,y0,yl, dx, xC, L, p_width0, R, p_widthl, J, p_width2, Cm, p„width3, Cw, p_width4, Fi, p_width5); } flendif /* MDL_DERIVATIVES */ /* Function: mdlTerminate ================================== * Abstract: * No termination needed, but we are required to have this * routine. */ static void mdlTerminate(SimStruct *S) { } #ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */ (♦include "simulink.c" /* MEX-file interface mechanism */ #else #include ”cg_sfun.h" /* Code generation registration function */ ttendif Следующим шагом является корректировка файла DPT_Sfunc_l_ C_wrapper.c, в котором содержится программный код процедур mdlDei iva- tives, mdlOutputs и mdlUpdate. Для рассматриваемого примера корректиров- ка этого файла сводится к следующим шагам: 444
6. S-фуикции и их применение 1. Добавить объявление глобальных переменных: double А00, А01, А10, BOO, Bll, С00, СИ; Это объявление следует' сделать сразу вслед за последней директивой //in- clude. 2. Закомментировать ставшие лишними строки, в которых выполнялось объявление и расчет переменных AGO, А01, А10, BOO, Bl 1, С00 и Cl 1. В результате файл DPT_Sfunc_l_C_wrapper.c будет выглядеть следую- щим образом (полужирным шрифтом отмечены изменения в этом файле): /* * THIS FILE GENERATED BY S-FUNCTION BUILDER: 2.0 --- * * This file is a wrapper S-function produced by the S-Function * Builder which only recognizes certain fields. Changes made * outside these fields will be lost the next time the block * is used to load, edit, and resave this file. This file * will be overwritten by the S-function Builder block. If * you want to edit this file by hand, you must change it * only in the area defined as: * * % % %-SFUNWIZ_wrapper_XXXXX_Changes_BEGIN * Your Changes go here * %%%-SFUNWIZ_wrapper_XXXXXX_Changes_END * * For better compatibility with the Real-Time Workshop, the * "wrapper" S-function technique is used. This is discussed * in the Real-Time Workshop User's Manual in the Chapter * titled,"Wrapper S-functions". * * Created: Sun Jun 29 13:03:29 2003 */ /* * Include Files */ •include "tmwtypes.h" /* %%%-SFUNWIZ_wrapper_includes_Changes_BEGIN ---- EDIT HERE TO _END */ •include <math.h> 445
И. В. Черных. SIMULINK; среда создания инженерных приложений NBW CODS double МО, ML МО, BOO, BIX, COO, Cllf NSW CODB --—————-I /* %%%-SFUNWlZ_wrapper_includes_Changes_END --- EDIT HERE TO _BEGIN */ fldefine u_width 1 ttdefine y_width 1 /* * Create external references here. * */ /* %%%-SFUNWIZ_wrapper_externs_Changes_J3EGIN - EDIT HERE TO _END */ /* extern double func(double a); */ /* %%%-SFUNWIZ_wrapper_externs_Changes_END ---- EDIT HERE TO _BEGIN */ /* * Output functions * */ void DPT_S_Fun_l_C_Outputs_wrapper(const real_T *u0, const realjr *ul, real_T *y0, real_T *yl. const real_T *xC, const real_T *L, const int_T p_widthO, const real_T ‘R, const int_T p_widthl, const real_T const int_T p_width2. const real_T ‘Cm, const int_T p_width3, const real_T *Cw, const int_T p_width4, const real_T *Fi, const int_T p_width5) ( /* %%%-SFUNWIZ_wrapper_Outputs_Changes_BEGIN --- EDIT HERE TO _END */ //......«..-......и. OLD COOS 11 double СОО-Сж(О)*F1(O], Cll- 1| OLD CODB y0[0] = COO*xC[O); yl[O] = Cll*xC[lJ; 444
6. S-функции и их применение /* %%%--SFUNWIZ_wrapper—Outputs—Changes—END---- EDIT HERE ТО _BEGIN */ } /* * Updates function */ void DPT—S_Fun_1—C_Update_wrapper(const real—T *u0. const real_T *ul. const real—T *y0. const real—T *yl, const real—T *L, const int_T p_widthO, const real—T ‘R, const int_T p_widthl. const real—T *J, const int_T p_width2. const real_T ‘Cm, const int_T p_width3. const real—T *Cw, const int—T p_width4. const real_T *Fi, const int_T p_Width5> { /* %%%-SFUNWIZ—wrapper—Update_Changes—BEGIN EDIT HERE TO _END */ ./* * Code example * xD[O] = u0[0]; */ /* %%%-SFUNWlZ_wrapper—Update_Changes—END ---- EDIT HERE TO -BEGIN */ ) * Derivatives function */ void DPT_S_Fun_1_C_Derivatives—wrapper(const real_T *u0, const real_T *ul, const real—T *y0, const real_T *yl, real_T *dx, real—T *xC, const real—T ‘L, const int—T p_widthO, const real—T *R, const int_T p_widthl, const real—T *J, const int_T p_width?, const real—T ‘Cm, const int_T p_width3, const real—T *Cw, const int_T p_width4, const real_T *Fi, const int—T p_width5) 447
И. В Черных. SIMULINK: среда создания инженерных приложении { /* %%%-SFUNWIZ_wrapper_Derivatives_Changes_BEGIN ---- EDIT HERE TO _END */ //=====*==========-======= OLD CODE ================—=—-- // double A00 = -R[O]/L[O], A01 = -Cw[O]*F1[0]/L[0], // BOO = 1/L[OJ; // double A10 - Cm[0]*Fi[0]/J(0], Bll = -l/J[0], //======================= OLD CODE ================••=“==== dx[0] = A00*xC[0]+A01*xC[1]+B00*u0[0]; dx[l] = A10*xC(0]+B11*ul[0] ; /* %%%-SFUNWIZ_wrapper_Derivatives_Changes_.END --- EDIT HERE TO _BEGIN */ } Выполнить сборку S-функции на основе измененных файлов следует командой из рабочего окна MATLAB: тех DPT_S func_l_C.с DPT_S func_l_C_wrapper.c или тех -g DPT_Sfunc_1_C.c DPT_Sfunc_l_C_wrapper.c. При этом папка, где находятся исходные файлы, должна быть наст- роена как текущая. Команда тех с опцией -g создает отладочный вариант S-функции. В результате использования предложенной методики будет получена S-функция, обеспечивающая наилучшие характеристики по быстродейст- вию. Вносимые в исходные файлы изменения не очень значительны и могут быть выполнены даже начинающим пользователем. 6.8. Создание S-функции на языке Fortran При создании S-функции на языке Fortran могут использоваться два подхода Первый подход (первый уровень) подразумевает использование только языка Fortran. Второй подход (второй уровень) предусматривает со- вместное использование программных модулей, написанных на языках For- tran и С. Наилучшими возможностями обладает второй способ. Однако пер- вый подход наиболее прост и позволяет создать S-функцию на языке Fortran в сжатые сроки. В данном разделе будет рассмотрен именно такой способ. Ограничения второго способа по сравнению с первым заключаются, в основном в невозможности передать параметры S-функции через окно 448
6. S-функцни и их применение диалога блока S-function. Данное ограничение легко преодолевается переда- чей параметров через входы блока S-function. Пример: Создание S-функции на языке Fortran рассмотрим на примере ДПТВН. В качестве основы использован файл шаблона sfuntmpl fortran.f (папка ...\simulink\src). В тексте шаблона приняты следующие обозначения: Т - текущее время; X - вектор непрерывных переменных состояния системы; U - вектор входных сигналов; Y - вектор выходных переменных; ХО - вектор начальных значений непрерывных переменных; DX - вектор производных переменных состояния; XNEW - вектор новых значений дискретных переменных. Ниже приводится текст S-функции модели ДПТ НВ (файл DPT_Sfu nc_ 1 JFor. f). С=========================================================== С Файл: DPT_Sfunc_l_For.for С Пример S-функции на языке FORTRAN для моделирования С двигателя постоянного тока независимого возбуждения С С Моделирование реализовано с помощью уравнений С в пространстве состояний: С х' = Ах + Ви С у = Сх + Du С С Copyright 2002, Chernykh ILya С $Revision: Free C=========================================================== C С Откомпилировать S-функцию можно командой: С С тех DPT_Sfunc_l_For.f simulink.f С C Copyright 2002, Chernykh ILya C $Revision: Free C C=========================================================== С Функция: SIZES. Задает размеры вектора size. С C SIZES возвращает вектор, который задает характеристики С модели. 449
И. В. Черных. SIMULINK: среда создания инженерных приложений С Вектор содержит информацию о числе переменных состояния С и другие параметры, а именно: С SIZE(l) Число непрерывных переменных состояния С SIZE(2) Число дискретных переменных состояния С SIZE(3) Число выходных переменных С SIZE(4) Число входов С SIZE(5) Число корней системы алгебраических уравнений С SIZE(6) Флаг прямой передачи С С========================================================== С SUBROUTINE SIZES(SIZE) С .. Массив аргументов функции INTEGER*4 SIZE(*) С .. Параметры .. INTEGER*4 NSIZES PARAMETER (NSIZES=6) SIZE(l) = 2 С Число непрерывных переменных состояния С (ток якоря и скорость вращения вала) SIZE12) = О С Параметр равен 0, поскольку модель непрерывная SIZE(3) = 2 С Число выходных переменных (скорость вращения С и момент на валу) SIZE14) = 2+6 С Число входов. Параметр равен 2+6 (напряжение С на обмотке якоря и момент сопротивления + С параметры двигателя). SIZE(5) = О С Число корней системы алгебраических уравнений SIZE(6) = О С Прямая передача (1 - есть, 0 - нет). С В данном случае прямой передачи входных С сигналов на выход нет. RETURN END С С==========================================================: С Функция: OUTPUT. Вычисление выходных переменных. С===========================г==============================: С SUBROUTINE OUTPUT(Т,Х,U,Y) С .. Параметры .. С Т - текущее время 450
b. S-функции и их применение С X - вектор непрерывных переменных состояния системы С U - вектор входных сигналов С Y - вектор выходных переменных (возвращаемые значения) С REAL*8 Т REAL*8 Х(‘) , U(*), Y(*> С REAL*8 L,R,J,Cm,Cw,Fi С Объявление переменнв.1х - параметров двигателя С постоянного тока С L.R,J,Cm,Cw,Fi L=U(3) R=U(4) J=U(5) Cm=U(6) Cw=U(7) Fi=U(8) C С Расчет выходных переменных: Y(l) = Cm*Fi*X(l) Y(2) = X(2) RETURN END C C=========================================================== С Функция: INITCOND. Задание начальных значений переменных. С=========================================================== С SUBROUTINE INITCOND(ХО) С .. Параметры .. С ХО - Вектор начальных значений переменных состояния С системы (возвращаемые значения) REAL*8 Х0(*> Х0(1)=0 Х0(2)=0 С В данном случае начальные условия нулевые RETURN END С==================================-======================== С Функция: DERIVS. Вычисление производных вектора состояния. 0=========================================================== 451
И. В. Черных. SIMULINK: среда создания инженерных приложений С SUBROUTINE DERIVS(Т,X,U,DX) REAL*8 Т, Х(*), U(*>, DX(*) С REAL*8 L,R,J,Cm,Cw,Fi С Объявление переменных - параметров двигателя С постоянного тока L=U(3) R=U(4) J=U(5) Cm=U(6) Cw=U(7) Fi=U(8) C DX(1) = (-R/L)*X(1)-(Cw*Fi/L)*X(2)+(1/L)*U(1) DX(2) = (Cm*Fi/J)*X(1)-(1/J)*U(2) C RETURN END C c=========================================================== С Функция: TSAMPL. Задает вектор тактов дискретности и задержек С=========================================================== С SUBROUTINE TSAMPL(Т, X, U, TS, OFFSET) REAL*8 T,TS,OFFSET,X(*),U(*) TS=O. С Такт дискретности. OFFSET=0. С Задержка. RETURN END C C=========================================================== С Шаблоны неиспользуемых в данном примере функций. 0=========================================================== С с±=================================а======================== С Функция: DSTATES. Вычисление обновленных значений С дискретных переменных. С==============================я=============г============== 452
6. S-функции и их применение С .. Параметры .. SUBROUTINE ESTATES(Т, X, U, XNEW) С XNEW - Вектор обновленных значений дискретных С переменных REAL*8 Т, Х(*), U(*), XNEW(*) С --- Ничего не выполняется RETURN END 0=========================================================== С Функция: DOUTPUT. Вычисление обновленных значений С выходных дискретных переменных 0=========================================================== С SUBROUTINE DOUTPUT(Т, X, U, Y) REAL*8 Т, Х(*), U(*), Y(*) С --- Ничего не выполняется RETURN END С Сборку S-функции следует произвести командой тех DPT_Sfunc_l_For.£ simulink.f. Файл simulink.f предварительно необходимо скопировать из папки ...MATLAB6p5\simulinkVsrc в рабочую папку. На компьютере должен быть установлен компилятор языка Fortran. Сис- тема Matlab 6.5 поддерживает следующие компиляторы: Compaq Visual Fortran version 6.1, Compaq Visual Fortran version 6.6, Digital Visual Fortran version 6.0, Digital Visual Fortran version 5.0. Перед сборкой S-функции следует выбрать компилятор командой: тех -setup. Пример модели с разработанной S-функцией показан на рис. 6 21 На рисунке видно, что параметры модели передаются не через окно диалога блока S-function, а через входной порт. 453
И. В Черных. SIMULINK: среда создания инженерных приложений ConsUftQ V Param«t«c* of ОРТ Uluck Parameters S-function S-Function ............ —- ~ I User-definable block. Blocks may be written r M. C, Fortran a Ada and must conform to $*fonction standards, txu and Rag ate automatical passed to the S4tnc^on by Simulink "Erfra' parameters may be specified in the $-function parameters’ field. OK | Cancel [ tlefr [ | Puc. 6.21 454
it 3 £ Приложение 1. МЕНЮ ОБОЗРЕВАТЕЛЯ БИБЛИОТЕК File (Файл) - работа с файлами библиотек. Edit (Редактирование) - добавление компонентов и их поиск. View (Вид) - управление показом элементов интерфейса. Help (Справка) - вывод окна справки по обозревателю библиотек. Таблица П-1.1 Команда Назначение Меню File (Файл) New Открыть новое окно Model (Ctrl+N) Открыть окно для создания Simulink-моделн (.ibrary Открыть окно для создания новой библиотеки Simulink Open ... (Ctrl+O) Открыть существующий mdi-файл. При выборе этой опции открывается стандартная диалоговая панель файловой сис- темы Windows, с помощью которой можно найти н открыть требуемый файл модели Close (Ctrl+W) Закрыть окно модели и соответствующий mdl-файл. В том случае, если в блок-диаграмму вносились изменения, кото- рые не были сохранены, то перед закрытием окна система MATLAB запрашивает подтверждение на закрытие файла Preferences... Настройки системы Simulink. Меню Edit (Редактирование) Add to the current model Добавить выделенный блок в текущую модель Find block... Найти блок с заданным именем. Команда выводит окно с запросом имени блока Find next block... Найти следующий блок с заданным именем. Эту же опера- цию выполняет и команда Find next в окне задания слова для поиска /тюгтиоп 455
И. В. Черных. SIMULINK: среда создания инженерных приложений Команда Назначение Меню View (Вид) Toolbar Показать/скрыть панель инструментов Status bar Показать/скрыть строку состояния Description Показать/скрыть окно сообщений Stay on top Установить "поверх всех окон" Collapse entire Browser Закрыть текущий раздел библиотеки Expand entire Browser Раскрыть текущий раздел библиотеки Large icons Отображать пиктограммы блоков в увеличенном размере Small icons Отображать пиктограммы блоков в уменьшенном размере Show Parameters for selected block Вывести окно установки параметров выделенного блока Help (Справка) Help on the selected block Дать справку по выделенному блоку Simulink help Вывести окно справочной системы Simulink Tip of the day Полезный совет на сегодняшний день 456
Приложение 2. МЕНЮ ОКНА МОДЕЛИ File (Файл) - работа с файлами моделей. Edit (Редактирование) - изменение модели и поиск блоков. View (Вид) - управление показом элементов интерфейса. Simulation (Моделирование) - задание настроек для моделирования и управление процессом расчета. Format (Форматирование) - изменение внешнего вида блоков и модели в целом. Tools (Инструментальные средства) - применение специальных средств для работы с моделью (отладчик, линейный анализ и т. п.) Help (Справка) - вывод окон справочной системы. Таблица П-2.1 Команда Назначение Меню File (Файл) New Открыть окно новой блок-днаграммы Model (Ctrl-N) i Открыть окно для создания Simulink-модели - — Library : Открыть окно для создания новой библиоте- ки Simulink Open ... (Ctrl+O) Открыть существующий mdl-файл Close (Ctrl+W) Закрыть окно схемы и соответствующий mdl-файл. В том слу- чае, если в схему вносились изменения, которые не были со- хранены, то перед закрытием окна система MATLAB запраши- вает подтверждение на закрытие файла Save (Ctrl+S) Сохранить (записать на диск) mdl-файл. Если данный файл со- храняется первый раз, то при выборе этой опции открывается стандартная диалоговая панель, с помощью которой пользова- тель может указать новое имя файла (вместо untitled) и каталог, в который будет производиться запись. Если файл уже записы- вался на диск, то при выполнении команды Save он будет со- хранен под прежним именем и в том же каталоге (без открытия окна диалога) Save as... Сохранение файла под новым именем или в другой папке /пюглтиои 457
И. В. Черных. SIMULINK: среда создания инженерных приложений Команда Назначение Source Control... Верификация файлов Check in... Проверке при вызове Check out Проверка при записи Undo Check out Отмена проверку при записи Preferences Настройки системы Simulink по управлению верификацией файлов Model Properties Характеристики модели Print (Ctrl+P) Вывод на печать схемы модели Print details... Выбор уровня детализации при выводе на печать Print setup... Настройка параметров печати Exit MATLAB Завершение работы с системой MATLAB Меню Edit (Редактирование) Undo Отменить предыдущую команду редактирования. В некоторых случаях команда Undo может уточняться, например, после до- бавления в схему, линии связи она будет называться Undo Add Line (Отменить добавление линии). Если нельзя отменить пре- дыдущее действие, то команда Undo заменяется сообщением Can't Undo Redo Отменить выполнение команды Undo. Эта команда также мо- жет видоизменяться (например. Redo Add Line), либо сообщать о невозможности отмены (Can’t Redo) Cut Вырезать (переместить) в буфер обмена фрагмент схемы. Со- ответствующий фрагмент должен быть выделен Copy Копировать фрагмент схемы. Соответствующий фрагмент должен быть выделен. Данная команда используется совмест- но с командой Paste Paste Вставить копируемый или удаленный в буфер обмена участок модели. Для того чтобы указать позицию вставки, необходимо предварительно щелкнуть а соответствующей точке окна схе- мы (этой точке будет соотаетствовать верхний левый угол вставляемой области) Clear Очистить (удалить) выделенную область Select All (Ctrl+A) Выделить все элементы схемы ь 458
Приложение 2. Меню окна модели Команда Назначение Copy Model to Clipboard Копировать модель в буфер обмене. Запись графического изо- бражения схемы в буфер обмена Windows (Clipboard) для пе- редачи в другие Windows-приложения в виде (рафического объекта. По умолчанию блок-диа!рамма сохраняется в форма- те WMF (Windows Metafile), формат может быть изменен из командного окне MATLAB (меню File, опция Preferences). Find ... (Ctrl+F) Найти объект в составе модели Block Properties... Вызвать окно диалога для установки дополнительных атрибу- тов выбранного блока Signal Properties Вызвать окно диалога для установки атрибутов сигнала. Окно содержит следующие элементы: * строка Signal Name (Имя сигнала) предназначена для ввода имени (текстовой метки) сигнала; метка отображается на блок- диаграмме рядом с соответствующей линией; • строка Description (Описание) позволяет ввести пояснения к данному сигналу; • строка Document Link (Связь с документом) позволяет ввести команду MATLAB, которая формирует ссылку на источник дополнительной информации по данному сигналу; • флажок Simulink Global (Test Point) (Визуализация контроль- ной точки). Если он выставлен, то во время моделирования со- ответствующая линия при передаче по ней сигнала будет вы- делена Create Subsystem (Ctrl+G) Создать подсистему Mask Subsystem... (Ctrl+M) Маскировать маскирована, Mask подсистему. Если выделенная подсистема уже то команда Mask Subsystem принимает вид Edit Look Under Mask (Ctrl+U) Заглянуть под маску. Команда открывает окно блок- диаграммы маскированной подсистемы. Команда доступна только в том случае, если выбранный блок является маскиро- ванной подсистемой Link options Настройка связей блока Go То Library Link Установить связь с библиотекой блоков. Откры- вается раздел библиотеки, к которому относится выделенный блок. Команда доступна только в том случае, если блок взят из библиотеки поль- зователя или из раздела Simulink Extras. 459
И. В. Черных. SIMULINK: среда создания инженерных приложений Команда Назначение Disable Link Разорвать связь с библиотекой блоков. Команда позволяет сделать библиотечный блок "само- стоятельным", нс связанным с библиотекой, что обеспечивает возможность его редактирования. Unlock Library Открыть библиотеку. Команда доступна только в окне библио- теки (Library). При ее выполнении становится возможным ре- дактирование соответствующего раздела, причем на месте ко- манды выводится признак Library Unlocked (Библиотека открыта), который сохраняется до закрытия окна редактируе- мого раздела. Update Diagram (Ctrl+D) Обновить блок-диаграмму. Команду необходимо использовать в следующих случаях: после изменения (редактирования) библиотечных блоков, ко- пии которых используются в модели; после добавления нового раздела библиотеки, блоки из которо- го используются в активной модели; после изменения параметров одного или нескольких блоков модели из командного окна MATLAB; при внесении изменений в S-функцню модели Меню View (Вид) Go to Parent Переход из подсистемы в систему более высокого уровня ие- рархии ("родительскую систему"). Команда доступна только, если открыта подсистема Toolbar Показать/скрыть панель инструментов Statusbar Показать/скрыть строку состояния Model Browser Op- tions Работа с обозревателем модели Model Browser Вызов обозревателя модели Show Library Links Показывать в окне обозревателя библио- течные подсистемы. При выборе этой ко- манды окно блок-диаграммы модели до- полняется подокном, которое отображает иерархическую структуру модели в виде дерева Show Masked Subsystems Показывать в окне обозревателя маскиро- ванные подсистемы. 460
Приложение 2, Меню окна модели Команда Назначение Block Data Tips Options Подсказка по параметрам блока. Содержит команды управле- ния всплывающей подсказкой (tips) для блоков модели. О том, что соответствующий режим установлен, свидетельствует мар- кер в виде флажка. Подсказка появляется на экране, если за- держать на некоторое время указатель мыши над пиктограм- мой блока. Block name Показывать название блока Parameter names and values Показывать имена и значения параметров настройки блока User description string Показывать описание блока, определенное пользователем с помощью опции Edit/Block Properties... Library Browser Показывать окно обозревателя библиотек блоков Zooin In Увеличить масштаб. Увеличить масштаб изображения схемы. Каждое обращение к команде дает увеличение масштаба в полтора раза (на 50 %) Zoom Out Уменьшить масштаб. Уменьшить масштаб изображения схе- мы. Каждое обращение к команде дает уменьшение масштаба в полтора раза Fit system to view Подготовить систему для просмотра. Увеличить масштаб изо- бражения выбранного элемента схемы. Команда обеспечивает N-кратное увеличение (кратность увеличения зависит от ис- ходного размера элемента) и позиционирует элемент по центру окна схемы Normal (100 %) Восстановить стандартный масштаб изображения Remove highlighting Отменить выделение цветом Меню Simulation (Моделирование) Start Запуск модели на исполнение. При запуске модели команда Start заменяется командой Pause, которая позволяет приоста- новить сеанс моделирования. Кроме того, становится доступ- ной команда Stop, расположенная ниже. При прерывании мо- делирования с помощью команды Pause она заменяется альтернативной командой - Continue Stop Завершить моделирование. Команда становится доступной по- сле запуска процесса моделирования Simulation parameters... Параметры моделирования 461
И. В. Черных. SIMULINK: среда создания инженерных приложений Команда Назначение Mechanical envi- ronment Установить операционную среду для использования моделей механических элементов Normal Обычный (не ускоренный) режим расчета. Опция доступна, если установлено ИС Simulink Performance Tool Accelerator Ускоритель моделирования. Опция доступна, если установлено ИС Simulink Performance Tool. В этом режиме, после запуска модели на исполнение, создается исполняемый файл с расши- рением dll. В результате скорость вычислений возрастает в не- сколько раз. Ускорентель не поддерживает модели с замкну- тыми алгебраическими контурами Меню Format (Форматирование) Font... Выбор шрифта для текстовой информации, выводимой на пик- тограмме блока, и для метки (имени) блока Enable TeX commands Включить интерпретатор ТеХ для отображения математиче- ских символов, греческих букв и т. п. Text Alignment Выравнивание текста. Задает способ расположения текстовой области Flip Name Переместить имя блока (над/под изображение блока) Hide Name/ Show Name Скрыть/показать имя блока. Hip Block Повернуть блок на 180° Rotate Block Повернуть блок на 90° по часовой стрелке Show/Hide Drop Shadow Показать/скрыть "тень" Hide/Show Port Labels Скрыть/показать метки портов блока. Данная команда приме- нима только к блокам Subsystem, содержащим внутренние входные или выходные порты Foreground Color Основной цвет. Выбор цвета контура и символов на пикто- грамме выбранного блока (группы блоков) Background Color Цвет фона. Выбор цвета фона пиктограммы выбранного блока (руппы блоков) Screen Color Выбор цвета экрана Library Link Dis- play Отображение связей с библиотеками Sample Time Colors Выделение блоков дискретных моделей и соединяющих линий 462
Приложение 2. Меню окна модели Команда Назначение Wide nonscalar lines Выделение линий передачи одномерных и двумерных сигналов Signal dimensions Указание размеров для одномерных и двумерных сигналов Port Data Types Тип данных, передаваемых через порт Storage class Класс памяти для ИС Real-Time Workshop Execution order Вывести порядковый номер обработки блока при моделировании Tools (Инструментальные средства) Data explorer... Обозреватель данных в рабочей области системы MATLAB Simulink debugger... Отладчик моделей Data Class Designer... ИС формирования классов данных Model differences... Верификация моделей Merge/Compare two models... Объединить/Сравнить две модели. Compare to last saved model... Сравнить текущую модель с последней копи- ей на диске Profiler Профилировщик процедур моделирования. Он должен быть запущен до начала процесса моделирования. По окончании моделирования создается и выводится на экран отчет о затра- тах времени Coverage Setting... Открытие окна настроек отчета Linear Analysis... Анализ линеаризованных моделей с помощью ИС LTI-Viewer ППП Control System Toolbox Help (Справка) Using Simulink Справка по работе с системой Simulink Blocks Описание S-блоков Shortcuts Горячие клавиши при работе с системой Simulink S-functions Справка по написанию S-функций Demos Демонстрационные примеры About Simulink Информация о текущей версии системы Simulink 463
Приложение 3. ПРАКТИЧЕСКИЕ СОВЕТЫ Использование переменных для задания параметров блоков Параметры блоков Simulink можно задавать не только в виде значений числовых параметров, но и имен переменных. Значения переменных необ- ходимо задать до начала процесса моделирования в рабочей области Work- space системы MATLAB. Такой способ задания параметров удобен, если требуется проводить многовариантные расчеты для одной и тоже модели динамической системы. На рис. П-3.1 показана модель динамической сис- темы, которая описывается передаточной функцией. Параметры блока "Пе- редаточная функция" заданы переменными а, b и с. Ьг»с Tr«nxf*t Feo Рис. П-3.1 Ввод значений переменных можно выполнить в командном окне систе- мы MATLAB. Для этого после приглашения (символ ») необходимо напе- чатать команды для присвоения переменным значений, например: а = 1 Ь = 2 с = 1 zmiorrnnon 464
Приложение 3. Практические советы После этого можно приступить к моделированию. В том случае, если параметров много, целесообразно создать М файл, с одержащий операторы присваивания значений переменным, открыть его в окне редактора/отладчика и запустить его на выполнение опцией меню Debug\Run Форматирование графиков в окне блока Scope Окно блока Scope, отображающее графики сигналов, имеет очень огра- ниченные возможности по изменению внешнего вида окна и графиков. Фактически можно изменять лишь масштаб отображения графиков, а опции изменения цвета линий или фона, толщины линий, размера и типа шрифтов и т.п. недоступны. Для того чтобы расширить возможности управления блоком осциллографа, следует выполнить следующие настройки, используя командное окно системы MATLAB: set(0,‘ShowHiddenHandles','On' ) settgef,'menubar','figure') В результате в окне блока Scope появится меню, как это показано на рис. П-3.2. Рис. П-3.2 Используя команды меню Edit/Figure Properties..., Edit/Axes Properties... 'и Edit/Cunent Object Properties..., можно изменить внешний вид окна, осей и самих графиков в соответствии со своими требованиями. Пример таких изменений показан на рис. П-3.3. 465
И. В. Черных. SIMULINK: среда создания инженерных приложений ) Scope file Edit View Insert Tools Window Help Aisiaie ri Рис. П-3.3 Изменение палитры цветов Стандартная цветовая палитра осциллографа Scope предусматриваем построение цветных графиков на черном фоне. Достаточно часто темный фон окна не устраивает пользователя, поскольку затрудняет непосредствен- ное использование копии окна в печатных документах, да и частое пере- ключение взгляда с темного фона окна осциллографа на светлый фон окна схемы модели приводит к повышенной утомляемости глаз. К сожалении}, в настройках блока отсутствуют средства для изменения его цветовой па- литры. Тем не менее набор цветов осциллографа все же можно изменить. Для этого необходимо следующие действия: 1. Скопировать в рабочую папку следующие файлы: simscope.m (папка ...toolbox\simulink\simulink) scopebar.m (папка ...toolbox\simulink\simulink) figpos.m (папка ...toolbox\simulink\simulink\private) onoff.m(папка ...toolbox\simulink\simulink\private) rectconv.m (папка ...toolbox\simulink\simulink\private) 2. Внести изменения в файл simscope.m; axesColor = 'white'; ticColor = 'black'; 0.000 0.600 0.000 % Строка 1256: Цвет фона области % графика - белый % Строка 1257: Цвет осей - черный % Строка 1260: Цвет первой линии - % зеленый 466
Приложение 3. Практические советы 0.000 0.000 0.800 % % Строка 1261: Цвет второй линии - синий 0.900 0.000 0.000 % Строка 1262:Цвет третьей линии - % красный 1.000 0.000 1.000 % Строка 1263: Цвет четвертой % линии - лиловый 0.000 0.800 0.800 % Строка 1264:Цвет пятой линии - % голубой 0.000 0.000 0.000]; % Строка 1265:Цвет шестой линии - % черный figColor = [1 i 11; % Строка 1668: Цвет фона фигуры - % белый Пользователь может сам задать нужное ему сочетание цветов в соответ- ствии со своими представлениями о цветовой гармонии. Цвета области гра- фика и осей задаются как символьная переменная (доступные значения - ’black', 'white', 'red', 'green', 'blue', 'yellow', 'magenta', 'cyan', 'gray', 'orange', 'lightBlue' и 'darkGreen'). Цвета линий и фона фигуры задаются тремя числа- ми в пределах от 0 до 1, указывающими относительный вклад красного, зе- леного и синего цветов в результирующий цвет. 3. Преобразовать М-файл simscope.m в p-файл, введя команду pcode simscope в командной строке системы MATLAB. При смешанном программировании следует предварительно выбрать компилятор объектных кодов, введя команду тех -setup. Результаты изменения цветовой палитры блока Scope показаны на рис. П-3.4. Рис. П-3.4 467
И. В. Черных. SIMULINK. среда создания инженерных приложений (Автор выражает благодарность за идею и образцы файлов В. М. Кувши- нову и О В. Анимице.) Запись результатов моделирования в текстовый файл Если по завершении моделирования требуется передать результаты в другую программу для их последующей обработки, то это удобно выпол- нить с помощью текстового файла. Для записи результатов необходимо сформировать массив сигналов (включая время) и передать его в рабочую область системы MATLAB, а за- тем по окончании расчета записать эти данные в текстовый файл. Пример модели, реализующей такой подход, показан на рис. П-3.5. В окне параметров блока То Workspace необходимо указать имя перемен- ной в системе MATLAB (в данном примере это имя - simout), а также уста- новить значение опции Save format (Формат записи) соответствующим Ar- ray (Массив). Рис. П-3.5 Для записи в текстовый файл необходимо в командном окне системы MATLAB задать команду вида: save('outfile.dat','-ascii',1simout','-double') где outfile.dat - имя файла; simout - имя переменной, значение которой записывается в файл; -double - тип переменной. Для записи переменной из рабочей области в файл можно также приме- нить также функцию dlmwrire. Однако эта функция записывает результаты лишь с точностью до четырех знаков после запятой, что может оказаться совершенно недостаточным. Поэтому целесообразно скопировать эту функ- цию под другим именем (например, my_dlmwrite) и изменить заголовок функции, введя дополнительный аргумент N digits: function my_dlmwrite(filename, m, dim, r, c, N_digits), 468
Приложение 3. Практические советы а также вызов функции num2str: str = num2str (m( i, j ) ,N_digits) , Параметр Ndigits будет определять количество значащих цифр после запятой. Для записи в файл следует в командном окне осуществить вызов функ- ции, например: my_dlmwrite(’outfile.dat',simout ,'*,0,0,6) В данном примере число значащих цифр задано равным 6. Вывод векторного сигнала в блоке Display в несколько колонок Блок Display обеспечивает вывод значений сигнала в цифровой форме. При этом в окне блока можно отобразить как скалярный сигнал (одно зна- чение), так и сигнал в виде одномерного или двумерного массива. В по- следнем случае, если сигнал имеет большие размеры, то все его значения могут не поместиться на экран. В этом случае целесообразно использовать блоки Submatrix из библиотеки блоков DSP Blockset, которые позволяют извлекать части массива с фиксированным числом строк (например, первый блок Submatrix извлекает значения с 1-й по 20-ю строку, второй - с 21-й по 40-ю и т. д.) и затем подать эти векторы на блок Matrix Concatenation, указав горизонтальный способ их объединения. В результате в окне блока Display будут выведены значения сигнала в несколько колонок (матрица значений сигнала). На рис. П-3.6 показан пример, реализующий предложенную методику. В этом примере массив из шести элементов выводится блоком Display в две колонки. Рис. П 3.6 Отображение рисунков в окне модели Для повышения наглядности модели может потребоваться поместить на схеме модели рисунок. Стандартные средства для этого отсутствуют. 469
И. В. Черных. SIMULINK: среда создания инженерных приложений Для того чтобы обойти это ограничение, необходимо: I Создать пустую подсистему. 2. Выполнить ее маскирование (EditXMask Subsystem). 3. Открыть окно редактирования MacKH(Edit\Edit Mask ..) 4 На вкладке Icon в графе Drawing Commands ввести команду для считы- вания из файла и отображения графического образа, например: image(imread('Picture_l.bmp',‘bmp')) где первый параметр - имя граФического файла, а второй - его тип. На рис. П-3.7 показан пример окна модели с созданными таким спосо- бом рисунками. IdFAQ Picture l file £dit View Simulation Format Tools (teip Рис. П-3.7 Нестандартное открытие подсистем Для удобства работы команды, которые обычно требуется задавать из командного окна системы MATLAB, целесообразно оформить в виде М-файлов и запускать их на выполнение из отдельной подсистемы. Для реализации этой методики необходимо: 1. Создать пустую подсистему. 2. Оформить нужные команды в виде М-файла. 3. В свойствах подсистемы (Edit/Block Properties...) на вкладке Callbacks (Функции ответного вызова) указать имя вызываемого М-файла (строка OpenFcn). •! 470
Приложение 3. Практические советы В приведенном ниже примере (рис. П-3.8) подсистема Load Parameters использована для загрузки параметров модели. При выполнении двойного щелчка левой клавишей мыши на изображении этой подсистемы происхо- дит выполнение файла Load_Param.ni, содержащего следующие операторы: Phase_A=O Phase_B=2*3.1415926/3; После проведения расчетов активизация подсистемы Plot Results запус- кает файл Plot_3D.m: X = siinout (:, 1) ; у = simout(:,2); z = siinout (:, 3) ; figure; plot3(x,y,z); С помощью операторов, записанных в этом файле, выполняется извле- чение столбцов из массива simout и построение траектории в трехмерном пространстве. СИЛ h«f* U load Lo»4 pitjfn*t»e □ СИЛ h«r« to plot fOMltf Plot r«MH> Рис. П-3.8 Автоматическое выполнение М-файлов до и после моделирования Выполнение М-файлов до начала и но окончании моделирования можно задать, используя окно установки свойств модели (File/Model Properties...) йа вкладке Callbacks. На рис. П-3.9 показано такое окно. В строке Model ini- tialization function записано имя М-файла, выполняющего загрузку парамет- ров модели. В строке Simulation stop function указано имя М-файла, обеспе- 471
И. В. Черных. SIMULINK: среда создания инженерных приложений чивающего построение трехмерного графика по завершении процесса моде- лирования. |»> Model Properties FAQAuio Summary Callbacks | History | Model pre-load function: Model initialization function |Load_Paren Simulation start function I Simulation stop function ' |Plot_3D Model pre-save function Model close function: _____________________ __________________ I OK I Cancel | Hetp | Apply | Рис. П-3.9 Ошибка при выделении памяти - "Memory allocation error" При длительном моделировании с малым шагом интегрирования может возникнуть ситуация, когда процесс прерывается и сопровождается сооб- щением Memory allocation error - Ошибка при выделении памяти. Если шаг интегрирования из-за неизбежной потери точности увеличить нельзя, то следует использовать методику моделирования в несколько сеансов. Для этого необходимо: 1. Открыть окно установки параметров (Simulation parameters). На вкладке Workspace I/O (параметры взаимодействия с рабочей областью) выста- вить флаг Final State (состояние системы по окончании моделирования) и задать имя переменной для записи результатов моделирования (в дан- ном примере xFinal). Окно параметров расчета для этого случая показано на рис. П-3.10 472
Приложение 3. Практические советы У Simulation Parameters: FAQ t Solver | Workspace I/O | Diagnostics | Advanced | ReaHene Workshop | Load from workspace Г Input: Г WSai iWt I in»4 Save lo workspace p Time [to* Г States: [ Г Output I p Fnai state. [ «FriaJ Save options p Limit data peris Io last: 11000 Decimation: Format OK | Cancel | Help | Рис. П-3.10 2. Выполнить расчет. 3. Открыть окно установки параметров (Simulation parameters). На вкладке Workspace I/O выставить флаг Initial State (состояние системы в начале расчета) и указать имя переменной сохранившей результаты первой час- ти расчета (xFinal). Окно параметров моделирования для этого случая показано на рис. П-3.11 Simulation Parameters FAQ /..... Рис. П-3.11 ( 4. Выполнить второй сеанс моделирования. На рис. П-3.12 показана модель и результаты моделирования, выполнен- ные за два сеанса. 473
И. В. Черных. SIMULINK: среда создания инженерных приложений Изменение параметров блока в процессе моделирования В некоторых случаях требуется, чтобы параметр блока, задаваемый в окне его свойств, изменялся в процессе моделирования (в том числе и по сигналу, вырабатываемому другим блоком модели). Например, пусть требуется, чтобы частота источника синусоидального сигнала изменялась в соответствии с выходным сигналом некоторого блока. Пример такой мо- дели показан на рис. П-3.13. 474
Приложение 3. Практические советы В рассматриваемой модели блоки Signal Generator, Constant и Sum фор- мируют сигнал задания частоты для блока Sine Wave. Данный сигнал на каждом шаге расчета с помощью S-функции преобразуется в значение параметра Frequency блока Sine Wave. Результаты моделирования представ- лены на рис. П-3.13. На верхнем графике показан выходной сигнал синусои- дального источника, на нижнем - сигнал управления частотой источника. Текст S-функции, изменяющей частоту сигнала в процессе моделирова- ния, имеет следующий вид: function (sys,xO,str,ts] = Var_paranL_l(t,x,u,flag) % switch flag, case 0, (sys,xO,str,ts]=mdlInitializeSizes; case 3, sys=mdlOutputs(t,x,u); case {1,2,4,9} sys=(]; % do nothing otherwise error([‘Unhandled flag = ',num2str(flag)]) ; end % function (sys,xO,str,ts]=mdlInitializeSizes % sizes = simsizes; sizes.NumContStates = 0; sizes. NumDiscStates = 0,- sizes.NumOutputs = 0; sizes.Numinputs = 1; sizes .DirFeedthrough = 1,- sizes .NumSampleTimes = 1,- sys = simsizes(sizes); xO = [ ] ; Str = (]; ts = (0 0] ,- % function sys=mdlOutputs(t,x,u) set_param(‘FAQ_Var_param_l/Sine Wave1, * Frequency 1,num2str(u*2*3.1415926)) % sys = (] ; 475
И. В. Черных. SIMULINK: среда создания инженерных приложений Задачу установки нового значения частоты решает функция set_parain, в параметрах которой указаны имя файла модели и имя блока, а также на- звание изменяемого параметра. Функция num2str преобразует числовое зна- чение параметра в символьную строку. Переменой и обозначен входной сигнал S-функции (значение частоты в Гц с помощью множителя 2*3.1415926 переводится в рад/с). Создание буфера для хранения результатов При необходимости рассчитывать интегральные показатели сигнала тре- буется сохранять его предысторию. Решить поставленную задачу можно с помощью S-функции, в которой создается массив для хранения несколь- ких последних значений сигнала. Ниже приводится текст М-функции, кото- рая вычисляет сумму последних четырех значений сигнала: function [sys,хО,str,ts] = buffer_l(t,х,u,flag) switch flag, case 0, [sys,x0,str,ts]=mdl!nitializeSizes; case 2, sys=mdlUpdate(t,x,u); case 3, % 3 ==> return outputs sys=mdlOutputs(t,x,u); case 9, sys=mdlTerminate(t,x,u) ,- otherwise error([’Unhandled flag = 1,num2str(flag)]); end % function [sys,xO,str,ts]=mdl!nitializeSizes sizes = simsizes; sizes.NumContStates = 0,- sizes.NumDiscStates = 4; % 4 дискретные переменные для хранения старых значений sizes.NumOutputs = 1; sizes.Numinputs = 1; sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 0; sys = simsizes(sizes); xO = zeros (1,4) ,- str = []; ts = [ ] ,- % 476
Приложение 3. Практические советы function sys=mdlUpdate(t,х,u) sys = zeros (4,1); % Инициализаций буфера sys(4) = x(3); % Заполнение буфера sys(3) = x (2) ; sys(2) = x(1) ; sys(1) = u; % function sys=mdlOutputs(t,x,u) sys = sum(x); % Расчет суммы переменных, хранящихся % в буфере function sys=mdlTerminate(t,х,u) sys = (] ,- В приведенном тексте процедура mdlUpdate обеспечивает запись и хра- нение последних четырех значений сигнала, а процедура mdlOutputs выпол- няет вычисление их суммы. Сохранение схем и графиков в формате векторной 1 рафики Для подготовки высококачественных документов, содержащих схемы и графики, полученные с помощью осциллографа Scope, стандартных средств системы Simulink явно оказывается недостаточно. Пользователь фактически может лишь воспользоваться командой EditXCopy model to clip- board для копирования схемы в буфер обмена Windows, а для копирования рисунка из блока Scope требуется использование комбинации клавиш Alt- Print Screen. При этом сами рисунки имеют растровый формат, что неудоб- но при создании документов с большими размерами страниц (например, плакатов), поскольку растровая структура рисунка становится видна. К то- му же графики блока Scope имеют черный фон, что также не подходит для создания печатных документов. Наилучшим выходом из такой ситуации является использование вирту- ального PDF-принтера, входящего в состав пакета Adobe Acrobat. Здесь речь идет о полном пакете Adobe Acrobat, а не о широко распространенной про- 1рамме Acrobat Reader, в состав которой виртуальный принтер не входит. Для изображения схемы модели в формате векторной графики необхо- димо выполнить следующие операции; 1. Выполнить команду File\Print (воспользоваться ярлыком Print панели инструментов) окна модели. 2. После того как окно Print Model откроется, необходимо выбрать Acro- bat PDF Writer в качестве устройства печати и выполнить его настройку (кнопка Properties). Настройка PDF-принтера сводится к установке раз- 477
И. В. Черных. SIMULINK: среда создания инженерных приложений мера печатаемой страницы. Для сохранения исходных пропорций схемы необходимо выбрать размер страницы Custom и задать одинаковые ве- личины ширины и высоты листа (например, 297 на 297 mm). По завер- шении настройки принтера необходимо сохранить его установки клави- шей ОК и начать печать схемы (нажать клавишу ОК в окне Punt Model). После начала процесса печати на экран будет выведено окно диалога Save PDF File As..., в котором необходимо задать имя файла рисунка и выбрать папку для его сохранения. По завершении печати в указанной папке появится файл рисунка с расширением PDF. 3. Полученный PDF-файл необходимо преобразовать в один из векторных форматов. Для этого можно воспользоваться, например, программой Adobe Illustrator, также входящей в состав пакета Adobe Acrobat. 4. После того как PDF-файл рисунка будет открыт в программе Adobe Illus- trator, необходимо установить нужные размеры листа рисунка (так, что- бы рисунок занимал весь лист), отредактировать рисунок (при необхо- димости) и сохранить его командой File\Export в одном из векторных форматов (например, EMF). 5. Выполнить вставку рисунка в текстовый документ, используя опцию Вставка\Рисунок\Из файла... Результаты вставки рисунка показаны на рис. П-3.14. Transfer Fcnl Рис П-3 14 Для сравнения на рис. П-3.15 показана пиктограмма блока Sum в растро- вом (левый рисунок) и векторном (правый рисунок) форматах. Качество фрагментов разительно отличается. Рис. П-3.15 478
Приложение 3. Практические советы Аналогичным образом выполняется создание векторного рисунка q>a- фиков из окна блока Scope. Предварительно имеет смысл выполнись на- стройку графиков, используя следующие команды системы MATLAB (при открытом окне блока Scope): set(0,’ShowHiddenHandles',’On') setlgcf,'menubar','figure') и выполнить изменение толщины, типа линий и размера шрифта надписей. Также может потребоваться изменение масштаба печатаемого рисунка в окне свойств PDF-принтера. Полученный по описанной методике график показан на рис. П-3.16. Рис. П-3.16 Выборочная запись данных в рабочую область системы MATLAB В некоторых случаях при записи сигналов из Simulink-модели в рабочую область системы MATLAB требуется выполнять запись лишь для отдель- ных моментов времени (или для отдельных интервалов времени). Стандарт- ные блоки Simulink не позволяют реализовать это. Однако, используя свой- ства управляемых подсистем (Enabled Subsystem и Triggered Subsystem), такую запись легко организовать. Основная идея при этом заключается в том, что блок То Workspace необходимо поместить внутрь управляемой подсистемы. Тогда запись в рабочую область будет производиться лишь при наличии управляющего сигнала на соответствующем входе подсисте- 479
И. В. Черных. SIMULINK: среда создания инженерных приложений мы. В случае применения подсистемы Triggered Subsystem запись будет производиться при перепаде управляющего сигнала, а в случае применения подсистемы Enabled Subsystem запись будет выполняться при наличии управляющего сигнала. На рис. П-3.17 показан пример модели, использующей запись в рабочую область по перепаду управляющего сигнала, а на рис. П-3.18 показана мо- дель, в которой запись в рабочую область выполняется при наличии нену- левого управляющего сигнала. Там же показаны окна редактора данных Ar- ray Editor, отражающие результаты записи. В примерах общее время расчета задано равным 10 с, а момент перепада в блоке Step - 9 с. Таким образом, в первом случае записываются значения сигналов для момента времени 9 с, а во втором - выполняется запись сигна- лов в интервале от 9 до 10 с. Array Ecfltor: s Eile Edit View Web Window Help Numeric format: |shortG | Slz x| 1 j 2 1 9 0 99968 х -!□! x| Ready Рис. П 3.17 480
Приложение 3. Практические советы |Вех Jjiabled.ft -|О| х[ Eile Edit View Simulation Format Jools Help Eile Edit View Wefe Window Help Numeric format: |shortG "3i M Ready |JT| ЕллЫс ---------- -------► rtmout In То Woikspic* Рис. П-3.18 481
п ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ А Abs 135 Action Subsystem 257 add_block 325 addjine 325 add-param 326 Algebraic Constraint 173 Assertion 282 Assignment 174 В Backlash 131 Band-Limited White Noise 49 bdclose 327 bdroot 327 Bitwise Logical Operator 168 Bus Creator 186 Bus Selector 188 C Check Discrete Gradient 284 Check Dynamic Gap 280 Check Dynamic Lower Bound 274 Check Dynamic Range 278 Check Dynamic Upper Bound 276 Check Input Resolution 286 Check Static Gap 272 Check Static Lower Bound 265 Check Static Range 269 Check Static Upper Bound 267 Chirp Signal 48 Clock 51 close_system 327 \ Combinatorial Logic 170 compare_model 328 । Complex to Real-Image 155 Configurable Subsystem 262 Constant 32 Coulomb and Viscous Friction 130 ( I — Data Store Memory 199 Data Store Read 203 Data Store Write 201 Data Type Conversion 211 DeadZone 121 delete_block 328 deletejine 329 delete_param 329 Demux 183 Derivative 85 Digital Clock 52 Direct Look-Up Table (n-D) 230 Discrete Filter 115 Discrete State-Space 117 Discrete Transfer Fen 111 Discrete Zero-Pole 113 21ИЛ1ОГ/ПИ011 482
Предметный указатель Discrete-Time Integrator 108 Display 74 DocBlock 291 Dot Product 150 I IC 214 If 252 Inport 59 E Integrator 87 Interpolation (n-D) using PreLook-Up Enable Subsystem, Enable 244 Enabled and Triggered Subsystem 249 235 L F Logical Operation 166 Look-Up Table 220 Fen 237 find_system 330 First-Order Hold 108 Floating Scope 70 For Iterator Subsystem 258 From 196 From File 53 From Workspace 55 Function-Call Generator 251 Look-Up Table (2D) 223 Look-Up Table (n-D) 227 M Magnitude-Angle to Complex 159 Manual Switch 210 Math Function 151 MATLAB Fen 238 Matrix Concatenation 177 G Memory 103 Merge 192 Gain, Matrix Gain 144 gcb 332 ges 333 get_param 333 Goto 195 Goto Tag Visibility 198 Ground 56 MinMax 161 model 333 Model Info 288 Multiport Switch 207 Mux 181 N H new system 334 Hit Crossing 133 483
И В. Черных. SIMULINK: среда создания инженерных приложений О open_system 334 Outport 81 Selector 190 sei param 336 S-function 369 Sign 143 Signal Builder 63 Signal Generator 41 P Signal Specification 214 sim 337 Polynomial 180 simgel 338 PreLook-Up Index Search 232 simplot 338 Probe 217 simset 339 Product 140 simulink 339 Pulse Generator 46 Sine Wave 34 sldiscmdl 339 Slider Gain 148 Q smdldiscui 340 State-Space 101 Quantizer 128 Step 39 Stop Simulation 76 К Sum 136 Switch 204 Ramp 38 Random Number 44 Rate Limiter 126 Switch Case 255 Rate Transition 218 T Real-Image to Complex 158 Relational Operator 164 Terminator 80 Relay 123 Timed-Based Linearization 291 Repeating Sequence 58 To File 77 replace_block 335 To Workspace 79 Reshape 178 Transfer Fen 96, 156 Rounding Function 162 Transport Delay 92 Trigger-Based Linearization 293 —' Triggered Subsystem, Trigger 246 Trigonometric Function 154 Saturation 119 save_system 335 Scope 65 484
Предметный указатель u X Uniform Rundom Number 43 Unit Delay 105 XY Graph 71 Z V Zero-Order Hold 106 Variable Transport Delay 94 Zero-Pole 99 W While Iterator Subsystem 260 Width 212 485
ЛИТЕРАТУРА 1. Герман-Галкин С. Компьютерное моделирование полупроводниковых систем в MATLAB 6.0. СПб.: Корона принт, 2001. 2. Гультяев A. Matlab 5.2. Имитационное моделирование в среде Windows. СПб.: Корона принт, 1999. 3. Гультяев А. Визуальное моделирование в среде Matlab: Учеб. курс. СПб.: Питер, 2000. 4. Дьяконов В., Абраменкова И., Круглов В. MATLAB с пакетами расши- рений. СПб.: Нолидж, 2001. 5. Дьяконов В., Круглов В. Математические пакеты расширения MAT- LAB. Спец, справочник. СПб.: Питер, 2001. 6. Дьяконов В., Круглов В. MATLAB. Анализ, идентификация и модели- рование систем Спец, справочник. СПб.: Питер, 2001. 7. Дьяконов В. Simulink 4. Спец, справочник. СПб.: Питер, 2001. 8. Дьяконов В. Matlab 6/6.1/6.5 Simulink 4/5. Основы применения. М.: Со- лон Пресс, 2002. 9. Дэбни Дж., Хартман Т. Simulink®4. Секреты мастерства. Пер. с аигл. М. Л. Симонова. М.: БИНОМ. Лаборатория знаний, 2003. 10. Потемкин В. Г. Инструментальные средства MATLAB 5.x. М.: Диалог- МИФИ, 2000. 11. Потемкин В. Г MATLAB 6. Среда проектирования инженерных при- ложений. М.: Диалог-МИФИ, 2003. 12. Цисарь И., Крыкин М. Matlab_Simulink. Лаборатория экономиста. М.: Анкил, 2001. 13. Цисарь И. Ф., Нейман В. Г. Компьютерное моделирование экономики. М.: Диалог-МИФИ, 2002. 14. SIMULINK. Simulink Reference. Version 5. The MathWorks, Inc., July 2002. - 578 p. 15. SIMULINK. Using Simulink. Version 5. The MathWorks, Inc., July 2002. - 556 p. zmiof/tmon 486
Литература 16. SIMULINK. Writing S-funclions. Version 5. The MathWorks, Inc., July 2002.-475 p. 17. Stateflow and Stateflow Coder. User's Guide. The MathWorks, Inc.. July 2002. - 772 p. 487
ОГЛАВЛЕНИЕ ВВЕДЕНИЕ.......................................................3 1. ОПЕРАЦИОННАЯ СРЕДА SIMULINK.................................11 1.1. Запуск системы....................................11 1.2. Обозреватель библиотеки блоков....................12 1.3. Создание модели...................................15 1.4. Основные элементы окна модели.....................17 1.5. Основные приемы подготовки и редактирования модели.....20 Добавление текстовых надписей.......................20 Выделение объектов..................................21 Копирование и перемещение объектов в буфер хранения.21 Вставка объектов из буфера хранения.................21 Удаление объектов...................................22 Соединение блоков...................................22 Изменение размеров блоков...........................23 Перемещение блоков и вставка блоков в соединение....24 Использование команд Undo и Redo....................24 Форматирование объектов.............................24 1.6. Установка параметров моделирования и его выполнение....25 Установка параметров моделирования..................26 Установка параметров обмена с рабочей областью......29 Установка параметров диагностирования модели........30 Выполнение моделирования............................31 Завершение работы...................................31 2. БИБЛИОТЕКА БЛОКОВ SIMULINK.............................32 2.1. Sources - источники сигналов......................32 2.2. Sinks - приемники сигналов........................65 2.3. Continuous -блоки непрерывных моделей.............85 2.4. Discrete - блоки дискретных модулей..............103 2.5. Discontinuities - нелинейные блоки...............119 2.6. Math Operations - блоки математических операций..135 2.7. Signal&Routing - блоки маршрутизации сигналов....181 2.8. Signal Attributes - блоки определения свойств сигналов.211 488
Оглавление 2 9. Look-Up Tables - блоки задания таблиц...........220 2 10. Функции, определяемые пользователем............237 2.11. Ports & Subsystems - порты и подсистемы.........240 2.12. Model Verification - блоки верификации сигналов.265 2.13. Model-Wide Utilities - библиотека дополнительных утилит................................................288 2.14. Редактор дифференциальных уравнений DEE.........294 3. МАСКИРОВАНИЕ ПОДСИСТЕМ................................299 3.1. Общие сведения...................................299 3.2 Создание окна задания параметров..................301 3.3. Использование команд инициализации...............306 3.4. Создание пиктограммы.............................307 Вывод текста.......................................309 Построение графиков................................310 Отображение передаточных функций...................311 Вывод изображения..................................312 Изменение цвета....................................313 Редактор пиктограмм................................314 3.5. Создание справки маскированной подсистемы........315 3.6. Динамически обновляемые окна диалога.............316 3.7. Управление портами маскированной подсистемы......319 4. ИНТЕРФЕЙС СИСТЕМЫ SIMULINK С ПРОДУКТАМИ СЕМЕЙСТВА MATLAB 6.......................................324 4.1. Интерфейс с системой MATLAB......................324 4.2. Интерфейс с ИС LTI-Viewer........................340 Запуск LTI-Viewer..................................340 Настройка LTI-Viewer...............................344 Экспорт модели.....................................347 4.3. Набор инструментов Simulink Performance Tools....349 Ускоритель.........................................349 Профилировщик......................................350 Трассировщик моделей.. 351 ИС сравнения моделей...............................353 5. ОТЛАДЧИК SIMULINK-МОДЕЛЕЙ.............................355 5.1. Графический режим................................355 Панель инструментов................................356 489
И. В, Черных. SIMULINK: среда создания инженерных приложений Список точек прерывания.......................... 358 Панель задания точек прерывания....................358 Окно сообщений.....................................359 5.2. Командный режим..................................361 5.3 ИСТОЧНИКИ ПОВЫШЕНИЯ ЭФФЕКТИВНОСТИ МОДЕЛИРОВАНИЯ....364 Источники роста скорости...........................364 Источники повышения точное™........................366 6. S-ФУНКЦИИ И ИХ ПРИМЕНЕНИЕ_____________________________368 6.1. ОПИСАНИЕ S-ФУНКЦИИ............................. 369 6.2. Организация процесса моделирования...............370 Процедуры ответного вызова.........................371 Реализация S-функции...............................372 6.3. Создание S-функций на языке MATLAB...............374 6.4. Примеры S-функций на языке MATLAB................380 Простейшая S-функция...............................380 Модель непрерывной системы...................... 383[ Модель дискретной системы..........................387 Модель гибридной системы...........................391 Модель дискретной системы с переменным тактом квантования.. 395 6 5. Непрерывная модель электродвигателя постоянного тока ....400 Математическое описание ЛПТ НВ.....................400 Пример S-функции для ДПТНВ.........................402 6.6. ИС S-Function Builder............................407 Инициализация......................................409 Свойства данных....................................410 Библиотеки.........................................412 Выходные переменные................................413 Производные непрерывных переменных состояния.......415 Обновление дискретных переменных...................415 Информация о компоновке............................416 6.7. Корректировка S-функций..........................419 6.8 Создание S-функции на языке Fortran...............448 ПРИЛОЖЕНИЕ 1. МЕНЮ ОБОЗРЕВАТЕЛЯ БИБЛИОТЕК________________455 ПРИЛОЖЕНИЕ 2. МЕНЮ ОКНА МОДЕЛИ___________________________457 490
Oi давление ПРИЛОЖЕНИЕ 3. ПРАКТИЧЕСКИЕ СОВЕТЫ-----------------------------464 Использование переменных для задания параметров блоков.464 Форматирование графиков в окне блока Scope..............465 Изменение палитры цветов................................466 Запись результатов моделирования в текстовый файл.......468 Вывод векторного сигнала в блоке Display в несколько колонок... 469 Отображение рисунков в окне модели......................469 Нестандартное открытие подсистем........................470 Автоматическое выполнение М-файлов до и после моделирования...........................................471 Ошибка при выделении памяти - "Memory allocation error".472 Изменение параметров блока в процессе моделирования.....474 Создание буфера для хранения результатов................476 Сохранение схем и графиков в формате векторной графики..477 < Выборочная запись данных в рабочую область системы MATLAB................................................479 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ..........................................4«2 ЛИТЕРАТУРА................................................... 486 491