Период пересчета канала

Значение периода пересчета канала может устанавливаться либо в единицах времени (при этом оно должно быть кратно времени цикла 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 циклов и т. д.