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

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

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

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

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

Примечание

Они Object примеры записи сгенерированы из модели rtwdemo_configrpinterface в качестве примера. Параметры и сигналы индивидуально сконфигурированы при помощи ExportedGlobal класс памяти.

Записи объекта для параметров

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

  • Параметр решает к Simulink.Parameter объект данных или к объекту данных параметра, который прибывает из класса, выведенного из Simulink.Parameter класс.

  • Символ параметра сохраняется в сгенерированном коде. Символ сохраняется когда CoderInfo.StorageClass свойство объекта данных не установлено в Auto или если вы устанавливаете класс памяти на отдельном параметре при помощи редакторов Отображений Кода или 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 файл для каждого сигнала, который сохраняет символ сигнала в сгенерированном коде и удовлетворяет этим условиям:

  • 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

Похожие темы