exponenta event banner

Расширенные функции

LibAppendToModelReferureUserData (данные

)

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

Примечание

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

Посмотрите LibAppendToModelReferenceUserData в modelrefutil.tlc.

LibBlockInputSignalDstPort (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, если указанный выходной порт блока существует в глобальной структуре данных ввода-вывода блока. Это может потребоваться при указании 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

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

Пример

Следующий фрагмент кода находит блок, который управляет вторым входом на первом порте текущего блока, затем назначает входной сигнал этого блока источника переменной 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, если управляющий блок не может быть однозначно определен как объединенный или повторно используемый сигнал (т.е. источник является блоком слияния или сигнал был повторно использован из-за оптимизации).

Посмотрите LibBlockSrcSignalIsDiscrete в blkiolib.tlc.

LibBlockSrcSignalIsGlobalAndModifiable
(portIdx, sigIdx)

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

  • Он доступен для чтения везде в сгенерированном коде.

  • На него можно ссылаться по его адресу.

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

В противном случае LibBlockSrcSignalIsGlobalAndModifiable прибыль 0.

Посмотрите LibBlockSrcSignalIsGlobalAndModifiable в blkiolib.tlc.

LibBlockSrcSignalIsInvariant (portIdx, sigIdx

)

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

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

Посмотрите LibBlockSrcSignalIsInvariant в blkiolib.tlc.

LibGetModelReferureUserData (modelName

)

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

Посмотрите LibGetModelReferenceUserData в modelrefutil.tlc.

LibGetReferencedModelNames ()

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

  • NumReferencedModels: целое число с числом имен моделей

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

Посмотрите LibGetReferencedModelNames в modelrefutil.tlc.

LibIsModelReferureRTWTarget ()

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

Посмотрите LibIsModelReferenceRTWTarget в utillib.tlc.

LibIsModelReferureSimTarget ()

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

Посмотрите LibIsModelReferenceSimTarget в utillib.tlc.

LibIsModelReferureTarget ()

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

Посмотрите LibIsModelReferenceTarget в utillib.tlc.

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