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

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.

Похожие темы