Информация об объекте данных в model.rtw Файл

Вы можете получить метаинформацию о сгенерированном коде, обратившись к model.rtw файл в папке сборки.

В процессе сборки генератор кода записывает информацию о Simulink® объекты данных о сигнале и параметре в model.rtw файл. Система координат Object запись с CoderInfo информация о свойствах записывается для каждого параметра или сигнала, который удовлетворяет определенным обстоятельствам. Эти условия описаны в Записях объектов для Параметров и Записях объектов для Сигналов.

The Object записи содержат информацию, соответствующую связанному объекту данных. Для доступа к Object записи, необходимо записать код компилятора целевого языка (см. Доступ к данным информация об объекте при помощи кода компилятора целевого языка (TLC)).

Для некоторых данных определение классов памяти может быть полезным. Для получения дополнительной информации смотрите Мелкое Управление Представлением Данных путем Записи Кода TLC для Класса памяти (Embedded Coder). Embedded Coder® обязательно.

Примечание

Эти 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 раздел model.rtw файл для каждого сигнала (включая Inport корневого уровня и блоки Outport), символ которого сохраняется в сгенерированном коде. Символ сохраняется, когда сигнал использует класс памяти, отличный от Auto и индивидуально отображается.

Система координат Object запись, которая имеет CoderInfo информация о свойствах включена в model.rtw файл для каждого сигнала, который сохраняет символ сигнала в сгенерированном коде и удовлетворяет этим условиям:

  • The CoderInfo.StorageClass свойство объекта данных не установлено в Auto.

  • Объект данных индивидуально сопоставляется с предопределенным классом памяти с помощью редактора Отображения или coder.mapping.api.CodeMapping объект.

Если вы конфигурируете сигнал как неструктурированную глобальную переменную в сгенерированном коде, его валидность и уникальность принудительны, и его символ сохраняется.

Этот пример показывает часть Object запись для блока Outport корневого уровня.

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 файл с использованием кода TLC.

Доступ к записям объектов параметров

Этот фрагмент кода итератируется по 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

Похожие темы