exponenta event banner

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

Для получения метаинформации о сгенерированном коде перейдите к model.rtw в папке построения.

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

Один 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 с помощью кода 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

Связанные темы