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

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

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

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

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

Функция 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

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

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

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

Похожие темы