Modbus 0.3
Библиотека Modbus для STM
Loading...
Searching...
No Matches
modbus_coils.h
Go to the documentation of this file.
1/**
2*******************************************************************************
3* @file modbus_coils.h
4* @brief Работа с коилами Modbus
5*******************************************************************************
6@addtogroup MODBUS_COILS Coils Tools
7@ingroup MODBUS_INTERNAL
8@brief Функции для работы с коилами
9*******************************************************************************
10* @details
11Модуль для доступа к coils внутри программы:
12- Функции для доступа к coils по глобальным адресам
13- Макросы для доступа к coils по локальным адресам
14
15Модуль предоставляет функции и макросы для работы с битовыми данными:
16- Чтение coils (0x01) Упаковка битов в байты
17- Запись одиночного coil (0x05) Установка/сброс бита
18- Запись множественных coils (0x0F) - распаковка байтов в биты
19
20@section cbits Организация битовых данных:
21Coils упакованы в 16-битные слова для эффективного использования памяти.
22Биты нумеруются от младшего к старшему внутри каждого слова.
23
24@section caddr Адресация:
25- Глобальная - абсолютный адрес в пространстве Modbus
26- Локальная - относительный адрес внутри массива coils
27- Макросы автоматически вычисляют смещения и маски
28
29******************************************************************************/
30#ifndef __MODBUS_COILS_H_
31#define __MODBUS_COILS_H_
32#include "modbus_core.h"
33
34/////////////////////////////////////////////////////////////////////
35////////////////////---MODBUS FUNCTION DEFINES---////////////////////
36
37
38
39//--------------------------------------------------
40
41
42/////////////////////////////////////////////////////////////////////
43/////////////////////////---FUNCTIONS---/////////////////////////////
44
45
46
47
48/**
49 * @addtogroup MODBUS_DATA_ACCESS_FUNCTIONS API for Data Access
50 * @ingroup MODBUS_FUNCTIONS
51 * @brief API для доступа к данным модбас внутри программы
52 * @{
53 */
54
55/** @brief Enum for coils operation */
56typedef enum
57{
58 SET_COIL,
59 RESET_COIL,
60 TOOGLE_COIL,
62
63/**
64 * @brief Считать коил по локальному адресу.
65 * @param _parr_ - массив коилов.
66 * @param _coil_ - Номер коила от начала массива _arr_.
67 * @return uint16_t Возвращает запрошенный коил на 0м бите.
68 *
69 * @details Позволяет обратиться к коилу по адресу относительно _arr_.
70 */
71#define MB_Coil_Read_Local(_parr_, _coil_) (( *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) & MB_Set_Coil_Mask(_coil_) ) >> (_coil_))
72/**
73 * @brief Выставить коил по локальному адресу.
74 * @param _parr_ Указатель на массив коилов.
75 * @param _coil_ - Номер коила от начала массива _arr_.
76 *
77 * @details Позволяет обратиться к коилу по адресу относительно _arr_.
78 */
79#define MB_Coil_Set_Local(_parr_, _coil_) *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) |= MB_Set_Coil_Mask(_coil_)
80/**
81 * @brief Сбросить коил по локальному адресу.
82 * @param _parr_ Указатель на массив коилов.
83 * @param _coil_ - Номер коила от начала массива _arr_.
84 *
85 * @details Позволяет обратиться к коилу по адресу относительно _arr_.
86 */
87#define MB_Coil_Reset_Local(_parr_, _coil_) *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) &= ~(MB_Set_Coil_Mask(_coil_))
88/**
89 * @brief Переключить состояние коила по локальному адресу.
90 * @param _parr_ Указатель на массив коилов.
91 * @param _coil_ - Номер коила от начала массива _arr_.
92 *
93 * @details Позволяет обратиться к коилу по адресу относительно _arr_.
94 */
95#define MB_Coil_Toogle_Local(_parr_, _coil_) *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) ^= MB_Set_Coil_Mask(_coil_)
96
97/* Выставить/сбросить коил по глобальному адресу */
99/* Считать коил по глобальному адресу */
100uint16_t MB_Coil_Read_Global(uint16_t Addr, MB_ExceptionTypeDef *Exception);
101
102/** MODBUS_DATA_ACCESS_FUNCTIONS
103 * @}
104 */
105
106/**
107 * @addtogroup MODBUS_CMD_PROCESS_FUNCTIONS
108 * @{
109 */
110/* Обработать функцию Read Coils (01 - 0x01) */
111uint8_t MB_Process_Read_Coils(RS_MsgTypeDef *modbus_msg);
112/* Обработать функцию Write Single Coils (05 - 0x05) */
114/* Обработать функцию Write Multiple Coils (15 - 0x0F) */
116
117/** MODBUS_CMD_PROCESS_FUNCTIONS
118 * @}
119 */
120/////////////////////////---FUNCTIONS---/////////////////////////////
121
122#endif //__MODBUS_COILS_H_
uint8_t MB_Process_Read_Coils(RS_MsgTypeDef *modbus_msg)
Обработать функцию Read Coils (01 - 0x01).
uint8_t MB_Process_Write_Miltuple_Coils(RS_MsgTypeDef *modbus_msg)
Обработать функцию Write Multiple Coils (15 - 0x0F).
uint8_t MB_Process_Write_Single_Coil(RS_MsgTypeDef *modbus_msg)
Обработать функцию Write Single Coils (05 - 0x05).
uint16_t MB_Coil_Read_Global(uint16_t Addr, MB_ExceptionTypeDef *Exception)
Считать коил по глобальному адресу.
MB_CoilsOpTypeDef
Enum for coils operation.
MB_ExceptionTypeDef MB_Coil_Write_Global(uint16_t Addr, MB_CoilsOpTypeDef WriteVal)
Выставить/сбросить коил по глобальному адресу.
MB_ExceptionTypeDef
Enum for modbus exception codes.
Definition modbus_core.h:76
Ядро Modbus протокола - определения и структуры
Structure for modbus messsage.