How to diagnose: различия между версиями

Материал из Wiren Board
Строка 137: Строка 137:


После того как вы определились с проблемным устройством — подключите его на отдельный порт RS-485, настройте и добейтесь стабильной работы: проверьте параметры подключения, снизьте скорость обмена, убедитесь, что в устройстве выставлен верный стоп-бит.
После того как вы определились с проблемным устройством — подключите его на отдельный порт RS-485, настройте и добейтесь стабильной работы: проверьте параметры подключения, снизьте скорость обмена, убедитесь, что в устройстве выставлен верный стоп-бит.
Также возможно что на шине есть два устройства с одинаковым адресом. В таком случае возникают ошибки таймайта и "invalid CRC" Если при отключении "подозрительного" устройства от шины ручной запрос какого-нибудь [[Common_Modbus_Registers стандартного]] регистра, например 128 или [[Wiren_Board_Device_Modbus_Address#Определение адресов всех устройств на шине | сканирование]] шины возвращают ответ - надо искать двойника.


Диагностика устройств, которые работают по протоколу Mosbus TCP или Modbus Over TCP почти не отличается от тех, что подключены к контроллеру по RS-485. Разница лишь в том, что у вас добавляется ещё одно звено — локальная сеть, через которую подключены устройства.
Диагностика устройств, которые работают по протоколу Mosbus TCP или Modbus Over TCP почти не отличается от тех, что подключены к контроллеру по RS-485. Разница лишь в том, что у вас добавляется ещё одно звено — локальная сеть, через которую подключены устройства.

Версия 10:28, 10 ноября 2021

Просмотр системного журнала с помощью journalctl
Просмотр системного журнала в веб-интерфейсе контроллера Wiren Board

Введение

Если в работе контроллера Wiren Board возникают ошибки — найти причину поможет анализ системного журнала.

В контроллерах Wiren Board используется системный сервис журналов journald, который обрабатывает события на запись в лог и сохраняет их в бинарные файлы. По умолчанию настроена очистка старых сообщений журнала, которая не позволит ему занять всё свободное пространство.

Читать журналы можно двумя способами:


Цель диагностики — локализовать и устранить неисправность, общий алгоритм:

  1. Сформулируйте проблему: контроллер перезагружается или не включается, Modbus-устройство работает нестабильно, не работает 4G-модем, не работает веб-интерфейс и т.д.
  2. Смотрите, есть ли в системном журнале ошибки. Прочитайте разделы Основы и Примеры типовых неисправностей — это даст вам понимание того, как всё устроено и поможет понять, что именно искать.
  3. Если нашли в журнале ошибки — внимательно прочитайте их, они дадут понимание того, что происходит и кто виноват. Дополнительно поищите упоминание проблемы на форуме техподдержки, возможно, кто-то уже с ней сталкивался и есть готовое решение.
  4. Если из текста ошибки и результатов поиска на форуме непонятно, что происходит — проверьте, что вы используете свежую версию ПО. Если это не так — обновите прошивку контроллера. Подробнее читайте в статье Обновление прошивки контроллера.

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

Обмен файлами с контроллером можно организовать по протоколу SFTP(SSH File Transfer Protocol), смотрите инструкцию в статье Просмотр файлов контроллера с компьютера.

Основы

Как устроено ПО контроллера

Через MQTT работают драйверы внутренних функций, внешних устройств, веб-интерфейс, система правил

В основе программной архитектуры Wiren Board — MQTT-брокер, в который пишут информацию различные сервисы wb:

  • wb-mqtt-adc — драйвер аналоговых входов
  • wb-mqtt-dac — драйвер аналоговых выходов
  • wb-mqtt-confed — конфигуратор в WebUI
  • wb-mqtt-db — хранение архива данных
  • wb-mqtt-gpio — драйвер для работы с GPIO
  • wb-mqtt-knx — мост KNX
  • wb-mqtt-mbgate — шлюз MQTT-ModbusRTU/TCP
  • wb-mqtt-opcua — шлюз MQTT-OPC UA
  • wb-mqtt-serial — драйвер для serial-устройств
  • wb-mqtt-w1 — драйвер для 1-Wire

Кроме этого, есть сервисы, которые реализуют дополнительные функции:

Подробнее читайте в статье Программное обеспечение Wiren Board.

На контроллер Wiren Board можно установить ПО сторонних разработчиков, которое может сбоить и блокировать нормальную работу контроллера — помните об этом. В большинстве случаев стороннее программное обеспечение так же оставляет записи в системном журнале.

Полезные команды

Команды ниже выполняются в консоли контроллера, подключиться к которой можно через SSH или отладочный порт.

Посмотреть, когда был запущен контроллер:

# who -b
         system boot  Nov  4 13:43

Узнать, когда контроллер перезагружался:

# last -x reboot
reboot   system boot  5.10.35-wb6      Thu Nov  4 13:43   still running
reboot   system boot  5.10.35-wb6      Thu Nov  4 10:39   still running

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

# wb-release
Wirenboard release wb-2108 (as stable), target wb6/stretch

Узнать версию пакета можно с помощью команды apt policy <имя пакета>, например, узнаем версию wb-mqtt-serial:

# apt policy wb-mqtt-serial
wb-mqtt-serial:
  Installed: 2.22.1-wb5
  Candidate: 2.22.1-wb5
  Version table:
 *** 2.22.1-wb5 990
        990 http://deb.wirenboard.com/wb6/stretch stable/main armhf Packages
        100 /var/lib/dpkg/status

Узнать, сколько свободного места на eMMC:

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       976M  581M  329M  64% /
devtmpfs        240M     0  240M   0% /dev
tmpfs           248M     0  248M   0% /dev/shm
tmpfs           248M  584K  248M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           248M     0  248M   0% /sys/fs/cgroup
/dev/mmcblk0p6  4.7G  1.1G  3.4G  24% /mnt/data
tmpfs            50M     0   50M   0% /run/user/0

Посмотреть, какое ядро загружено:

# uname -a
Linux wirenboard-AYXIHFQ6 5.10.35-wb6 #1 Thu Sep 30 00:33:57 UTC 2021 armv7l GNU/Linux

Проверить статус сервиса и посмотреть его последние 10 сообщений в системном журнале можно командой service <имя сервиса> status:

# service wb-mqtt-serial status
● wb-mqtt-serial.service - MQTT Driver for serial devices
   Loaded: loaded (/lib/systemd/system/wb-mqtt-serial.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-11-08 22:21:59 +04; 12h ago
 Main PID: 8180 (wb-mqtt-serial)
   CGroup: /system.slice/wb-mqtt-serial.service
           └─8180 /usr/bin/wb-mqtt-serial

Nov 09 02:29:54 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:241: Serial protocol error: request timed out
Nov 09 02:46:10 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:58: Serial protocol error: request timed out
Nov 09 02:46:41 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 1 coil(s) @ 2 of device modbus:58: Serial protocol error: request timed out
Nov 09 02:53:57 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 6 discrete(s) @ 0 of device modbus:241: Serial protocol error: request timed out
Nov 09 03:54:33 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 6 discrete(s) @ 0 of device modbus:241: Serial protocol error: request timed out
Nov 09 05:39:59 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 3 discrete(s) @ 0 of device modbus:111: Serial protocol error: request timed out
Nov 09 06:50:47 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 1 holding(s) @ 0 of device modbus:58: Serial protocol error: request timed out
Nov 09 08:47:36 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:58: Serial protocol error: request timed out
Nov 09 10:11:34 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 1 discrete(s) @ 4 of device modbus:58: Serial protocol error: request timed out
Nov 09 10:12:15 wirenboard-AYXIHFQ6 wb-mqtt-serial[8180]: WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:58: Serial protocol error: request timed out

Примеры типовых неисправностей

Serial-устройства работают нестабильно

Если устройства, подключённые к портам RS-485 работают нестабильно — проверьте физическое подключение. Несоблюдение рекомендаций по организации шины RS-485, плохой контакт в клеммах и обрывы на линии — частые причины проблем.

Узнать, с каким именно устройством проблемы, можно:

  • в веб-интерфейсе контроллера, на вкладке Devices — каналы такого устройства будут окрашены красным;
  • в сообщениях драйвера wb-mqtt-serial — ищите ошибки обмена error и warning. Если сообщения об ошибках обмена возникают периодически — повод проверить физическое подключение устройств.

Если ошибок обмена в сообщениях драйвера нет, но устройство не работает — включите вывод отладочных сообщений. Как это сделать, смотрите в описании драйвера wb-mqtt-serial.

После того как вы определились с проблемным устройством — подключите его на отдельный порт RS-485, настройте и добейтесь стабильной работы: проверьте параметры подключения, снизьте скорость обмена, убедитесь, что в устройстве выставлен верный стоп-бит.

Также возможно что на шине есть два устройства с одинаковым адресом. В таком случае возникают ошибки таймайта и "invalid CRC" Если при отключении "подозрительного" устройства от шины ручной запрос какого-нибудь Common_Modbus_Registers стандартного регистра, например 128 или сканирование шины возвращают ответ - надо искать двойника.

Диагностика устройств, которые работают по протоколу Mosbus TCP или Modbus Over TCP почти не отличается от тех, что подключены к контроллеру по RS-485. Разница лишь в том, что у вас добавляется ещё одно звено — локальная сеть, через которую подключены устройства.

Не работают модули WBIO

Сперва проверьте правильность подключения и настройки.

Если модули правильно подключены и настроены, но не работают:

  1. В настройках контроллера удалите все модули ввода-вывода.
  2. Выключите контроллер и физически отключите от него все модули, кроме одного.
  3. Включите контроллер и настройте оставшийся модуль по инструкции.
  4. Если модуль появился в веб-интерфейсе на странице Devices — проверьте его работу.

Если подключённый модуль работает без проблем — добавляйте новые модули по одному и не забывайте конфигурировать их в веб-интерфейсе. Дальше у вас или все модули заработают, или вы найдёте тот, который влияет на работу других.

Не открывается страница конфигурации устройств

Перед началом диагностики, попробуйте просто перезагрузить страницу с очисткой кэша браузера — часто помогает. Обычно это можно сделать нажатием клавиш Ctrl+Shift+R или Ctrl+F5 — комбинация зависит от вашего браузера.

Если это не помогло — ищите в логах сообщения от wb-mqtt-serial и wb-mqtt-confed. Особенно интересны сообщения типов error и warning.

Контроллер перезагружается

Контроллер может перезагружаться по ряду причин:

  • Нестабильное питание — просадки напряжения питания ниже допустимого значения могут вызвать перезагрузку.
  • Нехватка места на eMMC.
  • Зависание программ и сервисов — сработает watchdog, которые перезагрузит контроллер.
  • Перезагрузка вызвана пользователем, например, командой shutdown -r now.

Сперва стоит проверить качество питания: уровень напряжения, отсутствие «просадок». Попробуйте подключить контроллер к другому блоку питания.

Если питание стабильно, то причину перезагрузки ищите в сообщениях watchdog и ядра ОС Linux (dmesg). Если контроллер перезагружается в цикле и вы не можете попасть в консоль, попробуйте отключить watchdog.

Контроллер не включается

Здесь нужно определиться, что происходит — подайте питание на контроллер, включите его кнопкой и следите за индикатором:

  • прошла минута, но индикатор не загорается — аппаратная проблема: нет питания, неисправно «железо» контроллера. Если питание в норме и контроллер на гарантии — обратитесь в техподдержку для замены или ремонта.
  • индикатор загорается, но даже через две-три минуты остаётся красного или оранжевого цвета — не загружается ОС: подключитесь к отладочному порту контроллера, перезагрузите его и смотрите сообщения в консоли.
  • индикатор загорается и спустя пару минут начинает мигать зелёным — ОС контроллера загрузилась: попробуйте подключиться к нему по SSH. Если это удалось, точнее сформулируйте неисправность: не заходит в веб-интерфейс, не работают подключённые устройства и т.п. Потом начинайте диагностику.

Описание состояний индикатора контроллера смотрите в документации.

Полезные ссылки