Диагностика ошибок в работе контроллера Wiren Board

From Wiren Board
This is the approved revision of this page, as well as being the most recent.
Jump to navigation Jump to search
Просмотр системного журнала с помощью 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

Посмотреть нагрузку на процессор и оперативную память в разрезе загруженных программ:

# top
top - 08:52:05 up 16:32,  1 user,  load average: 0.36, 0.54, 0.60
Tasks:  96 total,   3 running,  68 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.9 us,  3.3 sy,  0.0 ni, 88.5 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :   507820 total,    33124 free,   130160 used,   344536 buff/cache
KiB Swap:   262140 total,   262140 free,        0 used.   398184 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                    
 1119 root      20   0  913636  22576  11176 S  2.3  4.4  36:08.75 wb-rules                                                                   
 3642 root      20   0   59272   5408   4812 S  1.6  1.1  12:52.91 wb-mqtt-adc                                                                
14919 root      20   0    5396   2380   1892 R  1.6  0.5   0:00.55 top                                                                        
  349 mosquit+  20   0    8176   5008   3912 S  1.3  1.0  11:31.22 mosquitto                                                                  
    1 root      20   0   25728   5060   3704 S  0.7  1.0   3:14.82 systemd                                                                    
 1129 root      20   0   62212   8256   5368 S  0.7  1.6   7:12.36 main                                                                       
 4262 root      20   0   59320   6180   5580 S  0.7  1.2   4:20.00 wb-mqtt-gpio

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

# 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-устройства работают нестабильно

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

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

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

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

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

Частые симптомы и методы диагностики
Порядок проверки Симптомы Возможная причина Диагностика
1 Устройство не работает или работает нестабильно Неверные настройки подключения Проверьте, что настройки порта RS-485 и устройства одинаковые. Если устройство работает нестабильно, обратите внимание на стоп-бит
2 Устройство не работает или работает нестабильно. В системном журнале периодически возникают ошибки обмена Проблемы с шиной RS-485: плохой контакт, обрывы или наводки на шине Подключите устройство коротким проводом напрямую к контроллеру. Если проблема ушла — проверяйте шину RS-485 на отсутствие физических повреждений и соответствие рекомендациям: RS-485:Физическое подключение
3 Устройство работает нестабильно, в системном журнале есть ошибки таймаута и invalid CRC На шине два устройства с одинаковыми адресами
  • Физически отключите проблемное устройство от шины, запомните его адрес.
  • Считайте с помощью утилиты modbus_client один из регистров по тому же адресу. Для устройств Wiren Board удобно считывать регистр 128.
  • Если ответ пришёл — на линии есть двойник. Смените устройствам адреса на свободные.
4 Устройство стороннего производителя работает нестабильно Проблемы в устройстве
  • Подключите устройство на отдельный порт и добейтесь стабильной работы.
  • Верните устройство на шину к другим устройствам.
  • Если проблемы вернулись — производитель устройства не полностью реализовал Modbus-протокол. Решение: использовать устройство на отдельном порту или не использовать его совсем.

Не работают модули 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. Если это удалось, точнее сформулируйте неисправность: не заходит в веб-интерфейс, не работают подключённые устройства и т.п. Потом начинайте диагностику.

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

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