Коррекции по синтаксису и doxygen
This commit is contained in:
@@ -1,12 +1,22 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file modbus_master.c
|
||||
* @brief Модуль для реализации мастера MODBUS.
|
||||
**************************************************************************
|
||||
*******************************************************************************
|
||||
* @file modbus_master.c
|
||||
* @brief Модуль для реализации мастера MODBUS.
|
||||
*******************************************************************************
|
||||
* @details
|
||||
Файл содержит реализацию функций для работы Modbus в режиме мастера.
|
||||
|
||||
@section Функции и макросы
|
||||
@section mast Функции и макросы
|
||||
- MB_RespGet_RegisterAll() — Считать все регистра из ответа
|
||||
- MB_RespGet_RegisterValue() — Считать один регистр из ответа
|
||||
- MB_RespGet_CoilAll() — Считать все коилы из ответа
|
||||
- MB_RespGet_CoilState() — Считать один коил из ответа
|
||||
- MB_RespGet_NumberOfObjects() — Считать количество принятых объектов идентификатора
|
||||
- MB_RespGet_ObjectById() — Считать объект идентификатора по
|
||||
его ID
|
||||
- MB_RespGet_ObjectByIndex() — Считать объект идентификатора по
|
||||
порядковому номеру в сообщении
|
||||
- MB_RespGet_Diagnostic() — Считать запрошенный диагностический счетчик
|
||||
|
||||
- MB_Master_Collect_Message() — Сбор сообщения в режиме мастера
|
||||
- MB_Master_Parse_Message() — Парс сообщения в режиме мастера
|
||||
@@ -16,8 +26,35 @@
|
||||
#ifdef MODBUS_ENABLE_MASTER
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//-----------------------------FOR USER------------------------------
|
||||
/**
|
||||
* @brief Получить значение регистра из ответа по его адресу
|
||||
* @brief Получить значение ВСЕХ регистров в ответе
|
||||
* @param modbus_msg Указатель на структуру сообщения
|
||||
* @param reg_addr Адрес регистра, значение которого нужно получить
|
||||
* @param reg_arr Указатель для массив для сохранения значений регистров
|
||||
* @return количество считанных регистров, 0 - ошибка
|
||||
*/
|
||||
int MB_RespGet_RegisterAll(RS_MsgTypeDef *modbus_msg, uint16_t *reg_arr)
|
||||
{
|
||||
if(modbus_msg == NULL || reg_arr == NULL)
|
||||
return 0;
|
||||
int read_cnt = 0;
|
||||
int i = 0;
|
||||
for(int addr = modbus_msg->Addr; addr < modbus_msg->Addr + modbus_msg->Qnt; addr++)
|
||||
{
|
||||
if(MB_RespGet_RegisterValue(modbus_msg, addr, ®_arr[i]))
|
||||
{
|
||||
read_cnt++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return read_cnt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Получить значение регистра в ответе по его адресу
|
||||
* @param modbus_msg Указатель на структуру сообщения
|
||||
* @param reg_addr Адрес регистра, значение которого нужно получить
|
||||
* @param reg_value Указатель для значения регистра
|
||||
@@ -55,6 +92,31 @@ int MB_RespGet_RegisterValue(RS_MsgTypeDef *modbus_msg, uint16_t reg_addr, uint1
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Получить состояние ВСЕХ coil в ответе
|
||||
* @param modbus_msg Указатель на структуру сообщения
|
||||
* @param coil_arr Указатель для массив доя сохранения состояний coil (1 - ON, 0 - OFF)
|
||||
* @return 1 - успех, 0 - ошибка или coil_addr вне диапазона запроса
|
||||
*/
|
||||
int MB_RespGet_CoilAll(RS_MsgTypeDef *modbus_msg, int *coil_arr)
|
||||
{
|
||||
if(modbus_msg == NULL || coil_arr == NULL)
|
||||
return 0;
|
||||
|
||||
int read_cnt = 0;
|
||||
int i = 0;
|
||||
for(int addr = modbus_msg->Addr; addr < modbus_msg->Addr + modbus_msg->Qnt; addr++)
|
||||
{
|
||||
if(MB_RespGet_CoilState(modbus_msg, addr, &coil_arr[i]))
|
||||
{
|
||||
read_cnt++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Получить состояние coil в ответе по его адресу
|
||||
* @param modbus_msg Указатель на структуру сообщения
|
||||
@@ -93,7 +155,7 @@ int MB_RespGet_CoilState(RS_MsgTypeDef *modbus_msg, uint16_t coil_addr, int *coi
|
||||
if(bit_index < 8)
|
||||
*coil_state = (modbus_msg->MbData[data_index] >> (bit_index+8)) & 0x01;
|
||||
else
|
||||
*coil_state = ((modbus_msg->MbData[data_index]&0xFF) >> bit_index-8) & 0x01;
|
||||
*coil_state = ((modbus_msg->MbData[data_index]&0xFF) >> (bit_index-8)) & 0x01;
|
||||
|
||||
|
||||
return 1;
|
||||
@@ -250,6 +312,10 @@ int MB_RespGet_Diagnostic(RS_MsgTypeDef *modbus_msg, uint16_t *data)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//-----------------------------INTERNAL------------------------------
|
||||
/**
|
||||
* @brief Определить размер модбас запроса (МАСТЕР версия).
|
||||
* @param hRS Указатель на хендлер RS.
|
||||
|
||||
Reference in New Issue
Block a user