Структура информации о состоянии узла

Параметры структуры STR_INFO_NODE

В контроллерах управления для определения состояния сети, связывающей контроллеры управления со станцией отображения, осуществляется запуск операции PING по всем сетевым интерфейсам для всех заданных контроллеров в конфигурационном файле tc.cfg.

OPC-сервер RunTCOPC предоставляет клиентам различную информацию о состоянии узлов. Задачи пользователя в языке ТехноСи используют логические номера от 0 до 254. Указанным номерам задач соответствуют разделы внутри OPC-сервера. Раздел с номером 255 зарезервирован для системных целей и содержит информацию обо всех узлах, описанных в конфигурационном файле. Узлы представлены в виде подразделов внутри раздела 255. Имена подразделов соответствуют именам узлов. Каждый узел размещает информацию о своем сетевом состоянии в структуру следующего вида:

  struct STR_INFO_NODE
  {
    long Connect1;
    long Connect2;
    char ConnectPassive;
    char Collision;
    char TypeNode;
    char Abonent;
    char _1_StatePing1;
    char _1_StatePing2;
    char _2_StatePing1;
    char _2_StatePing2;
    long _1_TimePing1;
    long _1_TimePing2;
    long _2_TimePing1;
    long _2_TimePing2;
    long ConnectCount;
    long BaseMegaByte;
    long BaseByte;
    long BaseIntensity;
    long MessCount;
    long 1_MemoryLoad;
    long 1_TotalPhys;
    long 1_AvailPhys;
    long 1_TotalPageFile;
    long 1_AvailPageFile;
    long 1_TotalVirtual;
    long 1_AvailVirtual;
    long 1_LoadSystemCPU;
    long 2_MemoryLoad;
    long 2_TotalPhys;
    long 2_AvailPhys;
    long 2_TotalPageFile;
    long 2_AvailPageFile;
    long 2_TotalVirtual;
    long 2_AvailVirtual;
    long 2_LoadSystemCPU;
    long SummaTags;
    long LimitTags;
    char OverTags;
  };

Элементы данной структуры предназначены для актуального обновления таких сведений приведены в таблице ниже.

Размер в байтах
Обозначение элемента
Назначение элемента структуры
4
Connect1 Состояние связи с контроллером К1:
  0 бит



наличие связи с интерпретатором контроллера К1 (1 есть связь, 0 нет связи);
  1 бит бит активности K1 (1 активен, 0 пассивен);
  2 бит



наличие ошибок состояния задач в K1 (1 есть ошибки, 0 все задачи OK); возможны следующие ошибочные ситуации:
     
  • ошибка при разборе конфигурационного файла tc.cfg,
  • не определен узел для данного контроллера,
  • ошибка в run-файле загрузочного модуля;
  3 бит





выполнение задач в К1
(0 - не все программы выполняются, есть остановленные или не запущенные, 1 - все программы выполняются);
  4 бит



наличие точек остановов задач в К1
(0 - отсутствуют точки останова, 1 - имеются установленные точки останова);
  5 бит







наличие ошибок выполнения задач в К1
(0 - отсутствуют ошибки выполнения,
1 - наличие исключительных ситуаций при выполнении задач, например, деление на ноль);
  6 бит



состояние загрузки драйвера (1 драйвер загружен, 0 драйвер не загружен);
  7 бит



наличие ошибок при загрузке файла описания устройств (1 ошибки есть, 0 ошибок нет); возможны следующие ошибочные ситуации:
     
  • синтаксическая ошибка в описателе устройства,
  • синтаксическая ошибка в описателе канала,
  • синтаксическая ошибка в функции,
  • ошибка связывания переменных задач и каналов ввода-вывода;
  8 бит





наличие ошибок выполнения драйвера (1 ошибки есть, 0 ошибок нет); наличие хотя бы одного устройства, для которого отсутствует связь с драйвером.
4
Connect2 Состояние связи с контроллером К2:
  0 бит



наличие связи с интерпретатором контроллера К2 (1 есть связь, 0 нет связи);
  1 бит бит активности K2 (1 активен, 0 пассивен);
  2 бит



наличие ошибок состояния задач в K2 (1 есть ошибки, 0 все задачи OK); возможны следующие ошибочные ситуации:
     
  • ошибка при разборе конфигурационного файла tc.cfg,
  • не определен узел для данного контроллера,
  • ошибка в run-файле загрузочного модуля;
  3 бит





выполнение задач в К2
(0 - не все программы выполняются, есть остановленные или не запущенные, 1 - все программы выполняются);
  4 бит



наличие точек остановов задач в К2
(0 - отсутствуют точки останова, 1 - имеются установленные точки останова);
  5 бит







наличие ошибок выполнения задач в К2
(0 - отсутствуют ошибки выполнения,
1 - наличие исключительных ситуаций при выполнении задач, например, деление на ноль);
  6 бит



состояние загрузки драйвера (1 драйвер загружен, 0 драйвер не загружен);
  7 бит



наличие ошибок при загрузке файла описания устройств (1 ошибки есть, 0 ошибок нет); возможны следующие ошибочные ситуации:
     
  • синтаксическая ошибка в описателе устройства,
  • синтаксическая ошибка в описателе канала,
  • синтаксическая ошибка в функции,
  • ошибка связывания переменных задач и каналов ввода-вывода;
  8 бит





наличие ошибок выполнения драйвера (1 ошибки есть, 0 ошибок нет); наличие хотя бы одного устройства, для которого отсутствует связь с драйвером.
1
ConnectPassive Наличие связи между активным и пассивным контроллером, имеет смысл только для дублированного контроллера и содержит:
0, если нет связи между активным и пассивным контроллером,
1 - есть такая связь.
1
Collision Наличие ситуации коллизии активности/пассивности:
0 - коллизии нет,
1 - оба контроллера в пассивном режиме работы,
2 - оба контроллера в активном режиме работы;
значения 1 или 2 устанавливаются, если коллизия продолжается не менее 5 секунд.
1
TypeNode Тип узла:
0 для узла без интерпретатора RunTC с параметром START_TYPE в описателе узла, заданным как "OTHER";
1 для простого контроллера;2 для дублированного контроллера.
1
Abonent Номер текущего активного контроллера (1 или 2), имеет смысл только для дублированного контроллера.
4
_1_StatePing1 Наличие ошибки выполнения тестовой проверки PING для первого абонента узла по его первому сетевому интерфейсу:
0 - наличие ошибки выполнения тестовой проверки PING;
1 - отсутствие ошибок выполнения PING.
4
_1_StatePing2 Наличие ошибки выполнения тестовой проверки PING для первого абонента узла по его второму сетевому интерфейсу:
0 - наличие ошибки выполнения тестовой проверки PING;
1 - отсутствие ошибок выполнения PING;
4
_2_StatePing1 Наличие ошибки выполнения тестовой проверки PING для второго абонента узла по его первому сетевому интерфейсу:
0 - наличие ошибки выполнения тестовой проверки PING;
1 - отсутствие ошибок выполнения PING;
2 - узел не дублированный.
4
_2_StatePing2 Наличие ошибки выполнения тестовой проверки PING для второго абонента узла по его второму сетевому интерфейсу:
0 - наличие ошибки выполнения тестовой проверки PING;
1 - отсутствие ошибок выполнения PING;
2 - узел не дублированный или у второго абонента узла нет второго сетевого интерфейса.
4
_1_TimePing1 Время в миллисекундах выполнения операции PING для первого абонента узла по его первому сетевому интерфейсу, если таковой есть в наличии.
4
_1_TimePing2 Время в миллисекундах выполнения операции PING для первого абонента узла по его второму сетевому интерфейсу, если таковой есть в наличии.
4
_2_TimePing1 Время в миллисекундах выполнения операции PING для второго абонента узла по его первому сетевому интерфейсу, если таковой есть в наличии.
4
_2_TimePing2 Время в миллисекундах выполнения операции PING для второго абонента узла по его второму сетевому интерфейсу, если таковой есть в наличии.
4
ConnectCount Число удачных соединений драйвера OPC-сервера с данным абонентом.
4
BaseMegaByte Объем в мегабайтах принимаемой и передаваемой информации между драйвером OPC-сервера и данным абонентом.
4
BaseByte Объем в байтах (остатка после вычисления числа мегабайт) принимаемой и передаваемой информации между драйвером OPC-сервера и данным абонентом.
4
BaseIntensity Среднее число байт в секунду, принимаемых и передаваемых между драйвером OPC-сервера и данным абонентом.
4
MessCount Количество сообщений, принятых от абонента драйвером OPC-сервера.
4
1_MemoryLoad Объем всей использованной физической памяти в процентах контроллера К1.
4
1_TotalPhys Весь объем физической памяти в килобайтах контроллера К1.
4
1_AvailPhys Объем свободной физической памяти в килобайтах контроллера К1.
4
1_TotalPageFile Предельный размер памяти в килобайтах контроллера К1.
4
1_AvailPageFile Размер доступной памяти в килобайтах контроллера К1.
4
1_TotalVirtual Полный размер виртуальной памяти в килобайтах контроллера К1.
4
1_AvailVirtual Размер неиспользуемой виртуальной памяти в килобайтах контроллера К1.
4
1_LoadSystemCPU Величина загрузки процессора в процентах контроллера К1.
4
2_MemoryLoad Объем всей использованной физической памяти в процентах контроллера К2.
4
2_TotalPhys Весь объем физической памяти в килобайтах контроллера К2.
4
2_AvailPhys Объем свободной физической памяти в килобайтах контроллера К2.
4
2_TotalPageFile Предельный размер памяти в килобайтах контроллера К2.
4
2_AvailPageFile Размер доступной памяти в килобайтах контроллера К2.
4
2_TotalVirtual Полный размер виртуальной памяти в килобайтах контроллера К2.
4
2_AvailVirtual Размер неиспользуемой виртуальной памяти в килобайтах контроллера К2.
4
2_LoadSystemCPU Величина загрузки процессора в процентах контроллера К2.
4
SummaTags Число тегов, вычитываемых из контроллера для SCADA-системы. В случае превышения лимита тегов, в контроллере не выполняются операции чтения и записи пременных, инициируемые со стороны SCADA-системы. Для отладчика DbgTC превышение лимита тегов никак не сказывается на его операциях чтения и записи переменных.
4
LimitTags Максимальное количество тегов, определенных в соответствии с электорнным ключом: 0 - нет ограничений по числу тегов для SCADA-системы, n - максимальное число тегов, заданное электронным ключом.
1
OverTags Признак превышения лимита тегов: 0 - нет превышения, 1 - есть превышение.

Если TypeNode не равен 0, то имеют смысл остальные элементы структуры.

Каждый узел размещает свою информацию в программе с номером 255 в виде значения переменной структуры типа STR_INFO_NODE, причем имя переменной совпадает с именем узла. Таким образом, если узел в tc.cfg определен следующим образом:

  // Описание узла (контроллера)
NODE =
{
    // Имя узла (контроллера)
    NAME = "UZEL"
    …
}
то в программе с номером 255 доступны для привязки следующие переменные:
  UZEL.Connect1;
UZEL.Connect2;
UZEL.ConnectPassive;
UZEL.Collision;
UZEL.TypeNode;
UZEL.Abonent;
UZEL._1_StatePing1;
UZEL._1_StatePing2;
UZEL._2_StatePing1;
UZEL._2_StatePing2;
UZEL._1_TimePing1;
UZEL._1_TimePing2;
UZEL._2_TimePing1;
UZEL._2_TimePing2;
UZEL.ConnectCount;
UZEL.BaseMegaByte;
UZEL.BaseByte;
UZEL.BaseIntensity;
UZEL.MessCount;
UZEL.1_MemoryLoad;
UZEL.1_TotalPhys;
UZEL.1_AvailPhys;
UZEL.1_TotalPageFile;
UZEL.1_AvailPageFile;
UZEL.1_TotalVirtual;
UZEL.1_AvailVirtual;
UZEL.1_LoadSystemCPU;
UZEL.2_MemoryLoad;
UZEL.2_TotalPhys;
UZEL.2_AvailPhys;
UZEL.2_TotalPageFile;
UZEL.2_AvailPageFile;
UZEL.2_TotalVirtual;
UZEL.2_AvailVirtual;
UZEL.2_LoadSystemCPU;
UZEL.SummaTags;
UZEL.LimitTags;
UZEL.OverTags;