103 lines
4.4 KiB
C
103 lines
4.4 KiB
C
/**
|
||
******************************************************************************
|
||
* @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
|
||
* @}
|
||
*/ |