exponenta event banner

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

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

Для запуска примера:

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

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

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

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

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

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

Код MATLAB

toolbox/simulink/simdemos/simfeatures

Код C, C++ и Fortran

toolbox/simulink/simdemos/simfeatures/src

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

matlabroot/toolbox/simulink/simdemos/simfeatures папка (открытая) содержит множество 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 S-функции MATLAB. Также демонстрируется использование пользовательского набора и получение методов для блока SimState.
msfcn_vs.mmsfcndemo_vsfuncРеализуют переменный временной блок выборки, в котором первый вход задерживается на величину времени, определяемую вторым входом.

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

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

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

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

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

Имя файлаИмя моделиОписание
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Реализовать АЦП на основе кадров.
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Модель недоступнаПродемонстрируйте API S-функции для сохранения и восстановления 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 и средства маски. В этом примере файл 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-функций Fortran

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

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

Описание

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

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

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

Имя файлаИмя моделиОписание
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.

См. также

| | |

Связанные темы