Потоки монитора

Монитор – многопоточный процесс. Приоритеты потоков заданы по умолчанию, однако их можно изменить на вкладке Дополнительно редактора узла (см. Задание параметров узла ) или в файле *.cnf (см. Задание параметров работы мониторов ).

Приоритет выбирается из следующего списка:

   -1 – Default;

   0 – IDLE;

   2 – LOWEST;

   4 – BELOW_NORMAL;

   6 – NORMAL;

   10 – ABOVE_NORMAL;

   12 – HIGHEST;

   14 – TIME_CRITICAL;

   77 – STOP.

Ниже указаны номера потоков и выполняемые в них задачи (см. также Принцип работы монитора. Канал TRACE MODE 6 ):

   0 – CALC, основной поток, выполняемый монитором циклически. Один цикл включает следующие последовательно выполняемые этапы:

   последовательный анализ всех включенных каналов узла (по возрастанию ID) и установка флага SV (недоступен для пользователя) каналам, требующим пересчета (см. Период пересчета канала ).

Каналы с типом пересчета цикл FAST и FAST EXE, цикл IDLE и IDLE EXE, цикл TF анализируются соответственно в потоке FAST, IDLE и TF.

Пересчет всех каналов (кроме каналов CALL) типа INPUT, которые должны пересчитываться в основном потоке, и, в некоторых случаях, – отработка этих каналов:

если канал связан с УСО – установка каналу флага необходимости отработки Q (недоступен для пользователя), отработка (чтение данных) и пересчет (вычисление атрибутов канала – т.е. выполнение внутренних алгоритмов и трансляции). Сброс для канала флагов SV и Q;

если канал принимает данные асинхронно (сеть, RS) – установка флага Q и пересчет. Сброс флага SV, установленный флаг Q является признаком необходимости отработки канала в соответствующем потоке;

   пересчет и отработка каналов класса CALL основного потока;

   пересчет каналов типа OUTPUT, которые должны пересчитываться в основном потоке, и анализ их выходного значения. Установка флага Q каналам, выходное значение которых изменилось. Дальнейшие действия выполняются по следующему алгоритму:

если канал связан с УСО – отработка (передача значения) и сброс флага Q;

если канал передает данные асинхронно (сеть, RS), он не отрабатывается и флаг Q не сбрасывается.

Не сброшенный в основном потоке флаг SV является признаком необходимости пересчета канала в соответствующем потоке.

Если используются приоритеты потоков по умолчанию, и для цикла установлено время (см. Время цикла монитора ), недостаточное для выполнения всех его задач, система будет работоспособной (будет идти обмен по RS и сети, выполняться программы и т.п.), однако заданные временные характеристики пересчета/отработки каналов будут нарушаться (т.е. быстродействие системы снизится). Например, в такой ситуации при запуске узла под Windows CE может никогда не отработаться вызов графической панели;

   1 – IP_RECEIVE, прием по сети IP;

   2 – IP_SEND, отсылка по сети IP;

   3 – ACTION, вспомогательный (печать, вывод в файл и т.п.);

   4 – SDDE, сервер DDE, NetDDE;

   5 – TF, T-Factory;

   6 – MODBUS;

   7 – AR, отчет тревог;

   8 – копирование отчета тревог;

   9 – дамп;

   10 – FAST (быстрые каналы);

   11 – TCP_CS (поток подключения по TCP);

   12 – t12;

   13 – MASTER RS;

   14 – MLINK;

   15 – модем;

   16 – вызов графики;

   17 – SIAD;

   18 – IDLE;

   19 – клиент DDE, NetDDE;

   20 – GSM, SMS;

   21 – чтение архива;

   25 – GPRS;

   26 – MAKE_UP, короткоживущий поток, создается при необходимости на одну операцию (перепривязка на уровне объектов, генерация файлов avb);

   27 – GPS;

   28 – сервер MODBUS TCP;

   29 – MAIN, мониторинг всех остальных потоков;

   30 – графический поток ОС (рисование);

   31 – TCP_RS, чтение по TCP.

Некорректная установка приоритетов потоков может привести к неработоспособности системы.