zephyr/samples/subsys/modbus/rtu_client
Keith Packard 0b90fd5adf samples, tests, boards: Switch main return type from void to int
As both C and C++ standards require applications running under an OS to
return 'int', adapt that for Zephyr to align with those standard. This also
eliminates errors when building with clang when not using -ffreestanding,
and reduces the need for compiler flags to silence warnings for both clang
and gcc.

Most of these changes were automated using coccinelle with the following
script:

@@
@@
- void
+ int
main(...) {
	...
-	return;
+	return 0;
	...
}

Approximately 40 files had to be edited by hand as coccinelle was unable to
fix them.

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-04-14 07:49:41 +09:00
..
src samples, tests, boards: Switch main return type from void to int 2023-04-14 07:49:41 +09:00
app.overlay modbus: remove label property from devicetree overlays 2022-08-11 09:39:24 -07:00
CMakeLists.txt
prj.conf
README.rst
sample.yaml tests/samples: use integration_plaforms in more tests/samples 2022-11-29 16:03:23 +01:00

.. _modbus-rtu-client-sample:

Modbus RTU Client Sample
########################

Overview
********

This is a simple application demonstrating a Modbus RTU client implementation
in Zephyr RTOS.

Requirements
************

This sample has been tested with the nRF52840-DK and FRDM-K64F boards,
but it should work with any board that has a free UART interface.

RTU client example is running on an evaluation board and communicates
with another board that has been prepared according to the description
`modbus-rtu-server-sample`.

In addition to the evaluation board a RS-485 shield may be used.
The shield converts UART TX, RX signals to RS-485.
An Arduino header compatible shield like `joy-it RS-485 shield for Arduino`_
can be used. This example uses DE signal, which is controlled by pin D9
on the JOY-IT shield. For other shields, ``de-gpios`` property must be adapted
or removed in the application overlay file
:zephyr_file:`samples/subsys/modbus/rtu_client/app.overlay`

The A+, B- lines of the RS-485 shields should be connected together.

Alternatively UART RX,TX signals of two boards can be connected crosswise.

Building and Running
********************

This sample can be found under
:zephyr_file:`samples/subsys/modbus/rtu_client` in the Zephyr tree.

The following commands build and flash RTU client sample.

.. zephyr-app-commands::
   :zephyr-app: samples/subsys/modbus/rtu_client
   :board: frdm_k64f
   :goals: build flash
   :compact:

The example communicates with the RTU server and lets the LEDs light up
one after the other.

.. code-block:: console

   *** Booting Zephyr OS build zephyr-v2.3.0-1993-g07e8d80ae028  ***
   [00:00:00.005,000] <inf> mb_rtu: RTU timeout 2005 us
   [00:00:00.050,000] <inf> mbc_sample: WR|RD holding register:
   48 00 65 00 6c 00 6c 00  6f 00 00 00 00 00 00 00 |H.e.l.l. o.......
   [00:00:00.062,000] <inf> mbc_sample: Coils state 0x00
   [00:00:00.864,000] <inf> mbc_sample: Coils state 0x07


.. _`joy-it RS-485 shield for Arduino`: https://joy-it.net/en/products/ARD-RS485