<< Click to Display Table of Contents >> Navigation: Программирование в MasterSCADA 4D > Функции и ФБ библиотеки Стандартная > Библиотека Стандартные функции > Функции работы с датой-временем > TIME |
TIME - таймер исполнительной системы.
Функция возвращает текущее значение аппаратного таймера контроллера. Аппаратный таймер не следует путать с модулем часов реального времени, который, возможно, имеется в контроллере. Для аппаратного таймера не предусмотрены операции сброса и задания начального значения; таймер всегда начинает отсчет времени с момента включения питания.
Вид функции в редакторе программ языка FBD:
Входы и выходы функции:
Название |
Тип |
Описание |
Выходы |
||
Q |
TIME |
Значение таймера. Q:=time() |
Значение стандартного таймера – целое 32-разрядное число миллисекунд. т.е. максимальное значение составляет (232 - 1) мс = t#49d17h02m47s295ms, после чего таймер начинает новый цикл отсчета с 0 (т.н. переполнение таймера). При переполнении разность timeN()-timeN-1() отрицательна (N – номер цикла, на котором возникло переполнение). Для корректного вычисления длины временного интервала (что требуется, например, при интегрировании) нужно использовать предварительный перевод значений функции time() в тип данных DWORD (см. Особенности битовых строк). Следующий код корректно вычисляет длительность цикла deltaT:
var deltaT, T_current, T_last:TIME; end_var
T_current:=time();
deltaT:=dword_to_time(time_to_dword(T_current)-time_to_dword(T_last));
T_last:=T_current;
Если значение таймера целое N-разрядное число миллисекунд, то для корректного вычисления длины временного интервала нужно использовать предварительный перевод значений функции time() в битовую строку, разрядность которой меньше или равна N. Например, для интервалов, заведомо меньших, чем 255 мс, можно использовать перевод значений функции time() в тип данных BYTE.