Introduction: Modbus TCP Communication Between Arduino and Industrial Devices


An industrial way to control an Arduino board with industrial HMI and to link it to an industrial network with a Modbus TCP comunication.

Step 1: The Devices to Link to the Network

To do this performance I made an electrial cabinet which include the PLC S7-1200 and the HMI KTP700 Basic (SIEMENS) as shown on the picture. I give you the schematic of this cabinet.

I used a Schneider HMI like HMISTU655 with ethernet/USB.

I made too an Arduino clone board based on an Atmega 1284p (see one of my instructables).

Step 2: The Softwares to Use

I used many softwares but only 2 of them are free. All this electrical installation is very expensive and it 's a great opportunity to have it in my work place.

The softwares for what:

  • AdvancedHMI (FREE) to supervise the PLC S7-1200 and the Arduino board
  • TIA PORTAL V13 (EXPENSIVE) to programme the PLC S7-1200 and the HMI KTP700
  • Grafcet Studio PRO (EXPENSIVE) is way to program the PLC S7-1200 with SFC programming. You need to work with a project (ready to use in TIA PORTAL) supplied by Grafcet Studio and called GRAFCET ENGINE which must be downloaded in the PLC. Then You'll be able to download sketch from Grafcet Studion into the PLC directly.
  • VIjéo Designer 6.2 (EXPENSIVE) to program the HMI MAGELIS HMISTU655 (Schneider).
  • Arduino 1.8.x (FREE) with 3 awsome libraries: The MightyCore (to be able to use atmegas 40DIP), mudbus (manage ModbusTCP with an ethernet shield) end SMlib (to run state machines fited to automation).

I give 2 tutorials: (in french, no translation but it's easy to understand, sorry)

  • EXAMPLEs S7-1200: some informations to use

    TIA PORTAL V13+S7-1200+AdvancedHMI+Grafcet Studio,

    TIA PORTAL V13+S7-1200+AdvancedHMI+Grafcet Studio (a more simple way to control with modbus tcp)

    TIA PORTAL V13+S7-1200+KTP700 Basic+Grafcet Studio

    TIA PORTAL V13+KTP700 Basic+Arduino Clone Ethernet Shield


  • TUTO MAGELIS HMI: how to use Vijéo Designer 6.2 and control an Arduino board.

I give the archive: _FILES, the files used run the project.

Step 3: To Conclude:

As for me, the SIEMENS solution is a little bit more complicated to program than the Schneider solution. But it's still remain very very expensive.

Thanx to all reliable tutorials I read to manage this project.

Happy instructable.