release 0.3
Добавлен master, НО до конца не проверен
This commit is contained in:
@@ -3,12 +3,12 @@
|
||||
* @file modbus_devid.h
|
||||
* @brief Идентификаторы устройства Modbus
|
||||
******************************************************************************
|
||||
@addtogroup MODBUS_DEVID Device Identificators Tools
|
||||
@addtogroup MODBUS_DEVID Device Identifications Tools
|
||||
@ingroup MODBUS_INTERNAL
|
||||
@{
|
||||
******************************************************************************
|
||||
* @details
|
||||
Модуль реализации функции Read Device Identification (0x2B):
|
||||
Модуль реализации функции Read Device Identifications (0x2B):
|
||||
- Базовая идентификация (Vendor, Product, Revision)
|
||||
- Расширенная идентификация (URL, Model, User fields)
|
||||
- Поддержка потоковой передачи больших объектов
|
||||
@@ -48,8 +48,8 @@ typedef struct
|
||||
MB_DeviceObjectTypeDef Reserved[0x79];
|
||||
|
||||
MB_DeviceObjectTypeDef User[MODBUS_NUMB_OF_USEROBJECTS];
|
||||
}MB_DeviceIdentificationTypeDef;
|
||||
extern MB_DeviceIdentificationTypeDef MB_DEVID;
|
||||
}MB_DeviceIdentificationsTypeDef;
|
||||
extern MB_DeviceIdentificationsTypeDef MB_DEVID;
|
||||
void MB_DeviceInentificationInit(void);
|
||||
///////////////---DEVICE IDENTIVICATIONS DEFINES---//////////////////
|
||||
|
||||
@@ -77,6 +77,52 @@ void MB_DeviceInentificationInit(void);
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////---FUNCTIONS---/////////////////////////////
|
||||
|
||||
/**
|
||||
* @addtogroup MODBUS_REQ_DEFID_API API for Device Identifications
|
||||
* @ingroup MODBUS_REQUEST_MSG
|
||||
* @brief Макросы для чтения идентификторов из ответа в режиме мастер
|
||||
* @details Примеры использования:
|
||||
*
|
||||
* @code
|
||||
* // Пример 1: Получить VendorName (ID = 0x00)
|
||||
* uint8_t length;
|
||||
* char vendor_name[64];
|
||||
* if(MB_FindObjectById(&MODBUS_MSG, 0x00, vendor_name, &length))
|
||||
* {
|
||||
* // получено
|
||||
* }
|
||||
*
|
||||
* // Пример 2: Перебрать все объекты в сообщении
|
||||
* uint8_t obj_id, obj_length;
|
||||
* char obj_data[256];
|
||||
*
|
||||
* int obj_count = MB_GetNumberOfObjects(&MODBUS_MSG);
|
||||
* printf("Total objects: %d\n", obj_count);
|
||||
*
|
||||
* for(int i = 0; i < obj_count; i++)
|
||||
* {
|
||||
* if(MB_GetObjectByIndex(&MODBUS_MSG, i, &obj_id, obj_data, &obj_length))
|
||||
* {
|
||||
* // получено
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
|
||||
/* Получить количество объектов в сообщении */
|
||||
int MB_GetNumberOfObjects(RS_MsgTypeDef *modbus_msg);
|
||||
/* Найти объект по ID в сообщении */
|
||||
int MB_FindObjectById(RS_MsgTypeDef *modbus_msg, uint8_t obj_id, char *obj_data, uint8_t *obj_length);
|
||||
/* Получить объект по индексу в сообщении */
|
||||
int MB_GetObjectByIndex(RS_MsgTypeDef *modbus_msg, int index, uint8_t *obj_id, char *obj_data, uint8_t *obj_length);
|
||||
|
||||
|
||||
/** MODBUS_REQ_DEFID_API
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* Записать Один Объект Идентификатора в массив данных */
|
||||
void MB_WriteSingleObjectToMessage(char *mbdata, unsigned *ind, MB_DeviceObjectTypeDef *obj);
|
||||
/* Записать Массив Объектов Идентификатора в массив данных */
|
||||
@@ -88,8 +134,8 @@ void MB_WriteObjectsToMessage(RS_MsgTypeDef *modbus_msg, unsigned maxidofobj);
|
||||
@{
|
||||
*/
|
||||
|
||||
/* Обработать функцию Read Device Identification (43/14 - 0x2B/0E) */
|
||||
uint8_t MB_Proccess_Read_Device_Identification(RS_MsgTypeDef *modbus_msg);
|
||||
/* Обработать функцию Read Device Identifications (43/14 - 0x2B/0E) */
|
||||
uint8_t MB_Process_Read_Device_Identifications(RS_MsgTypeDef *modbus_msg);
|
||||
/** MODBUS_CMD_PROCESS_FUNCTIONS
|
||||
* @}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user