Modbus 0.3
Библиотека Modbus для STM
Loading...
Searching...
No Matches
E:/.WORK/STM32/Diod_Test/diode_tester/Core/Modbus/modbus_data.h
Go to the documentation of this file.
1/**
2******************************************************************************
3* @file modbus_data.h
4* @brief Определения структур данных Modbus устройства
5******************************************************************************
6@defgroup MODBUS_DATA Modbus Registers Map
7@ingroup MODBUS
8@brief Определение карты регистров и коилов
9******************************************************************************
10* @details
11Файл содержит объявления структур данных, доступных через Modbus:
12- Holding Registers (R/W) - регистры хранения
13- Input Registers (R/O) - входные регистры
14- Coils (R/W) - дискретные выходы
15
16@section datinit Базовая настройка под устройство:
171. Настроить диапазоны адресов
18 - @ref R_INPUT_ADDR и @ref R_INPUT_QNT для входных регистров
19 - @ref R_HOLDING_ADDR и @ref R_HOLDING_QNT для регистров хр анения
20 - @ref C_COILS_ADDR и @ref C_COILS_ADDR для коилов
213. Настроить структуры данных:
22 - @ref MB_DataInRegsTypeDef
23 - @ref MB_DataHoldRegsTypeDef
24 - @ref MB_DataCoilsTypeDef
25
26
27@section datexpert Расширенная настройка под устройство:
281. Добавить новый массив с нужными данными.
292. Добавить дефайны для определения его начального адреса и количества элементов
303. Добавить проверку адресов в MB_DefineRegistersAddress/MB_DefineCoilsAddress.
31
32 Пример:
33 @code
34 #define R_USER_ADDR 555
35 #define R_USER_QNT 16
36 uint16_t user_regs[16];
37
38 //...
39 else if(MB_Check_Address_For_Arr(Addr, Qnt, R_USER_ADDR, R_USER_QNT) == ET_NO_ERRORS)
40 {
41 *pRegs = MB_Set_Register_Ptr(&user_regs, Addr-R_USER_ADDR); // ВАЖНО!
42 // -R_USER_ADDR нужен чтобы взять адрес относительно начала массива
43 }
44 else
45 {
46 return ET_ILLEGAL_DATA_ADDRESS;
47 }
48 @endcode
49******************************************************************************/
50
51#ifndef _MODBUS_DATA_H_
52#define _MODBUS_DATA_H_
53
54#include "stdint.h"
55
56
57
58//--------------SIZES OF DATA---------------
59
60// DEFINES FOR INPUT REGISTERS ARRAYS
61#define R_INPUT_ADDR 0 ///< Начальный адрес входных регистров
62#define R_INPUT_QNT 16 ///< Количество входных регистров
63
64// DEFINES FOR HOLDING REGISTERS ARRAYS
65#define R_HOLDING_ADDR 0 ///< Начальный адрес регистров хранения
66#define R_HOLDING_QNT 16 ///< Количество регистров хранения
67
68// DEFINES FOR COIL ARRAYS
69#define C_COILS_ADDR 0 ///< Начальный адрес коилов
70#define C_COILS_QNT 16 ///< Количество регистров коилов
71
72//--------------DEFINES FOR REGISTERS---------------
73// DEFINES FOR ARRAYS
74/**
75 * @addtogroup MODBUS_DATA_RERISTERS_DEFINES Registers structures
76 * @ingroup MODBUS_DATA
77 * @brief Стуруктура регистров (входных и хранения)
78 @code
79 Для массивов регистров:
80 R_<NAME_ARRAY>_ADDR - модбас адресс первого регистра в массиве
81 R_<NAME_ARRAY>_QNT - количество регистров в массиве
82 @endcode
83 * @{
84 */
85
86
87/**
88 * @brief Регистры хранения
89 */
90typedef struct //MB_DataInRegsTypeDef
91{
92 uint16_t in[16];
94
95
96/**
97 * @brief Входные регистры
98 */
99typedef struct //MB_DataInRegsTypeDef
100{
101 uint16_t out[16];
103
104
105/** MODBUS_DATA_RERISTERS_DEFINES
106 * @}
107 */
108
109//----------------DEFINES FOR COILS-----------------
110/**
111 * @addtogroup MODBUS_DATA_COILS_DEFINES Coils Structure
112 * @ingroup MODBUS_DATA
113 * @brief Структура коилов
114 @code
115 Структура дефайна
116 Для массивов коилов:
117 C_<NAME_ARRAY>_ADDR - модбас адресс первого коила в массиве
118 C_<NAME_ARRAY>_QNT - количество коилов в массиве (минимум 16)
119 @endcode
120 * @{
121 */
122
123
124
125/**
126 * @brief Коилы
127 * @details Желательно с помощью reserved делать стркутуру кратной 16-битам
128 */
129typedef struct //MB_DataCoilsTypeDef
130{
131 unsigned reserved:16;
133
134/** MODBUS_DATA_COILS_DEFINES
135 * @}
136 */
137
138
139//-----------MODBUS DEVICE DATA SETTING-------------
140// MODBUS DATA STRUCTTURE
141/**
142 * @brief Структура со всеми регистрами и коилами модбас
143 * @ingroup MODBUS_DATA
144 */
145typedef struct // tester modbus data
146{
147 MB_DataInRegsTypeDef InRegs; ///< Modbus input registers @ref MB_DataInRegsTypeDef
148
149 MB_DataCoilsTypeDef Coils; ///< Modbus coils @ref MB_DataCoilsTypeDef
150
151 MB_DataHoldRegsTypeDef HoldRegs; ///< Modbus holding registers @ref MB_DataHoldRegsTypeDef
153extern MB_DataStructureTypeDef MB_DATA;
154
155
156#endif //_MODBUS_DATA_H_
157
158/////////////////////////////////////////////////////////////
159///////////////////////TEMP/OUTDATE/OTHER////////////////////
Входные регистры
Регистры хранения
Definition modbus_data.h:91
Структура со всеми регистрами и коилами модбас
MB_DataHoldRegsTypeDef HoldRegs
Modbus holding registers MB_DataHoldRegsTypeDef.
MB_DataCoilsTypeDef Coils
Modbus coils MB_DataCoilsTypeDef.
MB_DataInRegsTypeDef InRegs
Modbus input registers MB_DataInRegsTypeDef.