model.rtw
Во время процесса сборки генератор кода пишет информацию о сигнале Simulink® и объектах данных параметра к файлу
. Запись model.rtw
Object
с информацией о свойстве CoderInfo
записана для каждого параметра, или сигнализируйте, что это соблюдает определенные условия. Эти условия описаны в Записях объекта для Параметров и Записях объекта для Сигналов.
Записи Object
содержат информацию, соответствующую связанному объекту данных. Чтобы получить доступ к записям Object
, необходимо записать код Компилятора Выходного языка (см. Информацию об объекте Доступа к данным через TLC).
Для некоторых данных, задавая пользовательские классы памяти может быть полезный подход. Для получения дополнительной информации смотрите Точно Представление данных Управления путем Записи Кода TLC для Пользовательского Класса памяти (Embedded Coder). Обратите внимание на то, что эта поддержка требует лицензии 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.rtw
Auto
. Если сигнал сконфигурирован, чтобы быть неструктурированной глобальной переменной в сгенерированном коде, его валидность и уникальность осуществляются, и его символ сохраняется.
Следующий пример показывает часть записи 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.rtw
Object
, с которыми сталкиваются.
%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.rtw
Object
сигнала, с которыми сталкиваются.
%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