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
This commit is contained in:
aleks 2019-01-07 11:33:20 +01:00
parent 065b99f28b
commit e3a786f2cf
3 changed files with 4 additions and 3 deletions

View file

@ -22,7 +22,7 @@ config MB_SERIAL_BUF_SIZE
default 256 default 256
help help
Modbus serial task RX and TX buffer size for UART driver initialization. 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. frame size is 256 bytes. Bigger size can be used for non standard implementations.
config MB_SERIAL_TASK_PRIO config MB_SERIAL_TASK_PRIO

View file

@ -26,7 +26,7 @@
/* ----------------------- Defines ------------------------------------------*/ /* ----------------------- Defines ------------------------------------------*/
#define MB_INST_MIN_SIZE (2) // The minimal size of Modbus registers area in bytes #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_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 #define MB_CONTROLLER_PRIORITY (CONFIG_MB_SERIAL_TASK_PRIO - 1) // priority of MB controller task

View file

@ -129,7 +129,8 @@ void app_main()
mb_event_group_t event = mbcontroller_check_event((MB_EVENT_HOLDING_REG_WR mb_event_group_t event = mbcontroller_check_event((MB_EVENT_HOLDING_REG_WR
| MB_EVENT_INPUT_REG_RD | MB_EVENT_INPUT_REG_RD
| MB_EVENT_HOLDING_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 // Filter events and process them accordingly
if((event & MB_EVENT_HOLDING_REG_WR) || (event & MB_EVENT_HOLDING_REG_RD)) { if((event & MB_EVENT_HOLDING_REG_WR) || (event & MB_EVENT_HOLDING_REG_RD)) {
// Get parameter information from parameter queue // Get parameter information from parameter queue