Функции шага расчета

LibAsynchronousTriggeredTID (tid)

Возвращается, соответствует ли этот TID асинхронному инициированному уровню.

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

LibAsyncTaskAccessTimeInFcn (tid, fcnType)

Возвращается 1, если заданный асинхронный идентификатор задачи (TID) является типом заданной функции.

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

LibBlockSampleTime (блок)

Возвращает шаг расчета блока. Возвращенное значение зависит от классификации шагов расчета блока, как показано в следующей таблице.

Блокируйте классификациюВозвращенное значение

Дискретный

Фактический шаг расчета блока (действительный> 0)

Непрерывный

0.0

Инициированный

-1.0

Постоянный

-2.0

Смотрите LibBlockSampleTime в blocklib.tlc.

LibGetClockTick (tid)

Возвращает целочисленное время задачи (текущий такт системных часов таймера задачи). Разрешение таймера может быть получено из LibGetClockTickStepSize(tid). ID типа данных таймера может быть получен из LibGetClockTickDataTypeId(tid).

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

LibGetClockTickDataTypeId (tid)

Возвращает ID типа данных такта системных часов.

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

LibGetClockTickHigh (tid)

Возвращает старшее слово целочисленного времени задачи. LibGetClockTickHigh используется когда uint32 пары используются, чтобы сохранить абсолютное время. Разрешение такта системных часов может быть получено из LibGetClockTickStepSize(tid).

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

LibGetClockTickStepSize (tid)

Возвращает размер шага такта системных часов, который является разрешением целочисленного времени задачи. LibGetClockTickStepSize не может использоваться, если задача не имеет таймера.

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

LibGetElapseTime (система)

Возвращается время протекло с прошлого раза подсистема начала выполняться.

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

LibGetElapseTimeCounter (система)

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

Можно получить разрешение путем вызова LibGetElapseTimeResolution(system). Можно получить ID типа данных целочисленного счетчика прошедшего времени путем вызова LibGetElapseTimeCounterDTypeId(system).

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

LibGetElapseTimeCounterDTypeId (система)

Возвращает идентификатор типа даты целочисленного прошедшего времени, возвращенного LibGetElapseTimeCounter.

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

LibGetElapseTimeResolution (система)

Возвращает разрешение прошедшего времени, возвращенного LibGetElapseTimeCounter.

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

LibGetGlobalTIDFromLocalSFcnTID (sfcnTID)

Возвращает идентификатор задачи модели (индекс шага расчета) соответствие заданному локальному идентификатору задачи S-функции или шагу расчета порта. LibGetGlobalTIDFromLocalSFcnTID позволяет вам использовать одну функцию, чтобы определить глобальный TID, независимый от порта - или основанные на блоке шаги расчета.

Входной параметр к LibGetGlobalTIDFromLocalSFcnTID должно быть одно из следующего:

  • Для основанных на блоке шагов расчета (например, в S-функции mdlInitializeSizes, ssSetNumSampleTimes(S, N) с N > 1 был задан), sfcnTID неотрицательное целое число, дающее соответствующий локальный шаг расчета S-функции.

  • Для основанных на порте шагов расчета (например, в S-функции mdlInitializeSizes, ssSetNumSampleTimes(S, PORT_BASED_SAMPLE_TIMES) был задан), sfcnTID строка формы "InputPortIdxI" или "OutputPortIdxI", где I целое число в пределах от 0 к количеству портов (например, "InputPortIdx0".

Примеры

Многоскоростной блок

%assign globalTID = LibGetGlobalTIDFromLocalSFcnTID(2)

или

%assign globalTID = 
LibGetGlobalTIDFromLocalSFcnTID("InputPortIdx4") 
%assign period = 
CompiledModel.SampleTime[globalTID].PeriodAndOffset[0]
%assign offset = 
CompiledModel.SampleTime[globalTID].PeriodAndOffset[1]

Наследованный блок шага расчета

%switch (LibGetSFcnTIDType(0)) 
  %case "discrete" 
  %case "continuous" 
    %assign globalTID = LibGetGlobalTIDFromLocalSFcnTID(2) 
    %assign period = ... 
      CompiledModel.SampleTime[globalTID].PeriodAndOffset[0] 
    %assign offset = ... 
      CompiledModel.SampleTime[globalTID].PeriodAndOffset[1] 
    %break 
  %case "triggered" 
    %assign period = -1 
    %assign offset = -1 
    %break 
  %case "constant" 
    %assign period = rtInf 
    %assign offset = 0 
    %break 
  %default 
    %<LibBlockReportFatalError([],"Unknown tid type")> 
%endswitch

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

LibGetNumAsyncTasks ()

Возвратите количество асинхронных задач в сгенерированном коде.

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

LibGetNumSFcnSampleTimes (блок)

Возвращает количество шагов расчета S-функции для блока.

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

LibGetNumSyncPeriodicTasks ()

Возвратите количество периодических задач в сгенерированном коде.

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

LibGetNumTasks ()

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

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

LibGetSampleTimePeriodAndOffset (tid, idx)

Возвращает значение периода шага расчета или значение смещения для заданной задачи.

Аргументы

tid — Задайте идентификатор задачи, для которой можно возвратить информацию.

idx — Задайте 0, чтобы возвратить значение периода шага расчета или 1, чтобы возвратить значение смещения шага расчета.

Примеры

%% Get sample time period and offset for task 0
%assign sampleTime = LibGetSampleTimePeriodAndOffset(0,0)
%assign offsetTime = LibGetSampleTimePeriodAndOffset(0,1)

%% Get sample time periods for tasks 0 and 1
%assign periodTID0 = LibGetSampleTimePeriodAndOffset(0,0)
%assign periodTID1 = LibGetSampleTimePeriodAndOffset(1,0)

Смотрите LibGetSampleTimePeriodAndOffset в codetemplatelib.tlc.

LibGetSFcnTIDType (sfcnTID)

Возвращает тип заданного идентификатора задачи S-функции (sfcnTID). Возможные значения:

  • "continuous" — Заданный sfcnTID непрерывно.

  • "discrete" — Заданный sfcnTID дискретно.

  • "triggered" — Заданный sfcnTID инициирован.

  • "constant" — Заданный sfcnTID является постоянным.

Формат sfcnTID должен быть эквивалентным для LibIsSFcnSampleHit.

Примечание

Это полезно, в основном, в контексте S-функций, которые задают наследованный шаг расчета.

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

LibGetTaskTime (tid)

Возвращает строку, чтобы получить доступ к абсолютному времени задачи, которая является числом с плавающей запятой. Однако, если вы сконфигурировали модель для генерации кода только для целого числа (путем отмены выбора Support floating-point numbers), строка представляет целое число, равное количеству меток деления базовой ставки (абсолютное время, разделенное на основной шаг расчета), а не абсолютное время. В коде только для целого числа время задачи является целочисленной временной стоимостью, разрешение которой является основным размером шага модели.

LibGetTaskTime версия TLC макроса SimStruct: "ssGetTaskTime(S,tid)".

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

LibGetTaskTimeFromTID (блок)

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

Если значение CodeFormat Переменной TLC не является Embedded-C, LibGetTaskTimeFromTID возвращает строку "RTMGet("T")" если блок является постоянным, или система является одним уровнем и "RTMGetTaskTimeForTID(tid)" в противном случае.

Если значение для CodeFormat Переменной TLC является Embedded-C, LibGetTaskTimeFromTID возвращает "RTMGetTaskTimeForTID(tid)".

Если блок является постоянным, или система является одним уровнем, это - версия TLC макроса SimStruct: "ssGetT(S)" и "ssGetTaskTime(S, tid)" в противном случае.

В обоих случаях, S имя SimStruct.

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

LibGetTID01EQ ()

Возвращает значение флага TID01EQ — true (1) при выборке уровней непрерывной задачи и первой дискретной задачи равна и ложная (0) в противном случае.

Когда модель имеет непрерывное время, и флаг TID01EQ является истинным, и непрерывным временем и самым быстрым дискретным временем, обработаны как один уровень в сгенерированном коде. Код, сопоставленный с самым быстрым дискретным уровнем, охраняет основная проверка временного шага. Когда модель имеет только два уровня, и TID01EQ верен, сгенерированный код имеет односкоростной интерфейс вызова.

Используйте LibGetTID01EQ обнаружить и составлять случай, где непрерывное время и самое быстрое дискретное время обработаны как один уровень.

Смотрите LibGetTID01EQ в codetemplatelib.tlc, bareboard_mrmain.tlc, и ertmainlib.tlc.

LibIsContinuous (TID)

Возвращается 1 если заданный идентификатор задачи (TID) непрерывно и 0 в противном случае. Обратите внимание на то, что идентификаторы задачи равняются "triggered" или "constant" не непрерывны.

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

LibIsDiscrete (TID)

Возвращается 1 если заданный идентификатор задачи (TID) дискретно и 0 в противном случае. Обратите внимание на то, что идентификаторы задачи равняются "triggered" или "constant" не дискретны.

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

LibIsSFcnSampleHit (sfcnTID)

Возвращается 1, если демонстрационный хит происходит для заданного локального идентификатора задачи S-функции (TID) и 0 в противном случае.

Входной параметр к LibIsSFcnSampleHit должно быть одно из следующего:

  • sfcnTID: целое число (например, 2)

    Для основанных на блоке шагов расчета (например, в S-функции mdlInitializeSizes, ssSetNumSampleTimes(S,N) с N> 1 был задан), sfcnTID целое число, запускающееся в 0 из соответствующего локального шага расчета S-функции.

  • sfcnTID: "InputPortIdxI" или "OutputPortIdxI" (например, "InputPortIdx0").

    Для основанных на порте шагов расчета (например, в S-функции mdlInitializeSizes, ssSetNumSampleTimes(S,PORT_BASED_SAMPLE_TIMES) был задан), sfcnTID строка, дающая вход (или выход) индекс порта.

Примеры

  • Рассмотрите многоскоростной Блок s-function с четырьмя шагами расчета блока. Вызов LibIsSFcnSampleHit(2) возвращает код, чтобы проверять на демонстрационный хит на третьем шаге расчета Блока s-function.

  • Рассмотрите многоскоростной Блок s-function с тремя входами и восемью выходными шагами расчета. Вызов LibIsSFcnSampleHit("InputPortIdx0") возвращает код, чтобы проверять на демонстрационный хит на первом входном порте. Вызов LibIsSFcnSampleHit("OutputPortIdx7") возвращает код, чтобы проверять на демонстрационный хит на восьмом выходном порте.

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

LibIsSFcnSingleRate (блок)

Возвращает булево значение (1 или 0) указание, является ли S-функция одним уровнем (один шаг расчета) или многоскоростной (несколько шагов расчета).

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

LibIsSFcnSpecialSampleHit (sfcnSTI, sfcnTID)

Возвращает макрос Simulink®, чтобы способствовать медленной задаче (sfcnSTI) в более быструю задачу (sfcnTID).

Эта усовершенствованная функция в частности предназначается для использования в блоках перехода уровня. LibIsSFcnSpecialSampleHit определяет глобальный TID из S-function TID

Входные параметры к LibIsSFcnSpecialSampleHit

  • Для многоскоростных Блоков s-function:

    sfcnSTI: локальный индекс шага расчета S-функции (sti) из медленной задачи, которой нужно способствовать

    sfcnTID: локальный ID задачи S-функции (tid) из быстрой задачи, куда медленная задача состоит в том, чтобы запуститься

  • Для односкоростных Блоков s-function с помощью SS_OPTION_RATE_TRANSITION, sfcnSTI и sfcnTID проигнорированы и должен быть задан как "".

Формат sfcnSTI и sfcnTID должен следовать за тем из аргумента к LibIsSFcnSampleHit.

Примеры

  • S-функция перехода уровня (один шаг расчета с SS_OPTION_RATE_TRANSITION)

    if (%<LibIsSFcnSpecialSampleHit("","")>) {
  • Многоскоростная S-функция с основанными на порте шагами расчета, где норма выработки медленнее, чем входной уровень (например, нулевой порядок содержит операцию),

    if (%<LibIsSFcnSpecialSampleHit("OutputPortIdx0","InputPortIdx0")>) {

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

LibIsSingleRateModel ()

Возвращает true если модель является одним уровнем и false в противном случае.

Смотрите LibIsSingleRateModel в codetemplatelib.tlc.

LibIsSingleTasking ()

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

Смотрите LibIsSingleTasking в codetemplatelib.tlc.

LibIsZOHContinuous (TID)

Возвращается 1, если заданный идентификатор задачи (TID) является непрерывным нулевым порядком содержит (ZOH) и 0 в противном случае. TID равняется triggered или constant не ZOH непрерывный.

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

LibNumAsynchronousSampleTimes ()

Возвращает количество асинхронных шагов расчета в модели.

Смотрите LibNumAsynchronousSampleTimes в codetemplatelib.tlc.

LibNumDiscreteSampleTimes ()

Возвращает количество дискретных шагов расчета в модели.

Смотрите LibNumDiscreteSampleTimes в codetemplatelib.tlc.

LibNumSynchronousSampleTimes ()

Возвращает количество синхронных шагов расчета в модели.

Смотрите LibNumSynchronousSampleTimes в codetemplatelib.tlc.

LibPortBasedSampleTimeBlockIsTriggered (блок)

Определяет, инициирован ли основанный на порте Блок s-function.

Смотрите LibPortBasedSampleTimeBlockIsTriggered в blocklib.tlc.

LibSetVarNextHitTime (блок, tNext)

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

Смотрите LibSetVarNextHitTime в blocklib.tlc.

LibTriggeredTID (tid)

Возвращается, соответствует ли этот TID инициированному уровню.

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

Похожие темы