Модуль ЭнергоИмпорт V.2024
Назначение модуля
Модуль предназначен для импорта объектов и точек учета в модуль "Справочники", а также для экспорта настроек аскуэ для работы других компонентов SCADA-системы ЭНТЕК. Настройка импорта/ экспорта производится посредством конфигурирования настроечного файла или указывания необходимых ключей при старте программы.
Принцип работы
Импорт производится из файла с расширением .xlsx с форматом кодировки UTF-8. В нем должны содержаться обязательные столбцы такие как название объекта, название точки учета и серийный номер прибора учета, которые нужны для создания объектов и точек учета в базе данных. Настройки аскуэ (тип успд, тип точки учета, IP-адрес, порт связной адрес прибора учета и пароли для разных уровней доступа) могут быть не указаны, но в таком случае будет невозможно сразу опросить объект, для этого надо будет указать настройки вручную.
Процесс импорта сначала вычисляет размер файла, а затем начинает анализировать каждую строку (стартовая строка указывается в конфигурационном файле, важно учитывать, если присутствуют название столбцов). Анализ каждой строки заканчивается созданием новой точки учета и объекта при необходимости, если возникает ошибка, то она отображается в консоли. Важно отметить, что процесс импорта не проверяет существующие объекты и точки учета, которые были созданы до его запуска, но проверяет уникальность тех, которые добавляются из импортируемого файла. Критерий уникальности объекта вычисляется по его имени, используемому ip-адресу и порту, а для точки учета это ее название и серийный номер прибора учета, если один из параметров не совпадает, то создается новая запись. Если выявлено совпадение объектов, то к нему добавляется новая точка учета, а если совпали две точки учета в одном объекте, то выводится сообщение в консоль.
Конфигурирование
Конфигурационный файл имеет название EnImportCfg.ini. Он может находиться рядом с с самим модулем, либо путь до него указывается третьим параметром командной строки с опцией cfg.
Важно отметить, что файл должен иметь кодировку UTF-8!
В конфигурационном файле указываются настройки импорта, а также общие настройки такие как путь до проекта, путь до импортируемого файла, строка таблицы, с которой начинается импорт и режим работы (импорт/экспорт).
Пример конфигурационного файла:
[Main]
Mode=Import
Prj=C:\ENTEK Projects\Spodes direct\main.epr
InputFile=C:\ENTEK\source\EnImport\build\Шаблон импорта.xlsx
StartRow=4
EndRow=10
Pyramid= 1
[AscueSet]
UspdType=C
Ip=D
Port=E
TuLinkNum=H
TuPsw1=I
TuPsw2=J
TuType=K
[MandatoryFields]
ObjectName=B
TuName=F
TuSerial=G
[AdditionalObjectFields]
N=Код сетевого филиала
L=Адрес
[AdditionalTuFields]
M=Сетевой адрес
K=Тип сч.
[ExportSets]
GuidField=Серийный номер
Разберем настройки конфигурационного файла.
В секции Main содержатся общие настройки, описанные в таблице 1.
Таблица 1
Название параметра
|
Назначение
|
Допустимые значения
|
Mode
|
Режим работы модуля (импорт или экспорт)
|
Import/Export
|
Prj
|
Полный путь до проекта до файла main.epr, entek.epr и т.п.
|
Полный путь без кавычек
|
InputFile
|
Полный путь до импортируемого файла
|
Полный путь без кавычек
|
StartRow
|
Номер строки, с которой начинается анализ
|
Целое положительное число
|
EndRow
|
Номер строки, на которой заканчивается анализ. Если значение 0, меньше начальной строки или отсутствует, то файл анализируется
до конца
|
Целое положительное число
|
Pyramid
|
Признак анализа входного файла из Пирамиды
|
1/0
|
Параметры Prj, InputFile могут не указываться, если они передаются в командной строке. Если они передаются обоими методами, то у тех, которые в командной строке, приоритет выше.
В секции AscueSet и MandatoryFields указываются из каких столбцов, импортируемого файла, берутся настройки аскуэ и обязательные поля. Для настроек аскуэ информация может не указываться, однако для обязательных полей столбцы необходимо указать, иначе процесс импорта не будет запущен.
Форма настройки этих секций следующее: <параметр>=<буквенное представление столбца excel>.
Информация о полях указана в таблице 2.
Таблица 2
Название параметра
|
Секция
|
Назначение
|
UspdType
|
AscueSet
|
Тип УСПД (согласно приложению 1)
|
Ip
|
AscueSet
|
Ip-адрес
|
Port
|
AscueSet
|
Порт
|
TuLinkNum
|
AscueSet
|
Связной номер прибора учета
|
TuPsw1
|
AscueSet
|
Пароль ПУ первого уровня
|
TuPsw2
|
AscueSet
|
Пароль ПУ второго уровня
|
TuPswLvl
|
AscueSet
|
Уровень пароля (Параметр только для шаблона из Пирамида-Сети, соответствует столбцу Пользователь в разделе Связь с ПУ)
|
TuType
|
AscueSet
|
Тип точки учета (согласно приложению 2)
|
ObjectName
|
MandatoryFields
|
Название объекта
|
TuName
|
MandatoryFields
|
Название точки учета
|
TuSerial
|
MandatoryFields
|
Серийный номер точки учета
|
При импорте шаблона из Пирамида-Сети ячейки для полей Ip,Port,TuPsw1,TuPsw2 задаются относительного того, где содержится необходимая информация и могут повторяться. Например, если маршрут опроса, в котором указаны ip и порт для подключения, в шаблоне Пирамида-Сети содержится в одной ячейке СЕ, то для значения Ip,Port оно будет одно и тоже. Если указано несколько подключений, то используется первое, которое определилось. А в случае пароля необходимо указать одну ячейку для первого и второго уровней, а также ячейку, где указан уровень пароля. Если уровень не указан, то паролю присваивается первый уровень.
Секции AdditionalObjectFields, AdditionalTuFields предназначены для дополнительных настроек необязательных столбцов для объектов и точек учета соответственно. В них указывается столбец в буквенном представлении и соответствующее поле из соответствующего журнала в модуле "Справочники" (название поля в конфигурационном должно полностью соответствовать названию в журнале!). Пример заполнения приведен выше в примере конфигурационного файла.
Секция ExportSets предназначена для настроек экспорта. В ней при необходимости указывается поле из журнала, которое содержит идентификатор точки учета, в переменной GuidField, который будет передаваться в json.
Чтение настроек зависит от режима работы приложения. Так при режиме Import секция ExportSets анализироваться не будет, а при режиме Export будут пропущены секции AdditionalObjectFields, AdditionalTuFields и AscueSet.
Запуск
Модуль Энергоимпорт является консольным приложением с возможностью передачи некоторых параметров в качестве опций при запуске или указанием их в конфигурационном файле.
Список возможных опций:
Опция |
Назначение |
Prj
|
Полный путь до проекта
|
Cfg
|
Полный путь до конфигурационного файла
|
InputFile
|
Полный путь до файла импорта
|
Пример передачи аргумента: Prj=<Путь до проекта> (До и после символа '=' не должно быть пробелов)
Если параметр Cfg не передается опцией, то рядом с исполнительным файлом обязательно должен присутствовать конфигурационный файл с именем по умолчанию EnImportCfg.ini. Для остальных опций условий нет, но информация о проекте и файле импорта обязательно должна быть указаны хотя бы в одном месте (либо передаются опциями, либо в конфигурационном файле).
Форма экспорта
Экспорт происходит в формате json и сохраняется в папке проекта в файл dynamic_cfg.json.
{
"objects": [
{
"object_name": "Название объекта",
"object_type": 0,
"ip": "127.0.0.1",
"port": "4001",
"tus": [
{
"tu_name": "Название точки учета",
"tu_serial": "серийный номер",
"tu_addr": 0,
"tu_type": 0,
"guid": "идентификатор",
"psw1": "пароль первого уровня",
"psw2": "пароль второго уровня"
}
]
}
]
}
Форма экспорта
Экспорт происходит в формате json и сохраняется в папке проекта в файл dynamic_cfg.json.
Переменная
|
Назначение
|
Тип данных
|
objects
|
Массив объектов
|
Массив
|
object_name
|
Пользовательское название объекта
|
Строка
|
object_type
|
Тип УСПД (приложение 1)
|
Целое положительное число
|
ip
|
IP-адрес для подключения
|
Строка
|
port
|
Порт для подключения
|
Целое положительное число
|
tus
|
Массив точек учета объекта
|
Массив
|
tu_name
|
Пользовательское название точки учета
|
Строка
|
tu_serial
|
Серийный номер точки учета
|
Строка
|
tu_addr
|
Адрес точки учета
|
Целое положительное число
|
tu_type
|
Тип точки учета (приложение 2)
|
Целое положительное число
|
guid
|
Идентификатор точки учета (если есть соответствующая настройка в конфигурационном файле)
|
Строка
|
psw1
|
Пароль прибора учета первого уровня
|
Строка
|
psw2
|
Пароль прибора учета второго уровня
|
Строка
|
В случае отсутствия каких-то данных в БД будет передаваться пустая строка, для адреса точки учета значение будет -1
Приложение 1
Таблица допустимых значение типов УСПД. Наименование типа объекта должно полностью совпадать с наименованием в таблице.
Внутренний идентификатор
|
Наименование
|
0
|
УСПД ЭНТЕК
|
1
|
Опрос напрямую
|
2
|
М228_485
|
3
|
УМ-31/40
|
4
|
УСПД СИГМА RF
|
5
|
УСПД EnLogic
|
6
|
Нет (ручной сбор показаний)
|
7
|
УСПД M234/M250
|
8
|
SL7000
|
9
|
ZMD400
|
10
|
УСПД Гран-Электро
|
11
|
УСПД RTU-327
|
12
|
М2М МИРТ
|
13
|
РиМ099
|
14
|
М228_CAN
|
15
|
МИР
|
18
|
Сервер Лартех
|
19
|
MQTT брокер
|
20
|
Сервер Вега
|
21
|
УСПД СМ-160
|
22
|
УСПД Нартис
|
23
|
УСПД Миртек
|
Приложение 2
Таблица допустимых значение типов точек совпадать с наименованием в таблице.
Внутренний идентификатор
|
Наименование
|
0
|
Неизвестен
|
1
|
СЭТ-4ТМ.01/02
|
2
|
СЭТ-4ТМ.03
|
3
|
Меркурий 230
|
4
|
PLC-II М203
|
5
|
PLC-II М233
|
6
|
PLC-I (1 тариф)
|
7
|
PLC-I (2 тарифа
|
8
|
CE301
|
9
|
CE302
|
10
|
CE303
|
11
|
Меркурий 200
|
12
|
Меркурий 203
|
13
|
CE102
|
14
|
Пульсар-М
|
15
|
SL-7000
|
16
|
ZMD-400
|
17
|
Меркурий 233
|
18
|
Меркурий 234
|
19
|
Меркурий 236
|
20
|
Гран-Электро СС-101
|
21
|
Гран-Электро СС-301
|
22
|
ТУ УСПД Гран-Электро
|
23
|
ТУ УСПД EnLogic
|
24
|
ТУ УСПД УМ-31/40
|
25
|
ТУ УСПД ЭНТЕК
|
26
|
ТУ УСПД М234/М250
|
27
|
ТУ УСПД Сигма-RF
|
28
|
ТУ УСПД RTU-327
|
29
|
КАСКАД 200
|
30
|
КАСКАД 310
|
31
|
SATEC EM133
|
32
|
ВИС.Т
|
33
|
Alpha 1800
|
34
|
ТУ EnLogic
|
35
|
CE201
|
36
|
PLC-III M207
|
37
|
НЕВА 324
|
38
|
Счетчик ЭЭ
|
39
|
РиМ 489
|
40
|
РиМ 189
|
41
|
PLC-III M208
|
42
|
PLC-III M237
|
43
|
СЭБ 2А.07.ххх.х
|
44
|
СЭБ 2А.08.ххх.х
|
45
|
ПСЧ-3ТА.07.ххх
|
46
|
ПСЧ-3ТА.07.ххх.1
|
47
|
ПСЧ-3ТА.07.ххх.2
|
48
|
ПСЧ-3АРТ.07.ххх
|
49
|
ПСЧ-3АРТ.07.ххх.1
|
50
|
ПСЧ-3АРТ.07.ххх.2
|
51
|
ПСЧ-3АРТ.07.ххх.3
|
52
|
ПСЧ-3АРТ.07.ххх.4
|
53
|
ПСЧ\СЭБ разные
|
54
|
Формула
|
58
|
УРЖ2КМ
|
60
|
МИР-04
|
61
|
МИР-05
|
62
|
МИР-07
|
63
|
М238 (PLC-III)
|
64
|
ПСЧ-3АРТ.09.ххх.1
|
65
|
ПСЧ-3АРТ.09.ххх.1
|
66
|
ПСЧ-3АРТ.09.ххх.2
|
67
|
ПСЧ-3АРТ.09.ххх.3
|
68
|
ПСЧ-3АРТ.09.ххх.4
|
69
|
Логика СПГ761
|
70
|
НЕВА 124
|
71
|
НЕВА 323
|
72
|
Turbo Flow UFG-F
|
75
|
Ирвис
|
76
|
Энергомера СЕ308
|
80
|
РиМ 38х
|
81
|
ТУ Лартех
|
82
|
Меркурий 201
|
83
|
Меркурий 202
|
84
|
Меркурий 208
|
85
|
Меркурий 231
|
87
|
Ультрамаг
|
88
|
Протей
|
89
|
СПОДЭС 3ф
|
90
|
Меркурий 204
|
91
|
CE102M
|
92
|
Милур 30x
|
93
|
Милур 10x
|
94
|
СПОДЕС 1ф
|
95
|
ТУ СМ-160
|
96
|
ТУ Нартис
|
97
|
ТУ Миртек
|