Значение периода пересчета канала может устанавливаться либо в единицах времени (при этом оно должно быть кратно времени цикла CALC), либо в циклах соответствующего потока (см. Время цикла монитора ).
Если, например, период пересчета канала задан равным 2с, а время цикла CALC при этом равно 5с, то канал будет пересчитываться не чаще, чем 1 раз в 5с.
При редактировании проекта в ИС начальное значение и единицы измерения периода задаются на вкладке Основные раздела Системные редактора канала:
В реальном времени период канала можно изменять, модифицируя значения атрибутов Период пересчета (значение) (5, FRQ) и Период пересчета (единицы) (38, FRQ_D).
При редактировании в ИС единицы измерения периода канала (или тип пересчета) выбираются из следующего списка (recalculation.tmc, в скобках слева приведено значение, которое в реальном времени нужно послать в атрибут FRQ_D для задания соответствующих единиц измерения, в скобках справа – допустимое значение периода для выбранных единиц измерения):
(0) цикл CALC – период в циклах CALC;
(1) сек – период в секундах (1-60);
(2) мин – период в минутах (1-60);
(3) час – период в часах (1-24);
(4) флаги – период в циклах CALC с блокировкой пересчета с помощью канала типа OUTPUT, связанного с системной переменной Системные/@Recalculation_Flag (атрибут Параметр переменной должен быть равен 0). Для блокировки пересчета надо послать в такой канал значение 1;
(5) F1 – период в циклах CALC с отставанием на 1 цикл;
(6) F2 – период в циклах CALC с отставанием на 2 цикла;
(7) F3 – период в циклах CALC с отставанием на 3 цикла;
(8) F4 – период в циклах CALC с отставанием на 4 цикла;
(9) цикл FAST – период в циклах FAST (см. Потоки монитора );
(10) на старте – канал пересчитывается один раз при старте монитора;
(11) в нач. часа – один раз в сутки в начале часа, заданного атрибутом Период;
(12) в нач. дня – один раз в месяц в начале суток, номер которых задается атрибутом Период;
(13) по времени – в указанное время. Монитор создает в памяти список фиксированных значений времени (32), который при старте заполнен нулевыми значениями (0 соответствует периоду 1 цикл). Для заполнения списка необходимыми значениями времени (в секундах с 01.01.70) используются каналы класса TIME, связанные с системными переменными Системные/@Recalculation_Flag. Атрибут Параметр системной переменной задает индекс значения времени в списке (начиная с 1), значение канала TIME – значение времени:
если значение канала меньше 86400, оно прибавляется к значению времени в указанной позиции списка;
если значение канала больше или равно 86400, оно задает значение времени в указанной позиции списка.
Для выбора времени пересчета канала с единицами измерения периода По времени используется его атрибут Период пересчета (значение) (5, FRQ) – значение этого атрибута указывает индекс времени в списке монитора,
(14) однократно – канал пересчитывается один раз и выключается. Для канала асинхронного обмена: после генерации запроса (Request=1) канал ждет ответа; если ответ получен, Response=1 и канал выключается; если ответа нет (Request=1, Response=0) в течение заданного таймаута, канал не выключается, в нем устанавливается флаг аппаратной недостоверности, и в дальнейшем канал периодически генерирует запросы (до получения ответа);
(15) цикл IDLE – период в циклах IDLE;
(16) цикл TF – период в циклах TF;
(17) Trace Depth 0 и (18) Trace Depth <>0 – по команде Сохранить для МРВ из каналов с такими периодами пересчета экспортируются только те, значение периода которых не противоречит значению параметра Глубина отслеживания источников в общих параметрах ИС (см. Задание общих настроек ИС ). Период экспортированных каналов устанавливается в циклах CALC;
(19) свой поток – пересчет в собственном потоке (создается монитором, имеет приоритет idle; номер потока задается атрибутом Период). Этот тип пересчета предназначен в основном для очень больших программ. Выполнение программы приостанавливается при выключении канала CALL и возобновляется при последующем включении. После выполнения программы бит 0 атрибута 46, QE (параметр b14) принимает значение 1;
(20) CALC EXE – канал OUTPUT с таким типом пересчета анализируется 1 раз за N циклов CALC (N=Период), а отрабатывается при изменении значения в следующем цикле CALC вне зависимости от атрибута Период;
(21) FAST EXE – канал OUTPUT с таким типом пересчета анализируется 1 раз за N циклов FAST (N=Период), а отрабатывается при изменении значения в следующем цикле FAST вне зависимости от атрибута Период;
(22) IDLE EXE – канал OUTPUT с таким типом пересчета анализируется 1 раз за N циклов IDLE (N=Период), а отрабатывается при изменении значения в следующем цикле IDLE вне зависимости от атрибута Период;
(23) день недели – в указанный день недели (1 – воскресенье, 2 – понедельник и т.д.). Время отработки задает ключ FRQSHF4 в файле *.cnf как число минут с начала дня;
(24) *день недели – аналог предыдущего, но после недельного ожидания отрабатывается чаще до тех пор, пока не считает данные;
(25) *мин – период в минутах, ключ FRQSHF0 в файле *.cnf задает сдвиг пересчета относительно начала минуты (см. Задание параметров работы мониторов );
(26) *час – период в часах, ключ FRQSHF1 в файле *.cnf задает сдвиг пересчета относительно начала часа;
(27) *день – период в сутках, ключ FRQSHF2 в файле *.cnf задает сдвиг пересчета относительно начала суток;
(28) *месяц – период в месяцах, ключ FRQSHF3 в файле *.cnf задает сдвиг пересчета относительно начала месяца;
(29) **мин – период в минутах.
Специфика типов 25-29. Если ответа на запрос нет, то в канале, для которого задан временной тип пересчета, отличный от 25-29, флаг аппаратной недостоверности устанавливается сразу по истечении заданного таймаута, а последующие запросы генерируются с заданным периодом. В такой же ситуации в канале с типом пересчета 25-29 флаг аппаратной недостоверности не устанавливается до следующего пересчета, а последующие запросы генерируются чаще:
25 – 1 раз за FRQ циклов CALC;
26 – 1 раз в минуту;
27 – 1 раз в минуту;
28 – 1 раз в минуту;
29 – задается монитором (в самом быстром варианте – с периодом, заданным для узла, но не чаще, чем 1 раз в секунду).
(30) по событию – канал отрабатывается при наступлении заданного события (для указания события нужно присвоить соответствующее значение атрибуту Период пересчета (значение)):
1 – авторизация;
2 – завершение сеанса;
3 – авторизация и завершение сеанса;
4 – спустя 1 мин. после авторизации;
5 – спустя 2 мин. после авторизации;
6 – спустя 3 мин. после авторизации;
7 – спустя 4 мин. после авторизации;
8 – спустя 5 мин. после авторизации;
60 – спустя 1ч после авторизации;
61 – спустя 2ч после авторизации;
62 – спустя 3ч после авторизации;
63 – спустя 4ч после авторизации;
64 – спустя 5ч после авторизации.
При создании канала в ИС ему по умолчанию задается период 1 цикл CALC.
Произвольный поток для отработки может быть задан для любого канала, кроме CALL.Screen – такой канал всегда отрабатывается в соответствующем потоке вне зависимости от заданного.
Для каналов, период которых задан в циклах CALC (кроме F1, …, F4), необходимость пересчета определяется по равенству нулю остатка от деления значения системной переменной @Recalculation_Index (индекс пересчета, см. Группа СИСТЕМНЫЕ ) на период канала.
Для каналов, имеющих тип периода F1, …, F4, условие пересчета можно записать следующим образом:
(<Индекс пересчета>%5 = I) & (<Индекс пересчета>%FRQ = 0)
где
I – задержка в циклах (1, 2, 3 или 4);
FRQ – период.
Исходя из этого условия, значение периода канала 1 и размерность F1 устанавливают его пересчет один раз в 5 циклов с отставанием на 1 цикл от канала с периодом, равным 5 и размерностью цикл CALC. Каналы с периодом F2 в этих же условиях будут отставать на 2 цикла, F3 – на 3 цикла, а F4 – на 4 цикла. Значение периода 2 задает для этих каналов пересчет 1 раз в 10 циклов и т. д.