Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

climatica_logo

Climatica

Мониторинг климатических испытательных камер в реальном времени — без штатного лицензионного программного обеспечения производителя.

О проекте

Climatica — программное средство для получения технологических параметров (температуры) климатических камер напрямую по сети Ethernet. Штатное ПО производителя работает нестабильно. Climatica решает эту проблему: протокол обмена данными был восстановлен методом реверс-инжиниринга (Modbus RTU, инкапсулированный поверх UDP на нестандартном порту 5001) и реализован в виде независимого клиента.

Возможности

  • Одновременный опрос нескольких климатических камер без взаимных задержек (многопоточность)
  • Отображение текущей температуры каждой камеры в реальном времени
  • Построение графика изменения температуры во времени
  • Автоматическое ведение журнала измерений в формате CSV (дата/время, ID камеры, значение)
  • Устойчивость к временной недоступности отдельной камеры (тайм-аут, автоматическое переподключение)
  • Работа независимо от штатного ПО и лицензионного сервера производителя

Технологический стек

Компонент Технология
Язык Python 3
Сетевое взаимодействие socket (UDP), собственная реализация Modbus RTU + CRC16
Многопоточность threading, queue.Queue
Графический интерфейс PySide6 (Qt6)
Визуализация графиков pyqtgraph
Журналирование csv

Архитектура

Камеры (UDP:5001, Modbus RTU)
        │
        ▼
Модуль сетевого взаимодействия  ──►  Потоки опроса (по одному на камеру)
        │
        ▼
Потокобезопасная очередь (queue.Queue)
        │
   ┌────┴────┐
   ▼         ▼
 GUI      Журналирование
(PySide6 +  (CSV: время,
 pyqtgraph)  ID камеры,
             температура)

Установка

git clone https://github.com/<your-username>/climatica.git
cd climatica
pip install -r requirements.txt

Зависимости (requirements.txt):

PySide6
pyqtgraph

Использование

Укажите камеры в конфигурации (IP-адрес контроллера, адрес устройства Modbus):

CHAMBERS = [
    {"ip": "192.168.0.45",  "port": 5001, "address": 3},
    {"ip": "192.168.1.106", "port": 5001, "address": 1},
    {"ip": "192.168.1.252", "port": 5001, "address": 2},
]

Запуск приложения:

python main.py

Журнал измерений сохраняется в logs/climatica_<дата>.csv.

Протокол

Camеры отвечают на запросы Modbus RTU (функция 0x03, чтение регистров хранения), инкапсулированные в UDP-датаграммы на порту 5001 вместо стандартного Modbus TCP (порт 502). Структура запроса:

Байты Поле Значение
0 Адрес устройства 1–247
1 Код функции 0x03
2–3 Начальный регистр 0x0064 (100)
4–5 Количество регистров 0x0012 (18)
6–7 CRC16 (Modbus) little-endian

Подробное описание хода реверс-инжиниринга — в отчёте docs/report.docx.

Дальнейшие планы

  • Мониторинг относительной влажности (поиск соответствующего регистра)
  • Удалённая запись уставок (Modbus-функции 0x06/0x10)
  • Публикация данных по MQTT / интеграция с OPC UA
  • Оповещения при выходе параметров за установленный диапазон

Дисклеймер

Проект реализован для собственного оборудования предприятия в исследовательских и учебных целях (реверс-инжиниринг протокола, к которому имеется физический и сетевой доступ). Используйте на свой страх и риск и только на оборудовании, которым вы владеете или на использование которого имеете разрешение.

Лицензия

AGPL-3.0

About

Мониторинг климатических камер от одного китайского производителя в реальном времени по восстановленному методом реверс-инжиниринга протоколу (Modbus RTU over UDP) — без штатного лицензионного ПО производителя. Python, PySide6, pyqtgraph

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages