Усовершенствованные функции

LibAppendToModelReferenceUserData (данные)

Добавляет объект определенных данных к пользовательским данным в binfo файл для модели, в настоящее время создаваемой. Эта функция только вызвана во время сборок для целей модели-ссылки.

Примечание

Аргумент данных не может быть вектором или матрицей. Чтобы работать вокруг этого ограничения, создайте запись с полем, содержащим векторные или матричные данные, и передайте эту запись в функцию.

Смотрите LibAppendToModelReferenceUserData в modelrefutil.tlc.

LibBlockInputSignalBufferDstPort (portIdx)

Возвращает выходной порт, соответствующий входному порту (portIdx) та доля та же память, в противном случае (-1) возвращена. Необходимо будет использовать LibBlockInputSignalBufferDstPort когда вы задаете ssSetInputPortOverWritable(S,portIdx,TRUE) в вашей S-функции.

Если входной порт и некоторый выходной порт блока

  • Не тестовые точки, и

  • Входной порт сверхперезаписываем

затем выходной порт может снова использовать тот же буфер как входной порт. В этом случае, LibBlockInputSignalBufferDstPort возвращает индекс выходного порта, который снова использует буфер заданного входного порта. Если ни один из выходных портов блока не снова использует заданный буфер входного порта, то LibBlockInputSignalBufferDstPort возвращает -1.

LibBlockInputSignalBufferDstPort версия TLC макроса Simulink® ssGetInputPortBufferDstPort.

Пример

Примите, что у вас есть блок, который имеет два входных порта, оба из которых получают комплексное число в 2-широких векторах. Блок выводит продукт этих двух комплексных чисел.

%assign u1r = LibBlockInputSignal (0, "", "", 0)
%assign u1i = LibBlockInputSignal (0, "", "", 1)
%assign u2r = LibBlockInputSignal (1, "", "", 0)
%assign u2i = LibBlockInputSignal (1, "", "", 1)
%assign yr  = LibBlockOutputSignal (0, "", "", 0)
%assign yi  = LibBlockOutputSignal (0, "", "", 1)
%if (LibBlockInputSignalBufferDstPort(0) != -1)
  %% The first input is going to be overwritten by yr so
  %% we need to save the real part in a temporary variable.
  {
  real_T tmpRe = %<u1r>;
%assign u1r = "tmpRe";
%endif
%<yr> = %<u1r> * %<u2r> - %<u1i> * %<u2i>;
%<yi> = %<u1r> * %<u2i> + %<u1i> * %<u2r>;
%if (LibBlockInputSignalBufferDstPort(0) != -1)
  }
%endif

Обратите внимание на то, что, потому что только один выходной порт существует, этот пример, возможно, использовал (LibBlockInputSignalBufferDstPort(0) == 0) как булево условие для %if операторы.

Смотрите LibBlockInputSignalBufferDstPort в blkiolib.tlc.

LibBlockInputSignalStorageClass (portIdx, sigIdx)

Возвращает класс памяти заданного сигнала входного порта блока. Классом памяти может быть "Auto", "ExportedSignal", "ImportedExtern", или "ImportedExternPointer".

Смотрите LibBlockInputSignalStorageClass в blkiolib.tlc.

LibBlockInputSignalStorageTypeQualifier
(portIdx, sigIdx)

Возвращает спецификатор типа хранения заданного сигнала входного порта блока. Спецификатор типа может быть чем-либо вводимым пользователем, таким как const. Спецификатором типа по умолчанию является "Auto", что означает, делают действие по умолчанию.

Смотрите LibBlockInputSignalStorageTypeQualifier в blkiolib.tlc.

LibBlockOutputSignalIsGlobal (portIdx)

Возвращается 1, если заданный сигнал выходного порта блока объявляется в глобальной области видимости, в противном случае возвращает 0.

Если LibBlockOutputSignalIsGlobal возвращает 1, затем переменная, содержащая этот сигнал, доступна отовсюду в сгенерированном коде. Например, LibBlockOutputSignalIsGlobal возвращает 1 для сигналов, которые являются тестовыми точками, внешними, или инвариантными.

Смотрите LibBlockOutputSignalIsGlobal в blkiolib.tlc.

LibBlockOutputSignalIsInBlockIO (portIdx)

Возвращается 1, если заданный выходной порт блока существует в глобальной структуре данных блока I/O. Вы можете должны быть использовать это, если вы задаете ssSetOutputPortReusable(S,portIdx,TRUE) в вашей S-функции.

Смотрите sfun_multiport.tlc.

Смотрите LibBlockOutputSignalIsInBlockIO в blkiolib.tlc.

LibBlockOutputSignalIsValidLValue (portIdx)

Возвращает 1 если заданный сигнал выходного порта блока может использоваться в качестве допустимого аргумента левой стороны (lvalue) в выражении присваивания, в противном случае возвращает 0. Например, LibBlockOutputSignalIsValidLValue возвращает 1 если сигнал выходного порта блока находится в памяти чтения-записи.

Смотрите LibBlockOutputSignalIsValidLValue в blkiolib.tlc.

LibBlockOutputSignalStorageClass (portIdx)

Возвращает класс памяти заданного выходного сигнала блока. Классом памяти может быть "Auto", "ExportedSignal", "ImportedExtern", или "ImportedExternPointer".

Смотрите LibBlockOutputSignalStorageClass в blkiolib.tlc.

LibBlockOutputSignalStorageTypeQualifier
(portIdx)

Возвращает спецификатор типа хранения заданного выходного сигнала блока. Спецификатор типа может быть чем-либо вводимым пользователем, таким как const. Спецификатором типа по умолчанию является Auto, что означает, делают действие по умолчанию.

Смотрите LibBlockOutputSignalStorageType в blkiolib.tlc.

LibBlockSrcSignalBlock (portIdx, sigIdx)

Возвращает ссылку на блок, который является источником указанного элемента входного порта блока. Возвращаемый аргумент является одним из следующего:

[systemIdx, blockIdx]

Если блок выход или состояние уникален

"ExternalInput"

Если внешний вход (базируются импорт),

"Ground"

Если несвязанный или соединенный с землей

"FcnCall"

Если вызов функции выводится

0

Если не уникальный (т.е. источник для блока Merge или сигнала, снова использованного из-за оптимизации блока I/O)

Пример

Следующий фрагмент кода находит блок, который управляет вторым входом на первом порте текущего блока, затем присваивает входной сигнал этого исходного блока к переменной y:

%assign srcBlock = LibBlockSrcSignalBlock(0, 1)
%% Make sure that the source is a block
%if TYPE(srcBlock) == "Vector"
  %assign sys = srcBlock[0]
  %assign blk = srcBlock[1]
  %assign block = CompiledModel.System[sys].Block[blk]
  %with block
    %assign u = LibBlockInputSignal(0, "", "", 0)
    y = %<u>;
  %endwith
%endif

Смотрите LibBlockSrcSignalBlock в blkiolib.tlc.

LibBlockSrcSignalIsDiscrete (portIdx, sigIdx)

Возвращается 1, если исходное соответствие сигнала указанному элементу входного порта блока дискретно, в противном случае возвращается 0.

Обратите внимание на то, что LibBlockSrcSignalIsDiscrete также возвращается 0, если ведущий блок не может быть исключительно полон решимости быть объединенным или снова использованным сигналом (т.е. источник является блоком Merge, или сигнал был снова использован из-за оптимизации).

Смотрите LibBlockSrcSignalIsDiscrete в blkiolib.tlc.

LibBlockSrcSignalIsGlobalAndModifiable
(portIdx, sigIdx)

LibBlockSrcSignalIsGlobalAndModifiable возвращается 1, если исходное соответствие сигнала указанному элементу входного порта блока удовлетворяет следующим трем условиям:

  • Это читаемо везде в сгенерированном коде.

  • На это может сослаться его адрес.

  • Его значение может измениться (т.е. это не объявляется как const).

В противном случае, LibBlockSrcSignalIsGlobalAndModifiable возвращает 0.

Смотрите LibBlockSrcSignalIsGlobalAndModifiable в blkiolib.tlc.

LibBlockSrcSignalIsInvariant (portIdx, sigIdx)

Возвращает 1 если исходное соответствие сигнала указанному элементу входного порта блока является инвариантным (т.е. сигнал не изменяется).

Например, исходный блок с постоянным TID (или эквивалентно, бесконечный шаг расчета), вывел бы инвариантный сигнал.

Смотрите LibBlockSrcSignalIsInvariant в blkiolib.tlc.

LibGetModelReferenceUserData (modelName)

Получает пользовательские данные для данной модели. Это возвращает вектор с одним элементом в течение каждого раза LibAppendToUserData называется в данной модели. Эта функция не может быть вызвана во время сборок, где целевой тип является SIM.

Смотрите LibGetModelReferenceUserData в modelrefutil.tlc.

LibGetReferencedModelNames ()

Получает имена моделей, на которые ссылается модель, которая в настоящее время создается. Возвращает данные как структуру с двумя полями:

  • NumReferencedModels: целое число с количеством имен модели

  • ReferencedModel: массив структур, где каждая структура имеет поле –Name– содержа имя модели, на которую ссылаются,

Смотрите LibGetReferencedModelNames в modelrefutil.tlc.

LibIsModelReferenceRTWTarget ()

Возвращает true, если процесс сборки генерирует код для цели модели-ссылки.

Смотрите LibIsModelReferenceRTWTarget в utillib.tlc.

LibIsModelReferenceSimTarget ()

Возвратите true, если мы генерируем код для цели Симуляции модели - ссылки.

Смотрите LibIsModelReferenceSimTarget в utillib.tlc.

LibIsModelReferenceTarget ()

Возвратите true, если мы генерируем код для цели модели-ссылки.

Смотрите LibIsModelReferenceTarget в utillib.tlc.

Похожие темы