ssWriteRTWParamSettings

Запишите значения ненастраиваемых параметров к файлу 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, чтобы записать ненастраиваемую информацию об установке параметра в файл model.rtw этой S-функции. Можно также использовать этот макрос, чтобы выписать другие постоянные значения, требуемые сгенерировать код для этой S-функции.

Установка параметра специфичные для типа аргументы

Этот раздел перечисляет специфичные для параметра аргументы, требуемые каждым типом параметра.

  • SSWRITE_VALUE_STR (закрыл кавычки вектор символа): Используйте SSWRITE_VALUE_STR для любого вектора символа отдельного слова, который не начинается с номера или содержит смешанные символы. В некоторых случаях ssWriteRTWParamSettings заключает вектор символа в кавычки даже при том, что вы использовали SSWRITE_VALUE_STR. Например, если длина вектора символа заставляет соответствующую строку в образцовом файле переноситься посреди вектора символа, ssWriteRTWParamSettings использует кавычки, чтобы поддержать значение вектора символа.

    АргументОписание
    const char_T *valueВектор символа (e. g., USA)
  • SSWRITE_VALUE_QSTR (заключенный в кавычки вектор символа): Используйте SSWRITE_VALUE_QSTR для любого или смешанного вектора символа многословного или для векторов символов отдельного слова, которые начинаются с номера. Генерация кода с ошибками продукта Simulink® Coder™, если какое-либо начало с номера не заключено в кавычку.

    АргументОписание
    const char_T *valueВектор символа (e. g. U. S.A.")
  • SSWRITE_VALUE_VECT_STR (вектор вектора символа): Используйте SSWRITE_VALUE_VECT_STR, чтобы записать вектор векторов символов с каждым элементом, заключенным в кавычки.

    АргументОписание
    const char_T *valueВектор векторов символов (e. g., ["USA", "Mexico"])
    int_T nItemsInVectРазмер вектора
  • SSWRITE_VALUE_NUM (номер): Используйте SSWRITE_VALUE_NUM для записи действительное, значение с плавающей точкой.

    АргументОписание
    const real_T valueНомер (e. g., 2)
  • SSWRITE_VALUE_VECT (вектор чисел): Используйте SSWRITE_VALUE_VECT для записи действительный, вектор с плавающей точкой значений.

    АргументОписание
    const real_T *valueВектор чисел (e. g., [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Номер (e. g., [3+4i])
    int_T dtInfoТип данных (см. Информацию о Типе данных Определения),
  • SSWRITE_VALUE_DTYPE_VECT (введенный данными вектор): Используйте SSWRITE_VALUE_DTYPE_VECT, чтобы записать комплексный вектор значений в формате Simulink, или с типом данных кроме дважды.

    АргументОписание
    const void *valueВведенный данными вектор (e. g., [1+2i, 3+4i])
    int_T vectLenРазмер вектора
    int_T dtInfoТип данных (см. Информацию о Типе данных Определения),
  • SSWRITE_VALUE_DTYPE_2DMAT (введенная данными матрица): Используйте SSWRITE_VALUE_DTYPE_2DMAT, чтобы записать комплексную 2D матрицу значений в формате Simulink, или с типом данных кроме дважды.

    АргументОписание
    const void *valueМатрица (e. g., [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Действительный компонент вектора (e. g., [1 3])
    const void *IValueМнимый компонент вектора
    E. g., [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Действительный компонент матрицы
    E. g., [1 5 3 6])
    const void *IValueМнимый компонент матрицы
    E. g., [2 0 4 0])
    int_T nRowsКоличество строк в матрице
    int_T nColsКоличество столбцов в матрице
    int_T dtInfoТип данных (см. Информацию о Типе данных Определения),

Языки

C, C++

Пример

Смотрите S-функцию sfun_frmad.c, используемый в sfcndemo_frame для полного примера, который использует эту функцию. Выполнение этой модели требует Системы DSP лицензия 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-параметры-функции в файл .rtw model.

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 к файлу .rtw model на основе информации, предоставленной в методе 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

Смотрите также

mdlRTW

Представлено до R2006a

Была ли эта тема полезной?