Задайте атрибуты параметра периода выполнения
void ssSetRunTimeParamInfo(SimStruct *S, int_T param, ssParamRec *info)
S
SimStruct, представляющий Блок s-function.
param
Индекс параметра периода выполнения.
информация
Структура ssParamRec
, содержащая атрибуты параметра периода выполнения.
Используйте эту функцию в mdlSetWorkWidths
, чтобы задать информацию о параметре периода выполнения. Используйте структуру ssParamRec
, чтобы передать атрибуты параметра функции. Смотрите Создают и Параметры периода выполнения S-функции Обновления для получения дополнительной информации.
Макрос 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;
Запись содержит следующие поля.
имя
Имя параметра. Это должно указать на постоянную память. Не устанавливайте на локальную переменную (static char name[32]
, или имя вектора символа хорошо).
nDimensions
Количество размерностей, которые имеет этот параметр.
размерности
Массив, дающий размер каждой размерности параметра.
dataTypeId
Тип данных параметра. Для списка встроенных типов данных смотрите ssGetInputPortDataType
.
complexSignal
Задает, имеет ли этот параметр комплексные числа (TRUE) или вещественные числа, (FALSE) как значения.
данные
Указатель на значение этого параметра периода выполнения. Если параметр является вектором или матрицей или комплексным числом, это поле указывает на массив значений, представляющих элементы параметра. Комплексные сигналы Simulink® сохранены чередованные. Аналогично комплексные параметры периода выполнения должны быть сохранены чередованные. Обратите внимание на то, что mxArrays
хранит действительные и комплексные части комплексных матриц, когда два разделяют непрерывные части данных вместо того, чтобы чередовать действительные и комплексные части.
ssSetRunTimeParamInfo
должен установить это поле на фактическое значение параметра. Это необходимо для Simulink Coder™, чтобы выполнить оптимизацию объединения параметра правильно. Если вам не удается установить поле данных во время регистрации и затем заполнить его в более позднем соединении, вы можете видеть ошибку указать, что некоторые параметры были неправильно объединены друг с другом.
dataAttributes
Указатель атрибутов данных является персистентным местом хранения, где S-функция может хранить дополнительную информацию, описывающую данные, и затем восстановить эту информацию позже (потенциально в различной функции).
nDlgParamIndices
Количество диалоговых параметров раньше вычисляло этот параметр периода выполнения.
dlgParamIndices
Индексы диалоговых параметров раньше вычисляли этот параметр периода выполнения.
transformed
Задает отношение между этим параметром периода выполнения и диалоговыми параметрами, заданными dlgParamIndices
. Это поле может иметь любое из следующих значений, заданных TransformFlag
в simstruc.h
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
.
mdlSetWorkWidths
, mdlProcessParameters
, ssGetNumRunTimeParams
, ssGetRunTimeParamInfo