Задайте атрибуты параметра во время выполнения
void ssSetRunTimeParamInfo(SimStruct *S, int_T param, ssParamRec *info)
SSimStruct, представляющий блок S-Function.
paramИндекс параметра во время выполнения.
infossParamRec структура, содержащая атрибуты параметра во время выполнения.
Используйте эту функцию в mdlSetWorkWidths для задания информации о параметре во время выполнения. Использование ssParamRec структура для передачи атрибутов параметров в функцию. Для получения дополнительной информации смотрите Создание и обновление параметров выполнения S-функций.
The simstruc.h макрос определяет эту структуру следующим образом:
typedef struct ssParamRec_tag {
const char *name;
int_T nDimensions;
int_T *dimensions;
DTypeId dataTypeId;
boolean_T complexSignal;
void *data;
const void *dataAttributes;
int_T nDlgParamIndices;
int_T *dlgParamIndices;
TransformedFlag transformed; /* Transformed status */
boolean_T outputAsMatrix; /* Write out parameter
* as a vector (false)
* [default] or a matrix (true)
*/
} ssParamRec;
Запись содержит следующие поля.
nameИмя параметра. Это должно указывать на постоянную память. Не устанавливайте локальную переменную (static char name[32] или имя вектора символов в порядке).
nDimensionsКоличество размерностей, которое имеет этот параметр.
dimensionsМассив, задающий размер каждой размерности параметра.
dataTypeIdТип данных параметра. Список встроенных типов данных см. в разделе ssGetInputPortDataType.
complexSignalОпределяет, имеет ли этот параметр комплексные числа (true) или вещественные числа (false) в качестве значений.
data Указатель на значение этого параметра во время выполнения. Если параметр является вектором или матрицей или комплексным числом, это поле указывает на массив значений, представляющих элементы параметра. Комплексный Simulink® сигналы сохраняются перемежающимися. Аналогичным образом комплексные параметры во время выполнения должны быть сохранены с перемежением. Обратите внимание, что mxArrays сохраняет действительные и сложные части сложных матриц как две отдельные смежные части данных вместо перемежения действительной и сложной частей.
Примечание
ssSetRunTimeParamInfo необходимо установить это поле на фактическое значение параметра. Это необходимо для того, чтобы Simulink Coder™ правильно выполнил оптимизацию объединения параметров. Если вам не удалось установить поле данных во время регистрации и затем заполнить его в более поздний момент, вы можете увидеть ошибку, указывающую, что некоторые параметры были неправильно объединены друг с другом.
dataAttributesУказатель атрибутов данных является местом постоянного хранения, где S-функция может хранить дополнительную информацию, описывающую данные, и затем восстанавливать эту информацию позже (потенциально в другой функции).
nDlgParamIndicesКоличество параметров диалога, используемых для вычисления этого параметра во время выполнения.
dlgParamIndicesИндексы параметров диалога, используемых для вычисления этого параметра во время выполнения.
transformedЗадает отношение между этим параметром во время выполнения и параметрами диалога, заданными dlgParamIndices. Это поле может иметь любое из следующих значений, определяемых TransformFlag в simstruc.h.
RTPARAM_NOT_TRANSFORMED
Задает, что этот параметр времени выполнения соответствует одному параметру диалога (nDialogParamIndices является одним) и имеет то же значение, что и параметр диалогового окна.
RTPARAM_TRANSFORMED
Задает, что значение этого параметра во время выполнения зависит от значений нескольких параметров диалога (nDialogParamIndices > 1) или что этот параметр времени выполнения соответствует одному параметру диалога, но имеет другое значение или тип данных.
RTPARAM_MAKE_TRANSFORMED_TUNABLE
Задает, что этот параметр времени выполнения соответствует одному настраиваемому параметру диалога (nDialogParamIndices является одним), и что значение параметра во время выполнения или тип данных отличается от значений параметра диалога. Во время генерации кода продукт Simulink Coder записывает тип данных и значение параметра времени выполнения (а не диалогового параметра) в файл Simulink Coder. Например, предположим, что параметр диалога содержит переменную рабочей области k типа double и ценностные 1. Кроме того, предположим, что S-функция устанавливает тип данных соответствующей переменной во время выполнения int8 и значение параметра во время выполнения, равное 2. В этом случае во время генерации кода продукт Simulink Coder записывает k в файл Simulink Coder в виде int8 переменная с начальным значением 2.
outputAsMatrixОпределяет, следует ли записывать значения этого параметра в файл как матрица (true) или как вектор (false).model.rtw
C, C++
Смотрите S-функцию sfun_runtime4.c используется в sfcndemo_runtime.