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Вектор символов (например, 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Матрица чисел (например,
    [[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-параметры-функции в файл .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