SCADA SAMUTAGSCADA SAMUTAGРуководство пользователя Открыть Studio
РуководствоОбслуживание и поиск неисправностей

Обслуживание и поиск неисправностей

Обновления, резервные копии, журналы и последовательность диагностики.

С чего начинать диагностику

Запишите время, компонент, действие и полный текст сообщения. Затем установите, на каком участке возникла ошибка: браузер → Studio/HMI, Studio → узел, Runtime → I/O либо Runtime → Historian.

В Studio используйте журнал соответствующего узла и фильтр источника. Для проблем запуска нужны журналы ОС:

systemctl status samutag-studio samutag-runtime samutag-hmi samutag-historian --no-pager
journalctl -u samutag-studio -n 150 --no-pager
journalctl -u samutag-runtime -n 150 --no-pager
journalctl -u samutag-hmi -n 150 --no-pager
journalctl -u samutag-historian -n 150 --no-pager

Для наблюдения в реальном времени добавьте -f. Если терминал показывает байтовые последовательности вместо кириллицы, проверьте UTF-8-локаль и вывод без программы постраничного просмотра: journalctl -u samutag-historian -o cat --no-pager. Для обращения в техническую поддержку сохраните сообщения за время возникновения ошибки.

Журналы узлов в Studio

  1. Откройте проект и перейдите на вкладку «Узлы». Откройте нужный Runtime, Historian или АРМ и перейдите к просмотру его состояния.
  2. Разверните блок «Журнал узла». Кнопка «Обновить» получает сообщения от выбранного узла. Если служба недоступна, проверьте её журнал средствами ОС, как показано выше.
  3. Начните с источника и уровня «Все», чтобы увидеть последовательность событий: запуск, отказ, повторные попытки и восстановление.
  4. Найдите время сбоя, затем ограничьте выборку источником, уровнем, текстом и периодом.
Журнал узла в Studio: фильтры, время, уровень, источник, сообщение и кнопки страниц
Учебный пример журнала Runtime: ошибки I/O, потеря связи с Historian, восстановление связи и завершение доставки очереди. Новые записи показаны сверху. Нажмите на изображение, чтобы открыть его в полном размере.
ЭлементКак использовать
ИсточникВыберите службу, подсистему или конкретный I/O-сервер. Список формируется по источникам имеющихся записей.
УровеньВыбирает только указанный уровень. Например, ERROR не включает WARNING или CRITICAL. Для общей картины оставьте «Все».
ПоискВведите часть сообщения или имени источника и нажмите Enter. Например, имя I/O-сервера, путь тэга или «Historian».
С / ПоЗадайте начало и конец периода, затем нажмите «Обновить». Время отображается в часовом поясе браузера; при сравнении с журналом ОС учитывайте его часовой пояс.
Время ↓ / ↑Щелчок по заголовку меняет порядок записей. Для разбора последовательности от причины к результату удобно расположить старые записи сверху.
На странице; Первая / Назад / Далее / ПоследняяВыберите количество записей и перемещайтесь между страницами. Счётчик внизу относится к текущей отфильтрованной выборке.
Текст ячейкиНаведите указатель, чтобы прочитать полный текст во всплывающей подсказке. Для обращения в поддержку сохраните время, уровень, источник и сообщение целиком.

Пример: найти ошибку конкретного I/O-сервера

Выберите нужный сервер в поле «Источник», установите уровень ERROR и нажмите «Обновить». На снимке осталась одна запись о закрытии соединения Modbus TCP до получения ответа.

Журнал с фильтром источника I/O PumpPLC и уровня ERROR: ошибка закрытия соединения Modbus TCP
Отбор ошибки учебного I/O-сервера PumpPLC. Чтобы проверить последующее восстановление, верните уровень «Все» и обновите журнал. Нажмите на изображение, чтобы открыть его в полном размере.

Если записей нет, сбросьте источник, уровень, поиск и период. Убедитесь, что выбран нужный узел. Сообщения могли быть удалены по сроку или объёму хранения либо не записываться из-за установленного минимального уровня.

Уровни сообщений и хранение журнала

УровеньЗначениеДействия
DEBUGПодробности выполнения и обмена с оборудованием.Используйте при диагностике. Для Modbus сюда относятся запросы и ответы; сопоставляйте их с картой устройства.
INFOШтатные события: запуск, применение конфигурации, восстановление связи.Проверяйте по ним последовательность действий и завершение восстановления.
WARNINGПредупреждение или временное нарушение работы.Проверьте повторяемость и последующие сообщения. Найдите причину, если предупреждение сохраняется.
ERRORОперация завершилась ошибкой.Определите источник и объект, устраните причину и проверьте повторное выполнение.
CRITICALКритическая неисправность компонента.Проверьте состояние службы и влияние на работающий проект; привлеките обслуживающего специалиста.

В редакторе узла на вкладке «Параметры компьютера» задаются «Минимальный уровень журнала», «Объём журнала, МБ» и «Хранить журнал, дней».

Настройки журнала узла: минимальный уровень DEBUG, объём 100 МБ и хранение 30 дней
Настройки записи журнала. DEBUG используется для подробной диагностики; объём и срок ограничивают хранение старых записей. Нажмите на изображение, чтобы открыть его в полном размере.

Минимальный уровень определяет, какие сообщения записываются: при INFO сохраняются INFO, WARNING, ERROR и CRITICAL, а DEBUG пропускается. Фильтр в просмотре журнала только отбирает уже записанные сообщения и не включает подробное журналирование.

  1. Для диагностики установите DEBUG и сохраните узел.
  2. Передайте обновлённые настройки компоненту: загрузите актуальный проект на Runtime или АРМ, для Historian примените конфигурацию.
  3. Воспроизведите проблему и сохраните сообщения за нужный период.
  4. Верните обычный уровень, например INFO, и снова примените настройки.

Для сохранения журнала Linux в файл используйте, например, journalctl -u samutag-runtime --since "1 hour ago" -o short-iso --no-pager > runtime-log.txt. При необходимости выполните команду с sudo. Для другой службы замените её имя.

Нет соединения с узлом

Сообщение или симптомЧто проверить
Connection refused / WinError 10061На указанном адресе и порту нет принимающей службы либо соединение отклонено. Проверьте запуск службы, её адрес прослушивания и порт.
TimeoutМаршрут, firewall, задержку сети, загрузку сервера и зависшие операции.
401 / 403Авторизацию, токен, права Studio и проекта. Ответ получен от сервера; причиной отказа может быть отсутствие авторизации или необходимых прав.
404Правильность адреса и пути, VirtualHost, совместимость браузерной и серверной частей приложения.
502 / 503 от ApacheРаботу службы за Apache и адрес, указанный в ProxyPass.

Проверьте слушающие порты на машине службы:

ss -ltnp

Адрес loopback (127.0.0.1 или ::1) принимает подключения только с того же компьютера. Если используется 0.0.0.0, подключаться всё равно нужно к реальному IP или DNS-имени.

Графика не меняется или привязка не найдена

  1. Найдите полный путь проблемного символа, включая цепочку вложенных символов и ID элемента.
  2. Откройте источник графики и проверьте выбранный вид анимации, выражение и тип.
  3. Определите, относится ли привязка к локальному параметру символа или к тэгу Runtime. Локальная переменная не обязана иметь серверный источник.
  4. Проверьте владельца this и MyModel, особенно после переноса экземпляров между моделями или изменения композиции.
  5. Сохраните символ и убедитесь, что на HMI загружена актуальная версия проекта. До загрузки обновлённого проекта АРМ продолжает использовать прежнюю графику.
  6. Сравните значение и качество тэга в просмотре Runtime с ожидаемым условием.

Если вложенный символ отсутствует или повреждён, исправьте ссылку на его источник и загрузите обновлённую графику на АРМ.

Ошибки загрузки и восстановления проекта

Если восстановление завершилось ошибкой, запишите её текст, время и этап операции. Проверьте, что выбран архив проекта SAMUTAG и файл полностью скопирован на компьютер. Сохраните исходный архив до успешного восстановления.

Если сообщение указывает на превышение допустимого размера файла, обратитесь к администратору Studio для проверки ограничений загрузки. При повторяющейся ошибке передайте в техническую поддержку версию Studio, текст сообщения и журнал за время операции.

Сообщение или симптомЧто делать
HTTP 413; превышен допустимый размер файлаПроверьте ограничения размера загрузки в Studio и обратном прокси. После согласованного изменения повторите импорт того же архива.
Сервер не принял архив, HTTP 404Проверьте адрес Studio, маршрутизацию Apache и актуальность установленной версии. Обновите страницу. Сам по себе код 404 не означает превышения размера архива.
Internal Server Error / HTTP 500Запишите время и номер операции. Найдите исключение в журнале samutag-studio за этот период. Передайте его полный текст в поддержку, если причина не связана с очевидным отказом базы или заполнением диска.
Конфликтующие данные; duplicate key; несовместимые связи объектовСохраните архив и сведения об объекте из сообщения. Проверьте совместимость версии Studio, при необходимости обновите её и повторите импорт. Не удаляйте строки базы вручную для обхода ошибки.
Процесс восстановления прерванПроверьте перезапуск службы, свободное место и журнал ОС. Перед повтором посмотрите список проектов и состояние последней операции, чтобы не создавать лишние копии.

История не поступает

  1. Проверьте, включена ли история у тэга и применён ли актуальный состав параметров.
  2. Проверьте Runtime: есть ли успешные сканы и подключение к выбранному Historian.
  3. Проверьте Historian: доступна ли база, завершена ли подготовка схемы, хватает ли места.
  4. Оцените очередь доставки и счётчики потерь. После восстановления связи дождитесь догрузки.
  5. Проверьте часы и период запроса, затем наличие восстановленных архивных суток.

Если база Historian не готова к работе, проверьте параметры подключения и права пользователя базы данных. Причина отказа указана в журнале службы. Если исправление настроек не помогло, передайте сообщение в техническую поддержку.

Сообщение или симптомЧто делать
Связь с Historian потерянаПроверьте службу Historian, её адрес и порт, доступность сети и токен проекта. После устранения причины найдите сообщение «Связь с Historian восстановлена», затем сообщение о доставке всех накопленных файлов. Восстановление связи ещё не означает окончания догрузки.
База Historian не готова. Данные не принятыПроверьте PostgreSQL и параметры подключения Historian. Найдите исходную причину в журнале samutag-historian. Убедитесь, что подготовка базы завершилась и новые пакеты принимаются.
UndefinedTable / relation … does not existЗапишите имя отсутствующей таблицы. Проверьте, что служба подключена к нужной базе, а её роль имеет права подготовки схемы. Проверьте сообщения запуска и версию Historian. Не создавайте таблицу вручную без проверки её структуры.
password authentication failed; permission deniedПроверьте имя базы, роль и пароль, правила доступа PostgreSQL и необходимые права роли. Исправьте параметры подключения или права и повторно проверьте готовность базы.
Дисковая очередь Historian заполнена; каталог очереди недоступенПроверьте связь с Historian, доступное место, лимит очереди и права службы на каталог. После исправления контролируйте уменьшение очереди и счётчики потерь. Не удаляйте недоставленные сегменты.
История есть, но показана со сдвигом по времениСравните часы и часовые пояса Runtime, Historian и браузера, проверьте выбранный период. Не меняйте часы сервера только для визуального совмещения графика.

Ошибки ввода-вывода и качества тэгов

В просмотре Runtime добавьте проблемный тэг в область «Значения» и сравните его значение, качество и текст ошибки с журналом соответствующего I/O-сервера. Ниже приведены характерные сообщения и порядок проверки.

Сообщение или симптомЧто делать
Неизвестная ссылка I/O: сервер.переменнаяСверьте имя сервера и переменной с картой, назначение I/O-сервера узлу и вычисленное значение ссылки. После исправления сохраните проект и загрузите его на Runtime.
Соединение Modbus TCP закрыто до получения ответаПроверьте доступность контроллера или шлюза, ограничения числа соединений и таймаут простоя на устройстве. При повторении включите DEBUG и сопоставьте запросы с ответами. Успешное повторное чтение должно восстановить обмен.
Истёк общий таймаут запроса Modbus; неполный ответ Modbus RTUПроверьте адрес, порт или последовательный интерфейс, Unit ID, скорость, чётность и стоп-биты. Сравните таймаут со временем ответа устройства. Период опроса и таймаут запроса — разные настройки: ожидание следующего цикла само по себе не является ошибкой чтения.
Код функции не совпадает; неверное число регистров; некорректный заголовокСверьте протокол, область данных, адресацию от 0 или 1, тип и размер значения с документацией устройства. Проверьте, что выбран нужный шлюз и Unit ID.
Запись запрещена настройками I/O-сервераПроверьте слайдер «Запретить запись». Если сервер предназначен только для чтения, устраните ненужные команды записи в проекте. Разрешайте запись только когда она предусмотрена назначением системы.
Нет права активного сервера: запись или обмен I/O запрещеныПроверьте активную сторону резервной пары и её связь с партнёром. Не включайте принудительную запись на обеих сторонах для обхода ограничения.
Ошибка чтения OPC UAПроверьте адрес сервера, режим защиты, сертификаты и реквизиты доступа. Сверьте NodeId и тип переменной с картой сервера. Проверьте чтение после обновления карты и загрузки проекта.
Качество периодически становится плохимНайдите соответствующие ошибки чтения и их частоту. Проверьте сеть, нагрузку устройства и число неудачных попыток в настройках I/O-сервера. После успешного чтения проверьте качество и возврат аварии в норму; увеличение числа попыток не устраняет причину отказов.

Ошибки Runtime и скриптов

Сообщение или симптомЧто делать
Служба ожидает загрузку проекта / IDLEСлужба запущена, но не выполняет проект. Проверьте назначенные модели и загрузите проект на нужный узел.
Runtime-workers ещё не готовыПроверьте этап запуска и журнал. Если состояние не меняется, найдите ошибку загрузки worker, проверьте память, свободное место и лицензию. Не запускайте несколько одинаковых загрузок одновременно.
Неизвестная переменная; несовместимый типПо полному пути найдите экземпляр, символ или скрипт, затем строку и столбец ошибки. Проверьте имя, тип и контекст this / MyModel, особенно после изменения композиции. Исправьте источник, выполните проверку и повторите загрузку.
Превышено максимальное время исполнения скриптаПроверьте условия завершения циклов и объём вычислений. Сократите работу одного запуска, измерьте длительность и только после этого пересмотрите предел времени.
Runtime-worker занят IPC-запросомЗапишите название операции и длительность ожидания. Проверьте журнал worker и I/O-серверов за тот же период, загрузку процессора и задержки устройства. При повторении передайте эти сведения в поддержку.
Оценка ёмкости завершилась по таймаутуПосмотрите последний завершённый этап, текущую нагрузку и доступные ресурсы. Повторите оценку при меньшей нагрузке. Предыдущий успешный результат сохраняется, но не подтверждает производительность изменённого проекта.

После исправления проверьте успешные циклы Runtime, нужные значения и качество тэгов. Отсутствие новых ошибок в узком фильтре не заменяет проверку фактической работы.

Ошибки лицензии и доступа к файлам

Сообщение или симптомЧто делать
Требуется …, доступно …Проверьте суммарное использование компонента на хосте, включая другие его узлы. Установите лицензию нужной ёмкости либо уменьшите назначенный состав проекта.
Достигнут предел операторских подключенийЗакройте ненужные сеансы и дождитесь освобождения мест. Проверьте лимит в блоке лицензии АРМ; при необходимости увеличьте его.
Лицензия выдана другому хостуСформируйте запрос на том компьютере или ВМ, где работает компонент, и передайте его поставщику для выдачи подходящего файла.
Лицензия повреждена, подпись неверна или ключ издателя неизвестенПовторно получите исходный файл от поставщика и проверьте совместимость версии компонента. Не редактируйте содержимое лицензии вручную.
Срок лицензии истёк; версия выпущена после окончания права на обновленияПроверьте системную дату и условия выданной лицензии. Обратитесь к поставщику за продлением или совместимым файлом.
Unable to open database file; Read-only file system; Permission deniedОпределите каталог по полному тексту ошибки. Проверьте существование пути, владельца, права служебного пользователя и разрешённые каталоги systemd. Для лицензирования это обычно /var/lib/samutag-licensing. Исправьте доступ к нужному каталогу, не отключая защиту службы целиком.
No space left on deviceПроверьте свободное место и inode. Освободите место за счёт согласованной очистки журналов, старых релизов или архивов; сохраните рабочие базы и недоставленные очереди. После этого повторите операцию.

Порядок получения запроса и установки файла со снимками Studio приведён в разделе «Лицензирование». Если причина не определена, передайте в поддержку версию компонента, полный текст ошибки, время и журнал соответствующего узла.

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

Разделите копирование на три независимые задачи: проект Studio, установка с секретами и исторические данные. Проектный ZIP удобен для переноса и восстановления конфигурации. Копия PostgreSQL Studio и ключей нужна для восстановления среды. Historian требует базы, архивных файлов и конфигурации.

Храните хотя бы одну копию вне диска, на котором работает система. Опишите порядок восстановления и регулярно проверяйте его на отдельной машине. Перед обновлением сделайте свежую копию и запишите версии всех компонентов.

Пример логического резервирования PostgreSQL с запросом пароля, для пользователя с необходимыми правами:

pg_dump -h 127.0.0.1 -U samutag_studio -W -Fc -f studio-backup.dump samutag_studio
pg_dump -h 127.0.0.1 -U samutag_historian -W -Fc -f historian-backup.dump samutag_historian

Подставьте свои имена базы и роли. Для Historian отдельно согласуйте момент копирования каталога архивов: его состояние должно соответствовать базе. Не восстанавливайте тестовую копию поверх действующей системы без отдельного плана.

Что сохранять для восстановления системы
  1. Проект StudioЭкспорт конфигурации; при необходимости включите историю изменений.
  2. Базы данныхОтдельные резервные копии PostgreSQL Studio и Historian.
  3. Файлы службКонфигурации узлов, лицензии и архивы Historian.
  4. Контроль восстановленияПроверьте копии на отдельной установке, не подключённой к оборудованию.

Обновление и очистка старых релизов

  1. Сделайте резервные копии и запишите текущие версии.
  2. Выберите совместимые дистрибутивы и предусмотрите окно обслуживания.
  3. Запустите install.sh соответствующего компонента. Сохраните существующие конфигурации и ключи.
  4. Проверьте состояние служб, подключение, права и лицензию.
  5. При необходимости повторно загрузите проект на Runtime и HMI и примените конфигурацию Historian.
  6. После проверки удалите ненужные релизы по предложению установщика. Оставьте предыдущий релиз и резервную копию для восстановления.

Возврат к старому исполняемому каталогу не отменяет уже применённые изменения структуры базы данных. Поэтому старый релиз на диске не является полноценной резервной копией. Для обновления используйте установщик соответствующего дистрибутива.

Для удаления установленного компонента поставка размещает uninstall.sh. Перед запуском изучите предлагаемые действия и сохраните нужные данные. Проверьте отдельно, какие действия относятся к программе, а какие — к её данным.

Последовательность обновления
  1. ПодготовкаСохраните резервные копии и сведения об установленных версиях.
  2. УстановкаОбновите выбранный компонент по инструкции его дистрибутива.
  3. ПроверкаПроверьте запуск службы, соединения, журнал и выполнение проекта.
  4. ОчисткаУдаляйте прежние релизы после проверки новой установки.

Проверка перед вводом в работу

В тестовой среде проверьте нормальный режим, отказ канала, остановку I/O, переподключение, перезапуск узла и заполнение диска.

  • Известные измерения совпадают с контроллером, единицы и масштабирование верны.
  • Запись разрешена только нужным пользователям и тэгам; запрет сервера действительно блокирует команды.
  • Плохое качество видно оператору и создаёт настроенную аварию.
  • Скрипты укладываются в требуемый цикл при максимальной нагрузке.
  • История догружается после разрыва связи; старые периоды восстанавливаются из архива.
  • Резервная пара испытана при отказе узла и разделении сети.
  • Резервная копия восстановлена на отдельной машине и проверена.

По результатам зафиксируйте версии, условия нагрузки, измеренные задержки и ответственных за сопровождение.

Руководство SCADA системы SAMUTAG. © Самунов А.С. (2026)