This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 7e2a5f6f3fa83adeb5275b3377b84599ec5ce916 Author: raiden00pl <[email protected]> AuthorDate: Tue Oct 24 12:22:46 2023 +0200 Documentaion: migrate modbus/readme --- Documentation/applications/industry/index.rst | 2 +- .../applications/industry/modbus/index.rst | 123 +++++++++++++++++++++ 2 files changed, 124 insertions(+), 1 deletion(-) diff --git a/Documentation/applications/industry/index.rst b/Documentation/applications/industry/index.rst index 90c4f6ae4e..5622707dbc 100644 --- a/Documentation/applications/industry/index.rst +++ b/Documentation/applications/industry/index.rst @@ -7,7 +7,7 @@ Industrial Applications :maxdepth: 3 :titlesonly: - abnt_codi/index.rst + */* - foc - Field Oriented Control user-space library - scpi - SCPI instrument side parser diff --git a/Documentation/applications/industry/modbus/index.rst b/Documentation/applications/industry/modbus/index.rst new file mode 100644 index 0000000000..a74b25939d --- /dev/null +++ b/Documentation/applications/industry/modbus/index.rst @@ -0,0 +1,123 @@ +========================== +``modbus`` FreeModBus port +========================== + +This directory contains a port of last open source version of FreeModBus (BSD +license). The code in this directory is a subset of FreeModBus version 1.5.0 +(June 6, 2010) that can be downloaded in its entirety from +http://developer.berlios.de/project/showfiles.php?group_id=6120. + +Includes extensions to support RTU master mode by Armink([email protected]): +https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32. Ported to NuttX by +Darcy Gong. + +Directory Structure / Relation to freemodbus-v1.5.0 +--------------------------------------------------- + +The original FreeModBus download consists of several directories. This subset +takes only the contents of one directory, ``modbus/``, that implements the core +modbus logic and integrates that directory into the NuttX build system. The +mapping between ``freemodbus-v1.5.0`` and the nuttx directories is shown below:: + + --------------------------- ---------------------------------------------- + freemodbus-v1.5.0 NuttX + --------------------------- ---------------------------------------------- + All top level .txt files Not included + demo/ Not included. This directory contains demo + and porting code for a variety of platforms. + The NuttX demo was ported from the LINUX + demo in this directory and can be found at + apps/examples/modbus. + doc/ Not included. This directory contains Doxygen + support files. + modbus/ Included in its entirety in various locations: + ascii apps/modbus/ascii + functions apps/modbus/functions + include apps/include/modbus + mb.c apps/modbus/mb.c + rtu apps/modbus/rtu + tcp apps/modbus/tcp + tools/ Not included. This directory contains Doxygen + tools. + --------------------------- ---------------------------------------------- + +So this directory is equivalent to the ``freemodbus-v1.5.0/modbus`` directory +except that (1) it may include modifications for the integration with NuttX and +(2) the modbus/include directory was moved to ``apps/modbus``. + +The original, unmodified ``freemodbus-v1.5.0`` was checked in as SVN revision +``4960``. + +The other directory here, ``nuttx/``, implements the NuttX modbus interface. It +derives from the ``freemodbus-v1.5.0/demo/LINUX/port`` directory. + +Configuration Options +--------------------- + +In the original ``freemodbus-v1.5.0`` release, the FreeModBus configuration was +controlled by the header file ``mbconfig.h``. This header file was eliminated +(post revision ``4960``) and the FreeModBus configuration was integrated into the +NuttX configuration system. + +The NuttX-named configuration options that are available include: + +- ``CONFIG_MODBUS`` – General ModBus support. +- ``CONFIG_MB_ASCII_ENABLED`` – Modbus ASCII support. +- ``CONFIG_MB_ASCII_MASTER`` – Modbus ASCII master support. +- ``CONFIG_MB_RTU_ENABLED`` – Modbus RTU support. +- ``CONFIG_MB_RTU_MASTER`` – Modbus RTU master support. +- ``CONFIG_MB_TCP_ENABLED`` – Modbus TCP support. +- ``CONFIG_MB_ASCII_TIMEOUT_SEC`` – Character timeout value for Modbus ASCII. The + character timeout value is not fixed for Modbus ASCII and is therefore a + configuration option. It should be set to the maximum expected delay time of + the network. Default: ``1``. +- ``CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS`` – Timeout to wait in ASCII prior + to enabling transmitter. If defined the function calls ``vMBPortSerialDelay`` + with the argument ``CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS`` to allow for a + delay before the serial transmitter is enabled. This is required because some + targets are so fast that there is no time between receiving and transmitting + the frame. If the master is too slow with enabling its receiver then it will + not receive the response correctly. +- ``CONFIG_MB_FUNC_HANDLERS_MAX`` – Maximum number of Modbus functions codes the + protocol stack should support. The maximum number of supported Modbus + functions must be greater than the sum of all enabled functions in this file + and custom function handlers. If set too small, adding more functions will + fail. +- ``CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF`` – Number of bytes which should be + allocated for the Report Slave ID command. This number limits the maximum size + of the additional segment in the report slave id function. See + ``eMBSetSlaveID()`` for more information on how to set this value. It is only + used if ``CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED`` is set to ``1``. +- ``CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED`` – If the Report Slave ID function + should be enabled. +- ``CONFIG_MB_FUNC_READ_INPUT_ENABLED`` – If the Read Input Registers function + should be enabled. +- ``CONFIG_MB_FUNC_READ_HOLDING_ENABLED`` – If the Read Holding Registers function + should be enabled. +- ``CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED`` – If the Write Single Register function + should be enabled. +- ``CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED`` – If the Write Multiple + registers function should be enabled. +- ``CONFIG_MB_FUNC_READ_COILS_ENABLED`` – If the Read Coils function should be + enabled. +- ``CONFIG_MB_FUNC_WRITE_COIL_ENABLED`` – If the Write Coils function should be + enabled. +- ``CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED`` – If the Write Multiple Coils + function should be enabled. +- ``CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED`` – If the Read Discrete Inputs + function should be enabled. +- ``CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED`` – If the Read/Write Multiple + Registers function should be enabled. + +See also other serial settings, in particular: + +- ``CONFIG_SERIAL_TERMIOS`` – Serial driver supports ``termios.h`` interfaces + If this is not defined, then the terminal settings (baud, parity, etc.) + are not configurable at runtime. + +Note +---- + +The developer of FreeModBus, Christian Walter, is still developing Modbus +libraries, although they are now commercial. See +http://www.embedded-solutions.at/ for further information.
