/** ****************************************************************************** * @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_FirstInit(&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" #include "modbus_diag.h" ///////////////////////////////////////////////////////////////////// /////////////////////////---FUNCTIONS---///////////////////////////// //----------------FUNCTIONS FOR USER---------------- /** * @addtogroup MODBUS_INIT_FUNCTIONS Functions for Init * @ingroup MODBUS_FUNCTIONS * @brief Функции для инициализации @{ */ /* Инициализация периферии модбас. */ HAL_StatusTypeDef MODBUS_FirstInit(RS_HandleTypeDef *hmodbus, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim); /* Программная конфигурация модбас. */ HAL_StatusTypeDef MODBUS_Config(RS_HandleTypeDef *hmodbus, uint8_t ID, uint16_t Timeout, uint8_t master); /* Запуск слейв устройства */ HAL_StatusTypeDef MODBUS_SlaveStart(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg); /** MODBUS_INIT_FUNCTIONS * @} */ //---------PROCESS MODBUS COMMAND FUNCTIONS--------- /////////////////////////---FUNCTIONS---///////////////////////////// #endif //__MODBUS_H_ /** MODBUS_FUNCTIONS * @} */