Modbus 0.3
Библиотека Modbus для STM
Loading...
Searching...
No Matches
modbus_diag.h
Go to the documentation of this file.
1/**
2*******************************************************************************
3* @file modbus_diag.h
4* @brief Диагностика устройства Modbus
5*******************************************************************************
6@addtogroup MODBUS_DIAG Diagnostics Tools
7@ingroup MODBUS_INTERNAL
8@brief Функции для работы с диагностикой
9*******************************************************************************
10* @details
11Модуль реализации Diagnostics (Serial Line only) (0x08):
12- Полная поддержка всех подфункций диагностики
13- Возможность выставить/сбросить любой бит в диагностическом регистре
14- Сбор статистики работы устройства
15- Управление режимами работы
16******************************************************************************/
17#ifndef __MODBUS_DIAG_H_
18#define __MODBUS_DIAG_H_
19#include "modbus_core.h"
20
21/////////////////////////////////////////////////////////////////////
22/////////////////---DEVICE DIAGNOSTICS DEFINES---////////////////////
23
24/**
25 * @addtogroup MODBUS_DIAG
26 * @{
27 */
28
29/** @brief Режимы работы устройства */
30typedef enum
31{
32 MODBUS_NORMAL_MODE = 0,
33 MODBUS_LISTEN_ONLY_MODE = 1
35
36
37/** @brief Структура со диагностической информацией устройства модбас */
38typedef struct
39{
40 uint16_t DiagnosticRegister; ///< Регистр диагностики. 0 бит - overrun. Остальное заполняется пользователем
41 MB_DeviceModeTypeDef DeviceMode;///< Режим устройства - NORMAL/LISTEN_ONLY
42 struct
43 {
44 uint16_t BusMessage; ///< Все принятые фреймы modbus на линии (с всех адресов)
45 uint16_t BusCommunicationErr; ///< Ошибки при приеме фрейма modbus
46 uint16_t BusExceptionErr; ///< Ошибки при обработке фрейма modbus
47 uint16_t SlaveMessage; ///< Принятые сообщения (только запросы на адрес данного устройства)
48 uint16_t SlaveNoResponse; ///< Счетчик сколько мы раз не ответили на запрос
49 uint16_t SlaveNAK; ///< Счетчик аномальной ошибки при обработке фрейма
50 uint16_t SlaveBusy; ///< Счетчик принятых запросов когда устройство занято. Здесь не работает: из-за архитектуры отследить невозможно
51 uint16_t BusCharacterOverrun; ///< Overrun Error
52 } Counters;
54
56
57/////////////////---DEVICE DIAGNOSTICS DEFINES---////////////////////
58
59/////////////////////////////////////////////////////////////////////
60/////////////////////////---FUNCTIONS---/////////////////////////////
61
62/* Инициализация диагностических счетчиков */
63void MB_DiagnosticsInit(void);
64
65/** MODBUS_DIAG
66 * @}
67 */
68
69
70
71
72
73
74
75
76/**
77* @addtogroup MODBUS_DATA_ACCESS_FUNCTIONS
78@{
79*/
80
81/* Выставить бит в регистре диагностике */
82int MB_Diagnostics_WriteBit(int bit_num, int bit_state);
83/*ь Прочитать состояние бита диагностического регистра */
84int MB_Diagnostics_GetBit(int bit_num);
85/* Получение текущего режима устройства */
87
88
89/* Функции для обновления счетчиков диагностики */
98/** MODBUS_CMD_PROCESS_FUNCTIONS
99 * @}
100 */
101
102/**
103 * @addtogroup MODBUS_CMD_PROCESS_FUNCTIONS
104 * @{
105 */
106
107/* Обработка команды диагностики (0x08) */
108uint8_t MB_Process_Diagnostics(RS_MsgTypeDef *modbus_msg);
109
110/** MODBUS_CMD_PROCESS_FUNCTIONS
111 * @}
112 */
113
114
115
116
117/////////////////////////---FUNCTIONS---/////////////////////////////
118
119#endif //__MODBUS_DIAG_H_
120
121/** MODBUS_DIAG
122 * @}
123 */
124
uint8_t MB_Process_Diagnostics(RS_MsgTypeDef *modbus_msg)
Обработать функцию Diagnostics (Serial Line only) (0x08)
Definition modbus_diag.c:75
void MB_Diagnostics_CommunicationErrorCnt(void)
Увеличивает счетчик ошибок связи
void MB_Diagnostics_SlaveMessageCnt(void)
Увеличивает счетчик отсутствия ответов
void MB_Diagnostics_SlaveNAKCnt(void)
Увеличивает счетчик NAK ответов
void MB_Diagnostics_SlaveBusyCnt(void)
Увеличивает счетчик занятости устройства
int MB_Diagnostics_GetBit(int bit_num)
Прочитать состояние бита диагностического регистра
Definition modbus_diag.c:62
void MB_Diagnostics_ExceptionErrorCnt(void)
Увеличивает счетчик исключений
int MB_Diagnostics_WriteBit(int bit_num, int bit_state)
Выставить бит в регистре диагностике
Definition modbus_diag.c:45
void MB_Diagnostics_SlaveNoResponseCnt(void)
Увеличивает счетчик отсутствия ответов
void MB_Diagnostics_BusMessageCnt(void)
Увеличивает счетчик сообщений на шине
MB_DeviceModeTypeDef MB_GetDeviceMode(void)
Получение текущего режима устройства
void MB_Diagnostics_CharacterOverrunCnt(void)
Увеличивает счетчик переполнения символов
MB_DiagnosticsInfoTypeDef MB_DIAG
Глобальная структура диагностики
Definition modbus_diag.c:17
void MB_DiagnosticsInit(void)
Инициализация диагностических счетчиков
Definition modbus_diag.c:22
MB_DeviceModeTypeDef
Режимы работы устройства
Definition modbus_diag.h:31
Ядро Modbus протокола - определения и структуры
Структура со диагностической информацией устройства модбас
Definition modbus_diag.h:39
uint16_t BusMessage
Все принятые фреймы modbus на линии (с всех адресов)
Definition modbus_diag.h:44
uint16_t SlaveBusy
Счетчик принятых запросов когда устройство занято. Здесь не работает: из-за архитектуры отследить нев...
Definition modbus_diag.h:50
uint16_t SlaveMessage
Принятые сообщения (только запросы на адрес данного устройства)
Definition modbus_diag.h:47
uint16_t BusCharacterOverrun
Overrun Error.
Definition modbus_diag.h:51
uint16_t SlaveNAK
Счетчик аномальной ошибки при обработке фрейма
Definition modbus_diag.h:49
uint16_t BusExceptionErr
Ошибки при обработке фрейма modbus.
Definition modbus_diag.h:46
uint16_t DiagnosticRegister
Регистр диагностики. 0 бит - overrun. Остальное заполняется пользователем
Definition modbus_diag.h:40
uint16_t SlaveNoResponse
Счетчик сколько мы раз не ответили на запрос
Definition modbus_diag.h:48
uint16_t BusCommunicationErr
Ошибки при приеме фрейма modbus.
Definition modbus_diag.h:45
MB_DeviceModeTypeDef DeviceMode
Режим устройства - NORMAL/LISTEN_ONLY.
Definition modbus_diag.h:41
Structure for modbus messsage.