Задайте атрибуты параметра периода выполнения
void ssSetRunTimeParamInfo(SimStruct *S, int_T param, ssParamRec *info)
S
SimStruct, представляющий Блок s-function.
param
Индекс параметра периода выполнения.
info
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;
Запись содержит следующие поля.
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
.
mdlSetWorkWidths
, mdlProcessParameters
, ssGetNumRunTimeParams
, ssGetRunTimeParamInfo