release 0.51
Бета добавление новых кодов исключения Улучшение механики ответа с задержкой, когда время ответа определяется пользователем, а не в прерывании сразу
This commit is contained in:
@@ -72,15 +72,17 @@ first receive info part of message, than defines size of rest message*/
|
||||
*/
|
||||
typedef enum //MB_ExceptionTypeDef
|
||||
{
|
||||
// reading
|
||||
/* Регулярные коды ошибок, которые определены конкретной программой */
|
||||
ET_NO_ERRORS = 0x00, ///< no errors
|
||||
ET_ILLEGAL_FUNCTION = 0x01, ///< Принятый код функции не может быть обработан
|
||||
ET_ILLEGAL_DATA_ADDRESS = 0x02, ///< Адрес данных, указанный в запросе, недоступен
|
||||
ET_ILLEGAL_DATA_VALUE = 0x03, ///< Значение, содержащееся в поле данных запроса, является недопустимой величиной
|
||||
ET_SLAVE_DEVICE_FAILURE = 0x04, ///< Невосстанавливаемая ошибка имела место, пока ведомое устройство пыталось выполнить затребованное действие
|
||||
// ET_ACKNOWLEDGE = 0x05, ///< idk
|
||||
// ET_SLAVE_DEVICE_BUSY = 0x06, ///< idk
|
||||
// ET_MEMORY_PARITY_ERROR = 0x08, ///< idk
|
||||
|
||||
/* Специальные коды ошибок, которые определены конкретной программой */
|
||||
ET_ACKNOWLEDGE = 0x05, ///< Устройство приняло запрос, но на обработку требуется время. Нужно чтобы не было Timeout ошибки
|
||||
ET_SLAVE_DEVICE_BUSY = 0x06, ///< Устройство занято обработкой комманды
|
||||
ET_MEMORY_PARITY_ERROR = 0x08, ///< Ошибка внешней памяти
|
||||
}MB_ExceptionTypeDef;
|
||||
|
||||
#define FC_ERR_VALUES_START 0x80U ///< from this value starts error func codes
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Ответить позже, не в прерывании */
|
||||
HAL_StatusTypeDef MB_Slave_ResponseLater(RS_HandleTypeDef *hmodbus, uint8_t ResponseCode);
|
||||
/* Ответить на запрос */
|
||||
HAL_StatusTypeDef MB_Slave_SendResponse(RS_HandleTypeDef *hmodbus, uint8_t ResponseCode, MB_ExceptionTypeDef error);
|
||||
/* Ответ на сообщение в режиме слейва */
|
||||
RS_StatusTypeDef MB_Slave_Response(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg);
|
||||
/* Сбор сообщения в буфер UART в режиме слейв (фрейм слейва из msg -> uart) */
|
||||
|
||||
@@ -219,11 +219,13 @@ typedef struct
|
||||
unsigned TX_Done:1; ///< 1 - Передача закончена, 0 - Передача еще в процессе или не инициализирована
|
||||
|
||||
// Выставление следующие флагов определяет пользователь
|
||||
unsigned RX_Continue:1; ///< 0 - Продолжить принимать, 0 - Начать прием сначала
|
||||
unsigned RX_Continue:1; ///< 1 - Продолжить принимать, 0 - Начать прием сначала
|
||||
unsigned MessageHandled:1; ///< 1 - Обработка запроса успешна, 0 - Обработка запроса в процессе или ошибка
|
||||
unsigned EchoResponse:1; ///< 1 - Ответить эхом, 0 - Ответить своим сообщением
|
||||
unsigned DeferredResponse:1; ///< 1 - Не начинать передачу в IT, 0 - Ответить в прерывании
|
||||
unsigned DataUpdated:1; ///< 1 - Данные были обновлены
|
||||
unsigned DataUpdated:1; ///< 1 - Данные были обновлены:
|
||||
unsigned DeviceBusy:1; ///< 1 - Устройство занято (важно! не rs а именно устрройство)
|
||||
unsigned DeferredResponse:8; ///< >0 - Не начинать передачу в IT, 0 - Ответить в прерывании
|
||||
|
||||
}RS_FlagsTypeDef;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user