Что я могу использовать для реализации сервера BACnet на Ubuntu?

Вопрос или проблема

У меня есть встроенный компьютер на базе ARM, который для обсуждения можно считать Raspberry Pi. Мне нужно реализовать сервер BACnet для связи с системой управления зданием (BMS), и мне нужна возможность реализовать MS/TP (Modbus через BACnet). Этот компьютер имеет встроенный Modbus. Я посмотрел различные пакеты. Bacpypes3 казался многообещающим, но не поддерживает MS/TP. Я посмотрел репозитории и не нашел много интересного. Кажется, есть много устаревших проектов, которым по 20 лет, но не так много текущей поддержки. BACnet и BMS все еще используются, и судя по тому, что я нашел в шлюзах, все они используют Linux, но сделали свое программное обеспечение проприетарным.

Я ищу программное обеспечение, которое сможет справиться с этой задачей, или API, а также… возможно, туториал по настройке сервера BACnet на Ubuntu.

Хотя я не большой поклонник проприетарного программного обеспечения, я готов платить, если это значит, что мой проект сможет заработать в ближайшем будущем.

Ответ или решение

Для реализации сервера BACnet на Ubuntu для вашего встраиваемого ARM-компьютера (аналог Raspberry Pi) необходимо рассмотреть несколько ключевых аспектов, включая совместимость с MS/TP (Modbus Serial Protocol over BACnet) и доступность актуальных библиотек.

1. Выбор программного обеспечения

Хотя BACpypes3 является многообещающим решением, оно действительно не поддерживает MS/TP. Вместо этого я рекомендую рассмотреть следующие варианты:

a. BACnet4J

BACnet4J – это Java-ориентированная библиотека, которая поддерживает различные протоколы BACnet, включая MS/TP. Вы можете использовать Java на Ubuntu для запуска BACnet4J. Однако, вам потребуется некоторое время для настройки Java-среды, если она еще не установлена.

b. BACnet Stack

Это одна из самых активных библиотек, поддерживающих BACnet. Она написана на C и поддерживает работу в средах Linux. В рамках этой библиотеки есть реализация для MS/TP. Для использования BACnet Stack потребуется установить компилятор GCC и соответствующие зависимости.

Линк на проект: BACnet Stack GitHub

2. Установка BACnet Stack на Ubuntu

Для установки BACnet Stack выполните следующие шаги в терминале:

  1. Установка зависимостей:

    sudo apt update
    sudo apt install build-essential git
  2. Клонирование репозитория:

    git clone https://github.com/i2t/bacnet-stack.git
    cd bacnet-stack
  3. Сборка и установка:

    make
    sudo make install
  4. Настройка сети для работы с MS/TP:
    Обязательно настройте параметры сети в соответствии с вашими требованиями к BMS (например, ssid, ip, порт).

3. Пример кода для BACnet сервера

Вот упрощенный пример кода для создания BACnet сервера на C с использованием BACnet Stack:

#include "bacnet.h"

int main() {
    bacnet_init();
    bacnet_start(0); // Запустите сервер на интерфейсе 0 для MS/TP

    while (1) {
        bacnet_poll();
        // Обработка ваших запросов
    }

    bacnet_cleanup();
    return 0;
}

4. Получение данных из Modbus

Если у вас уже есть интегрированный интерфейс Modbus на вашем компьютере, вы можете использовать библиотеки, такие как libmodbus, для работы с Modbus и интегрировать их с BACnet Stack.

5. Дополнительная информация и ресурсы

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

  • Официальная документация BACnet Stack (включая примеры)
  • Форумы и обсуждения на GitHub, где можно задать вопросы и получить советы от других разработчиков.
  • Вы можете также посетить сайти, такие как Stack Overflow, для решения конкретных проблем.

Заключение

Несмотря на то, что пробелы в доступных библиотеках могут вызывать сложности, описанные вами шаги помогут вам успешно реализовать BACnet сервер на Ubuntu с поддержкой MS/TP. Обязательно экспериментируйте с примерами кода и конфигурацией, а также не стесняйтесь обращаться за помощью в сообщества разработчиков. Если у вас есть необходимость в поддержке или более комплексных решениях, вы можете рассмотреть возможность сотрудничества с компаниями, специализирующимися на BACnet.

Оцените материал
Добавить комментарий

Капча загружается...