API ПОМЕНЯЛОС - Реструктуризация модбас

- Переработана архитектура:
  * modbus_core.h - базовые определения и структуры
  * modbus_coils.[h/c] - работа с коилами
  * modbus_holdregs.[h/c] - работа с регистрами хранения (R/W)
  * modbus_inputregs.[h/c] -работа с входными регистрами (R/O)
  * modbus_devid.[h/c] - идентификаторы устройства
  * modbus_data.[h/c] - карта регистров и коилов и валидация адресов

- Улучшена документация:
  * Обновлены Doxygen-комментарии к функциям
  * Обновлены шапки файлов с подробным описанием
  * Обновлена инструкция по подключению и использованию
This commit is contained in:
2025-11-03 19:32:53 +03:00
parent 52de3f9c08
commit 7e21fc7f28
36 changed files with 6269 additions and 2259 deletions

101
Modbus/Inc/modbus.h Normal file
View File

@@ -0,0 +1,101 @@
/**
******************************************************************************
* @file modbus.h
* @brief Главный заголовочный файл Modbus библиотеки
******************************************************************************
@addtogroup MODBUS Modbus tools
******************************************************************************
@addtogroup MODBUS_FUNCTIONS Modbus library funtions
@ingroup MODBUS
@{
******************************************************************************
* @details
Объединяющий файл для подключения всей функциональности Modbus.
Подключает все необходимые модули:
@section Инструкция по подключению
Для корректной работы надо:
- Подключить обработчики RS_UART_Handler(), RS_TIM_Handler(), в соответствубщие
низкоуровневые прерывания UART_IRQHandler, TIM_IRQHandler. Вместо HAL'овского обработчика
В modbus_config.h настроить дефайны для нужной работы UART
- Инициализировать хендл мобдас. По умолчанию глобально создается hmodbus1, но можно сделать свой
После для запуска Modbus:
@verbatim
//----------------Прием модбас----------------//
#include "modbus.h"
MODBUS_SetupHardware(&hmodbus1, &huart1, &htim3);
MODBUS_SlaveStart(&hmodbus1, NULL);
// или если нужно переключится на другой
@endverbatim
@section Подключаемые модули:
- modbus_core.h - базовые определения
- modbus_coils.h - работа с дискретными выходами
- modbus_holdregs.h - работа с регистрами хранения
- modbus_inputregs.h - работа с входными регистрами
- modbus_devid.h - идентификация устройства
- __crc_algs.h - алгоритмы CRC
@section Использование в проекте:
1. Настроить modbus_config.h под устройство
2. Определить структуры данных в modbus_data.h
3. Подключить этот файл в rs_message.h
4. Вызвать MODBUS_FirstInit() и RS_Receive_IT()
@section Структура данных Modbus
#### Holding/Input Registers:
- Регистры — 16-битные слова. Доступ к регистрам осуществляется через указатель.
Таким образом, сами регистры могут представлять собой как массив так и структуру.
#### Coils:
- Coils — это биты, упакованные в 16-битные слова. Доступ к коилам осуществляется через указатель.
Таким образом, сами коилы могут представлять собой как массив так и структуру.
******************************************************************************/
#ifndef __MODBUS_H_
#define __MODBUS_H_
#include "__crc_algs.h"
#include "rs_message.h"
#include "modbus_coils.h"
#include "modbus_holdregs.h"
#include "modbus_inputregs.h"
#include "modbus_devid.h"
/////////////////////////////////////////////////////////////////////
/////////////////////////---FUNCTIONS---/////////////////////////////
//----------------FUNCTIONS FOR USER----------------
/**
* @addtogroup MODBUS_INIT_FUNCTIONS Functions for Init
* @ingroup MODBUS_FUNCTIONS
* @brief Функции для инициализации
@{
*/
/* Инициализация периферии модбас. */
void MODBUS_SetupHardware(RS_HandleTypeDef *hmodbus, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim);
/* Программная конфигурация модбас. */
void MODBUS_Config(RS_HandleTypeDef *hmodbus, uint8_t ID, uint16_t Timeout, uint8_t master);
/** MODBUS_INIT_FUNCTIONS
* @}
*/
//---------PROCESS MODBUS COMMAND FUNCTIONS---------
/////////////////////////---FUNCTIONS---/////////////////////////////
#endif //__MODBUS_H_
/** MODBUS_FUNCTIONS
* @}
*/