Исключение из функции использования библиотечных функций, которые получают доступ к model.rtw

Существует несколько библиотечных функций, которые обеспечивают доступ к входам блоков, выходам, параметрам, шагам расчета и другой информации. Рекомендуется, чтобы вы использовали эти функции библиотеки для доступа ко многим парам имя/значение параметра в записи блока, в отличие от доступа к парам имя/значение параметра непосредственно из кода TLC блока. Для получения дополнительной информации об использовании этих функций (рекомендуемый метод доступа model.rtw), см. Обзор функций библиотеки компилятора целевого языка.

Исключение для использования этих функций - когда вы получаете доступ к настройкам параметра для блока. Настройки параметра могут быть выписаны с помощью mdlRTW функция S-функции MEX на C. Они могут содержать данные в виде строк, скалярных значений, векторов и матриц. Они могут использоваться, чтобы передать фиксированные значения и информацию, которая используется для изменения сгенерированного кода для блока или непосредственно как значения в полученном коде блока.

Пример исключения из использования функций библиотеки

Следующий пример демонстрирует доступ к настройкам параметра для блока, используя mdlRTW функция S-функции MEX на C. Для получения дополнительной информации об использовании параметров смотрите Inlining S-Functions.

Функция mdlRTW в коде S-функции MEX на C

static void mdlRTW(SimStruct *S)
{
    if (!ssWriteRTWParamSettings( S, 1, SSWRITE_VALUE_QSTR, "Operator", "AND"))
    {
        ssSetErrorStatus(S,"Error writing parameter data to .rtw file");
        return;
    }
}

Получившаяся запись блока в model.rtw Файл

Block {
      Type    "S-Function"
      Name    "<Root>/S-Function"

      ...

      SFcnParamSettings {
        Operator    "AND"
      }
    }

TLC- Кода для доступа к настройкам параметра

%function Outputs(block, system) Output
  %%
  %% Select Operator
  %switch(SFcnParamSettings.Operator)
    %case "AND"
      %assign LogicOp        = "&"
      %break
    ...
  %endswitch
%endfunction

Предостерегайте от прямого доступа к полям записи

Когда вызываются функции в целевом файле блока, они передаются в блок и системные записи для этого образца в качестве аргументов. Первый аргумент, block, находится в возможностях, что означает, что имена переменных в записи блока этого образца доступны по наименованию. Для примера:

%assign fast = SFcnParamSetting.Fast

Блочные целевые файлы могут сгенерировать код для данного блока, непосредственно используя поля в записи Block для блока. Этот процесс не рекомендуется по двум причинам:

  • Содержимое model.rtw файл может меняться с релиза на релиз. Это может вызвать блок файлов, которые обращаются к model.rtw файл непосредственно, чтобы остановить работу.

  • Предусмотрены функции библиотеки TLC, которые существенно уменьшают количество кода TLC для реализации блока при обработке различных строений (ширины, типов данных и т.д.), которые могут иметь блок. Эти функции библиотеки предоставляются системными целевыми файлами для обеспечения доступа к входам, выходам, параметрам и так далее. Использование этих функций в блочном TLC скрипте делает его достаточно гибким, чтобы сгенерировать код для нескольких образцов или строений блока, а также между релизами. Исключения из этого, однако, происходят, например, когда вы хотите получить прямой доступ к полю в записи блока. Это происходит с настройками параметра, как обсуждается в TLC Code для доступа к параметрам Settings.

Похожие темы