Примеры S-функций

Обзор примеров

Чтобы запустить пример:

  1. В MATLAB® Командное окно, введите sfundemos.

    Откроется библиотека примеров S-функций.

    Каждый блок представляет категорию примеров S-функций.

  2. Дважды кликните категорию, чтобы отобразить включенные в нее примеры. Для примера щелкните C-files.

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

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

Код MATLAB

toolbox/simulink/simdemos/simfeatures

C, C++ и Код Фортран

toolbox/simulink/simdemos/simfeatures/src

Level-2 примеры S-функций MATLAB

The matlabroot/ toolbox/simulink/simdemos/simfeatures папка (open) содержит много Level-2 S-функций MATLAB. Рассмотрите начало, посмотрев на эти файлы.

Имя файлаИмя моделиОписание
msfcn_dsc.mmsfcndemo_sfundsc1Реализуйте S-функцию с унаследованным шагом расчета.
msfcn_limintm.mmsfcndemo_limintmРеализуйте непрерывный ограниченный интегратор, где выход ограничен нижней и верхней границами и включает начальные условия.
msfcn_multirate.mmsfcndemo_multirateРеализуйте многоразовую систему.
msfcn_times_two.mmsfcndemo_timestwoРеализуйте S-функцию, которая удваивает его вход.
msfcn_unit_delay.mmsfcndemo_sfundsc2Реализуйте модуль задержку.
msfcn_varpulse.mmsfcndemo_varpulseРеализуйте генератор переменной ширины импульса путем вызова set_param из Level-2 функции MATLAB S. Также демонстрирует, как использовать пользовательский набор и методы get для блока SimState.
msfcn_vs.mmsfcndemo_vsfuncРеализуйте блок шага расчета переменной, в котором первый вход задерживается на количество времени, определяемое вторым входом.

Level-1 примеры S-функций MATLAB

The matlabroot/ toolbox/simulink/simdemos/simfeatures папка (open) также содержит много Level-1 S-функций MATLAB, предоставленных в качестве ссылки для устаревших моделей. Большинство из этих Level-1 S-функций MATLAB не имеют связанных примерных моделей.

Имя файлаОписание
csfunc.mЗадайте непрерывную систему в формате пространство состояний.
dsfunc.mЗадайте дискретную систему в формате «состояние-пространство».
limintm.mРеализуйте непрерывный ограниченный интегратор, где выход ограничен нижней и верхней границами и включает начальные условия.
mixedm.mРеализуйте гибридную систему, состоящую из непрерывного интегратора последовательно с модулем задержкой.
sfun_varargm.mРеализуйте S-функцию, которая показывает, как использовать команду MATLAB varargin.
vsfunc.mПроиллюстрировать, как создать переменный шаг расчета блок. Эта S-функция реализует переменную задержку шага, в которой первый вход задерживается на количество времени, определяемое вторым входом.

Примеры C S-функций

The matlabroot/ toolbox/simulink/simdemos/simfeatures/src папка (open) содержит примеры S-функций C MEX, многие из которых имеют аналог S-функции MATLAB. Функции MEX S на C перечислены в следующей таблице.

Имя файлаИмя моделиОписание
csfunc.csfcndemo_csfuncРеализуйте непрерывную систему.
dlimintc.cМодель отсутствуетРеализуйте ограниченный по дискретному времени интегратор.
dsfunc.csfcndemo_dsfuncРеализуйте дискретную систему.
limintc.cМодель отсутствуетРеализуйте ограниченного интегратора.
mixedm.csfcndemo_mixedmРеализуйте гибридную динамическую систему, состоящую из непрерывного интегратора (1/с) последовательно с модулем задержкой (1/z).
mixedmex.csfcndemo_mixedmexРеализуйте гибридную динамическую систему с одним выходом и двумя входами.
slexQuantizeSFcn.csfcndemo_sfun_quantizeРеализуйте векторизованный квантователь. Квантует вход в шаги, как задано параметром интервал, q.
sdotproduct.csfcndemo_sdotproductВычислите скалярный продукт (умножьте-накопьте) двух вещественных или комплексных векторов.
sfbuilder_bususage.csfbuilder_bususageДоступ к S-Function Builder с входом и выходом шины.
sfbuilder_movingAverage.csfbuilder_movingAverageРеализуйте простое временное окно скользящего среднего значения с помощью Start и Terminate.
sftable2.csfcndemo_sftable2Реализуйте двумерный поиск по таблице.
sfun_atol.csfcndemo_sfun_atolУстановите различные абсолютные погрешности для каждого непрерывного состояния.
sfun_cplx.csfcndemo_cplxДобавьте комплексные данные для S-функции с одним входным портом и одним параметром.
sfun_directlook.cМодель отсутствуетРеализуйте прямой поиск 1-D.
sfun_dtype_io.csfcndemo_dtype_ioРеализуйте S-функцию, которая использует Simulink® типы данных для входов и выходов.
sfun_dtype_param.csfcndemo_dtype_paramРеализуйте S-функцию, которая использует типы данных Simulink для параметров.
sfun_dynsize.csfcndemo_sfun_dynsizeРеализует выходные выходы динамического размера.
sfun_errhdl.csfcndemo_sfun_errhdlПроверяйте параметры с помощью mdlCheckParameters Стандартная программа S-функций.
sfun_fcncall.csfcndemo_sfun_fcncallВыполните подсистемы вызова функций на первом и втором элементах выхода.
sfun_frmad.csfcndemo_frameРеализуйте A/D конвертер на основе фрейма.
sfun_frmda.csfcndemo_frameРеализуйте D/A-конвертер на основе фрейма.
sfun_frmdft.csfcndemo_frameРеализуйте многоканальное основанное на кадрах преобразование Дискретного-Фурье (и его обратное).
sfun_frmunbuff.csfcndemo_frameРеализуйте блок unbuffer на основе фрейма.
sfun_multiport.csfcndemo_sfun_multiportСконфигурируйте несколько входных и выходных портов.
sfun_manswitch.cМодель отсутствуетРеализуйте переключатель вручную.
sfun_matadd.csfcndemo_mataddДобавьте матрицы в S-функции с одним входным портом, одним выходным портом и одним параметром.
sfun_multirate.csfcndemo_sfun_multirateПродемонстрировать, как задать шаги расчета на основе портов.
sfun_port_constant.csfcndemo_port_constantПродемонстрировать, как задать шаги расчета на основе портов.
sfun_port_triggered.csfcndemo_port_triggeredПродемонстрировать, как использовать основанные на портах шаги расчета в триггируемой подсистеме.
sfun_runtime1.csfcndemo_runtimeРеализуйте параметры времени выполнения для всех настраиваемых параметров.
sfun_runtime2.csfcndemo_runtimeРегистрируйте отдельные параметры во время выполнения.
sfun_runtime3.csfcndemo_runtimeЗарегистрируйте параметры диалога как параметры во время выполнения.
sfun_runtime4.csfcndemo_runtimeРеализуйте параметры во время выполнения как функцию от нескольких параметров диалога.
sfun_simstate.cМодель отсутствуетПродемонстрировать S-функцию API для сохранения и восстановления SimState.
sfun_zc.csfcndemo_sfun_zcДемонстрация использования несредненных пересечений нуля для реализации abs(u). Эта S-функция предназначена для использования с решателем с переменным шагом.
sfun_zc_sat.csfcndemo_sfun_zc_satДемонстрация пересечений нуля с насыщением.
sfun_zc_cstate_sat.csfcndemo_sfun_zc_cstate_satРеализуйте непрерывный интегратор с пределами насыщения и обнаружением пересечения нулем.
sfun_integrator_localsolver.csfcndemo_sfun_localsolverПродемонстрировать непрерывный интегратор, где непрерывные состояния решаются с помощью отдельного локального решателя вместо используемого моделью.
sfun_angle_events.csfcndemo_angle_eventsРеализуйте способ для надежного и эффективного обнаружения поворотного тела, пересекающего заданные углы.
sfun_angle_events.cМодель отсутствуетПродемонстрировать обнаружение угла и включить Stateflow® для планирования вызовов функций.
sfunmem.csfcndemo_sfunmemРеализуйте одноэтапную задержку и удерживайте функцию памяти.
simomex.c sfcndemo_simomex

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

dx/dt = Ax + Bu
y = Cx + Du
где x - вектор состояния, u является вектором входов и y - вектор выходов.

stspace.c sfcndemo_stspaceРеализуйте набор уравнений пространства состояний. Вы можете превратить это в новый блок, используя средство блок s-function и mask. Этот пример файла MEX выполняет ту же функцию, что и встроенный блок State-Space. Это пример файла MEX, где количество входов, выходов и состояний зависит от параметров, переданных из рабочей области.
stvctf.c sfcndemo_stvctfРеализуйте передаточную функцию в непрерывном времени, полиномы которой передаются через вектор входа. Это полезно для непрерывных временных адаптивных приложений управления.
stvdtf.csfcndemo_stvdtfРеализуйте передаточную функцию в дискретном времени, полиномы передаточной функции которой передаются через вектор входа. Это полезно для приложений адаптивного управления в дискретном времени.
stvmgain.csfcndemo_stvmgainРеализуйте изменяющийся во времени матричный коэффициент усиления.
table3.cМодель отсутствуетРеализуйте 3-D интерполяционную таблицу.
timestwo.csfcndemo_timestwoРеализуйте S-функцию C MEX, которая удваивает ее вход.
vdlmintc.cМодель отсутствуетРеализуйте векторизованный ограниченный интегратор в дискретном времени.
vdpmex.csfcndemo_vdpmexРеализуйте уравнение Ван дер Поля.
vlimintc.c Модель отсутствуетРеализуйте векторизованный ограниченный интегратор.
vsfunc.csfcndemo_vsfuncПроиллюстрировать, как создать переменный шаг расчета блок. Этот блок реализует задержку с переменным шагом, в которой первый вход задерживается на количество времени, определяемое вторым входом.
sfun_pwm.csfcndemo_pwmПроиллюстрировать, как создать управляемый шагом расчета блок.
sfun_d2csfcndemo_d2cИллюстрируйте, как преобразовать дискретный входной сигнал в гладкий непрерывный выходной сигнал

Примеры S-функций Фортрана

В следующей таблице перечислены примеры S-функций Фортран, доступных в matlabroot/ toolbox/simulink/simdemos/simfeatures/src папка (open).

Имя файлаИмя модели

Описание

sfun_atmos.c
sfun_atmos_sub.F
sfcndemo_atmosРассчитать стандартную атмосферу 1976 года до 86 км используя стандартную подпрограмму Фортрана.

Примеры C++ S-функций

В следующей таблице перечислены примеры C++ S-функций, доступных в matlabroot/ toolbox/simulink/simdemos/simfeatures/src папка (open).

Имя файлаИмя моделиОписание
sfun_counter_cpp.cppsfcndemo_counter_cppСохраните объект C++ в векторе указателей PWork.
sfbuilder_permute.cppsfbuilder_permutationРеализуйте сочетание путем вызова внешних классов C++ с помощью Start и Terminate.
sfbuilder_linfilt.cppsfbuilder_upsamplingРеализуйте линейную фильтрацию с помощью алгоритмов C++ STL для увеличения дискретизации знаковой волны.

Организация S-функции в проекте

В следующем примере показано, как организовать программные продукты S-функции в проект. Этот проект можно использовать совместно с другими как zip архив или как тулбокс MATLAB.

Имя файлаОписание
slexBlocksetDesignerExampleОрганизуйте программные продукты S-функции в один проект с помощью Blockset Designer.

См. также

| | |

Похожие темы