КАСКАД
ТехноДок может быть встроен в SCADA-систему КАСКАД. Пользователь работает с ТехноДок прямо в панели проекта КАСКАД, не переключаясь в браузер, а данные ТехноДок получает из самой SCADA-системы.
Интеграция состоит из двух частей, и настраиваются они независимо друг от друга.
Отображение. В проект КАСКАД добавляется панель technodoc.pnl. Она встраивает веб-интерфейс ТехноДок в экран проекта с помощью компонента WebView.ewo, а адрес сервера, который нужно открыть, берёт из настроек скриптов.
Обмен данными. В проект КАСКАД добавляется менеджер сценариев со скриптом technodoc.ctl. Скрипт запускает XML-RPC-сервер на порту 8242 — HTTP-сервер, который принимает запросы по протоколу XML-RPC. К этому се рверу и обращается ТехноДок, он запрашивает у КАСКАД значения точек данных, алармы и дерево тегов.
Настройка интеграции
Установка компонентов в проект КАСКАД
Компоненты интеграции (панель и CONTROL-скрипты) лежат в дистрибутиве ТехноДок и копируются в проект КАСКАД как обычные файлы проекта. Скрипты работают под управлением отдельного менеджера сценариев: пока он запущен, КАСКАД принимает запросы ТехноДок по протоколу XML-RPC.
Чтобы установить компоненты в проект КАСКАД:
- Скопируйте директории
components/kaskad/panelsиcomponents/kaskad/scriptsиз дистрибутива ТехноДок в корневую директорию проекта КАСКАД. - Запустите консоль проекта.
- Добавьте менеджер сценариев: в опциях менеджера введите
technodoc.ctl, режим запуска укажитеalways.
После запуска менеджера в журнале проекта должна появиться запись XMLRPC-сервер запущен на порту 8242.
Порт XML-RPC-сервера задан в скрипте technodoc.ctl в переменной TECHNODOC_XMLRPC_HTTP_PORT, по умолчанию — 8242. Тот же порт понадобится при подключении ТехноДок к КАСКАД. Если вместо этой записи в журнале появилась ошибка Не удалось запустить XMLRPC-сервер, то порт занят другой программой или в лицензии проекта нет HTTP-сервера. Что делать в этом случае, смотрите в разделе Устранение неполадок.
Подключение ТехноДок к КАСКАД
Соединение позволяет указать адрес XML-RPC-сервера КАСКАД, у которого ТехноДок запрашивает данные.
Чтобы подключить ТехноДок к КАСКАД:
- Откройте в ТехноДок страницу «Внешние соединения».
- Добавьте соединение с типом «КАСКАД 3».
- В поле «Название» укажите название источника данных, например «КАСКАД».
- Проверьте в поле «Адрес сервера» адрес XML-RPC-сервера КАСКАД. Если КАСКАД запущен на другом сервере, измените адрес и нажмите кнопку «Проверить». Если связь есть, появится сообщение об успешном соединении.
- Нажмите кнопку «Сохранить».
В поле «Адрес сервера» по умолчанию указан адрес http://localhost:8242, измените его, если:
- КАСКАД установлен на другом сервере — замените
localhostна сетевое имя или IP-адрес этого сервера, напримерhttp://kaskad.server:8242. - Порт XML-RPC-сервера изменён в скрипте
technodoc.ctlв переменнойTECHNODOC_XMLRPC_HTTP_PORT— замените8242на этот порт.
Назначение остальных полей страницы описано в разделе Справочник соединений.
Отображение ТехноДок в панели проекта
Если ТехноДок установлен на том же сервере, что и КАСКАД, и доступен по стандартному адресу http://127.0.0.1:8003, дополнительно ничего не нужно настраивать. Панель technodoc.pnl из скопированной директории panels сразу можно открыть или встроить в проект средствами КАСКАД.
Если ТехноДок установлен на другом сервере или доступен по другому адресу, укажите этот адрес в настройках скриптов.
- Откройте в проекте КАСКАД скрипт
scripts\libs\Technodoc\Core\technodocServerSettings.ctl. - Задайте в переменной
TECHNODOC_LOCAL_HTTP_ADDRESSадрес, по которому доступен сервер приложений ТехноДок, напримерhttp://technodoc.server:8003. - Обновите библиотеки CTRL в КАСКАД: «Редактировать» → «Обновить библиотеки CTRL».
Бесшовная авторизация
Бесшовная авторизация позволяет пользователю КАСКАД открыть панель ТехноДок без ввода логина и пароля. Панель передаёт ТехноДок логин, имя и группы прав того пользователя, под которым выполнен вход в КАСКАД, и общий для двух систем токен, а ТехноДок по этому токену выполняет вход.
Чтобы включить бесшовную авторизацию:
- Откройте страницу «Администрирование» в ТехноДок.
- Перейдите на вкладку «Аутентификация».
- В разделе «Внешняя» переключите тумблер «Включить» в положение «Включен».
Если включена опция «Создавать учетную запись пользователя при первом входе», заводить учётные записи пользователям КАСКАД заранее не нужно, ТехноДок создаст их сам. Ролей у такой учётной записи нет. Чтобы группы прав КАСКАД переносились в ТехноДок автоматически, включите опцию «Синхронизировать роли пользователей при авторизации». Подробнее эти настройки описаны в статье Системные настройки.
Во всех установках ТехноДок используется один и тот же токен авторизации, поэтому в целях безопасности рекомендуется его сменить.
- Нажмите кнопку «Обновить» рядом с полем «Токен» и сохраните настройки.
- Скопируйте новое значение токена и задайте его в панели
technodoc.pnlв переменнойAUTH_TOKEN. - Откройте панель заново — с этого момента действует новый токен.
Резервирование
В резервированной конфигурации работают по два сервера ТехноДок (app.server1 и app.server2) и КАСКАД (kaskad.primary-server и kaskad.standby-server): если один сервер в паре выходит из строя, пользователи продолжают работать на втором. Серверы ТехноДок равноправны. Рабочая станция подключается к первому доступному. Каждый сервер ТехноДок запрашивает данные у первого доступного сервера КАСКАД, согласно настройкам внешнего соединения.
Чтобы настроить резервирование:
- Разверните резервированный проект КАСКАД на двух серверах, как описано в документации КАСКАД.
- Установите ТехноДок на оба сервера, как описано в статье Установка и обновление.
- Настройте кластер серверов приложений и репликацию базы данных ТехноДок, как описано в разделах Резервирование серверов приложений и Резервирование базы данных статьи «Высокая доступность».
- Установите скрипты ТехноДок и менеджер сценариев на обоих серверах КАСКАД, как описано в разделе Установка компонентов в проект КАСКАД.
- Задайте на каждом сервере КАСКАД в скрипте
scripts\libs\Technodoc\Core\technodocServerSettings.ctlадреса обоих серверов ТехноДок и обновите библиотеки CTRL:dyn_string TECHNODOC_CLUSTER_URLS = makeDynString("http://app.server1:8003", "http://app.server2:8003"); - Создайте соединение с типом «КАСКАД 3» в ТехноДок и добавьте два подключения к серверам
http://kaskad.primary-server:8242иhttp://kaskad.standby-server:8242, как описано в разделе Подключение ТехноДок к КАСКАД.
При открытии ТехноДок из панели technodoc.pnl КАСКАД перебира ет адреса из переменной TECHNODOC_CLUSTER_URLS по порядку и открывает интерфейс первого сервера ТехноДок, который ответил на запрос. Выбор повторяется при каждом запуске панели и при смене пользователя КАСКАД. Если сервер перестанет отвечать во время работы, появится окно «Сервис недоступен» с предложением перейти на резервный сервер, однако войти в него потребуется заново. Чтобы войти без логина и пароля, закройте и откройте панель заново.
Устранение неполадок
- Если после запуска менеджера сценариев в журнале проекта появляется ошибка
Не удалось запустить XMLRPC-сервер, сначала проверьте, есть ли в лицензии проекта КАСКАД HTTP-сервер: без него XML-RPC-сервер не запустится ни на каком порту. Если HTTP-сервер в лицензии есть, значит, порт занят другой программой — задайте свободный порт в переменнойTECHNODOC_XMLRPC_HTTP_PORTскриптаtechnodoc.ctlи перезапустите менеджер. Тот же порт укажите в поле «Адрес сервера» с оединения с типом «КАСКАД 3». - Если при проверке соединения с типом «КАСКАД 3» ТехноДок сообщает об ошибке, убедитесь, что менеджер сценариев со скриптом
technodoc.ctlзапущен и что порт XML-RPC-сервера открыт в брандмауэре на сервере КАСКАД. - Если при открытии панели в журнале КАСКАД появляется ошибка
Не найдено ни одного сервера ТехноДок, то ни один адрес из переменнойTECHNODOC_CLUSTER_URLSне ответил. Откройте адрес сервера с путём/healthв браузере: работающий сервер отвечаетHealthy. Если сервер отвечает, а панель его не находит, проверьте адрес в скриптеtechnodocServerSettings.ctlи доступность порта сервера приложений с сервера КАСКАД. - Если панель открывает прежний сервер ТехноДок после изменения адреса, то правки в скрипте ещё не применены: выберите «Редактировать» → «Обновить библиотеки CTRL», закройте панель и откройте её заново.
- Если в журнале проекта появляется ошибка
Несоответствие версии сервера и клиента, то версии ТехноДок и скриптов КАСКАД разошлись. Скопируйте директорииpanelsиscriptsиз дистрибутива установленной версии ТехноДок в проект КАСКАД и обновите библиотеки CTRL. - Если вместо интерфейса ТехноДок панель показывает форму входа, проверьте, включена ли внешняя аутентификация в настройках ТехноДок и совпадает ли токен в поле «Токен» со значением переменной
AUTH_TOKENв панелиtechnodoc.pnl. - Если при открытии панели с компонентом
WebView.ewoпоявляется ошибкаFailed to create OpenGL context for format QSurfaceFormat..., добавьте в переменные среды переменнуюQT_OPENGLсо значениемangleилиsoftwareи перезапустите КАСКАД.