mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 06:11:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			238 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
menu "Modbus configuration"
 | 
						|
 | 
						|
    config FMB_COMM_MODE_TCP_EN
 | 
						|
        bool "Enable Modbus stack support for TCP communication mode"
 | 
						|
        default y
 | 
						|
        help
 | 
						|
                Enable Modbus TCP option for stack.
 | 
						|
 | 
						|
    config FMB_TCP_PORT_DEFAULT
 | 
						|
        int "Modbus TCP port number"
 | 
						|
        range 0 65535
 | 
						|
        default 502
 | 
						|
        depends on FMB_COMM_MODE_TCP_EN
 | 
						|
        help
 | 
						|
                Modbus default port number used by Modbus TCP stack
 | 
						|
 | 
						|
    config FMB_TCP_PORT_MAX_CONN
 | 
						|
        int "Maximum allowed connections for TCP stack"
 | 
						|
        range 1 6
 | 
						|
        default 5
 | 
						|
        depends on FMB_COMM_MODE_TCP_EN
 | 
						|
        help
 | 
						|
                Maximum allowed connections number for Modbus TCP stack.
 | 
						|
                This is used by Modbus master and slave port layer to establish connections.
 | 
						|
                This parameter may decrease performance of Modbus stack and can cause
 | 
						|
                increasing of processing time (increase only if absolutely necessary).
 | 
						|
 | 
						|
    config FMB_TCP_CONNECTION_TOUT_SEC
 | 
						|
        int "Modbus TCP connection timeout"
 | 
						|
        range 1 3600
 | 
						|
        default 20
 | 
						|
        depends on FMB_COMM_MODE_TCP_EN
 | 
						|
        help
 | 
						|
                Modbus TCP connection timeout in seconds.
 | 
						|
                Once expired the current connection with the client will be closed
 | 
						|
                and Modbus slave will be waiting for new connection to accept.
 | 
						|
 | 
						|
    config FMB_COMM_MODE_RTU_EN
 | 
						|
        bool "Enable Modbus stack support for RTU mode"
 | 
						|
        default y
 | 
						|
        help
 | 
						|
                Enable RTU Modbus communication mode option for Modbus serial stack.
 | 
						|
 | 
						|
    config FMB_COMM_MODE_ASCII_EN
 | 
						|
        bool "Enable Modbus stack support for ASCII mode"
 | 
						|
        default y
 | 
						|
        help
 | 
						|
                Enable ASCII Modbus communication mode option for Modbus serial stack.
 | 
						|
 | 
						|
    config FMB_MASTER_TIMEOUT_MS_RESPOND
 | 
						|
        int "Slave respond timeout (Milliseconds)"
 | 
						|
        default 150
 | 
						|
        range 50 3000
 | 
						|
        help
 | 
						|
                If master sends a frame which is not broadcast, it has to wait sometime for slave response.
 | 
						|
                if slave is not respond in this time, the master will process timeout error.
 | 
						|
 | 
						|
    config FMB_MASTER_DELAY_MS_CONVERT
 | 
						|
        int "Slave conversion delay (Milliseconds)"
 | 
						|
        default 200
 | 
						|
        range 50 400
 | 
						|
        help
 | 
						|
                If master sends a broadcast frame, it has to wait conversion time to delay,
 | 
						|
                then master can send next frame.
 | 
						|
 | 
						|
    config FMB_QUEUE_LENGTH
 | 
						|
        int "Modbus serial task queue length"
 | 
						|
        range 0 200
 | 
						|
        default 20
 | 
						|
        help
 | 
						|
                Modbus serial driver queue length. It is used by event queue task.
 | 
						|
                See the serial driver API for more information.
 | 
						|
 | 
						|
    config FMB_PORT_TASK_STACK_SIZE
 | 
						|
        int "Modbus port task stack size"
 | 
						|
        range 2048 8192
 | 
						|
        default 4096
 | 
						|
        help
 | 
						|
                Modbus port task stack size for rx/tx event processing.
 | 
						|
                It may be adjusted when debugging is enabled (for example).
 | 
						|
 | 
						|
    config FMB_SERIAL_BUF_SIZE
 | 
						|
        int "Modbus serial task RX/TX buffer size"
 | 
						|
        range 0 2048
 | 
						|
        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
 | 
						|
                frame size is 256 bytes. Bigger size can be used for non standard implementations.
 | 
						|
 | 
						|
    config FMB_SERIAL_ASCII_BITS_PER_SYMB
 | 
						|
        int "Number of data bits per ASCII character"
 | 
						|
        default 8
 | 
						|
        range 7 8
 | 
						|
        depends on FMB_COMM_MODE_ASCII_EN
 | 
						|
        help
 | 
						|
                This option defines the number of data bits per ASCII character.
 | 
						|
 | 
						|
    config FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS
 | 
						|
        int "Response timeout for ASCII communication mode (ms)"
 | 
						|
        default 1000
 | 
						|
        range 300 2000
 | 
						|
        depends on FMB_COMM_MODE_ASCII_EN
 | 
						|
        help
 | 
						|
                This option defines response timeout of slave in milliseconds for ASCII communication mode.
 | 
						|
                Thus the timeout will expire and allow the master program to handle the error.
 | 
						|
 | 
						|
    config FMB_PORT_TASK_PRIO
 | 
						|
        int "Modbus port task priority"
 | 
						|
        range 3 23
 | 
						|
        default 10
 | 
						|
        help
 | 
						|
                Modbus port data processing task priority.
 | 
						|
                The priority of Modbus controller task is equal to (CONFIG_FMB_PORT_TASK_PRIO - 1).
 | 
						|
 | 
						|
    choice FMB_PORT_TASK_AFFINITY
 | 
						|
        prompt "Modbus task affinity"
 | 
						|
        default FMB_PORT_TASK_AFFINITY_CPU0
 | 
						|
        depends on !FREERTOS_UNICORE
 | 
						|
        help
 | 
						|
            Allows setting the core affinity of the Modbus controller task, i.e. whether the task is pinned to
 | 
						|
            particular CPU, or allowed to run on any CPU.
 | 
						|
 | 
						|
        config FMB_PORT_TASK_AFFINITY_NO_AFFINITY
 | 
						|
            bool "No affinity"
 | 
						|
        config FMB_PORT_TASK_AFFINITY_CPU0
 | 
						|
            bool "CPU0"
 | 
						|
        config FMB_PORT_TASK_AFFINITY_CPU1
 | 
						|
            bool "CPU1"
 | 
						|
 | 
						|
    endchoice
 | 
						|
 | 
						|
    config FMB_PORT_TASK_AFFINITY
 | 
						|
        hex
 | 
						|
        default FREERTOS_NO_AFFINITY if FMB_PORT_TASK_AFFINITY_NO_AFFINITY || FREERTOS_UNICORE
 | 
						|
        default 0x0 if FMB_PORT_TASK_AFFINITY_CPU0
 | 
						|
        default 0x1 if FMB_PORT_TASK_AFFINITY_CPU1
 | 
						|
 | 
						|
    config FMB_CONTROLLER_SLAVE_ID_SUPPORT
 | 
						|
        bool "Modbus controller slave ID support"
 | 
						|
        default y
 | 
						|
        help
 | 
						|
                Modbus slave ID support enable.
 | 
						|
                When enabled the Modbus <Report Slave ID> command is supported by stack.
 | 
						|
 | 
						|
    config FMB_CONTROLLER_SLAVE_ID
 | 
						|
        hex "Modbus controller slave ID"
 | 
						|
        range 0 4294967295
 | 
						|
        default 0x00112233
 | 
						|
        depends on FMB_CONTROLLER_SLAVE_ID_SUPPORT
 | 
						|
        help
 | 
						|
                Modbus slave ID value to identify modbus device
 | 
						|
                in the network using <Report Slave ID> command.
 | 
						|
                Most significant byte of ID is used as short device ID and
 | 
						|
                other three bytes used as long ID.
 | 
						|
 | 
						|
    config FMB_CONTROLLER_NOTIFY_TIMEOUT
 | 
						|
        int "Modbus controller notification timeout (ms)"
 | 
						|
        range 0 200
 | 
						|
        default 20
 | 
						|
        help
 | 
						|
                Modbus controller notification timeout in milliseconds.
 | 
						|
                This timeout is used to send notification about accessed parameters.
 | 
						|
 | 
						|
    config FMB_CONTROLLER_NOTIFY_QUEUE_SIZE
 | 
						|
        int "Modbus controller notification queue size"
 | 
						|
        range 0 200
 | 
						|
        default 20
 | 
						|
        help
 | 
						|
                Modbus controller notification queue size.
 | 
						|
                The notification queue is used to get information about accessed parameters.
 | 
						|
 | 
						|
    config FMB_CONTROLLER_STACK_SIZE
 | 
						|
        int "Modbus controller stack size"
 | 
						|
        range 0 8192
 | 
						|
        default 4096
 | 
						|
        help
 | 
						|
                Modbus controller task stack size. The Stack size may be adjusted when
 | 
						|
                debug mode is used which requires more stack size (for example).
 | 
						|
 | 
						|
    config FMB_EVENT_QUEUE_TIMEOUT
 | 
						|
        int "Modbus stack event queue timeout (ms)"
 | 
						|
        range 0 500
 | 
						|
        default 20
 | 
						|
        help
 | 
						|
                Modbus stack event queue timeout in milliseconds. This may help to optimize
 | 
						|
                Modbus stack event processing time.
 | 
						|
 | 
						|
    config FMB_TIMER_PORT_ENABLED
 | 
						|
        bool "Modbus stack use timer for 3.5T symbol time measurement"
 | 
						|
        default n
 | 
						|
        help
 | 
						|
                If this option is set the Modbus stack uses timer for T3.5 time measurement.
 | 
						|
                Else the internal UART TOUT timeout is used for 3.5T symbol time measurement.
 | 
						|
 | 
						|
    config FMB_TIMER_GROUP
 | 
						|
        int "Slave Timer group number"
 | 
						|
        range 0 1
 | 
						|
        default 0
 | 
						|
        help
 | 
						|
                Modbus slave Timer group number that is used for timeout measurement.
 | 
						|
 | 
						|
    config FMB_TIMER_INDEX
 | 
						|
        int "Slave Timer index in the group"
 | 
						|
        range 0 1
 | 
						|
        default 0
 | 
						|
        help
 | 
						|
                Modbus slave Timer Index in the group that is used for timeout measurement.
 | 
						|
 | 
						|
    config FMB_MASTER_TIMER_GROUP
 | 
						|
        int "Master Timer group number"
 | 
						|
        range 0 1
 | 
						|
        default FMB_TIMER_GROUP
 | 
						|
        help
 | 
						|
                Modbus master Timer group number that is used for timeout measurement.
 | 
						|
 | 
						|
    config FMB_MASTER_TIMER_INDEX
 | 
						|
        int "Master Timer index"
 | 
						|
        range 0 1
 | 
						|
        default FMB_TIMER_INDEX
 | 
						|
        help
 | 
						|
                Modbus master Timer Index in the group that is used for timeout measurement.
 | 
						|
                Note: Modbus master and slave should have different timer index to be able to work simultaneously.
 | 
						|
 | 
						|
    config FMB_TIMER_ISR_IN_IRAM
 | 
						|
        bool "Place timer interrupt handler into IRAM"
 | 
						|
        default n
 | 
						|
        select UART_ISR_IN_IRAM
 | 
						|
        help
 | 
						|
                This option places Modbus timer IRQ handler into IRAM.
 | 
						|
                This allows to avoid delays related to processing of non-IRAM-safe interrupts
 | 
						|
                during a flash write operation (NVS updating a value, or some other
 | 
						|
                flash API which has to perform an read/write operation and disable CPU cache).
 | 
						|
                This option has dependency with the UART_ISR_IN_IRAM option which places UART interrupt
 | 
						|
                handler into IRAM to prevent delays related to processing of UART events.
 | 
						|
 | 
						|
endmenu
 |