Система управления обогревом дома с Modbus TCP#
В практическом руководстве демонстрируется проведение полунатурного моделирования в REPEAT VISION с использованием протокола Modbus TCP. Внешним физическим устройством является контролллер Arduino UNO в связке с Ethernet-модулем ENC28J60, а в качестве моделируемой системы выступает тепловая модель дома.
Полунатурное моделирование - это исследование, при котором часть математической модели системы является реальным физическим объектом. Методы полунатурного моделирования эффективно применяют при разработке и отладке разнообразных систем автоматического управления.
Современные системы управления обогревом жилых помещений требуют гибкости, масштабируемости и возможности интеграции с другими компонентами «умного дома». Одним из наиболее распространенных протоколов для промышленной автоматизации является Modbus, благодаря своей открытости и поддержке различными устройствами. В частности, Modbus TCP – ethernet-версия протока, обеспечивающая удобное сетевое взаимодействие между контроллерами и полевыми устройствами.
В качестве примера такой системы, рассмотрим простую систему управления обогревом дома с управлением по Modbus TCP.
Важно
Часть блоков для данного примера, а именно Настройки клиента Modbus, Modbus Write, Modbus Read, доступны к использованию только в локальной версии REPEAT VISION.
1. Общая структура модели#
Тепловая модель дома в REPEAT VISION (мат. модель);
Система управления – микроконтроллер Arduino UNO в связке с Ethernet-модулем ENC28J60, реализующий логику Modbus TCP сервера.
2. Тепловая модель дома#
Тепловая модель представляет собой динамическую модель разрабатываемого объекта, учитывающую требуемые эффекты и условия его эксплуатации. В зависимости от конкретных задач и требований технического задания модель может создаваться с различной степенью детализации для учёта физических процессов, протекающих в объекте и в окружающей среде. Используя тепловую модель, можно проводить расчеты и оптимизацию системы обогрева. Она позволяет проверить принятые технические решения и снизить риски перед реализацией проекта в виде натурного объекта.
Тепловая модель, представлена на рис. 1, состоит из блоков библиотек Автоматика и Теплообмен. Основные конструкции дома выполнены тремя тепловыми массами. Центральная тепловая масса отражает усредненные параметры выбранной конструкции, а две остальные – температуры на поверхностях.
Режим включения и отключения нагревателя осуществляется при достижении температуры воздуха в доме с 18 до 22 ̊ С. Температура воздуха на выходе из нагревателя составляет 50 ̊ С. На данные параметры и будем ориентироваться при построении системы управления тепловой модели.
Более подробно ознакомиться с данной моделью можно на странице РОСАТОМ
Рис. 1 Тепловая модель дома#
3. Установка блоков Modbus в REPEAT VISION#
В контексте управления обогревом дома использование протокола Modbus TCP позволяет организовывать обмен данными между контроллером и имитационной моделью мониторинга. Настройка тепловой модели дома для связи по Modbus TCP осуществляется использованием блоков Modbus, которые находятся в библиотеке Внешние модели REPEAT VISION. Для работы с Modbus TCP предусмотрено три блока, которые приведены на рис. 2:
Настройки клиента Modbus – блок настраивает связь с подключаемым Slave-устройстов, а именно такие характеристики как IP-адрес, порт, время подключения.
Modbus Write – блок записывает значения из модели в регистры внешнего управляющего контроллера.
Modbus Read – позволяет считывать значения с внешнего управляющего контроллера и передавать их в модель.
Поскольку в данном примере мы регулируем работу нагревателя в зависимости температуры в помещении, то реализуем следующую логику передачи сигналов. Измерение температуры фиксирует блок №34 Датчик температуры, сигнал с блока передаётся в блок №33 Modbus Write, который выполняет операцию записи значения сигнала в указанный регистр хранения. Во внешнем контроллере температура из модели обрабатывается по условию, что приходящее значение х должно находиться в границах от 18 до 22 ℃ (1) :
Если значение температуры находится в заданных пределах или меньше 18 ℃, то контроллер передает сигнал включения, условная 1, на блок №39 Переключатель, внутреннее помещение дома продолжает нагреваться. В случае, когда значение температуры больше 22 ℃, то контроллер передает сигнал выключения, условный 0, на блок №39 Переключатель, помещение начинает охлаждаться.
Данная логика прописывается условиями в управляющем контролере (Arduino UNO).
Ответ на включение/отключение переключателя модель получает через блок №29 Modbus Read, из регистра ввода. Весь процесс непрерывный, с момента запуска модели на расчет, в течение заданного времени моделирования, составляющего 1 день – 86400 секунд. Итоговая модель системы управления обогревом дома представлена на рис. 3:
Рис. 3 Модель системы управления обогревом дома#
4. Настройка управляющего контроллера#
В качестве внешнего управляющего контроллера выбрана плата Arduino UNO, однако для реализации Slave-устройства необходимо, чтобы микроконтроллер был подключен к сети (роутеру), поэтому подключаем дополнительный Ethernet-модуль – ENC28J60. Схема соединения Arduino UNO и ENC28J60 представлена рис. 4:
Рис. 4 Схема подключения модуля ENC28J60 к Arduino UNO#
Следующим шагом необходимо написать прошивку для микроконтроллера Arduino, чтобы в нем отрабатывалась логика управления (см. раздел Установка блоков Modbus в REPEAT VISION). Заходим в среду Arduino IDE, создаем новый скетч и описываем в нем необходимые нам условия. Условно код программы можно поделить на несколько составных частей:
Инициализация – указываем основные библиотеки, температурные границы, номер регистра хранения и регистра ввода.
#include <EtherCard.h>
#include <Modbus.h>
#include <ModbusIP_ENC28J60.h>
const int TEMPERATURE_HREG = 100; // Holding register
const int CONTROL_IREG = 101; // Input register
// Temperature limits
const int LOWER_THRESHOLD = 18;
const int UPPER_THRESHOLD = 22;
ModbusIP mb;
// State variables
int lastControlState = 0; // Tracks last control state
int lastTemperature = -100; // Initialize with impossible value
Основные настройки – прописываем MAC адрес cети, в которой находится Arduino, и IP-адрес самого Arduino.
Важно
IP-адрес Arduino определяется, только когда плата подключена к модулю ENC28J60, а тот в свою очередь соединен Ethernet кабелем с роутером.
void setup() {
Serial.begin(9600);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 0, 0, 0, 0 }; // IP address arduino
mb.config(mac, ip);
mb.addHreg(TEMPERATURE_HREG, 0); // Initialize with 0
mb.addIreg(CONTROL_IREG, 0); // Initialize with 0
}
Расчетная часть – вводим функцию, отвечающую на Modbus запросы и описываем основную логику контроля температуры.
void loop() {
mb.task(); // Process Modbus requests
int currentTemp = mb.Hreg(TEMPERATURE_HREG);
// Only process if temperature changed
if (currentTemp != lastTemperature) {
if (currentTemp <= LOWER_THRESHOLD) {
lastControlState = 1; // Turn ON
}
else if (currentTemp >= UPPER_THRESHOLD) {
lastControlState = 0; // Turn OFF
}
// Update Modbus registers
mb.Ireg(CONTROL_IREG, lastControlState);
lastTemperature = currentTemp;
// Immediate debug output on change
Serial.print("Temperature: ");
Serial.print(currentTemp);
Serial.print(" | Control State: ");
Serial.println(lastControlState);
}
// Periodic status report
static unsigned long lastPrint = 0;
if (millis() - lastPrint > 5000) {
lastPrint = millis();
Serial.print("[Status] Temp: ");
Serial.print(mb.Hreg(TEMPERATURE_HREG));
Serial.print(" | Control: ");
Serial.println(mb.Ireg(CONTROL_IREG));
}
}
Для удобства контроля информации в расчетной части кода предусмотрены строки выводящие изменения значений в регистрах в Монитор порта, окно терминала в Arduino IDE. После прошивки платы данным кодом, в терминале будет отображаться информация по обоим регистрам, обновляемая каждую секунду, рис. 5:
Рис. 5 Информация из Монитор порта при взаимодействии с моделью#
5. Сборка всей системы#
Завершающим шагом построения системы управления модели обогрева дома является сборка обеих частей в одну структуру. Подключаем ноутбук с REPEAT VISION моделью по Ethernet кабелю к сети, затем подключаем Arduino с модулем по проводу USB A-B к тому же ноутбуку. В свою очередь модуль ENC28J60 тоже должен быть подключен по Ethernet кабелю к сети. Физическая система представлена на рис. 6 ниже.
Важно
И ноутбук и Arduino должны находиться в одной сети, подключены к одному роутеру, чтобы модель могла контактировать с платой по Modbus TCP.
Рис. 6 Физическая часть системы управления обогревом дома#
При подключении платы Arduino к ноутбуку, она автоматически включается, поскольку на нее поступает питание. Соответственно, заложенная ранее в нее прошивка начинает отрабатывать с первых же секунд включения. Переходим в REPEAT VISION и заполняем свойства блоков Modbus.
IP адрес Arduino UNO, указывался в коде программы.
Порт – по умолчанию 502.
Время ожидания подключения – 3000 [мс].
Порядок слов - прямой (Big Endian).
В качестве клиента указываем блок Настройки клиента Modbus.
Slave ID – по умолчанию 1.
Тип операции записи – Регистры хранения.
Тип данных – uint16.
Адрес первого регистра – 100, указанный в коде (TEMPERATURE_HREG).
В качестве клиента указываем блок №28 Настройки клиента Modbus.
Slave ID – по умолчанию 1.
Тип операции чтения – Регистры ввода.
Тип данных – uint16.
Адрес первого регистра – 101, указанный в коде (CONTROL_IREG).
По завершению настроек модели, обязательно ее сохраняем и проверяем, что физическая часть и тепловая модель настроены верно. Последним шагом, подключаем Arduino к ноутбуку и запускаем модель на расчет.
6. Результаты#
Результаты моделирования находятся во вкладке Визуализация. На первом графике (см. рис. 7 ниже) представлены изменения температуры тепловой массы (2). График выглядит как ступенчатая лестница, при приближении заметно, что температура меняется в границах от 18 до 22℃, как и было задано по условию. На рис. 8 отображены изменения остальных тепловых масс модели обогрева дома.
Также можно проконтролировать считывание сигналов с Arduino через Modbus Read (см. рис. 9 ниже).
Рис. 7 График изменения температуры тепловой массы (2)#
Рис. 8 Изменения показателей температуры тепловых масс (7), (14), (21)#
Рис. 9 Изменение выходного сигнала Modbus Read#
7. Вывод#
Таким образом была реализована система управления обогревом дома на базе протокола Modbus TCP с использованием микроконтроллера Arduino UNO и Ethernet-модуля ENC28J60. Проведенные испытания подтвердили работоспособность предложенного решения, включая стабильную передачу данных и корректную обработку Modbus-запросов.