Типовые схемы — различия между версиями
Wikiadmin (обсуждение | вклад) |
Ipe (обсуждение | вклад) (→Дополнительно) |
||
(не показано 89 промежуточных версий 2 участников) | |||
Строка 102: | Строка 102: | ||
[[Файл:video2.png|центр|1000px]] | [[Файл:video2.png|центр|1000px]] | ||
+ | |||
+ | Для автоматического добавления камер можно воспользоваться командами "Создать все камеры" или "Создать локальные камеры" (при условии, что камеры добавлены на самом сервере Интегра-ВидеоVII) у элемента ПО Интегра-ВидеоVII(IntegraVideo7).<br /> Если включены умные подписки в конфигурационном файле AM, то связи между камерами и ПО Интегра-Видео VII не создадутся. | ||
+ | Так же используя команду у элемента ПО Интегра-ВидеоVII "updateIpForLocalCameras" будет выполнено обновление ip адресов всех локальных камер привязанных к элементу ПО Интегра-ВидеоVII. | ||
Затем, прописываем имя и сетевой адрес у элемента «Сервер», адрес должен соответствовать компьютеру, на котором установлены «ПО Интегра -Видео 7» и «Менеджер устройств». Элементы «Сервер» и «Компьютер» полностью идентичны по своим свойствам, имеют только разные модели. | Затем, прописываем имя и сетевой адрес у элемента «Сервер», адрес должен соответствовать компьютеру, на котором установлены «ПО Интегра -Видео 7» и «Менеджер устройств». Элементы «Сервер» и «Компьютер» полностью идентичны по своим свойствам, имеют только разные модели. | ||
− | [[Файл:video3.png|центр|1000px]] | + | [[Файл:video3.png|центр|1000px]] |
После чего, в элементе «ПО Интегра-Видео 7» устанавливаем режим «Главный сервер» (main_server) и задаем сетевой адрес сервера видео, порт по умолчанию оставляем 9090. | После чего, в элементе «ПО Интегра-Видео 7» устанавливаем режим «Главный сервер» (main_server) и задаем сетевой адрес сервера видео, порт по умолчанию оставляем 9090. | ||
Строка 114: | Строка 117: | ||
[[Файл:video5.png|центр|1000px]] | [[Файл:video5.png|центр|1000px]] | ||
+ | |||
+ | |||
+ | =====Команда"SendCamerasTolv"===== | ||
+ | |||
+ | Дополнительная команда "SendCamerasTolv" реализована в Менеджер устройств AcuarioManager и добавлена типу устройств "IntegraVideo7". Эта команда предназначена для более легкой интеграции со сторонним ПО по видеонаблюдению, при этом не требуется вручную прописывать координаты с камер. Команда "SendCamerasTolv" запускается на устройстве ПО "Integra-Video": | ||
+ | |||
+ | |||
+ | [[File:Схема .png|centre|1000px]] | ||
+ | |||
+ | |||
+ | При запуске команды "SendCamerasTolv" все "наследники типа" "VideoCamera" группируются в список и формируется список наборов параметров. Затем этот набор параметров отправляется как параметр в метод ''"camera: update"''. Этот функционал реализован для всех способов взаимодействия с сервисом "IntegraVideo7". | ||
==Схема "Agilion"== | ==Схема "Agilion"== | ||
Строка 269: | Строка 283: | ||
[[File:метеостанция12.jpg|центр]] | [[File:метеостанция12.jpg|центр]] | ||
− | ==Схема " | + | ==Схема "Умного пешеходного перехода"== |
− | Данная схема предназначена для | + | Данная схема предназначена для получения данных с пешеходного перехода<br /> |
− | Для создания данной схемы необходимо добавить следующие элементы: | + | |
− | + | Для создания данной схемы необходимо добавить следующие элементы:<br /> | |
− | + | ||
− | # Компьютер или Сервер | + | # Компьютер или Сервер |
# Менеджер устройств (AcuarioManager) | # Менеджер устройств (AcuarioManager) | ||
− | # | + | # Nema Сервер (NemaGSMServer) |
− | # | + | # Пешеходный переход (NemaCrosswalk) |
− | # | + | |
− | # | + | Для создания данной схемы необходимо добавить следующие связи:<br /> |
− | # | + | # Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent |
− | Для того, | + | # Менеджер устройств: ManagingContainer + NemaGSMServer: Привязка к менеджеру:ManagingContent |
− | В | + | # NemaGSMServer: NemaParamContainer + NemaCrosswalk: NemaParamContent |
− | + | [[File:2схема перехода.png|центр]] | |
− | + | ||
− | + | По необходимости добавить следующие элементы:<br /> | |
− | + | # Nema светильник (NemaLamps) - осветительные приборы на перекрестке | |
− | + | # Nema счетчик (NemaMeters) - счетчики на перекрестке | |
− | + | # Предупреждающее табло с данными по встречной полосе (NemaOncomingBoard) | |
− | + | # Предупреждающее табло с данными по попутной полосе (NemaPassingBoard) | |
− | + | ||
− | [[File: | + | Далее необходимо настроить параметры у элементов:<br /> |
− | Далее необходимо | + | # Nema Сервер - указать ключ, идентификатор пользователя(uid) и сетевой адрес |
− | ''' | + | # Пешеходный переход - указать идентификатор объекта (objectObjectListID), расположение (position) |
− | + | # Nema светильник - указать идентификатор объекта (objectListID), расположение (position) | |
− | + | # Nema счетчик - указать идентификатор прибора (meterID) | |
− | + | Пример отображения в клиенте "Интегра планета Земля" переход пешехода<br /> | |
− | + | [[File:first_passing.png|центр]] | |
− | + | ||
− | + | ==Схема радара HikvisionRadar== | |
− | + | ||
− | + | Для того чтобы развернуть схему радара, необходимо: | |
− | + | ||
− | ''' | + | 1) В редакторе СКАДА добавить следующие элементы: |
− | + | #Am(Менеджер устройств 'Acuario Manager'); | |
− | + | #Computer1(Компьютер); | |
− | + | #HikvisionRadar1(DS-PR1-60); | |
− | + | #Plan1(План); | |
− | [[File: | + | #(Space1 ) Пространство. |
− | + | ||
− | ''' | + | Все эти элементы можно найти в открывшемся окне редактора СКАДА слева на панели, выбрав вкладку «Типы элементов» |
− | + | ||
− | + | 2) Затем следует соединить устройства между собой Am(Менеджер устройств 'Acuario Manager') и Компьютер, Am(Менеджер устройств 'Acuario Manager') и HikvisionRadar1(DS-PR1-60), HikvisionRadar1(DS-PR1-60) и Space1, Space1 и Plan1. | |
− | + | В результате должна получиться следующая схема: | |
− | + | ||
− | ''' | + | |
− | + | [[File:R-1.png|centre|1000px]] | |
− | + | ||
− | + | ||
− | + | Данная схема применима для трекинга. | |
− | + | Настройка трекинга: http://wiki.integra-s.com:11111/index.php/Установка_сервера_в_Linux#Integraemberdb | |
− | + | ||
− | + | 3) В свойствах HikvisionRadar1(DS-PR1-60) рекомендуется заполнить следующие параметры: | |
− | + | #angelBetweenHangerAndHorizon (угол (в вертикальной плоскости) между перпендикуляром к плоскости антенны радара и горизонтом) - (-15); | |
− | + | #angelBetweenNorthAndRadar (угол между направлением на север и перпендикуляром к плоскости антенны радара (через восток)) - ( 42); | |
− | + | #ip(сетевой адрес) - 192.168.10.133; | |
− | + | #hangerHeight (высота подвеса ) - (2,5); | |
− | + | #Географическая высота - (125); | |
− | + | #login (логин) - admin; | |
+ | #password (пароль) - 'Volga1996!'; | ||
+ | #Порт - 8000; | ||
+ | #Состояние - 'Активен (ок)'; | ||
+ | |||
+ | |||
+ | [[File:R-2.png|centre|]] | ||
+ | |||
+ | |||
+ | [[File:R-3.png|centre|780px]] | ||
+ | |||
+ | |||
+ | После проделанных действий следует запустить "Интегра Планета 4D". | ||
+ | |||
+ | 4) В горизонтальном меню выбрать «Файл» и «Импортировать планировку»; | ||
+ | |||
+ | 5) В открывшемся окне «Импорт здания» в строке поиска написать название нужного плана, например, Офис Интегра-С; | ||
+ | |||
+ | 6) В списке загруженных зданий на сервер выбрать нужный план, (в нашем случае Офис Интегра-С) и нажать кнопку «Редактировать»; | ||
+ | |||
+ | 7) Затем перейти на вкладку «Настройка серверов» и справа нажать на кнопку «Добавить сервер» («+»); | ||
+ | |||
+ | После этого надо выбрать «Существующее соединение» и из предлагаемого списка выбрать нужное подключение. Если отсутствует нужное подключение, то надо нажать на «Новое подключение» и заполнить все необходимые данные для добавления нового подключения | ||
+ | |||
+ | 8) Установить "галочку" в строке для привязки устройства к серверу и сохранить изменения. | ||
+ | |||
+ | |||
+ | [[File:R-4.png|centre|]] | ||
+ | |||
+ | |||
+ | =====Добавление датчика HikvisionRadar на план===== | ||
+ | |||
+ | 1) В горизонтальном меню выбрать «Редакторы» и «Редактор датчиков»; | ||
+ | |||
+ | 2) В открывшемся окне «Доступные для расстановки объекты» найти устройство HikvisionRadar1(DS-PR1-60) и вынести его на план, удерживая ЛКМ; | ||
+ | |||
+ | 3) Масштабировать датчик относительно здания на плане с помощью кнопок на панели в редакторе и сохранить текущие изменения. | ||
+ | |||
+ | |||
+ | [[File:R-5.png|centre|]] | ||
+ | |||
+ | |||
+ | == Модуль интеграции Lers == | ||
+ | |||
+ | '''Обновление модуля интеграции Lers''' | ||
+ | |||
+ | Для обновления библиотек модуля интеграции Lers необходимо: | ||
+ | |||
+ | :1. Перейти на сайт https://www.lers.ru/soft/download/; | ||
+ | :2. Во вкладке "Обновление" скачать последнюю версию файла LersManualUpdate.zip; | ||
+ | :3. В корне установленного AcuarioManager найти папку LersUpdateUnpacker и открыть файл readme.txt; | ||
+ | :4. Следовать инструкции из readme.txt. | ||
+ | |||
+ | Инструкция из readme.txt: | ||
+ | |||
+ | :1. Поместить архив LersManualUpdate.zip в папку LersPath; | ||
+ | :2. Запустить Extract.bat; | ||
+ | :3. Скопировать папку Lers в корень AcuarioManager; | ||
+ | :4. Удалить архив LersManualUpdate.zip из папки LersPath. | ||
+ | |||
+ | |||
+ | |||
+ | Для работы с модулем интеграции «Риф-Плюс» необходимо: | ||
+ | |||
+ | В Редакторе Скада: | ||
+ | |||
+ | :1. Добавить элемент "Риф-Плюс" (RifPlus). Этот элемент находится во вкладке «Типы элементов» главного окна редактора Скада; | ||
+ | :2. Соединить элемент "Риф-Плюс" (RifPlus) с линком ManagementLink элемента AcuarioManager (Менеджер устройств «AcuarioManager»). | ||
+ | |||
+ | В результате получится схема: | ||
+ | |||
+ | |||
+ | [[File:Риф 1.PNG|centre|]] | ||
+ | |||
+ | |||
+ | :3. В свойствах элемента "Риф-Плюс" (RifPlus) заполнить параметры "Сетевой адрес", "Порт", "Имя объекта": | ||
+ | |||
+ | |||
+ | [[File:Риф 3.PNG|centre|]] | ||
+ | |||
+ | |||
+ | Далее для выполнения схемы необходимо отправить устройству команду ''update_scada_schema'', после этого устройство получит статус ''ok_schemeCreatingInProgress''. | ||
+ | AcuarioManager запрашивает всю необходимую информацию от интегрируемой системы. Если в том месте схемы, где должен быть объект он отсутствует, то AcuarioManager создает внутри себя объект схемы со статусом ''ok_schemeCreatingInProgress''. Если объект в схеме присутствует, то AcuarioManager выставляет этому объекту статус ''schemeCreatingObjectReady''. | ||
+ | После этого AcuarioManager передает созданные объекты FireFly. После получения подтверждения о состоянии объектов от FireFly AcuarioManager присваивает этим объектам статус ''schemeCreatingObjectReady''. Если процесс построения схемы завершился без ошибок, то AcuarioManager выставляет главному элементу статус ''schemeCreatingObjectReady''. Затем AcuarioManager перезапускает модуль RifPlus. | ||
+ | |||
+ | Если в процессе обнаруживается, что в схеме в редакторе Скада у главного элемента есть «потомок», который наследует базовый тип для этой интегрируемой системы, то этому элементу и всем его «потомкам» присваивается состояние ''error.schemeCreatingUnnecessary''. Такой элемент и все его «потомки» должны быть удалены вручную пользователем. | ||
+ | |||
+ | При запуске модуля AcuarioManager проверяет состояние главного элемента. Если обнаружено состояние ''ok_schemeCreatingInProgress'' или ''error_schemeCreatingError'', то AcuarioManage выводит в Error сообщение: | ||
+ | |||
+ | log.Error($"В процессе создания схемы возникли ошибки. Проверьте схему и установите стостояние итема {bastionOpcServerItem.name}:{bastionOpcServerItem.Id} в none.unknown, после чего перезагрузите acuario.manager или | ||
+ | выполните команду обновления схемы для указанного итема повторно."); | ||
+ | |||
+ | При этом состояние ''ok_schemeCreatingInProgress'' будет сброшено в ''error_schemeCreatingError''. Элементы, которые присутствуют в схеме, но не связаны с главным элементом, не учитываются. | ||
+ | |||
+ | |||
+ | |||
+ | == Работа с модулем AcuarioManager для симуляции изменений и отдельной утилитой для обработке данных об изменениях из логов == | ||
+ | |||
+ | Для воспроизведения в офисе ситуации на объекте необходимо: | ||
+ | |||
+ | На объекте: | ||
+ | |||
+ | :1. Экспортировать схему объекта из СКАДА с сохранением guid итемов: | ||
+ | |||
+ | [[File:И1.png|centre|]] | ||
+ | |||
+ | |||
+ | :2. Из папки "{Корень ам}\Logs\ff\" скопировать все файлы лога транзакций с именами, соответствующими шаблону "ffTransaction.log.*": | ||
+ | |||
+ | |||
+ | [[File:И2.png|centre|]] | ||
+ | |||
+ | |||
+ | :3. Подготовленные файлы с информацией о версиях используемых AM, FF, typdef передать в офис на обработку. | ||
+ | |||
+ | |||
+ | В офисе: | ||
+ | |||
+ | :1. Установить нужные версии AM, FF, typdef; | ||
+ | |||
+ | :2. Импортировать схему устройств в СКАДА: | ||
+ | |||
+ | [[File:И3.png|centre|]] | ||
+ | |||
+ | |||
+ | :3. В папку "{Корень ам}\Utilities\LogParser\Source" поместить файлы лога транзакций (НЕ В АРХИВЕ И НЕ ВЛОЖЕННЫЕ В ДОП. ПАПКИ): | ||
+ | |||
+ | |||
+ | [[File:И4.png|centre|]] | ||
+ | |||
+ | |||
+ | :4. Запустить файл "{Корень ам}\Utilities\LogParser\LogParser.exe". В процессе и по окончании работы будут появляться сообщения о прогрессе обработки логов. В конце будет выведено количество пакетов транзакций и затраченное на обработку время: | ||
+ | |||
+ | |||
+ | [[File:И5.png|centre|]] | ||
+ | |||
+ | |||
+ | :5. В СКАДА, в схеме, которую загрузили в пункте 2, добавить итем типа "SimulatorModule". Связать его с итемом AcuarioManager линком "ManagementLink": | ||
+ | |||
+ | |||
+ | [[File:И6.png|centre|]] | ||
+ | |||
+ | |||
+ | :6. Запустить AcuarioManager | ||
+ | |||
+ | '''Уточнения:''' | ||
+ | :1. Имена файлов логов неважны; | ||
+ | :2. Если структура лога не будет соответствовать требуемой - парсер просто упадет; | ||
+ | :3. При подключении к итему AcuarioManager в схеме СКАДА итема типа "SimulatorModule" все остальные модули отключаются и их можно не отсоединять вручную; | ||
+ | :4. Не важно в каких базах находились переносимые с объекта итемы. При воспроизведении изменений будет осуществляться поиск итемов по их guid в суммарном графе, загруженном со всех добавленных в конфиг am'а подключений FireFly; | ||
+ | :5. При воспроизведении изменений из лога все записи изменений, которые не считаются записью в архив, записываются с ТЕКУЩИМ на момент воспроизведения временем; | ||
+ | :6. Если в логе время фактического изменения меньше времени отправки на как минимум 2 секунды, то такое изменение считается записью в архив и время изменения не заменяется на текущее; | ||
+ | :7. Изменения собираются в транзакции строго тем же образом, которым они отправлялись при записи лога; | ||
+ | :8. Связывать "SimulatorModule" с другими итемами кроме итема AcuarioManager не требуется; | ||
+ | :9. Как только все записанные транзакции будут воспроизведены модуль начнет воспроизведение сначала. Пауза не предусмотрена. | ||
+ | |||
+ | |||
+ | == Упрощенные динамические типы == | ||
+ | |||
+ | Предварительные действия: | ||
+ | |||
+ | 1) Установить версию FireFly для динамических типов. Для этого: | ||
+ | #Перейти по ссылке https://nextcloud.integra-s.com:11100/index.php/s/Q83ysM4q2NosbGw и загрузить архив ffdyn-win211021.zip; | ||
+ | #Распаковать в удобное место на диске, например E:\distrFirefly (distrFirefly создан перед распаковкой); | ||
+ | #Создать базу данных (с помощью create_DB_and_Schemas.bat) и настроить config.json; | ||
+ | #Запустить serenity и FireFly; | ||
+ | 2) Установить и настроить amjs. Для этого: | ||
+ | #Загрузить и установить nodejs версии не ниже 14.17.0 https://nodejs.org/en/download/. На момент описания инструкции установлен v14.18.1 (Windows 10). На windows 7 установить 14 версию не удастся, т.к. отсутствует поддерживаемость данной ОС); | ||
+ | #Загрузить архив amjs.zip http://maps.integra-s.com:5434/resources/typedef2017/amjs/amjs.zip и распаковать в удобное для вас место, например: E:\amjsNode (amjsNode создан перед распаковкой); | ||
+ | #Выполнить установку необходимых пакетов командой: npm install. В результате в папке amjsNode появится новый каталог node_modules(не пустой): | ||
+ | |||
+ | |||
+ | [[File:1-T.png|centre|]] | ||
+ | |||
+ | |||
+ | 4. Настроить конфигурационный файл globals.js, указав данные FireFly и Центра Авторизации (ЦА), где: | ||
+ | |||
+ | '''url''' - сетевой адрес FireFly; | ||
+ | |||
+ | '''servers''' - список гуидов серверов (графов) на FireFly, где local (по умолчанию) - означает локальный сервер. | ||
+ | |||
+ | Пример массива из подключений: | ||
+ | |||
+ | "firefly": [{ | ||
+ | "url": "ws://192.168.11.2:8095/ws", | ||
+ | "servers": ["local"] | ||
+ | }, | ||
+ | { | ||
+ | "url": "ws://192.168.11.2:8096/ws", | ||
+ | "servers": ["local"] | ||
+ | }], где 192.168.11.2:8095 – это 0 индекс подключения: | ||
+ | |||
+ | |||
+ | [[File:2-T.png|centre|]] | ||
+ | |||
+ | |||
+ | Где: | ||
+ | |||
+ | '''authid''' - имя пользователя в ЦА; | ||
+ | |||
+ | '''authpass''' - пароль пользователя в ЦА; | ||
+ | |||
+ | '''http://192.168.10.146:8888''' - базовый сетевой адрес ЦА; | ||
+ | |||
+ | '''plugins''' - специфические настройки плагинов, где {} - означает включить плагин, не имеющий настроек (т.е. без ffsoap/post, param-binding); | ||
+ | |||
+ | "ffsoap": { | ||
+ | "ff": 0, - '''индекс ФФ в секции FireFly'''; | ||
+ | |||
+ | "address": "10.0.0.26", - '''адрес, где запущен amjs плагин (откуда будет запрашиваться файл FireFlySoap.wsdl)'''; | ||
+ | |||
+ | "port": 9005, - '''порт, по которому запрашивается файл FireFlySoap.wsdl'''; | ||
+ | |||
+ | "wsdl": "FireFlySoap.wsdl" – '''имя файла, который расположен в корне папки amjsNode | ||
+ | }''' | ||
+ | |||
+ | |||
+ | '''pulse''' - настройки пульса FireFly: | ||
+ | |||
+ | '''timeout''' - время отсутствия пульса в секундах для того, чтобы считать потерянной связь с FireFly; | ||
+ | |||
+ | '''reconnection''' - настройки восстановления соединения: | ||
+ | |||
+ | '''interval''' - интервал в секундах перед началом попыток соединения при потере пульса; | ||
+ | |||
+ | '''mainloop''' - настройки главного цикла приложения: | ||
+ | |||
+ | '''delay''' - искусственная задержка в секундах после каждого главного цикла (нужно для снижения нагрузки на процессор); | ||
+ | |||
+ | |||
+ | 3) Обновить типы до версии >= 1200; | ||
+ | 4) Запустить amjs через командную строку (находясь в корне папки amjsNode) '''node amjs.js'''. | ||
+ | |||
+ | |||
+ | ===Создание виртуальных соединений (линков) === | ||
+ | |||
+ | Для создания виртуальных соединений необходимо: | ||
+ | |||
+ | :1. Открыть меню «Редактирование», перейти в настройки и выбрать «Расширенный режим»; | ||
+ | :2. Открыть меню «Редактирование» и перейти в «Редактор типов»; | ||
+ | |||
+ | :3. Нажать на кнопку [[File:3-T.png|3-T.png]], создать тип DynamicClass1. Динамический тип появится в списке типов с названием DynamicClass1: | ||
+ | |||
+ | [[File:4-T.png|centre|]] | ||
+ | |||
+ | :4. Для настройки свойств типа необходимо ЛКМ нажать на DynamicClass1 в списке типов: | ||
+ | |||
+ | |||
+ | [[File:5-T.png|centre|]] | ||
+ | |||
+ | |||
+ | #Поле для ввода имени динамического типа (имя должно быть введено на латинице и с заглавной буквы). Имя динамического типа не должно совпадать с именем статического типа; | ||
+ | #Описание параметров – добавление необходимых параметров различных типов$ | ||
+ | #Описание – поле для описания типов$ | ||
+ | #Текст ошибки – поле для вывода текста ошибки. | ||
+ | |||
+ | :5. Перейти в описание параметров, нажать на кнопку «Добавить поле» и добавить параметр с названием field1 и типом reference. Имя параметра должно быть введено латинскими буквами, начиная со строчной: | ||
+ | |||
+ | [[File:6-T.png|centre|]] | ||
+ | |||
+ | |||
+ | :6. Принять и сохранить свойства типа$ | ||
+ | :7. Аналогично создать тип DynamicClass2 (можно не добавлять параметры); | ||
+ | :8. Выйти из редактора типов, добавить созданные элементы на граф и добавить связь field1:ReferenceContainer+ReferenceContent: | ||
+ | |||
+ | |||
+ | [[File:7-T.png|centre|]] | ||
+ | |||
+ | |||
+ | Создан виртуальный линк - ReferenceLink: | ||
+ | |||
+ | |||
+ | [[File:8-T.png|centre|]] | ||
+ | |||
+ | |||
+ | =====Дополнительно===== | ||
+ | |||
+ | Виртуальные линки – это те линки, которых в базе физически нет. Есть только динамический параметр у одного объекта, который содержит идентификатор другого объекта. | ||
+ | |||
+ | Для создания виртуальных линков используются типы параметров reference и referenceList. | ||
+ | |||
+ | Reference – это параметр ссылочного типа представляет собой строку с фиксированным регулярным выражением для разбора гуидов (дефисы без скобок) и дополнительно позволяет задавать имя класса динамических объектов, на которые данная ссылка может указывать (если имя класса не указано, значит данная ссылка может указывать на любой объект). | ||
+ | Для дополнительной настройки параметра необходимо нажать на {}: | ||
+ | |||
+ | [[File:9-T.png|centre|]] | ||
+ | |||
+ | |||
+ | [[File:10-T.png|centre|]] | ||
+ | |||
− | + | ReferenceList – это параметр типа список ссылок и позволяет дополнительно задавать: минимальное и максимальное количество элементов в списке, а так же необходимость их уникальности. | |
− | + | Для дополнительной настройки параметра необходимо нажать {}: | |
− | + | [[File:11-T.png|centre|]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[File:12-T.png|centre|]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | #Items – список фиксированных доступных значений; | |
− | + | #minitems – минимальное количество элементов в списке; | |
− | + | #maxitems – максимальное количество элементов в списке; | |
− | + | #uniqueitems – проверка уникальности значений массива. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | в | ||
− | в | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Текущая версия на 10:49, 21 декабря 2021
Типовые схемы предназначены для создания связей в системе, установленных на объекте.
Содержание
- 1 Подготовка для работы
- 2 Схема СКД
- 3 Схема ОПС "Болид"
- 4 Схема "Интегра Видео 7"
- 5 Схема "Agilion"
- 6 Схема "Снепшоты"
- 7 Схема "Очистка БД"
- 8 Схема "Получение данных с метеостанции на платформы Nokia"
- 9 Схема "Умного пешеходного перехода"
- 10 Схема радара HikvisionRadar
- 11 Модуль интеграции Lers
- 12 Работа с модулем AcuarioManager для симуляции изменений и отдельной утилитой для обработке данных об изменениях из логов
- 13 Упрощенные динамические типы
Подготовка для работы
В любой создаваемой схеме необходима связка Компьютер-Менеджер устройств(AcuarioManager)
Менеджер устройств предназначен для взаимодействия с поставщиками данных - аппаратными модулями (ОПС, сенсорами, устройствами) и программными модулями (Интегра Видео 7, СКУД и пр).
Так же все добавленные элементы необходимо привязывать к своим пространствам.
В данном примере имеется два пространства "1 этаж" и "2 этаж", привязанные к одному плану. Каждый из объектов привязан к своему пространству, что упрощает расстановку датчиков на план в дальнейшем.
Схема СКД
Для создания схемы подключения системы контроля доступа необходимо добавить следующие элементы:
- Клиент Интегра ACS
- Замок
- Турникет
Для создания схемы подключения системы контроля доступа необходимо добавить следующие связи:
- Замок: AccessSlave:Прием доступа + Клиент Интегра ACS: AxxessMaster:Передача доступа
- Турникет: AccessSlave:Прием доступа + Клиент Интегра ACS: AxxessMaster:Передача доступа
- Менеджер устройств: ManaginContainer:Менеджер Устройств + Клиент Интегра ACS:ManaginContainer
- Компьютер: SoftwareContainer:Установленное ПО + Клиент Интегра ACS:SoftwareContent:ПО
Далее необходимо открыть меню элемента «Компьютер» и в строке «Сетевой адрес» вводим ip компьютера к которому должен подключаться «AcuarioManager».
В меню элемента «Клиент Интегра ACS», в строке «Сервера Интегра ACS» прописывается ip адрес сервера.
Датчики подключаемые к клиенту «Интегра ACS», настраиваются следующим образом:
- В строке «COM-порт» прописывается адрес com-порта по которому подключено устройство
- В строке «Адрес URL» - ip адрес сервера «Интегра ACS»
- В строке «Идентификатор устройства» - devid, который присваивает база данных.
Схема ОПС "Болид"
Для создания схемы подключения ОПС «Болид» необходимо добавить следующие элементы:
- Болид С2000 пульт
- Болид сигнал 20
- Болид пожарный датчик
Для создания схемы подключения ОПС «Болид» необходимо добавить следующие связи:
- Менеджер устройств AcurioManager: ManaginContainer:Менеджер Устройств + Болид С2000 пульт: ManaginContent:MangingContainer
- Болид С2000 пульт:Rs485Socket:Разъем RS485 1 + Болид Сигнал 20:Rs485Socket:Разъем RS485 1
- Болид Сигнал 20:LowCurrentSocket:Разъем Слаботочного Провода + Болид пожарный датчик:LowCurrentSocket:Разъем Слаботочного Провода
Далее в элементе «Компьютер» необходимо прописать Ip адрес компьютера на котором установлен «Менеджер устройств».
В элементе «Болид С2000 пульт» необходимо задать номер COM-порта, вида «COM1»,«COM2»,«COM3», для ОС Windows, «/dev/ttyS1», «/dev/ttyS2», «/dev/ttyS3», для Linux.
В элементе «Болид Сигнал 20» прописываем адрес. Его можно узнать при помощи программы uprog.
Так же для удобства работы необходимо задать имена для всех элементов в схеме.
Схема "Интегра Видео 7"
Для создания схемы подключения системы видеонаблюдения «Интегра видео 7» необходимо добавить следующие элементы:
- Компьютер или Сервер
- Сетевой коммутатор
- Опрос локальной сети
- По Интегра-Видео 7
- IP Видеокамера
Для создания схемы подключения системы видеонаблюдения «Интегра видео 7» необходимо добавить следующие связи:
- Сервер:Сервер Видео:SoftwareContainer:Установленное ПО + Менеджер устройств AcurioManager:SoftwareContent:ПО или Компьютер:SoftwareContainer:Установленное ПО + Менеджер устройств AcurioManager:SoftwareContent:ПО
- Менеджер устройств AcurioManager: ManaginContainer:Менеджер Устройств + Опрос локальной сети:ManaginContent:ManaginContent
- Менеджер устройств AcurioManager: ManaginContainer:Менеджер Устройств + ПО Интегра-Видео 7:ManaginContent:ManaginContent
- ПО Интегра-Видео 7:MediaContainer:Медиаданные + IP Видеокамера: MediaContent:Медиаданные
- Сетевой коммутатор:EthernetSocket:Сетевой разъем + Сервер:Сервер Видео:EthernetSocket:Сетевой разъем или Сетевой коммутатор:EthernetSocket:Сетевой разъем + Компьютер:EthernetSocket:Сетевой разъем
- Сетевой коммутатор:EthernetSocket:Сетевой разъем + IP Видеокамера:EthernetSocket:Сетевой разъем
Далее для элементов «IP видеокамера» задаем любое имя объекта и адрес URL вида iv7://admin:fulladmin@/?udp_id=5705&key2=Камера 5705
где admin – логин пользователя, fulladmin – пароль пользователя, udp_id – идентификатор камеры в ИВ-7 (ID 5.4), key2 – имя камеры в ИВ-7.
Для автоматического добавления камер можно воспользоваться командами "Создать все камеры" или "Создать локальные камеры" (при условии, что камеры добавлены на самом сервере Интегра-ВидеоVII) у элемента ПО Интегра-ВидеоVII(IntegraVideo7).
Если включены умные подписки в конфигурационном файле AM, то связи между камерами и ПО Интегра-Видео VII не создадутся.
Так же используя команду у элемента ПО Интегра-ВидеоVII "updateIpForLocalCameras" будет выполнено обновление ip адресов всех локальных камер привязанных к элементу ПО Интегра-ВидеоVII.
Затем, прописываем имя и сетевой адрес у элемента «Сервер», адрес должен соответствовать компьютеру, на котором установлены «ПО Интегра -Видео 7» и «Менеджер устройств». Элементы «Сервер» и «Компьютер» полностью идентичны по своим свойствам, имеют только разные модели.
После чего, в элементе «ПО Интегра-Видео 7» устанавливаем режим «Главный сервер» (main_server) и задаем сетевой адрес сервера видео, порт по умолчанию оставляем 9090.
Элемент «Опрос локальной сети» необходим для мониторинга состояния элементов «Компьютер» и «Сервер».
Команда"SendCamerasTolv"
Дополнительная команда "SendCamerasTolv" реализована в Менеджер устройств AcuarioManager и добавлена типу устройств "IntegraVideo7". Эта команда предназначена для более легкой интеграции со сторонним ПО по видеонаблюдению, при этом не требуется вручную прописывать координаты с камер. Команда "SendCamerasTolv" запускается на устройстве ПО "Integra-Video":
При запуске команды "SendCamerasTolv" все "наследники типа" "VideoCamera" группируются в список и формируется список наборов параметров. Затем этот набор параметров отправляется как параметр в метод "camera: update". Этот функционал реализован для всех способов взаимодействия с сервисом "IntegraVideo7".
Схема "Agilion"
Данная схема предназначена для настройки локального позиционирования.
Для создания данной схемы необходимо добавить следующие элементы:
- Компьютер или Сервер
- Менеджер устройств (AcuarioManager)
- Сервер Agilion
- Agilion Zero Point
- Agilion метка
Примечание: Менеджер устройств должен быть не старше версии 1.26.0.
Для создания схемы «Agilion» необходимо добавить следующие связи:
- Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- Менеджер устройств: ManagingContainer + Сервер Agilion: Привязка к менеджеру:ManagingContent
- Сервер Agilion: Подключение Agilion Zero Point:AgilionZeroPointSocketOut + Agilion Zero Point: Разъем Agilion Zero Point вход:AgilionZeroPointSocketIn
- Сервер Agilion: Разъем Agilion выход:AgilionSocketOut + Agilion метка: Разъем Agilion вход:AgilionSocketIn
Далее необходимо открыть свойства элемента "Компьютер" и в строке "Сетевой адрес" ввести ip компьютера, к которому должен подключаться "Менеджер устройств".
В свойствах элемента "Сервер Agilion" указывается сетевой адрес (по умолчанию *) и порт, на который будут приниматься данные.
В элементе "AgilionZeroPoint" необходимо задать такую высоту и географические координаты, чтобы они соответствовали нулевой точке Agilion.
Элемент "Agilion метка" - это трекер, для которого указывается номер в поле "Адрес".
Для отслеживания объекта его необходимо присоединить к элементу "Agilion метка", подключив пины "Источник данных GPS:GPSProviderOut" из Agilion метки к пину "Приемник данных GPS:GPSProviderIn" из объекта.
Также следует настроить отправку данных на менеджер устройств в системе Agilion. Для этого необходимо открыть файл AgilionDataExport.ini в папке C:\Windows и настроить раздел ExportTCPIP, указав в нем поле Active=1, Host и Port компьютера, на котором стоит менеджер устройств.
Схема "Снепшоты"
Данная схема предназначена для выполнения снепшотов через указанный интервал времени.
Для создания данной схемы необходимо добавить следующие элементы:
- Egs Модуль
- Скрипт EgsScheduled
Для создания данной схемы необходимо добавить следующие связи:
- Egs Модуль: Привязка к менеджеру:ManagingContainer + Менеджер устройств:ManagingContainer
- Egs Модуль: Egs выход:EgsOutput + EgsScheduled: Egs вход:EgsInput
Далее необходимо настроить сетевой адрес компьютера в свойствах элемента.
Триггер EgsScheduled настраивается следующим образом:
- текст скрипта (script)
http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Call%20stored%202.put&path=0/params/script/value;
- единица измерения (period_unit), например: час;
- интервал в единицах измерения (period_count), например: 1;
- повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
- задействовать триггер (enabled), например: true;
- в настройках:
- имя хранимой процедуры БД (settings.proc): graph.get_time;
- аргументы хранимой процедуры БД (JSON массив) (settings.args), например: ["76606d62-a514-11e4-8c37-a7064178f246", 0], где первым параметром является идентификатор сервера, на котором выполняется скрипт, а вторым - номер версии, с которой необходимо получать данные (в данном случае 0).
При успешном выполнении через указанный интервал времени в параметр результат (settings.result) будет записываться результат в следующем виде:
{ "result": "ok" }
Примечание: В случае если на схеме отсутствуют элементы типа Egs Модуль EgsModule, менеджер AcuarioManager и компьютер Computer, их необходимо добавить. Если присутствуют, то использовать текущие.
Более подробная информация о скрипте размещена на странице Вызов хранимой процедуры БД по расписанию (Call stored).
Схема "Очистка БД"
Данная схема предназначена для очистки базы данных через указанный интервал времени.
Для создания данной схемы необходимо добавить следующие элементы:
- Egs Модуль
- Скрипт EgsScheduled
Для создания данной схемы необходимо добавить следующие связи:
- Egs Модуль: Привязка к менеджеру:ManagingContainer + Менеджер устройств:ManagingContainer
- Egs Модуль: Egs выход:EgsOutput + EgsScheduled: Egs вход:EgsInput
Далее необходимо настроить сетевой адрес компьютера в свойствах элемента.
Триггер EgsScheduled настраивается следующим образом:
- текст скрипта (script)
http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Call%20stored%202.put&path=0/params/script/value;
- единица измерения (period_unit), например: месяц;
- интервал в единицах измерения (period_count), например: 1;
- повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
- задействовать триггер (enabled), например: true;
- в настройках:
- имя хранимой процедуры БД (settings.proc): graph.clearing_all_archive;
- аргументы хранимой процедуры БД (JSON массив) (settings.args), например: ["76606d62-a514-11e4-8c37-a7064178f246", "1 month"], ["76606d62-a514-11e4-8c37-a7064178f246", "2 months"], где первым параметром является идентификатор сервера, на котором выполняется скрипт, а вторым - интервал времени, ранее которого будут удалены записи. Если задать следующий аргумент: ["76606d62-a514-11e4-8c37-a7064178f246", "7 days"], то будут сохранены записи за 7 дней от текущей даты, остальные будут очищены.
При успешном выполнении через указанный интервал времени в параметр результат (settings.result) будет записываться результат в следующем виде:
{ "result": "ok" }
Примечание: В случае если на схеме отсутствуют элементы типа Egs Модуль EgsModule, менеджер AcuarioManager и компьютер Computer, их необходимо добавить. Если присутствуют, то использовать текущие.
Более подробная информация о скрипте размещена на странице Вызов хранимой процедуры БД по расписанию (Call stored).
Схема "Получение данных с метеостанции на платформы Nokia"
Данная схема предназначена для получения данных с метеостанции на платформы Nokia
Для создания данной схемы необходимо добавить следующие элементы:
- Компьютер или Сервер
- Менеджер устройств (AcuarioManager)
- Клиент Cumulocity (CumulocityClient)
- Составная метеостанция (CompositeMeteostationStation)
А так же для примера типы веществ:
- Сероводород (H2S)
- Метилмеркаптан (CH3SH)
- Формальдегид (CH2O)
Для создания данной схемы необходимо добавить следующие связи:
- Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- Менеджер устройств: ManagingContainer + CumulocityClient: Привязка к менеджеру:ManagingContent
- Составная метеостанция: Логический вход:LogicInput + CumulocityClient: Логический выход:LogicOutput
- Составная метеостанция: Логический выход:LogicOutput + вещества (Сероводород, Метилмеркаптан, Формальдегид, Метан):Логический вход:LogicInput
Далее необходимо настроить параметры у элементов:
- Компьютер(сервер): сетевой адрес
- Клиент Cumulocity: url, логин, пароль, refreshS (как часто обновлять данные), timeoutS (если данных по датчику нет в течении этого времени, он посинеет)
- Составная метеостанция: идентификатор (id)
- Элемент вещество: в дополнительную информацию (additional info) указать id.
Составная метеостанция используется для агрегации датчиков, зеленеет как только приходит любое событие по этой метеостанции. К метеостанции по LogicLink можно подключать любые датчики, которые будут зеленеть при поступлении события по параметру.
Пример отображения полученной информации с датчиков веществ:
Схема "Умного пешеходного перехода"
Данная схема предназначена для получения данных с пешеходного перехода
Для создания данной схемы необходимо добавить следующие элементы:
- Компьютер или Сервер
- Менеджер устройств (AcuarioManager)
- Nema Сервер (NemaGSMServer)
- Пешеходный переход (NemaCrosswalk)
Для создания данной схемы необходимо добавить следующие связи:
- Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
- Менеджер устройств: ManagingContainer + NemaGSMServer: Привязка к менеджеру:ManagingContent
- NemaGSMServer: NemaParamContainer + NemaCrosswalk: NemaParamContent
По необходимости добавить следующие элементы:
- Nema светильник (NemaLamps) - осветительные приборы на перекрестке
- Nema счетчик (NemaMeters) - счетчики на перекрестке
- Предупреждающее табло с данными по встречной полосе (NemaOncomingBoard)
- Предупреждающее табло с данными по попутной полосе (NemaPassingBoard)
Далее необходимо настроить параметры у элементов:
- Nema Сервер - указать ключ, идентификатор пользователя(uid) и сетевой адрес
- Пешеходный переход - указать идентификатор объекта (objectObjectListID), расположение (position)
- Nema светильник - указать идентификатор объекта (objectListID), расположение (position)
- Nema счетчик - указать идентификатор прибора (meterID)
Пример отображения в клиенте "Интегра планета Земля" переход пешехода
Схема радара HikvisionRadar
Для того чтобы развернуть схему радара, необходимо:
1) В редакторе СКАДА добавить следующие элементы:
- Am(Менеджер устройств 'Acuario Manager');
- Computer1(Компьютер);
- HikvisionRadar1(DS-PR1-60);
- Plan1(План);
- (Space1 ) Пространство.
Все эти элементы можно найти в открывшемся окне редактора СКАДА слева на панели, выбрав вкладку «Типы элементов»
2) Затем следует соединить устройства между собой Am(Менеджер устройств 'Acuario Manager') и Компьютер, Am(Менеджер устройств 'Acuario Manager') и HikvisionRadar1(DS-PR1-60), HikvisionRadar1(DS-PR1-60) и Space1, Space1 и Plan1. В результате должна получиться следующая схема:
Данная схема применима для трекинга.
Настройка трекинга: http://wiki.integra-s.com:11111/index.php/Установка_сервера_в_Linux#Integraemberdb
3) В свойствах HikvisionRadar1(DS-PR1-60) рекомендуется заполнить следующие параметры:
- angelBetweenHangerAndHorizon (угол (в вертикальной плоскости) между перпендикуляром к плоскости антенны радара и горизонтом) - (-15);
- angelBetweenNorthAndRadar (угол между направлением на север и перпендикуляром к плоскости антенны радара (через восток)) - ( 42);
- ip(сетевой адрес) - 192.168.10.133;
- hangerHeight (высота подвеса ) - (2,5);
- Географическая высота - (125);
- login (логин) - admin;
- password (пароль) - 'Volga1996!';
- Порт - 8000;
- Состояние - 'Активен (ок)';
После проделанных действий следует запустить "Интегра Планета 4D".
4) В горизонтальном меню выбрать «Файл» и «Импортировать планировку»;
5) В открывшемся окне «Импорт здания» в строке поиска написать название нужного плана, например, Офис Интегра-С;
6) В списке загруженных зданий на сервер выбрать нужный план, (в нашем случае Офис Интегра-С) и нажать кнопку «Редактировать»;
7) Затем перейти на вкладку «Настройка серверов» и справа нажать на кнопку «Добавить сервер» («+»);
После этого надо выбрать «Существующее соединение» и из предлагаемого списка выбрать нужное подключение. Если отсутствует нужное подключение, то надо нажать на «Новое подключение» и заполнить все необходимые данные для добавления нового подключения
8) Установить "галочку" в строке для привязки устройства к серверу и сохранить изменения.
Добавление датчика HikvisionRadar на план
1) В горизонтальном меню выбрать «Редакторы» и «Редактор датчиков»;
2) В открывшемся окне «Доступные для расстановки объекты» найти устройство HikvisionRadar1(DS-PR1-60) и вынести его на план, удерживая ЛКМ;
3) Масштабировать датчик относительно здания на плане с помощью кнопок на панели в редакторе и сохранить текущие изменения.
Модуль интеграции Lers
Обновление модуля интеграции Lers
Для обновления библиотек модуля интеграции Lers необходимо:
- 1. Перейти на сайт https://www.lers.ru/soft/download/;
- 2. Во вкладке "Обновление" скачать последнюю версию файла LersManualUpdate.zip;
- 3. В корне установленного AcuarioManager найти папку LersUpdateUnpacker и открыть файл readme.txt;
- 4. Следовать инструкции из readme.txt.
Инструкция из readme.txt:
- 1. Поместить архив LersManualUpdate.zip в папку LersPath;
- 2. Запустить Extract.bat;
- 3. Скопировать папку Lers в корень AcuarioManager;
- 4. Удалить архив LersManualUpdate.zip из папки LersPath.
Для работы с модулем интеграции «Риф-Плюс» необходимо:
В Редакторе Скада:
- 1. Добавить элемент "Риф-Плюс" (RifPlus). Этот элемент находится во вкладке «Типы элементов» главного окна редактора Скада;
- 2. Соединить элемент "Риф-Плюс" (RifPlus) с линком ManagementLink элемента AcuarioManager (Менеджер устройств «AcuarioManager»).
В результате получится схема:
- 3. В свойствах элемента "Риф-Плюс" (RifPlus) заполнить параметры "Сетевой адрес", "Порт", "Имя объекта":
Далее для выполнения схемы необходимо отправить устройству команду update_scada_schema, после этого устройство получит статус ok_schemeCreatingInProgress.
AcuarioManager запрашивает всю необходимую информацию от интегрируемой системы. Если в том месте схемы, где должен быть объект он отсутствует, то AcuarioManager создает внутри себя объект схемы со статусом ok_schemeCreatingInProgress. Если объект в схеме присутствует, то AcuarioManager выставляет этому объекту статус schemeCreatingObjectReady.
После этого AcuarioManager передает созданные объекты FireFly. После получения подтверждения о состоянии объектов от FireFly AcuarioManager присваивает этим объектам статус schemeCreatingObjectReady. Если процесс построения схемы завершился без ошибок, то AcuarioManager выставляет главному элементу статус schemeCreatingObjectReady. Затем AcuarioManager перезапускает модуль RifPlus.
Если в процессе обнаруживается, что в схеме в редакторе Скада у главного элемента есть «потомок», который наследует базовый тип для этой интегрируемой системы, то этому элементу и всем его «потомкам» присваивается состояние error.schemeCreatingUnnecessary. Такой элемент и все его «потомки» должны быть удалены вручную пользователем.
При запуске модуля AcuarioManager проверяет состояние главного элемента. Если обнаружено состояние ok_schemeCreatingInProgress или error_schemeCreatingError, то AcuarioManage выводит в Error сообщение:
log.Error($"В процессе создания схемы возникли ошибки. Проверьте схему и установите стостояние итема {bastionOpcServerItem.name}:{bastionOpcServerItem.Id} в none.unknown, после чего перезагрузите acuario.manager или выполните команду обновления схемы для указанного итема повторно.");
При этом состояние ok_schemeCreatingInProgress будет сброшено в error_schemeCreatingError. Элементы, которые присутствуют в схеме, но не связаны с главным элементом, не учитываются.
Работа с модулем AcuarioManager для симуляции изменений и отдельной утилитой для обработке данных об изменениях из логов
Для воспроизведения в офисе ситуации на объекте необходимо:
На объекте:
- 1. Экспортировать схему объекта из СКАДА с сохранением guid итемов:
- 2. Из папки "{Корень ам}\Logs\ff\" скопировать все файлы лога транзакций с именами, соответствующими шаблону "ffTransaction.log.*":
- 3. Подготовленные файлы с информацией о версиях используемых AM, FF, typdef передать в офис на обработку.
В офисе:
- 1. Установить нужные версии AM, FF, typdef;
- 2. Импортировать схему устройств в СКАДА:
- 3. В папку "{Корень ам}\Utilities\LogParser\Source" поместить файлы лога транзакций (НЕ В АРХИВЕ И НЕ ВЛОЖЕННЫЕ В ДОП. ПАПКИ):
- 4. Запустить файл "{Корень ам}\Utilities\LogParser\LogParser.exe". В процессе и по окончании работы будут появляться сообщения о прогрессе обработки логов. В конце будет выведено количество пакетов транзакций и затраченное на обработку время:
- 5. В СКАДА, в схеме, которую загрузили в пункте 2, добавить итем типа "SimulatorModule". Связать его с итемом AcuarioManager линком "ManagementLink":
- 6. Запустить AcuarioManager
Уточнения:
- 1. Имена файлов логов неважны;
- 2. Если структура лога не будет соответствовать требуемой - парсер просто упадет;
- 3. При подключении к итему AcuarioManager в схеме СКАДА итема типа "SimulatorModule" все остальные модули отключаются и их можно не отсоединять вручную;
- 4. Не важно в каких базах находились переносимые с объекта итемы. При воспроизведении изменений будет осуществляться поиск итемов по их guid в суммарном графе, загруженном со всех добавленных в конфиг am'а подключений FireFly;
- 5. При воспроизведении изменений из лога все записи изменений, которые не считаются записью в архив, записываются с ТЕКУЩИМ на момент воспроизведения временем;
- 6. Если в логе время фактического изменения меньше времени отправки на как минимум 2 секунды, то такое изменение считается записью в архив и время изменения не заменяется на текущее;
- 7. Изменения собираются в транзакции строго тем же образом, которым они отправлялись при записи лога;
- 8. Связывать "SimulatorModule" с другими итемами кроме итема AcuarioManager не требуется;
- 9. Как только все записанные транзакции будут воспроизведены модуль начнет воспроизведение сначала. Пауза не предусмотрена.
Упрощенные динамические типы
Предварительные действия:
1) Установить версию FireFly для динамических типов. Для этого:
- Перейти по ссылке https://nextcloud.integra-s.com:11100/index.php/s/Q83ysM4q2NosbGw и загрузить архив ffdyn-win211021.zip;
- Распаковать в удобное место на диске, например E:\distrFirefly (distrFirefly создан перед распаковкой);
- Создать базу данных (с помощью create_DB_and_Schemas.bat) и настроить config.json;
- Запустить serenity и FireFly;
2) Установить и настроить amjs. Для этого:
- Загрузить и установить nodejs версии не ниже 14.17.0 https://nodejs.org/en/download/. На момент описания инструкции установлен v14.18.1 (Windows 10). На windows 7 установить 14 версию не удастся, т.к. отсутствует поддерживаемость данной ОС);
- Загрузить архив amjs.zip http://maps.integra-s.com:5434/resources/typedef2017/amjs/amjs.zip и распаковать в удобное для вас место, например: E:\amjsNode (amjsNode создан перед распаковкой);
- Выполнить установку необходимых пакетов командой: npm install. В результате в папке amjsNode появится новый каталог node_modules(не пустой):
4. Настроить конфигурационный файл globals.js, указав данные FireFly и Центра Авторизации (ЦА), где:
url - сетевой адрес FireFly;
servers - список гуидов серверов (графов) на FireFly, где local (по умолчанию) - означает локальный сервер.
Пример массива из подключений:
"firefly": [{ "url": "ws://192.168.11.2:8095/ws", "servers": ["local"] },
{ "url": "ws://192.168.11.2:8096/ws", "servers": ["local"] }], где 192.168.11.2:8095 – это 0 индекс подключения:
Где:
authid - имя пользователя в ЦА;
authpass - пароль пользователя в ЦА;
http://192.168.10.146:8888 - базовый сетевой адрес ЦА;
plugins - специфические настройки плагинов, где {} - означает включить плагин, не имеющий настроек (т.е. без ffsoap/post, param-binding);
"ffsoap": {
"ff": 0, - индекс ФФ в секции FireFly;
"address": "10.0.0.26", - адрес, где запущен amjs плагин (откуда будет запрашиваться файл FireFlySoap.wsdl);
"port": 9005, - порт, по которому запрашивается файл FireFlySoap.wsdl;
"wsdl": "FireFlySoap.wsdl" – имя файла, который расположен в корне папки amjsNode }
pulse - настройки пульса FireFly:
timeout - время отсутствия пульса в секундах для того, чтобы считать потерянной связь с FireFly;
reconnection - настройки восстановления соединения:
interval - интервал в секундах перед началом попыток соединения при потере пульса;
mainloop - настройки главного цикла приложения:
delay - искусственная задержка в секундах после каждого главного цикла (нужно для снижения нагрузки на процессор);
3) Обновить типы до версии >= 1200;
4) Запустить amjs через командную строку (находясь в корне папки amjsNode) node amjs.js.
Создание виртуальных соединений (линков)
Для создания виртуальных соединений необходимо:
- 1. Открыть меню «Редактирование», перейти в настройки и выбрать «Расширенный режим»;
- 2. Открыть меню «Редактирование» и перейти в «Редактор типов»;
- 3. Нажать на кнопку , создать тип DynamicClass1. Динамический тип появится в списке типов с названием DynamicClass1:
- 4. Для настройки свойств типа необходимо ЛКМ нажать на DynamicClass1 в списке типов:
- Поле для ввода имени динамического типа (имя должно быть введено на латинице и с заглавной буквы). Имя динамического типа не должно совпадать с именем статического типа;
- Описание параметров – добавление необходимых параметров различных типов$
- Описание – поле для описания типов$
- Текст ошибки – поле для вывода текста ошибки.
- 5. Перейти в описание параметров, нажать на кнопку «Добавить поле» и добавить параметр с названием field1 и типом reference. Имя параметра должно быть введено латинскими буквами, начиная со строчной:
- 6. Принять и сохранить свойства типа$
- 7. Аналогично создать тип DynamicClass2 (можно не добавлять параметры);
- 8. Выйти из редактора типов, добавить созданные элементы на граф и добавить связь field1:ReferenceContainer+ReferenceContent:
Создан виртуальный линк - ReferenceLink:
Дополнительно
Виртуальные линки – это те линки, которых в базе физически нет. Есть только динамический параметр у одного объекта, который содержит идентификатор другого объекта.
Для создания виртуальных линков используются типы параметров reference и referenceList.
Reference – это параметр ссылочного типа представляет собой строку с фиксированным регулярным выражением для разбора гуидов (дефисы без скобок) и дополнительно позволяет задавать имя класса динамических объектов, на которые данная ссылка может указывать (если имя класса не указано, значит данная ссылка может указывать на любой объект). Для дополнительной настройки параметра необходимо нажать на {}:
ReferenceList – это параметр типа список ссылок и позволяет дополнительно задавать: минимальное и максимальное количество элементов в списке, а так же необходимость их уникальности.
Для дополнительной настройки параметра необходимо нажать {}:
- Items – список фиксированных доступных значений;
- minitems – минимальное количество элементов в списке;
- maxitems – максимальное количество элементов в списке;
- uniqueitems – проверка уникальности значений массива.