Задайте атрибуты параметра во время выполнения
void ssSetRunTimeParamInfo(SimStruct *S, int_T param, ssParamRec *info)
S
SimStruct, представляющий блок S-Function.
param
Индекс параметра во время выполнения.
info
ssParamRec
структура, содержащая атрибуты параметра во время выполнения.
Используйте эту функцию в 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
.