В контроллерах управления для определения состояния сети, связывающей контроллеры управления со станцией отображения, осуществляется запуск операции 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:
|
||||||||||||||||||||||||||||||||||||||||||||
4
|
Connect2 | Состояние связи с контроллером К2:
|
||||||||||||||||||||||||||||||||||||||||||||
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; |