Программное обеспечение контроллеров Wiren Board
Общие характеристики
Общее | |
---|---|
Процессор | Freescale iMX6ULL 800 MHz Cortex A7 (версии 500MHz и 900MHz под заказ) |
Память оперативная | DDR3 SDRAM 512 MB |
Память энергонезависимая | 4 GB eMMC |
Операционная система | Debian Linux 9 Stretch. Mainline kernel 4.9. |
Габаритные размеры | Корпус на DIN рейку 6U
106.25x90.2x57.5 мм. Размер без корпуса: 103x87x20 мм. |
Эксплуатация | Рабочая температура 0...+70С/-40..+85С
(в зависимости от комплектации). |
Страница продукта и магазин: Wiren Board 6
Для начала работы с контроллером рекомендуется прочитать статью Первое включение.
Описание
Установка
Программное обеспечение устанавливается на заводе на автоматизированном стенде во время производства партии контроллеров. Конечному пользователю не требуется предпринимать никаких действий для установки, все взаимодействие происходит через веб-интерфейс и командную строку.
Стоимость
Программное обеспечение поставляется бесплатно вместе с контроллерами Wiren Board.
Как устроено ПО Wiren Board
Wiren Board работает под управлением Debian Linux. Для архитектуры используемого процессора есть официальный порт, поэтому любое стандартное Linux-приложение можно установить из репозитория одной командой apt install имя_пакета
.
Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает Очередь сообщений MQTT.
По умолчанию установлены Веб-интерфейс Wiren Board, Движок правил wb-rules, а также драйвера и вспомогательные утилиты.
Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в Таблице поддерживаемых устройств, протоколов и программ.
Разработка своих решений
Вы можете разрабатывать своё ПО для контроллеров Wiren Board или собрать собственный образ прошивки с нужными вам настройками, лицензиями и пакетами. Свой образ прошивки можно установить в контроллеры самостоятельно штатными средствами, или мы можем делать это сразу на производстве при заказе отдельной партии.
Исходный код программного обеспечения контроллера доступен на GitHub. Там можно почерпнуть примеры для разработки собственного ПО.
Статьи:
- Обновление прошивки, информация для разработчиков — про структуру разделов и сборку собственного fit-файла.
- Как разрабатывать ПО для Wiren Board — статья для программистов.
- Использование встроенного крипточипа ATECCx08 и статья по теме на Хабре
- Описание протокола MQTT-RPC
Обновление прошивки и релизный цикл
Кратко о релизах
Программное обеспечение контроллеров Wiren Board состоит из множества пакетов, которые мы объединяем в релизы:
- Stable — стабильный релиз: обновление пакетов раз в три месяца и исправления критических ошибок. Рекомендуем для инсталляций, которые делает интегратор и которые работают сейчас.
- Testing — тестовый релиз: свежие версии пакетов с новыми функциями и исправлениями, но возможно и с новыми ошибками. Рекомендуем для активных пользователей (DIY), для инсталляций на стадии стройки и проектирования.
Стабильные релизы имеют номер вида wb-YYMM, где YY — год, а MM — месяц выпуска. Например, wb-2104 — релиз, выпущенный в апреле 2021 года.
Мы будем рады, если вы сможете присоединиться к использованию testing, ведь кроме получения новых фич вы поможете уменьшить количество ошибок в stable.
Ветка | Имя |
---|---|
stable | wb-2404 •wb-2401 • wb-2310 • wb-2307 • wb-2304 • wb-2207 • wb-2204 • wb-2201 • wb-2110 • wb-2108 • wb-2104 |
testing | скользящий релиз, изменения |
Какой релиз на вашем контроллере
С завода на контроллерах Wiren Board установлен актуальный на момент производства стабильный релиз.
Узнать версию релиза можно в веб-интерфейсе контроллера в разделе Устройства в карточке устройства System или в консоли командой wb-release
.
Переключение между релизами
Между релизами можно переключаться вручную. Сделайте резервную копию настроек, подключитесь к контроллеру через SSH и выполните одну из команд:
- Переход со стабильного на тестовый:
wb-release -t testing
- Переход с тестового на стабильный:
wb-release -t stable
После смены релиза рекомендуем перезагрузить контроллер на случай, если обновилось ядро, а также обновить страницу веб-интерфейса в браузере со сбросом кэша (Ctrl+F5 для Chrome), чтобы загрузилась обновленная версия.
Кроме этого, сменить релиз можно с помощью прошивки контроллера fit-файлом, способы и ограничения смотрите в инструкции по обновлению ПО для вашего контроллера.
Обновление прошивки контроллера и откат к заводским настройкам
Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.
Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
Инструкции:
- Как узнать ревизию контроллера
Ревизия контроллера в консоли, при подключении по SSH. Сразу под баннером, зелёными цифрами 6.7.2
Список сервисов и их назначение
Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
systemctl list-units --type=service
Про управление сервисами читайте в статье Диагностика ошибок в работе контроллера.
Имя сервиса | Описание |
avahi-daemon.service | Avahi mDNS/DNS-SD Stack |
bluetooth.service | Bluetooth service |
cgmanager.service | Cgroup management daemon |
cron.service | Regular background program processing daemon |
dbus.service | D-Bus System Message Bus |
dnsmasq.service | dnsmasq - A lightweight DHCP and caching DNS server |
getty@tty1.service | Getty on tty1 |
hostapd.service | LSB: Advanced IEEE 802.11 management daemon |
kmod-static-nodes.service | Create list of required static device nodes for the current kernel |
knxd.service | KNX Daemon |
mosquitto.service | Mosquitto MQTT v3.1/v3.1.1 Broker |
netplug.service | LSB: Brings up/down network automatically |
networking.service | Raise network interfaces |
nginx.service | A high performance web server and a reverse proxy server |
ntp.service | LSB: Start NTP daemon |
rsyslog.service | System Logging Service |
serial-getty@ttymxc0.service | Serial Getty on ttymxc0 |
ssh.service | OpenBSD Secure Shell server |
systemd-fsck-root.service | File System Check on Root Device |
systemd-fsck@dev-mmcblk0p6.service | File System Check on /dev/mmcblk0p6 |
systemd-journal-flush.service | Flush Journal to Persistent Storage |
systemd-journald.service | Journal Service |
systemd-logind.service | Login Service |
systemd-modules-load.service | Load Kernel Modules |
systemd-random-seed.service | Load/Save Random Seed |
systemd-modules-load.service | Load Kernel Modules |
systemd-random-seed.service | Load/Save Random Seed |
systemd-remount-fs.service | Remount Root and Kernel File Systems |
systemd-sysctl.service | Apply Kernel Variables |
systemd-tmpfiles-setup-dev.service | Create Static Device Nodes in /dev |
systemd-tmpfiles-setup.service | Create Volatile Files and Directories |
systemd-udev-trigger.service | udev Coldplug all Devices |
systemd-udevd.service | udev Kernel Device Manager |
systemd-update-utmp.service | Update UTMP about System Boot/Shutdown |
systemd-user-sessions.service | Permit User Sessions |
user@0.service | User Manager for UID 0 |
watchdog.service | watchdog daemon |
wb-configs-early.service | prepare mounts and symlinks to config files |
wb-configs.service | watch config files |
wb-gsm-rtc.service | LSB: initscript to use GSM modem integrated RTC |
wb-homa-ism-radio.service | LSB: MQTT driver for WB HomA for RFM69 ISM radio |
wb-hwconf-manager.service | LSB: Hardware configuration with Device Tree overlays |
wb-init.service | LSB: board-specific initscript |
wb-mqtt-adc.service | MQTT Driver for ADC |
wb-mqtt-confed.service | LSB: Configuration Editor Backend |
wb-mqtt-db.service | Wiren Board database logger |
wb-mqtt-gpio.service | MQTT Driver for GPIO-controlled switches |
wb-mqtt-knx.service | LSB: : Wiren Board MQTT KNX bridge |
wb-mqtt-logs.service | Wiren Board journald to MQTT gateway |
wb-mqtt-mbgate.service | Wiren Board MQTT to Modbus TCP gateway |
wb-mqtt-opcua.service | Wiren Board MQTT to OPC UA gateway |
wb-mqtt-serial.service | MQTT Driver for serial devices |
wb-mqtt-w1.service | Kernel 1-Wire MQTT driver for WB-HomA |
wb-prepare.service | initialize filesystems at first boot |
wb-repart.service | prepare partitions at first boot |
wb-rules.service | MQTT Rule engine for Wiren Board |
wb-systime-adjust.service | Compensation of systime in PPM from value, stored in device-tree (with opposite sign) |
wb-watch-update.service | LSB: Firmware update monitor |
Модульность контроллера
Внутренние модули расширения — это небольшие платы, устанавливаемые внутрь корпуса Wiren Board 6 и расширяющие его функциональность: дополнительные порты RS-485, RS-232, релейные выходы и т. д.
В контроллере есть три слота для подключения модулей расширения двух разных типов. Для двух из этих модулей выведено по 3 внешних клеммника для каждого.
Модули ввода-вывода стыкуются с боковым разъемом на WB6 с правой стороны; каждый модуль добавляет к контроллеру от 8 до 16 цифровых или аналоговых портов.
Последовательно можно подключать до 8 модулей: до 4 модулей ввода (типа I) и до 4-х модуля вывода (типа O и IO).
Модуль резервного питания — дополнительная мезонинная плата, устанавливается вторым этажом в корпус на DIN-рейку. Содержит Li-Ion (Li-Pol) аккумулятором емкостью 2200 mAh, обеспечивает работу контроллера до 3 часов. Выпускается также модуль резервного питания на ионисторах.
Беспроводные интерфейсы
Модуль сотовой связи — модем 2G (GPRS), 3G (UMTS) или NB-IoT устанавливается в контроллер при производстве. Требуется SIM-карта формата microSIM.
Модем позволяет отправлять и принимать SMS, подключаться к интернету. В контроллере имеются два мультиплексируемые SIM-слота.
Модуль Wi-Fi в Wiren Board можно настроить на работу в одном из трёх режимов:
- режим точки доступа, включён по умолчанию (имя WirenBoard, без пароля, адрес контроллера в созданной сети: 192.168.42.1)
- режим клиента
- одновременная работа в режиме и точки доступа, и клиента
Модуль Bluetooth 4.0 (Bluetooth Low Energy) — можно отслеживать приближение других Bluetooth устройств, например, мобильного телефона или Bluetooth-метки.
Подключаемый в USB-разъем USB-стик Z-Wave обеспечивает поддержку устройств стандарта Z-Wave.
Пакетное радио 433 МГц — радиомодуль RFM69H устанавливается в контроллер при производстве. Позволяет подключать к контроллеру устройства Noolite, датчики Oregon.
Антенны Wi-Fi, GSM и радио 315/433MHz подключаются к разъемам SMA.
При слабом сигнале GSM рекомендуется использовать выносную антенну и располагать ее вдали от контроллера.
Проводные интерфейсы
Интерфейс Ethernet поддерживает скорость 10/100 Мбит/с. Контроллер Wiren Board 6 комплектуется двумя интерфейсами Ethernet.
Контроллер оборудован двумя портами USB 2.0 (A/F). Оба порта работают в режиме USB Host; в следующих версиях контроллера первый порт (ближний к Ethernet-разъему) будет поддерживать загрузку прошивки контроллера.
Интерфейс RS-485 — стандарт коммуникации по двухпроводной шине.
Контроллер имеет 2 порта RS-485 + можно добавить еще 2 порта модулями расширения RS-485 .
Статья RS-485:Физическое подключение поможет вам правильно выбрать и проложить кабели шины.
Настройка подключения устройств осуществляется в веб интерфейсе.
Стандартно в Wiren Board с подключёнными по RS-485 устройствами работает Драйвер wb-mqtt-serial через систему MQTT-сообщений.
CAN — это стандарт коммуникации по двухпроводной шине.
На контроллере мультиплексирован (выведен на те же клеммники) со вторым портом RS-485.
1-Wire — шина для подключения внешних датчиков по двум или трём проводам. Так как это шина, можно подключить несколько устройств на один порт 1-Wire. ПО контроллера поддерживает подключение температурных датчиков типа DS18B20.
Для питания датчиков удобно использовать выход +5V. Он защищен от короткого замыкания и подачи повышенного напряжения. При питании контроллера от аккумулятора выход +5V остается активным. Также поддерживается программное управление этим выходом (его можно отключать).
Универсальные входы/выходы A1-A4
Универсальный канал Ах объединяет в себе три функции и может работать как:
- Выход "открытый коллектор" — ключ (3А/30В), замыкающий выход на землю
- Аналоговый вход с диапазоном измерений 0 — 28 В
- Дискретный вход — срабатывает при напряжении на клемме 5 В
Каналы W1-W2
Каналы W1 и W2 могут работать как интерфейс для подключения датчиков 1-Wire (по-умолчанию) или как дискретные входы типа "сухой контакт". Обратите внимание, что в режиме дискретного входа срабатывание происходит при замыкании сигнала Wx на землю (клеммник GND), в отличие от каналов A1-A4 (выше).
Режим каждого канала выбирается независимо в конфигурации контроллера. Через веб-интерфейс нужная настройка находится в разделе Configs => Hardware Module Configuration => W1 terminal mode .
Клеммники
Часть клеммников может выполнять более одной функции — смотрите описание входов/выходов и статью Мультиплексирование портов.
подпись |
Max. V, I | cостояние по умолчанию | Функции | ||||
Верхний ряд, левый блок | |||||||
---|---|---|---|---|---|---|---|
Vin | 40V | Входное напряжение, защита от переполюсовки | |||||
GND | "земля", минус блок питания | ||||||
Верхний ряд, правый блок | |||||||
O1-O3 | Входы/выходы 1-го модуля расширения | ||||||
O1-O3 | Входы/выходы 2-го модуля расширения | ||||||
Нижний ряд, правый блок | |||||||
A1-A4 | 40V , 1A | High Z | Выходы "открытый коллектор", ADC | ||||
GND | Для удобства подключения внешних датчиков | ||||||
W1 | 40V | 5V | 1-Wire, GPIO | ||||
W2 | 40V | 5V | 1-Wire, GPIO | ||||
5V out | 5V, 0.5A | 5V | Выход 5V. Отключение при превышении тока. Программное включение-выключение. | ||||
A | 40 V | 0V | порт RS-485 (/dev/RS-485-1) | ||||
B | 40 V | +5V | |||||
L | 40 V | 0V | Порт CAN или RS-485 (/dev/RS-485-2) .
Подключение RS-485: A к клемме A|L, B к клемме B|H. | ||||
H | 40 V | +5V | |||||
Vout* | 1A | Выход питания. Входное напряжение, программное включение-выключение. |
В качестве интерфейсных клемм в контроллере применены клеммы "тип 250". Это самозажимные клипсы. При вставке очищенного одножильного провода в гнездо, он автоматически зажимается пружинной защёлкой. Для вставки многожильных проводов необходимо отжать пружину, нажав на кнопку клипсы (или использовать изолированные штыревые наконечники НШВИ). Кнопка имеет паз под шлицевую отвертку. Для извлечения провода, нужно отжать пружину, нажав на кнопку клипсы, и вытащить провод.
Другие интерфейсы
Отладочный порт — подключившись к нему можно получить прямой доступ к консоли контроллера. Через него можно также взаимодействовать с загрузчиком и следить за загрузкой операционной системы (последовательная консоль, serial console).
"Пищалка" — издает звуковой сигнал, частота настраивается.
Часы реального времени RTC питаются от внутренней резервной батарейки.
Сторожевой таймер
Отдельный аппаратный watchdog, перезагружающий контроллер целиком по питанию при зависании ПО.
Hardware_Watchdog_Disable/Отключение аппаратного сторожевого таймера
Питание
На контроллере есть три внешних входа для подключения питания:
- DC jack - стандартный штекерный разъем (5.5x2.1мм) на левой стороне корпуса.
- Клеммники Vin и GND: две клеммы Vin, к которым можно подключить два независимых блока питания для резервирования. Земли блоков питания должны быть соединены и подключены к клемме GND.
- Питание по кабелю Ethernet (Passive PoE). Подробнее в Power over Ethernet.
Возможно одновременное подключения источников к разным входам, в том числе с разным напряжением.
Для резервного питания можно подключить внутренний модуль WBMZ-BATTERY2 с Li-Ion (Li-Pol) аккумулятором. Для WB6 выпускается также модуль резервного питания на ионисторах.
Допустимый диапазон питания 9 — 36 В. Среднее потребление платы - 1,5 — 2 Вт. Но так как модуль GSM потребляет импульсно до 8 Вт, рекомендуется использовать блоки питания с мощностью не менее 10 Вт.
Поддерживаемые устройства
Подробное тех.описание платы контроллера
В статье Wiren Board 6:Аппаратная часть описаны некоторые особенности работы и устройства входов, схемы питания контроллера.
Аппаратные ошибки/особенности Wiren Board 6 найденные при эксплуатации контроллера.
Wiren Board: Аппаратные ревизии — описание изменений в плате контроллера.
Таблицы соответствия GPIO процессора и сигналов на плате для ревизий: Wiren Board 6.0.1, Wiren Board 6.1, Wiren Board 6.2-6.3
Работа с GPIO — как работать с GPIO напрямую.