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

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

mdlRTW

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