model.rtw ФайлДля получения метаинформации о сгенерированном коде перейдите к в папке построения.model.rtw
В процессе построения генератор кода записывает информацию о сигнале Simulink ® и объектах данных параметров в файл. Один model.rtwObject запись с CoderInfo информация о свойствах записывается для каждого параметра или сигнала, удовлетворяющего определенным условиям. Эти условия описаны в разделах Записи объектов для параметров и Записи объектов для сигналов.
Object записи содержат информацию, соответствующую связанному объекту данных. К доступу Object записи, необходимо написать код компилятора целевого языка (см. раздел Доступ к информации об объекте данных с помощью кода компилятора целевого языка (TLC)).
Для некоторых данных определение классов хранения может быть полезным. Дополнительные сведения см. в разделе Точное представление данных путем записи кода TLC для класса хранения (встроенный кодер). Требуется встроенный кодер ®.
Примечание
Они Object примеры записей генерируются из модели-примера rtwdemo_configrpinterface. Параметры и сигналы конфигурируются отдельно с помощью ExportedGlobal класс хранения.
Один Object запись, которая CoderInfo информация о свойствах включена в ModelParameters в разделе для каждого параметра, удовлетворяющего следующим условиям:model.rtw
Параметр разрешается в Simulink.Parameter к объекту данных или к объекту данных параметра, который происходит из класса, производного от Simulink.Parameter класс.
Символ параметра сохраняется в созданном коде. Символ сохраняется, когда CoderInfo.StorageClass свойство объекта данных не имеет значение Auto или если класс хранения устанавливается для отдельного параметра с помощью редакторов Code Mappings или coder.mapping.api.CodeMapping объект.
В этом примере показана часть Object запись для параметра.
ModelParameters {
NumParameters 10
...
Parameter {
Identifier "K1"
LogicalSrc P7
WorkspaceVarName "K1"
Protected no
Tunable yes
StorageClass "ExportedGlobal"
Value [2]
OriginalDataTypeIdx 2
CGTypeIdx 36
ContainerCGTypeIdx 42
IsPublic 1
ReferencedBy Matrix(1,4)
[[1, 0, 4, 2];]
GraphicalRef Matrix(1,2)
[[0, 10];]
GraphicalSource [-1, -1]
OwnerSysIdx [1, -1]
HasObject 1
Object {
Package Simulink
Class Parameter
ObjectProperties {
Value 2.0
CoderInfo {
Object {
Package Simulink
Class CoderInfo
ObjectProperties {
HasCoderInfo 1
StorageClass "ExportedGlobal"
TypeQualifier ""
Alias ""
Alignment -1
IsCSCPackageOverridden 0
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 запись, которая CoderInfo информация о свойствах включена в файл для каждого сигнала, который сохраняет символ сигнала в сформированном коде и удовлетворяет следующим условиям:model.rtw
CoderInfo.StorageClass свойство объекта данных не имеет значение Auto.
Объект данных по отдельности сопоставляется с предопределенным классом хранения с помощью редактора сопоставления кодов или coder.mapping.api.CodeMapping объект.
При конфигурировании сигнала в качестве неструктурированной глобальной переменной в сгенерированном коде обеспечивается его действительность и уникальность и сохраняется его символ.
В этом примере показана часть Object запись для блока исходящего порта корневого уровня.
ExternalOutputs {
...
NumExternalOutputs 1
...
ExternalOutput {
ArgSrc Y0
Block [1,3]
BlockName "<Root>/Out1"
GrSrc [0, 4]
Identifier "output"
StorageClass "ExportedGlobal"
HasObject 1
Object {
Package Simulink
Class Signal
ObjectProperties {
CoderInfo {
Object {
Package Simulink
Class CoderInfo
ObjectProperties {
HasCoderInfo 1
StorageClass "ExportedGlobal"
TypeQualifier ""
Alias "output"
Alignment -1
IsCSCPackageOverridden 0
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