From e3a786f2cf0dcafe0cf347e29c7e3d67d40ac438 Mon Sep 17 00:00:00 2001 From: aleks Date: Mon, 7 Jan 2019 11:33:20 +0100 Subject: [PATCH] examples: change max register area size to maximum value esp-idf/components/freemodbus/modbus_controller/modbus_controller.c: The MB_INST_MAX_SIZE is changed to max value=(65535*2); Update support for coils read into freemodbus.c; TW#28143 Closes https://github.com/espressif/esp-idf/issues/2884 --- components/freemodbus/Kconfig | 2 +- components/freemodbus/modbus_controller/mbcontroller.h | 2 +- examples/protocols/modbus_slave/main/freemodbus.c | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/components/freemodbus/Kconfig b/components/freemodbus/Kconfig index b6d3d29fb4..2ed7ee3e0f 100644 --- a/components/freemodbus/Kconfig +++ b/components/freemodbus/Kconfig @@ -22,7 +22,7 @@ config MB_SERIAL_BUF_SIZE default 256 help Modbus serial task RX and TX buffer size for UART driver initialization. - This buffer is used for modbus frame transfer. The Modbus protocol maximum + This buffer is used for Modbus frame transfer. The Modbus protocol maximum frame size is 256 bytes. Bigger size can be used for non standard implementations. config MB_SERIAL_TASK_PRIO diff --git a/components/freemodbus/modbus_controller/mbcontroller.h b/components/freemodbus/modbus_controller/mbcontroller.h index b6b206e2a6..267fa34aed 100644 --- a/components/freemodbus/modbus_controller/mbcontroller.h +++ b/components/freemodbus/modbus_controller/mbcontroller.h @@ -26,7 +26,7 @@ /* ----------------------- Defines ------------------------------------------*/ #define MB_INST_MIN_SIZE (2) // The minimal size of Modbus registers area in bytes -#define MB_INST_MAX_SIZE (2048) // The maximum size of Modbus area in bytes +#define MB_INST_MAX_SIZE (65535 * 2) // The maximum size of Modbus area in bytes #define MB_CONTROLLER_STACK_SIZE (CONFIG_MB_CONTROLLER_STACK_SIZE) // Stack size for Modbus controller #define MB_CONTROLLER_PRIORITY (CONFIG_MB_SERIAL_TASK_PRIO - 1) // priority of MB controller task diff --git a/examples/protocols/modbus_slave/main/freemodbus.c b/examples/protocols/modbus_slave/main/freemodbus.c index ff52efcb46..fe0232bf2e 100644 --- a/examples/protocols/modbus_slave/main/freemodbus.c +++ b/examples/protocols/modbus_slave/main/freemodbus.c @@ -129,7 +129,8 @@ void app_main() mb_event_group_t event = mbcontroller_check_event((MB_EVENT_HOLDING_REG_WR | MB_EVENT_INPUT_REG_RD | MB_EVENT_HOLDING_REG_RD - | MB_EVENT_DISCRETE_RD)); + | MB_EVENT_DISCRETE_RD + | MB_EVENT_COILS_RD)); // Filter events and process them accordingly if((event & MB_EVENT_HOLDING_REG_WR) || (event & MB_EVENT_HOLDING_REG_RD)) { // Get parameter information from parameter queue