model.rtwВо время процесса сборки генератор кода пишет информацию о сигнале Simulink® и объектах данных параметра к файл. model.rtwObject запись с CoderInfo информация о свойстве записана для каждого параметра, или сигнализируйте, что это соблюдает определенные условия. Эти условия описаны в Записях объекта для Параметров и Записях объекта для Сигналов.
Object записи содержат информацию, соответствующую связанному объекту данных. Получить доступ к Object записи, необходимо записать код Компилятора Выходного языка (см. Информацию об объекте Доступа к данным через TLC).
Для некоторых данных, задавая пользовательские классы памяти может быть полезный подход. Для получения дополнительной информации смотрите Точно Представление данных Управления путем Записи Кода TLC для Класса памяти. Обратите внимание на то, что эта поддержка требует лицензии Embedded Coder®.
Object примеры записи в этом разделе сгенерированы из модели rtwdemo_advsc в качестве примера, с кнопкой ExportedGlobal Storage Class модели дважды кликнутая и опция модели выбран Retain .rtw file. (Не используйте кнопки модели в качестве примера, чтобы создать модель, когда они изменяют опции модели, включая Retain .rtw file.)
Object запись с CoderInfo информация о свойстве включена в ModelParameters раздел файл для каждого параметра, который отвечает следующим условиям:model.rtw
Параметр решает к Simulink.Parameter объект данных (или к объекту данных параметра, который прибывает из класса, выведенного из Simulink.Parameter класс.
Символ параметра сохраняется в сгенерированном коде. Символ сохраняется когда CoderInfo.StorageClass свойство объекта данных не установлено в Auto или, если вы устанавливаете класс памяти по умолчанию для соответствующей категории данных к Default в коде, сопоставляющем редактор, Model default.
Следующий пример показывает часть Object запись для параметра. Действительная запись содержит больше полей, чем появляются в примере.
ModelParameters {
NumParameters 10
...
Parameter {
Identifier "K1"
LogicalSrc P7
WorkspaceVarName "K1"
Protected no
Tunable yes
StorageClass "ExportedGlobal"
Value [2]
OriginalDataTypeIdx 2
CGTypeIdx 41
ContainerCGTypeIdx 42
ReferencedBy Matrix(1,4)
[[1, -1, 4, 5];]
GraphicalRef Matrix(1,2)
[[0, 16];]
GraphicalSource [-1, -1]
OwnerSysIdx [1, -1]
HasObject 1
Object {
Package Simulink
Class Parameter
ObjectProperties {
Value 2.0
CoderInfo {
Object {
Package Simulink
Class CoderInfo
ObjectProperties {
StorageClass "ExportedGlobal"
TypeQualifier ""
Alias ""
Alignment -1
CSCPackageName "Simulink"
ParameterOrSignal "Parameter"
CustomStorageClass "Default"
CustomAttributes {
Object {
Package SimulinkCSC
Class AttribClass_Simulink_Default
ObjectProperties {
}
}
}
}
}
}
...
}Object запись с CoderInfo информация о свойстве включена в любого ExternalOutputs, ExternalInputs, или BlockOutputs раздел файл для каждого сигнала (включая корневой уровень Inport и блоки Outport), чей символ сохраняется в сгенерированном коде. Символ сохраняется, когда сигнал использует класс памяти кроме model.rtwAuto. Если сигнал сконфигурирован, чтобы быть неструктурированной глобальной переменной в сгенерированном коде, его валидность и уникальность осуществляются, и его символ сохраняется.
Следующий пример показывает часть Object запись для блока Outport корневого уровня. Действительная запись содержит больше полей, чем появляются в примере.
ExternalOutputs {
...
NumExternalOutputs 1
...
ExternalOutput {
ArgSrc Y0
Block [1,3]
BlockName "<Root>/Out1"
Identifier "output"
OrigIdentifier "output"
StorageClass "ExportedGlobal"
ResolvedToSignalObject embedded
HasObject 1
Object {
Package Simulink
Class Signal
ObjectProperties {
CoderInfo {
Object {
Package Simulink
Class CoderInfo
ObjectProperties {
StorageClass "ExportedGlobal"
TypeQualifier ""
Alias ""
Alignment -1
CSCPackageName "Simulink"
ParameterOrSignal "Signal"
CustomStorageClass "Default"
CustomAttributes {
Object {
Package SimulinkCSC
Class AttribClass_Simulink_Default
ObjectProperties {
}
}
}
}
}
}
...
}Этот раздел обеспечивает пример кода, чтобы проиллюстрировать, как получить доступ к информации об объекте данных от файл с помощью кода TLC.model.rtw
Следующий фрагмент кода выполняет итерации по Parameter структуры в ModelParameters раздел файл и информация об извлечениях от параметра model.rtwObject с записями сталкиваются.
%with CompiledModel.ModelParameters
%foreach modelParamIdx = NumParameters
%assign thisModelParam = Parameter[modelParamIdx]
%assign paramName = thisModelParam.Identifier
%if EXISTS("thisModelParam.Object.ObjectProperties")
%with thisModelParam.Object.ObjectProperties
%assign valueInObject = Value
%with CoderInfo.Object.ObjectProperties
%assign storageClassInObject = StorageClass
%endwith
%% ***********************************
%% Access user-defined properties here
%% ***********************************
%if EXISTS("MY_PROPERTY_NAME")
%assign userDefinedPropertyName = MY_PROPERTY_NAME
%endif
%% ***********************************
%endwith
%endif
%endforeach
%endwithСледующий фрагмент кода выполняет итерации по ExternalBlockOutput структуры в BlockOutputs раздел файл и информация об извлечениях от model.rtwObject сигнала с записями сталкиваются.
%with CompiledModel.BlockOutputs
%foreach blockOutputIdx = NumExternalBlockOutputs
%assign thisBlockOutput = ExternalBlockOutput[blockOutputIdx]
%assign signalName = thisBlockOutput.Identifier
%if EXISTS("thisBlockOutput.Object.ObjectProperties")
%with thisBlockOutput.Object.ObjectProperties
%with CoderInfo.Object.ObjectProperties
%assign storageClassInObject = StorageClass
%endwith \
%% ***********************************\
%% Access user-defined properties here\
%% ***********************************
%if EXISTS("MY_PROPERTY_NAME")
%assign userDefinedPropertyName = MY_PROPERTY_NAME
%endif
%% ***********************************
%endwith
%endif
%endforeach
%endwith