Skip to main content

КАСКАД

ТехноДок может быть встроен в SCADA-систему КАСКАД. Пользователь работает с ТехноДок прямо в панели проекта КАСКАД, не переключаясь в браузер, а данные ТехноДок получает из самой SCADA-системы.

Интеграция состоит из двух частей, и настраиваются они независимо друг от друга.

Отображение. В проект КАСКАД добавляется панель technodoc.pnl. Она встраивает веб-интерфейс ТехноДок в экран проекта с помощью компонента WebView.ewo, а адрес сервера, который нужно открыть, берёт из настроек скриптов.

Обмен данными. В проект КАСКАД добавляется менеджер сценариев со скриптом technodoc.ctl. Скрипт запускает XML-RPC-сервер на порту 8242 — HTTP-сервер, который принимает запросы по протоколу XML-RPC. К этому серверу и обращается ТехноДок, он запрашивает у КАСКАД значения точек данных, алармы и дерево тегов.

Настройка интеграции

Установка компонентов в проект КАСКАД

Компоненты интеграции (панель и CONTROL-скрипты) лежат в дистрибутиве ТехноДок и копируются в проект КАСКАД как обычные файлы проекта. Скрипты работают под управлением отдельного менеджера сценариев: пока он запущен, КАСКАД принимает запросы ТехноДок по протоколу XML-RPC.

Чтобы установить компоненты в проект КАСКАД:

  1. Скопируйте директории components/kaskad/panels и components/kaskad/scripts из дистрибутива ТехноДок в корневую директорию проекта КАСКАД.
  2. Запустите консоль проекта.
  3. Добавьте менеджер сценариев: в опциях менеджера введите technodoc.ctl, режим запуска укажите always.

После запуска менеджера в журнале проекта должна появиться запись XMLRPC-сервер запущен на порту 8242.

Примечание

Порт XML-RPC-сервера задан в скрипте technodoc.ctl в переменной TECHNODOC_XMLRPC_HTTP_PORT, по умолчанию — 8242. Тот же порт понадобится при подключении ТехноДок к КАСКАД. Если вместо этой записи в журнале появилась ошибка Не удалось запустить XMLRPC-сервер, то порт занят другой программой или в лицензии проекта нет HTTP-сервера. Что делать в этом случае, смотрите в разделе Устранение неполадок.

Подключение ТехноДок к КАСКАД

Соединение позволяет указать адрес XML-RPC-сервера КАСКАД, у которого ТехноДок запрашивает данные.

Чтобы подключить ТехноДок к КАСКАД:

  1. Откройте в ТехноДок страницу «Внешние соединения».
  2. Добавьте соединение с типом «КАСКАД 3».
  3. В поле «Название» укажите название источника данных, например «КАСКАД».
  4. Проверьте в поле «Адрес сервера» адрес XML-RPC-сервера КАСКАД. Если КАСКАД запущен на другом сервере, измените адрес и нажмите кнопку «Проверить». Если связь есть, появится сообщение об успешном соединении.
  5. Нажмите кнопку «Сохранить».

В поле «Адрес сервера» по умолчанию указан адрес 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 сразу можно открыть или встроить в проект средствами КАСКАД.

Если ТехноДок установлен на другом сервере или доступен по другому адресу, укажите этот адрес в настройках скриптов.

  1. Откройте в проекте КАСКАД скрипт scripts\libs\Technodoc\Core\technodocServerSettings.ctl.
  2. Задайте в переменной TECHNODOC_LOCAL_HTTP_ADDRESS адрес, по которому доступен сервер приложений ТехноДок, например http://technodoc.server:8003.
  3. Обновите библиотеки CTRL в КАСКАД: «Редактировать» → «Обновить библиотеки CTRL».

Бесшовная авторизация

Бесшовная авторизация позволяет пользователю КАСКАД открыть панель ТехноДок без ввода логина и пароля. Панель передаёт ТехноДок логин, имя и группы прав того пользователя, под которым выполнен вход в КАСКАД, и общий для двух систем токен, а ТехноДок по этому токену выполняет вход.

Чтобы включить бесшовную авторизацию:

  1. Откройте страницу «Администрирование» в ТехноДок.
  2. Перейдите на вкладку «Аутентификация».
  3. В разделе «Внешняя» переключите тумблер «Включить» в положение «Включен».

Если включена опция «Создавать учетную запись пользователя при первом входе», заводить учётные записи пользователям КАСКАД заранее не нужно, ТехноДок создаст их сам. Ролей у такой учётной записи нет. Чтобы группы прав КАСКАД переносились в ТехноДок автоматически, включите опцию «Синхронизировать роли пользователей при авторизации». Подробнее эти настройки описаны в статье Системные настройки.

Предупреждение

Во всех установках ТехноДок используется один и тот же токен авторизации, поэтому в целях безопасности рекомендуется его сменить.

  1. Нажмите кнопку «Обновить» рядом с полем «Токен» и сохраните настройки.
  2. Скопируйте новое значение токена и задайте его в панели technodoc.pnl в переменной AUTH_TOKEN.
  3. Откройте панель заново — с этого момента действует новый токен.

Резервирование

В резервированной конфигурации работают по два сервера ТехноДок (app.server1 и app.server2) и КАСКАД (kaskad.primary-server и kaskad.standby-server): если один сервер в паре выходит из строя, пользователи продолжают работать на втором. Серверы ТехноДок равноправны. Рабочая станция подключается к первому доступному. Каждый сервер ТехноДок запрашивает данные у первого доступного сервера КАСКАД, согласно настройкам внешнего соединения.

Чтобы настроить резервирование:

  1. Разверните резервированный проект КАСКАД на двух серверах, как описано в документации КАСКАД.
  2. Установите ТехноДок на оба сервера, как описано в статье Установка и обновление.
  3. Настройте кластер серверов приложений и репликацию базы данных ТехноДок, как описано в разделах Резервирование серверов приложений и Резервирование базы данных статьи «Высокая доступность».
  4. Установите скрипты ТехноДок и менеджер сценариев на обоих серверах КАСКАД, как описано в разделе Установка компонентов в проект КАСКАД.
  5. Задайте на каждом сервере КАСКАД в скрипте scripts\libs\Technodoc\Core\technodocServerSettings.ctl адреса обоих серверов ТехноДок и обновите библиотеки CTRL:
    dyn_string TECHNODOC_CLUSTER_URLS = makeDynString("http://app.server1:8003", "http://app.server2:8003");
  6. Создайте соединение с типом «КАСКАД 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 и перезапустите КАСКАД.