Explorar el Código

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
aleks hace 7 años
padre
commit
e3a786f2cf

+ 1 - 1
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

+ 1 - 1
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

+ 2 - 1
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