Техническое задание: Доработка библиотеки Modbus (C++)
Цель проекта
Модернизировать существующую динамическую библиотеку (DLL), реализующую протокол Modbus для обмена данными с промышленными контроллерами (PLC). Текущая библиотека поддерживает чтение данных из регистров хранения (holding registers). Требуется добавить поддержку работы с дискретными входами/выходами (coils).
Требуемый новый функционал
1. Функция чтения coils
- Реализовать метод для чтения состояния одного или нескольких дискретных входов (coils) с удаленного устройства.
- Функция должна соответствовать стандарту Modbus (функциональный код 0x01).
- Обеспечить обработку ошибок протокола и таймаутов.
2. Функция записи coils
- Реализовать метод для записи (установки/сброса) одного или нескольких дискретных выходов (coils) на удаленном устройстве.
- Поддержка одиночной (функциональный код 0x05) и множественной (функциональный код 0x0F) записи.
- Обеспечить проверку корректности передаваемых адресов и данных.
3. Функция автоматического опроса (авточтение)
- Разработать механизм фонового периодического опроса заданных адресов coils.
- Реализовать callback-уведомление или очередь событий для передачи измененных данных основному приложению.
- Предусмотреть возможность настройки интервала опроса, списка адресов и управления процессом (старт/стоп).
Технические требования и условия
- Язык программирования: C++.
- Формат: Динамическая библиотека (DLL) с C-совместимым интерфейсом (extern "C") для обеспечения совместимости.
- Новый код должен быть интегрирован в существующую кодобазу, сохраняя текущий API и не нарушая работу уже реализованных функций.
- Код должен быть документирован (комментарии в ключевых местах).
- Приветствуется предоставление простого примера использования (test client) для проверки нового функционала.
Результат работы
- Исходный код проекта с реализованными функциями.
- Скомпилированная DLL-библиотека.
- Краткая документация по новым функциям API.