exponenta event banner

ssWriteRTWParamSettings

Запись значений неперестраиваемых параметров в model.rtw файл

Синтаксис

int_T ssWriteRTWParamSettings(SimStruct *S, int_T nParamSettings,
  int_T paramType, const char_T *settingName, ...)

Аргументы

S

SimStruct представляет S-функциональный блок.

nParamSettings

Количество настроек параметров.

paramType

Тип параметра (см. Параметр Настройка аргументов типа).

settingName

Имя параметра.

...

Остальные аргументы зависят от типа параметра (см. раздел «Параметры, устанавливающие специфичные для типа аргументы»).

Прибыль

Один int_T (1 или 0) или boolean_T (true или false), указывающее на успех или неудачу функции.

Описание

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

    АргументОписание
    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 для записи комплексной 2-D матрицы значений в формате 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 для записи вещественной и мнимой частей комплексной 2-D матрицы значений в виде отдельных матриц. 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]

S-функция mdlRTW функция затем использует 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 на основе информации, представленной в S-функции mdlRTW способ. В этом примере результат 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