3.4.3 Описание модели NetSwitches.xls
— настройка диагностики сетевых коммутаторов
3.4.3.1 Назначение модели NetSwitches.xls
Файл NetSwitches.xls
является моделью верхнего уровня, по своей концепции аналогичной модели ПЛК, и служит входными данными для встроенного модуля системы AutomiqAutomation — «NetDevices: Генератор диагностики».
Его основное назначение — автоматическая генерация и настройка устройств с полной обвязкой (служебной структурой объектов) в проектах alpha.DevStudio (DS) и HMI.
🔗 Расположение:
JSC\USR\PRJ\Conf\NetSwitches\NetSwitches.xls
3.4.3.2 Назначение встроенного модуля «NetDevices: Генератор диагностики»
Модуль является встроенным компонентом системы AutomiqAutomation и предназначен для автоматизации создания и настройки объектов диагностики в проекте. Он может как создавать новые, так и модифицировать существующие устройства, структуры, настройки и свойства.
Генерируемые объекты:
- Сетевые коммутаторы (Trei и Stez итд) — с настройкой SNMP-диагностики и созданием привязанной иконки в HMI.
- Устройства диагностики по PING — с созданием служебной структуры объектов в DevStudio и привязанной иконкой в HMI.
Дополнительные функции:
- Настройка карты адресов NetDiag.
- Автоматическое создание доменов и приложений в DevStudio.
- Привязка сигналов диагностики.
3.4.3.3 Пути к моделям устройств диагностики
Модели типовых объектов для диагностики размещаются в специализированных подкаталогах:
Тип диагностики | Путь к моделям |
---|---|
SNMP | JSC\Conf\Models\ObjTypes\Diagnostic\Snmp\ |
PING | JSC\Conf\Models\ObjTypes\Diagnostic\Ping\ |
💡 Примечание: Модель
NetDiag2
предназначена для диагностики резервированной сети.
3.4.3.4 Поддерживаемые типы коммутаторов
Модуль поддерживает следующие модели коммутаторов:
Производитель | Модель | Файл модели |
---|---|---|
TREI | S304 | TreiS304 |
STEZ | 3208-12G | Stez_3208_12G |
STEZ | 3208G-12GSFP v2 | Stez_3208G_12GSFP_v2 |
STEZ | 3308 | Stez3308 |
STEZ | 3216 | Stez3216 |
STEZ | 3208 | Stez3208 |
STEZ | 3000 | Stez3000 |
STEZ | 3108 | Stez3108 |
ELTEX | MES3710P | Mes3710P |
ELTEX | MES3300-24F | MES3300_24F |
ELTEX | MES3348 | MES3348 |
ELTEX | MES3300-24 | MES3300_24 |
3.4.3.5 Лист Options
— настройки для AutomiqAutomation и GAP-функции
Этот лист содержит глобальные параметры, определяющие поведение модуля при обработке модели.
Столбец | Описание |
---|---|
SplitRegex |
Регулярное выражение для разбиения тега на части (например, _+ ). |
ComposeRegex |
Регулярное выражение для склеивания частей вместе (например, - ). |
Пример:
d|_+|-|
Использование параметров в GAP-функциях
Параметры SplitRegex
и ComposeRegex
используются в GAP-функциях (Global Automation Platform) для преобразования тегов при генерации путей и имен объектов в DevStudio. Наиболее часто используется функция GAP.ScadaProjectBase.Tags.GetPrjTag
.
Описание функции GetPrjTag
:
Функция GetPrjTag
преобразует входной тег (например, M0_85_050_JF01_CA1001_SW01
) в формат, используемый в проекте DevStudio. Она работает следующим образом:
- Проверяет наличие параметров
SplitRegex
иComposeRegex
в листеOptions
. - Если параметры заданы, функция разбивает тег с помощью
SplitRegex
и собирает его обратно с помощьюComposeRegex
. - Если параметры не заданы, применяются стандартные правила преобразования:
- Если второй символ — подчёркивание (
_
), все подчёркивания заменяются на дефисы (-
). - Если второй символ — дефис (
-
), тег остаётся без изменений. - В остальных случаях вставляется дефис после второго символа.
- Если второй символ — подчёркивание (
Пример результата:
Входной тег:
M0_85_050_JF01_CA1001_SW01
SplitRegex:
_+
ComposeRegex:
-
Результат:
M0-85-050-JF01-CA1001-SW01
🔗 Применение: Эта функция вызывается в моделях OBJTYPE (например,
TreiS304.xls
) на листеDevSt.attributes
для формирования значения атрибутаunit.CommonLib.Attributes.DevParams.SystemTag
.
3.4.3.6 Листы OBJ.*
— объявление экземпляров объектов
Эти листы содержат экземпляры сетевых устройств, для которых необходимо настроить диагностику.
Ключевые столбцы:
Столбец | Описание |
---|---|
IosServer |
Подстанция, к которой принадлежит устройство. |
Domain |
Объект (например, шкаф, зона). |
TAG |
Уникальный тег коммутатора (например, SW_01 ). |
PathDevStudio |
Путь к объекту в DevStudio (например, root.M0_85_050.JF_CA_1001.Network ). |
HmiTag |
Имя кадра для HMI (мнемосхемы). |
OBJTYPENAME |
Тип объекта, определяющий метод диагностики: - NetSwitch_PING — диагностика по ICMP,- NetSwitch_SNMP — диагностика по SNMP,- TreiS304 — диагностика коммутатора Trei S304. |
parentDescr |
Наименование коммутатора (например, Коммутатор 1 ). |
EqtDescr |
Описание оборудования (например, SW_01 ). |
Title |
Название (для отображения). |
SystemPosition |
Расположение коммутатора (например, шкаф CA-1001 ). |
NetName |
Имя сети (например, Сеть 1 ). |
iTCPAddr_1 , iTCPAddr_2 , iTCPAddr_3 , iTCPAddr_4 |
IP-адрес устройства (разделенный по октетам). |
NetName2 |
Имя второй дополнительной сети. |
iTCPAddr2_1 , iTCPAddr2_2 , iTCPAddr2_3 , iTCPAddr2_4 |
IP-адрес резервной. |
VS:portsTemplate |
Путь к шаблону портов (например, %JSC%\USR\PRJ\Conf\NetSwitches\Templates\[SystemPosition]\$S.xls ). |
Пример:
d|SW_01|root.M0_85_050.JF_CA_1001.Network|M0_85_050|NetSwitch_PING|Коммутатор 1|SW_01|Коммутатор 1|шкаф CA-1001|Сеть 1|192|168|1|10|||192|168|1|11|%JSC%\USR\PRJ\Conf\NetSwitches\Templates\[SystemPosition]\$S.xls|
3.4.3.7 Алгоритм обработки устройств SNMP
Для устройств с OBJTYPENAME
, указывающим на диагностику по SNMP (например, TreiS304
, Stez_3208_12G
), модуль выполняет следующие шаги:
- Запуск модуля: Встроенный модуль
NetDevices: Генератор диагностики
обрабатывает файлNetSwitches.xls
. - Обработка модели OBJTYPE: Модуль на основании значения
OBJTYPENAME
загружает соответствующую модель из каталогаJSC\Conf\Models\ObjTypes\
. Эта модель содержит описание типового объекта. - Определение типов объектов: На листе
NetDiag.opt
модели OBJTYPE модуль находит пути к базовым типам:
DevStudioAppTypePath
— путь к типу приложения (например,unit.CommonLib.Types.Diagnostic.Trei.TREI_S304.S304_APP
).DevStudioIOSTypePath
— путь к типу представления IOS (например,unit.CommonLib.Types.Diagnostic.Trei.TREI_S304.S304_IOS
). Эти типы находятся в библиотечном проекте DevStudio:Libraries\DevStudio\Libs\DsLibraries.solution
.
Рис. 1. Лист NetDiag.opt
из файла TreiS304.xls
- Создание объекта SNMP устройства в DevStudio
Модуль создает в проекте DevStudio текущего проекта АСУ объект с именем, формируемым по шаблону
[Domain].[TAG]
(например,P0-72-140.P0-72-140-JF01-CA1001-SW01
), используя типDevStudioAppTypePath
как основу.
Настройка сетевых адаптеров
Внутри созданного объекта добавляются адаптеры Ethernet:
Ethernet 1
Создаётся, если заполнены поляNetName
,iTCPAddr_1
,iTCPAddr_2
,iTCPAddr_3
,iTCPAddr_4
.
Имя адаптера соответствует значениюNetName
.Ethernet 2
Создаётся, если заполнены поляNetName2
,iTCPAddr2_1
,iTCPAddr2_2
,iTCPAddr2_3
,iTCPAddr2_4
.
Имя адаптера соответствует значениюNetName2
.
Применение паролей в настройках SNMP агента
Параметры безопасности SNMP (Community String, User, пароли аутентификации и приватности) берутся из внешнего файла, путь к которому задаётся глобальной переменной [SNMP_KEY_HASH_DS_PATH]
.
Эта переменная объявляется с помощью утилиты SettingManager
.
Пример пути:
JSC\Conf\Models\SnmpKey\AUCS.xls
Описание файла AUCS.xls
Файл AUCS.xls
— конфигурационный файл с параметрами аутентификации для SNMP-агентов. Его структура:
password
: Пароль (открытый текст или хеш)SHA
: Хеш SHAMD5
: Хеш MD5AES
: Хеш AESDES
: Хеш DES
Пример строки:
d|Gazauto123|e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|5f4dcc3b5aa765d61d8327deb882cf99|2a300865462377d55d02308572382379|68a43d6637564d7d991c9e7c74572c43|
⚠️ Предупреждение: Временное решение
Текущий механизм применения паролей через файл, путь к которому задается глобальной переменной
[SNMP_KEY_HASH_DS_PATH]
, является временным и неоптимальным решением. Оно не обеспечивает достаточного уровня безопасности и усложняет управление конфигурацией. В перспективе данный подход должен быть заменен на более защищенную и централизованную систему управления учетными данными, например, интеграцию с системой управления секретами (Secrets Manager) или использование зашифрованных хранилищ конфигурации.
- Привязка к NetDiag: Если включено (
Привязать сигналы NetDiag в карте адресов
), добавляются необходимые данные в карту адресов NetDiag. Карта адресов SNMP находится внутри объекта, указанного вDevStudioAppTypePath
.
Рис. 2. Пример структуры объекта SNMP-устройства с двумя адаптерами Ethernet
- Настройка SNMP-агента: Конфигурируется агент SNMP для опроса коммутатора. Используются настройки модуля:
Добавить SNMP агент в менеджер
иПересоздавать сервисные SNMP каналы
.
Рис. 3. Вкладка «Коммуникации» в DevStudio: SNMP-менеджер с добавленным устройством
- Создание сервисного узла в IOS: После создания устройства SNMP и его добавления в SNMP-менеджер, в приложении
IOS_App
сервера ввода-вывода автоматически создается сервисный узел по путиService.Modules.<Имя модуля>.Agents.<Имя агента>.Channels.Channel N
.- Базовый тип объекта: Последнему узлу (каналу) устанавливается базовый тип из библиотечного проекта DevStudio:
unit.CommonLib.Types.Diagnostic.Communication.Snmp.SnmpEqtService
. - Служебные сигналы: Внутри этого узла создаются служебные сигналы диагностики:
Active
— признак активности канала.Available
— признак доступности канала.IpAddress
— IP-адрес канала.
- Базовый тип объекта: Последнему узлу (каналу) устанавливается базовый тип из библиотечного проекта DevStudio:
- Расположение: Сервисный узел создается в приложении
IOS_App
сервера, имя которого определено в переменной[IosServer]
.
Рис. 4. Пример дерева IOS в DevStudio: сгенерированный сервисный узел с базовым типом SnmpEqtService
и служебными сигналами (Active
, Available
, IpAddress
)
- Генерация объекта представления: Создается объект представления в приложении сервера. Объект создается по пути, указанному в переменной
[PathDevStudio].[TAG]
, и ему присваивается базовый типDevStudioIOSTypePath
. Помимо создания объекта, инициализируются две ссылки:- Ссылка на созданный сервисный узел (для получения данных диагностики).
- Ссылка на созданное устройство SNMP в приложении
PLC_App
(для связи с данными опроса). - Расположение: Объект представления создается в приложении
IOS_App
сервера, имя которого определено в переменной[IosServer]
.
- Генерация HMI: Создается иконка в проекте HMI (если включено в настройках).
3.4.3.8 Алгоритм обработки устройств PING
Данный тип диагностики состояния связи применяется для устройств, которые не предоставляют информацию о своем статусе посредством промышленных протоколов (SNMP, Modbus, Unet, OPC итд ). В таком в проекте DevStudio создается модуль NetDiag2, для получения информации об устройстве.
Краткое назначение модуля NetDiag2
Модуль
NetDiag2
— это модуль DevStudio, предназначенный для диагностики связи с сетевыми устройствами в сетях TCP/IP путем периодической отправки ICMP-запросов (Ping). Он проверяет доступность устройств и записывает результаты в статические сигналы сервера.
- NetDiag2 использует статические сигналы, что позволяет гибко настраивать их свойства и расположение в проекте. Модуль
NetDiag2
следует использовать, если требуется конфигурировать сигналы: размещать их в разных ветвях дерева сигналов и/или настраивать свойства (архивация, категория и т.д.).
Для устройств с OBJTYPENAME = NetDiag1
или OBJTYPENAME = NetDiag2
, модуль выполняет следующие шаги:
Запуск модуля: Встроенный модуль
NetDevices: Генератор диагностики
обрабатывает файлNetSwitches.xls
.Обработка модели OBJTYPE: Модуль на основании значения
OBJTYPENAME
загружает соответствующую модель из каталогаJSC\Conf\Models\ObjTypes\Diagnostic\Ping\
. Эти модели содержат описание типовых объектов для диагностики по PING.Определение типов объектов: На листе
NetDiag.opt
модели OBJTYPE модуль находит пути к базовым типам:DevStudioAppTypePath
— остается пустым, т.к. модель генератора создает устройство с пустым приложением и сетевыми адаптерами.DevStudioIOSTypePath
— путь к типу представления IOS (например,unit.CommonLib.Types.Diagnostic.NetDiag2.NetDiag1
дляNetDiag1.xls
илиunit.CommonLib.Types.Diagnostic.NetDiag2.NetDiag2
дляNetDiag2.xls
). Эти типы находятся в библиотечном проекте DevStudio:Libraries\DevStudio\Libs\DsLibraries.solution
.
Рис. 1. Лист
NetDiag.opt
из файлаNetDiag2.xls
— выделены ячейкиDevStudioAppTypePath
иDevStudioIOSTypePath
Создание объекта устройства в DevStudio: Модуль создает в проекте DevStudio текущего проекта АСУ объект с именем, формируемым по шаблону
[Domain].[TAG]
(например,P0-80-030.P0-80-030-JF01-CA1001-PI002
). Создается устройство с пустым APP и сетевые адаптеры.- Настройка IP-адреса: Внутри созданного объекта создается сетевой интерфейс, которому присваивается IP-адрес, собранный из полей
iTCPAddr_1
,iTCPAddr_2
,iTCPAddr_3
,iTCPAddr_4
.- Привязка к NetDiag: Если включено (
Привязать сигналы NetDiag в карте адресов
), добавляются необходимые данные в карту адресов NetDiag.
- Привязка к NetDiag: Если включено (
Рис. 2. Пример структуры объекта
NetDiag1_APP
илиNetDiag2_APP
с настроенным IP-адресом- Настройка IP-адреса: Внутри созданного объекта создается сетевой интерфейс, которому присваивается IP-адрес, собранный из полей
Создание модуля NetDiag2 в сервере ввода-вывода: Независимо от того, используется
OBJTYPENAME = NetDiag1
илиNetDiag2
, в приложенииIOS_App
сервера, имя которого определено в переменной[IosServer]
, всегда создается или настраивается модульNetDiag2
. Этот модуль отвечает за отправку ICMP-запросов и сбор данных о доступности устройств. Различие между моделямиNetDiag1
иNetDiag2
заключается исключительно в ссылке на библиотечный объект для создания представления в IOS сервера (атрибутDevStudioIOSTypePath
).- Привязка переменных к карте адресов: После создания модуля
NetDiag2
и его объекта представления, производится привязка переменных представления к карте адресов. Это позволяет отображать и архивировать данные диагностики (например, статусONLINE/OFFLINE
, время отклика) в соответствии с настройками проекта. Также в настройках модуляNetDiag2
прописывается путь к карте адресов.
- Привязка переменных к карте адресов: После создания модуля
⚠️ Предупреждение:
Генератор не создает автоматически карту адресов в приложении
IOS_App
сервера ввода-вывода.Обязанности разработчика:
- Вручную создать карту адресов в приложении
IOS_App
сервера, имя которого определено в переменной[IosServer]
.После этого генератор автоматически выполнит привязку каналов устройств к сигналам в этой карте.
Рис. 3. Модуль NetDiag в сервере проекта DevStudio
Генерация объекта представления: Создается объект представления в приложении сервера. Объект создается по пути, указанному в переменной
[PathDevStudio].[TAG]
, и ему присваивается базовый типDevStudioIOSTypePath
. Помимо создания объекта, инициализируется ссылка на созданное устройство PING.- Расположение: Объект представления создается в приложении
IOS_App
сервера, имя которого определено в переменной[IosServer]
.
- Расположение: Объект представления создается в приложении
Генерация HMI: Создается иконка в проекте HMI (если включено в настройках).
Пример заполненной карты адресов
Ниже приведен пример записи в карте адресов для устройства P0-80-030-JF01-CA1001-PI002
с двумя сетевыми адаптерами (M
— основной, R
— резервный):
Сигнал | Описание | Тип | Привязка | Узел сети | Адаптер | Тип запроса | Функция сигнала | Номер |
---|---|---|---|---|---|---|---|---|
root.P0_80_030.NetDiagnostic.JF01_CA1001.P0-80-030-JF01-CA1001-PI002.M.IPaddress |
IP адрес сетевого устройства | string | непосредственно | P0-80-030.P0-80-030-JF01-CA1001-PI002 |
P-AFA-L2-M1 |
Ping | IPaddress |
|
root.P0_80_030.NetDiagnostic.JF01_CA1001.P0-80-030-JF01-CA1001-PI002.M.Status |
Отфильтрованное состояние статуса запроса | bool | непосредственно | P0-80-030.P0-80-030-JF01-CA1001-PI002 |
P-AFA-L2-M1 |
Ping | Filtered.Status |
|
root.P0_80_030.NetDiagnostic.JF01_CA1001.P0-80-030-JF01-CA1001-PI002.R.IPaddress |
IP адрес сетевого устройства | string | непосредственно | P0-80-030.P0-80-030-JF01-CA1001-PI002 |
P-AFA-L2-R1 |
Ping | IPaddress |
|
root.P0_80_030.NetDiagnostic.JF01_CA1001.P0-80-030-JF01-CA1001-PI002.R.Status |
Отфильтрованное состояние статуса запроса | bool | непосредственно | P0-80-030.P0-80-030-JF01-CA1001-PI002 |
P-AFA-L2-R1 |
Ping | Status |
💡 Пояснение:
M
— указывает на основной (Master) адаптер.R
— указывает на резервный (Redundant) адаптер.IPaddress
— содержит строковое значение IP-адреса целевого устройства.Status
— содержит булево значение (True
/False
), отражающее состояние доступности устройства.Filtered.Status
— фильтрованная версия статуса, которая может учитывать задержки или фильтрацию по времени.
3.4.3.9 Преимущества использования
Задача | Решение |
---|---|
Контроль сети | Автоматический мониторинг доступности всех коммутаторов. |
Быстрое реагирование | Оперативное обнаружение обрывов связи. |
Автоматизация | Исключение ручного создания сотен объектов. |
Единообразие | Все коммутаторы имеют одинаковую структуру диагностики. |
3.4.3.10 Вывод
Модель NetSwitches.xls
— это ключевой компонент для обеспечения отказоустойчивости системы автоматизации. Она позволяет:
- Автоматизировать настройку диагностики сети,
- Обеспечить непрерывный контроль связи,
- Сократить время настройки и сдачу в эксплуатацию.
Использование этого файла является обязательным этапом при разработке любого проекта АСУ.