Шаг расчета функций

LibAsynchronousTriggeredTID (tid

)

Возвращает, соответствует ли этот TID асинхронной скорости запуска.

См. LibAsynchronousTriggeredTID в utillib.tlc.

LibAsyncTaskAccessTimeInFcn (tid, fcnType

)

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

См. LibAsyncTaskAccessTimeInFcn в utillib.tlc.

LibBlockSampleTime (блок

)

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

Классификация блоковВозвращенное значение

Дискретный

Фактический шаг расчета блока (real > 0)

Непрерывный

0.0

Вызванный

-1.0

Постоянный

-2.0

См. LibBlockSampleTime в blocklib.tlc.

LibGetClockTick (tid

)

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

См. LibGetClockTick в utillib.tlc.

LibGetClockTickDataTypeId (tid

)

Возвращает идентификатор типа данных такта синхроимпульса.

См. 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). Идентификатор типа данных целочисленного счетчика времени можно получить путем вызова LibGetElapseTimeCounterDTypeId(system).

См. LibGetElapseTimeCounter в utillib.tlc.

LibGetElapseTimeCounterDTypeId (система

)

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

См. LibGetElapseTimeCounterDTypeId в utillib.tlc.

LibGetElapseTimeResolution (система

)

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

См. LibGetElapseTimeResolution в utillib.tlc.

Lib Get Global TIDF rom Local SF cn TID (sfcn TID

)

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

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

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

  • Для основанных на порте шагов расчета (например, в S-функции mdlInitializeSizes, ssSetNumSampleTimes(S, PORT_BASED_SAMPLE_TIMES) был задан), sfcnTID является строкой формы "InputPortIdx I" или "OutputPortIdx I", где 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: "InportPortIdx I" или "OutputPortIdx I" (например, "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.

Lib Is SF cn Special Sample Hit (sfcn STI, sfcn TID

)

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

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

Входные параметры в LibIsSFcnSpecialSampleHit являются

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

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

    sfcnTID: локальный идентификатор задачи 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.

Похожие темы