Запишите значения ненастраиваемых параметров к
файлmodel
.rtw
int_T ssWriteRTWParamSettings(SimStruct *S, int_T nParamSettings, int_T paramType, const char_T *settingName, ...)
S
SimStruct, представляющий Блок s-function.
nParamSettings
Количество установок параметров.
paramType
Тип параметра (см. Установку параметра Специфичные для типа Аргументы).
settingName
Имя параметра.
...
Остающиеся аргументы зависят от типа параметра (см. Установку параметра Специфичные для типа Аргументы).
int_T
(1 или
0
) или boolean_T
TRUE
или false
) указание на успешность или неуспешность функции.
Используйте эту функцию в mdlRTW
записать ненастраиваемую информацию об установке параметра в
этой S-функцииmodel
файл. Можно также использовать этот макрос, чтобы выписать другие постоянные значения, требуемые сгенерировать код для этой S-функции..rtw
Этот раздел перечисляет специфичные для параметра аргументы, требуемые каждым типом параметра.
SSWRITE_VALUE_STR
(неупомянутый вектор символов): Используйте SSWRITE_VALUE_STR
для любого вектора символов отдельного слова, который не начинается с номера или содержит смешанные символы. В некоторых случаях, ssWriteRTWParamSettings
заключает вектор символов в кавычки даже при том, что вы использовали SSWRITE_VALUE_STR
. Например, если длина вектора символов заставляет соответствующую линию в файле модели переноситься посреди вектора символов, ssWriteRTWParamSettings
кавычки использования, чтобы обеспечить значение вектора символов.
Аргумент | Описание |
---|---|
const char_T *value | Вектор символов (например, USA ) |
SSWRITE_VALUE_QSTR
(заключенный в кавычки вектор символов): Используйте SSWRITE_VALUE_QSTR
для любого или смешанного вектора символов многословного или для векторов символов отдельного слова, которые начинаются с номера. Генерация кода с Simulink® Ошибки продукта Coder™, если какое-либо начало с номера не заключено в кавычку.
Аргумент | Описание |
---|---|
const char_T *value | Вектор символов (например, "U.S.A." ) |
SSWRITE_VALUE_VECT_STR
(вектор из вектора символов): Используйте SSWRITE_VALUE_VECT_STR
записать вектор из векторов символов с каждым элементом, заключенным в кавычки.
Аргумент | Описание |
---|---|
const char_T *value | Вектор из векторов символов (например, ["USA", "Mexico"] ) |
int_T nItemsInVect | Размер вектора |
SSWRITE_VALUE_NUM
(номер): используйте SSWRITE_VALUE_NUM
к записи действительное, значение с плавающей точкой.
Аргумент | Описание |
---|---|
const real_T value | Номер (например, 2 ) |
SSWRITE_VALUE_VECT
(вектор из чисел): Используйте SSWRITE_VALUE_VECT
к записи действительный, вектор с плавающей точкой из значений.
Аргумент | Описание |
---|---|
const real_T *value | Вектор из чисел (например, [300, 100] ) |
int_T vectLen | Размер вектора |
SSWRITE_VALUE_2DMAT
(матрица чисел): Используйте SSWRITE_VALUE_2DMAT
к записи действительная, 2D матрица с плавающей точкой значений.
Аргумент | Описание |
---|---|
const real_T *value | Матрица чисел (e.g., [[170, 130],[60, 40]] ) |
int_T nRows | Количество строк в матрице |
int_T nCols | Количество столбцов в матрице |
SSWRITE_VALUE_DTYPE_NUM
(введенный данными номер): Используйте SSWRITE_VALUE_DTYPE_NUM
написать комплексное число в формате Simulink, или с типом данных кроме дважды.
Аргумент | Описание |
---|---|
const void *value | Номер (например, [3+4i] ) |
int_T dtInfo | Тип данных (см. Информацию о Типе данных Определения), |
SSWRITE_VALUE_DTYPE_VECT
(введенный данными вектор): Используйте SSWRITE_VALUE_DTYPE_VECT
записать комплексный вектор значений в формате Simulink, или с типом данных кроме дважды.
Аргумент | Описание |
---|---|
const void *value | Введенный данными вектор (например, [1+2i, 3+4i] ) |
int_T vectLen | Размер вектора |
int_T dtInfo | Тип данных (см. Информацию о Типе данных Определения), |
SSWRITE_VALUE_DTYPE_2DMAT
(введенная данными матрица): Используйте SSWRITE_VALUE_DTYPE_2DMAT
записать комплексную 2D матрицу значений в формате Simulink, или с типом данных кроме дважды.
Аргумент | Описание |
---|---|
const void *value | Матрица (например, [1+2i 3+4i; 5 6] ) |
int_T nRows | Количество строк в матрице |
int_T nCols | Количество столбцов в матрице |
int_T dtInfo | Тип данных (см. Информацию о Типе данных Определения), |
SSWRITE_VALUE_DTYPE_ML_VECTOR
(введенный данными MATLAB® вектор): Используйте SSWRITE_VALUE_DTYPE_ML_VECTOR
записать действительные и мнимые части комплексного вектора значений как отдельные массивы. SSWRITE_VALUE_DTYPE_ML_VECTOR
позволяет вам задавать тип данных для вектора.
Аргумент | Описание |
---|---|
const void *RValue | Действительный компонент вектора (например, [1 3] ) |
const void *IValue | Мнимый компонент вектора (например, [2 5] ) |
int_T vectLen | Число элементов в векторе |
int_T dtInfo | Тип данных (см. Информацию о Типе данных Определения), |
SSWRITE_VALUE_DTYPE_ML_2DMAT
(введенная данными матрица MATLAB): Используйте SSWRITE_VALUE_DTYPE_ML_2DMAT
записать действительные и мнимые части комплексной 2D матрицы значений как отдельные матрицы. SSWRITE_VALUE_DTYPE_ML_2DMAT
позволяет вам задавать тип данных для значений.
Аргумент | Описание |
---|---|
const void *RValue | Действительный компонент матрицы (например, [1 5 3 6] ) |
const void *IValue | Мнимый компонент матрицы (например, [2 0 4 0] ) |
int_T nRows | Количество строк в матрице |
int_T nCols | Количество столбцов в матрице |
int_T dtInfo | Тип данных (см. Информацию о Типе данных Определения), |
C, C++
Смотрите S-функцию sfun_frmad.c
используемый в sfcndemo_frame
для полного примера, который использует эту функцию. Выполнение этой модели требует лицензии DSP System Toolbox™.
Эта S-функция начинается со следующих объявлений переменной, сопоставленных с S-параметрами-функции.
/* Parameters */ enum {FCN_ARGC = 0, AMP_ARGC, FREQ_ARGC, TS_ARGC, FRMSIZE_ARGC, NOISAMP_ARGC, NOISFREQ_ARGC, NUM_ARGS}; #define FCN_ARG(S) (ssGetSFcnParam(S,FCN_ARGC)) #define AMP_ARG(S) (ssGetSFcnParam(S,AMP_ARGC)) #define FREQ_ARG(S) (ssGetSFcnParam(S,FREQ_ARGC)) #define TS_ARG(S) (ssGetSFcnParam(S,TS_ARGC)) #define FRMSIZE_ARG(S) (ssGetSFcnParam(S,FRMSIZE_ARGC)) #define NOISAMP_ARG(S) (ssGetSFcnParam(S,NOISAMP_ARGC)) #define NOISFREQ_ARG(S) (ssGetSFcnParam(S,NOISFREQ_ARGC)) #define GET_FRMSIZE(S) (mxGetPr(FRMSIZE_ARG(S)))[0]
mdlRTW
S-функции функционируйте затем использует
ssWriteRTWParamSettings
записать S-параметры-функции в model
.rtw
файл.
real_T noisA = mxGetPr(NOISAMP_ARG(S))[0]; real_T noisF = mxGetPr(NOISFREQ_ARG(S))[0]; real_T ts = mxGetPr(TS_ARG(S))[0]; int_T fcn = (int) (mxGetPr(FCN_ARG(S))[0]); int32_T fsize = mxGetPr(FRMSIZE_ARG(S))[0]; if (!ssWriteRTWParamSettings(S, 5, SSWRITE_VALUE_STR, "Function", (fcn == 1) ? "Constant" : "Sine", SSWRITE_VALUE_NUM, "Ts", ts, SSWRITE_VALUE_DTYPE_NUM, "FrameSize", &fsize, DTINFO(SS_INT32, COMPLEX_NO), SSWRITE_VALUE_NUM, "NoiseAmp", noisA, SSWRITE_VALUE_NUM, "NoiseFreq", noisF)) { return; /* An error occurred. */ }
Когда код сгенерирован для модели, продукт Simulink Coder сначала пишет структуру под названием SFcnParamSettings
к model
.rtw
файл на основе информации, предоставленной в mdlRTW
S-функции метод. В этом примере, получившемся
SFcnParamSettings
:
SFcnParamSettings { Function Sine Ts 0.005 FrameSize 64 NoiseAmp 4.0 NoiseFreq 80.0 }
Файл Компилятора Выходного языка S-функции sfun_frmad.tlc
затем получает доступ к S-параметрам-функции с помощью имен переменных в SFcnParamSettings
структура. Например:
%assign fnName = SFcnParamSettings.Function %assign frmSize = SFcnParamSettings.FrameSize %assign ts = SFcnParamSettings.Ts %assign noisA = SFcnParamSettings.NoiseAmp %assign noisF = SFcnParamSettings.NoiseFreq