Skip to content

DevStudio. Сеть и диагностика

Назначение: описание структуры модели верхнего уровня NetSwitches.xls — файла конфигурации сетевых устройств и их диагностики.

Ожидаемый результат: разработчик понимает состав листов, назначение колонок на листах OBJ.* и связь полей с моделями OBJTYPE.

NetSwitches.xls — Excel-модель верхнего уровня, в которой перечисляются сетевые устройства проекта (коммутаторы, панели оператора, промежуточные узлы и т.д.) и параметры их диагностики по SNMP или ICMP (PING).

По данным файла внутренний модуль Конфигуратор диагностики отображает список устройств для выбора; внешний модуль NetDevices загружает соответствующие модели OBJTYPE из библиотеки Diagnostic и создаёт объекты в DevStudio.

Общие правила разбора ячеек (#, H, @, d, VQ, VS: и др.) — в Правилах заполнения Excel-файлов. Принцип связи с OBJTYPE — в Связи с моделями верхнего уровня.

Расположение в проекте

Section titled “Расположение в проекте”
ЭлементПуть
Файл моделиJSC\Usr\Prj\Conf\NetSwitches\NetSwitches.xls
Каталог шаблонов портовJSC\Usr\Prj\Conf\NetSwitches\Templates\
Глобальная настройка путиNETSWITCHES_DIRECTORY_PATH в SettingManager

В каталоге Templates\ хранятся вспомогательные Excel-файлы с описанием портов коммутаторов. Путь к файлу шаблона задаётся в колонке portsTemplate на листе OBJ.* (см. ниже).

Типовая книга NetSwitches.xls содержит:

ЛистНазначение
OptionsОбщие настройки и переменные модели (в т.ч. выражения для GAP-функций с regexp)
OBJ.*Экземпляры сетевых устройств; имя листа задаёт группу устройств (обычно по серверу IOS)
@*Вспомогательные справочники; не участвуют в обработке (см. Правила заполнения Excel-файлов)

Листы с префиксом @ используются как подсказки при заполнении (@nets — сети и первые октеты IP, @types — допустимые значения OBJTYPENAME, @regexp — примеры пар SplitRegex/ComposeRegex).

На листе Options объявляются глобальные переменные модели в формате объявления по колонкам: строки #, H, @, затем строка данных d.

В рассматриваемом примере заданы две переменные:

ПеременнаяЗначение в примереНазначение
SplitRegex_+Регулярное выражение для разбиения тега при преобразовании
ComposeRegex-Шаблон сборки тега после разбиения

Эти переменные используются GAP-функцией GetPrjTag при формировании атрибута SystemTag в моделях OBJTYPE (лист DevSt.attributes). Алгоритм — в Функции GetPrjTag.

Справочный лист @regexp дублирует типовые пары выражений; рабочие значения для генерации задаются на листе Options.

Каждый лист с именем OBJ.* содержит таблицу экземпляров сетевых устройств. Структура заголовка совпадает с общими правилами Excel-моделей:

  • строка # — инструкции колонок (VQ — переменная, @ — колонка без объявления переменной, VS:portsTemplate — подключение внешнего файла);
  • строка H — имена переменных;
  • строка @ — краткие описания колонок;
  • строки d — экземпляры (по одной строке на устройство).

Все экземпляры на одном листе OBJ.* обычно относятся к одному серверу ввода-вывода (IosServer).

ПеременнаяОбязательностьОписание
IosServerдаИмя сервера IOS (IOS_App), в котором создаётся модуль диагностики и объект представления устройства
DomainдаДомен DevStudio для объекта (например, P0-72-140, P0-80-010). Используется при формировании имени [Domain].[TAG]
(кол. 3–5)Служебные поля (в строке # помечены @): код зоны/шкафа, номер устройства, серийный номер. Участвуют в составлении TAG
TAGдаУникальный тег экземпляра (например, P0-72-140-JF01-CA1001-SW001). Передаётся в OBJTYPE как [TAG]
PathDevStudioдаПуть размещения объекта диагностики в дереве DevStudio (например, root.P0_72_140.NetDiagnostic.JF01_CA1001)
HmiTagдаИмя группы/источника для мнемосхем HMI (например, P0-72-140-JF01-CA1001_NetSwitches)
OBJTYPENAMEдаТиповой блок OBJTYPE из библиотеки Diagnostic — определяет протокол и шаблон генерации
parentDescrКраткое наименование (отображаемое имя)
EqtDescrОписание оборудования
TitleСокращённое обозначение модели (например, S304, S340)
SystemPositionдаПодстанция / титул (например, P0-72-140). Используется в путях и шаблонах
NetNameдля PING/SNMPИмя первого сетевого адаптера (сеть проекта, напр. P-AFA-L2-M1)
iTCPAddr_1iTCPAddr_4для PING/SNMPЧетыре октета IP-адреса основного интерфейса
NetName2для резервированияИмя второго адаптера (для NetDiag2 и двухканальных устройств)
iTCPAddr2_1iTCPAddr2_4для резервированияОктеты IP второго интерфейса
portsTemplateдля SNMP-коммутаторовПодключаемый файл шаблона портов. В строке H задаётся путь %JSC%\USR\PRJ\Conf\NetSwitches\Templates\[SystemPosition]\$S.xls; в строке d — имя файла без расширения ($S подставляет значение из той же ячейки)
PassAliasSnmpдля SNMPПсевдоним SNMP community (например, pass1)
UseSnmpдля SNMPПризнак использования SNMP (x — включено)

Значение OBJTYPENAME выбирает модель OBJTYPE и способ диагностики:

  • SNMP — коммутаторы (TreiS304, MES3300_24, MES3300_24F, Stez_*, Mes3710P и др.);
  • PING — устройства с опросом ICMP (NetDiag1, NetDiag2; для резервированных сетей заполняются NetName2 и iTCPAddr2_*).

Полный перечень — в OBJTYPE для диагностики сетевых устройств (NetSwitches).

В примере NetSwitches.xls используются: TreiS304, MES3300_24, MES3300_24F, NetDiag2.

Сетевые адаптеры и IP-адреса

Section titled “Сетевые адаптеры и IP-адреса”

Первые три октета IP часто соответствуют сети из справочника @nets (например, для P-AFA-L2-M1: 10.6.0.*), четвёртый октет (iTCPAddr_4) задаётся индивидуально для каждого устройства. Правила создания адаптеров при генерации — в алгоритме обработки SNMP и алгоритме обработки PING.

Шаблоны портов (portsTemplate)

Section titled “Шаблоны портов (portsTemplate)”

Для SNMP-коммутаторов с детальной диагностикой портов в колонке portsTemplate указывается имя файла в каталоге:

%JSC%\USR\PRJ\Conf\NetSwitches\Templates\{SystemPosition}\{имя}.xls

Пример: для SystemPosition = P0-72-140 и значения JF01-CA1001-SW001 в ячейке portsTemplate подключается файл Templates\P0-72-140\JF01-CA1001-SW001.xls (если он существует в проекте).

Для устройств NetDiag2 (PING) колонка portsTemplate обычно не заполняется.

Цепочка данных совпадает с другими моделями верхнего уровня (см. Связь с моделями верхнего уровня):

  1. На листе OBJ.* объявляется строка экземпляра с переменными (TAG, PathDevStudio, IosServer, IP-адреса и др.).
  2. По OBJTYPENAME определяется файл OBJTYPE (например, TreiS304 или NetDiag2).
  3. Значения колонок подставляются как внешние переменные [TAG], [IosServer], [EqtDescr], [SystemPosition] и др.

Дальнейшая обработка (выбор, генерация, создание объектов) — в Конфигураторе диагностики.

Пример строки экземпляра

Section titled “Пример строки экземпляра”

Фрагмент из листа OBJ.P0-80-010-JF01 (коммутатор TREI S304):

ПолеЗначение
IosServerP0-80-010-JF01-CS1001-SRV001
DomainP0-72-140
TAGP0-72-140-JF01-CA1001-SW001
PathDevStudioroot.P0_72_140.NetDiagnostic.JF01_CA1001
OBJTYPENAMETreiS304
NetNameP-AFA-L2-M1
IP10.6.1.137
portsTemplateJF01-CA1001-SW001
PassAliasSnmp / UseSnmppass1 / x

Фрагмент для панели с резервированием (NetDiag2):

ПолеЗначение
TAGP0-72-140-JF01-CA1001-PI001
OBJTYPENAMENetDiag2
NetName / IPP-AFA-L2-M110.6.0.163
NetName2 / IP2P-AFA-L2-R110.6.10.163