Контроль сети температурных датчиков modbus r4dcb08

Автор: | 29 ноября, 2022

Часто в промышленной автоматизации возникают задачи простого контроля. Например собрать и отобразить на панели данные по температура с распределенной сети датчиков. Для закрытия этой базовой потребности на одном из экспериментальных проектов я написал небольшое opensourse приложение собирающее информацию по RS485 modbus с температурных модулей r4dcb08.

Использовать профессиональные modbus SCADA системы для этого — как забивать гвозди микроскопом. Сложно и дорого. Открытый исходный код позволит вносить в приложение любые требуемые корректировки, а выбранный фреймвок перенести, при необходимости, на другие операционные системы (но работу с последовательным портом придется немного переписать под другую библиотеку, для лучшей работы в windows я использовал serial_port_win32)

Что такое r4dcb08

Плата r4dcb08 это дешевое устройство для подключения восьми температурных датчиков DS18B20. Платки работают через интерфейс RS485 по протоколу modbus. Для создания сети устройств необходимо настроить в них уникальные сетевые адреса и соединить их параллельно.

RS 485 r4dcb08 USB
Плата r4dcb08 подключенная к USB

Полученная сеть modbus подключаются к компьютеру через обычный преобразователь RS485 — USB.

Что такое DS18B20

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

Микросхема DS18B20 и примеры исполнений температурных датчиков на её основе

Изготавливаются датчики в самых разных форм факторах. Вот например датчик в виде клеммы, для монтажа в автомобиле. Некоторые производители, указывают DS18B20 непосредственно в спецификации на устройство, как например, указано в спецификации спутникового трекера Fort-112.

Настройка платы для работы в modbus сети

Я не нашел документации (да собственно она не нужна, устройство очень простое), поэтому искать способ настройки r4dcb08 пришлось экспериментальным путем, написав небольшой скрипт на Python. Собственно им же, с небольшим изменением, я и менял в дальнейшем сетевые адреса плат. Адрес надо записать в 254 ячейку, ссылка на скрипт в конце статьи.

Конфигурирование приложения

Перед запуском программы необходимо задать её параметры. Настройка производится исправлением config.ini файла. Параметры minimum и maximum это значения, при выходе за заданные границы которых квадратик соответствующего датчика покраснеет.

Пример config.ini файла для плат, у которых сетевые адреса 2 и 3.

[general]
serial = COM7 <- последовательный порт
minimum = 5 <- минимум
maximum = 25 <- максимум

[2] <- сетевой адрес платы 
sensor1 = aaa <- название сенсора
sensor2 = bbb
sensor3 = ccc
sensor4 = ddd
sensor5 = eee
sensor6 = fff
sensor7 = ggg
sensor8 = qqq

[3]
sensor1 = aaa
sensor2 = bbb
sensor3 = ccc
sensor4 = ddd
sensor5 = eee
sensor6 = fff
sensor7 = ggg
sensor8 = qqq

Интерфейс программы

После настройки имен датчиков они отобразятся в панели. На следующем скриншоте подключена только одна плата, с первым датчиком. Температура в градусах Цельсия, такую выдаёт непосредственно сам датчик, никаких коррекций в программе не используется.

Программа - простая СКАД для RS 485 r4dcb08 boards
Простой интерфейс нашей микро-SCADA системы

Ссылки на проект r4dcb08 dashboard

Исходный код и описание проекта на GitHub (Flutter, Windows)

Пример работы с r4dcb08 на Python

Скрипт для смены сетевых адресов r4dcb08 (Python)