Setting up the Modbus RTU Channel (Release 3.3 and Prior)

For SmartServer 3.4 and higher, see Setting up the Modbus RTU Channel. 

This section consists of the following:

Modbus RTU Channel Overview

The SmartServer IoT Starter Kit includes an Advantech ADAM-4150 DIO module. This module includes LEDs that indicate the state of the module’s digital outputs. A pair of switches to the right of the module are connected to inputs DI-0 and DI-1 as shown in the figure below. Two of the wires loop back connecting outputs DO-0 to DI-2, and DO-1 to DI-3. 


Get started setting up the Modbus RTU channel following the steps in the section below: Getting Started with Modbus RTU Channel Setup. 

Getting Started with Modbus RTU Channel Setup

The ADAM-4150 module initially communicates using Advantech’s proprietary serial protocol. The communication interface can be upgraded to support Modbus RTU using an ADAM 4000/5000 utility and and USB to RS-485 converter. This utility is available for download at https://support.advantech.com/support/DownloadSRDetail_New.aspx?SR_ID=1-9HOC2&Doc_Source=Download.

An easier option leverages the programming support of the SmartServer IoT. A small node.js application is provided to accomplish this task. Follow these steps:

Note: You need to have winscp.exe and putty.exe installed on your PC for this procedure.

  1. Use winscp.exe to create the following folder on the SmartServer IoT (you should be connected with the SmartServer apollo username and password):
    /var/apollo/data/apps/adam-setup

  2. Transfer adam-setup.zip from the Starter Kit archive → Modbus RTU Channel folder to the SmartServer IoT folder that was created in the previous step.

  3. Use PuTTY to connect to the SmartServer SSH console.

  4. Enter the following command: cd /var/apollo/data/apps/adam-setup

  5. Enter the following command: unzip adam-setup.zip

  6. Enter the following command: rm adam-setup.zip

  7. Power down the ADAM-4150 module by unplugging the bottom power supply connector.

  8. Move the configuration switch from the Normal to Init position.



  9. Power up the ADAM-4150 module by plugging in the bottom power supply connector. With the following step, the ADAM-4150 module to setup to use Modbus address 01 and to communicate at 19200 Baud, no parity, and one stop bit.

  10. Enter the following command: node adamConfig.js 01 7

    This command configures the ADAM-4150 module to use a 19200 Baud serial Modbus at address 01. 

    You should see a result similar to the following:




  11. Power down the ADAM-4150 module by unplugging the bottom power supply connector.

  12. Move the configuration switch from the Init to Normal  position. If you neglect to move the switch to the Normal position, the module will not use the Modbus settings that were just programmed.



  13. Power up the ADAM-4150 module by plugging in the bottom power supply connector.

    Note: It is only necessary to set the configuration switch as described in this procedure one time for the ADAM-4150 module. If you are not sure about the programmed state of the ADAM-4150 module, move the switch to the Init position and perform steps #9-13 above.

Continue setting up the Modbus RTU channel following the steps in the section below: Setting the RS-485 Configuration UI. 

Setting the RS-485 Configuration UI

  1. Log into the SmartServer configuration UI using the username and password that appears on the SmartServer IoT.

  2. The Network Configuration page appears.



  3. Click the RS-485 tab.

    The RS-485 Configuration page appears.



  4. Configure your RS-485-1 settings to match those shown in the figure below. When you configured the ADAM-4150 module at Modbus address 01, you also set the serial bit rate it would use to communicate. The above instructions set the baud rate to 19200. The module's serial frame does not use parity and looks for only 1 stop bit.



  5. Click Update.

Continue setting up the Modbus RTU channel following the steps in the section below: Creating Modbus Devices. 

Creating Modbus Devices

Now that the ADAM-4150 module is prepared to be accessed as a Modbus RTU device, with Modbus address of 01 and a 19200 Baud serial connection, the device can be added to the SmartServer IoT. To create a Modbus device, perform the following steps:

  1. Access the SmartServer IoT CMS by using the CMS tab on the Configuration UI, or by entering the URL https://[SmartServer IP address]/cms/#/login. 

  2. Go to the Devices Types widget and click the Import button ().



  3. Select the ADAM-4150v20.dtp from the Start Kit Modbus RTU Channel folder in the DROP FILE HERE area.





  4. Click IMPORT FILE.

    Notification messages will appear indicating that files are being uploaded and the CPU usage on the main CMS page will show increased activity. After about a minute, you should see a message similar to the one shown below. (Click  to close All information messages.)



  5. Click BACK on the Device Types widget.

  6. Go to the Devices widget, which will be used to add a Modbus device to the system. Take note of the device name and character cases that will be used in creating the device. 

  7. Click the Create button () on the Devices widget and add a device as shown in the figure below (leave the Context field empty):
    • Name: DIO
    • Device category: Edge Device



  8. Click NEXT.

  9. Set the following fields as shown in the figure below:
    • UID: 01:1
    • Integration method: Manual assignment
    • Owner: SmartServer IoT
    • Driver: Modbus
    • Device type: ADAM-4150



  10. Click SAVE.

  11. To provision the device, click the Action button () on the Devices widget for DIO device.

  12. Select the Provision device menu option.

    Within a few seconds, the DIO device fill should change from blue to green indicating that the device has be successfully provisioned. If the provision fails, confirm that the Modbus channel on RS-485-1 is set for 19200, no parity, and one stop bit as described in the Setting the RS-485 Configuration UI section.

    Warning: With SmartServer IoT release 2.8, the Modbus engine is locked in to communicate to the device with the channel parameters already configured at device creation. If the Modbus channel parameters are changed, you will need to remove the Modbus device and recreate it.

Begin using the DIO module following the steps in the section below: Interacting with the DIO Module. 

Interacting with the DIO Module

Using the Datapoint Properties Widget

The ADAM-4150v20.dtp package defines the interface to access the digital input and output of the ADAM-4150 device using Modbus RTU and the RS-485-1 channel. This package includes a .dla file that provides Modbus driver instructions for monitoring the data and presenting the data events to the rest of the system. The Adam-4150V20.dla.csv file is contained ADAM-4150v20.dtp archive that was imported in the Creating Modbus Devices section.

Follow the steps below to take a closer look at how this works.

  1. Go to the Datapoint Properties widget.

    Note: Click the Expand button (  ) for a better view of this widget. 


    Notice that the Monitored attribute is set to On as shown below.

    Note: To reduce the scope of data that appears on the Datapoint Properties widget, set the filter to narrow down the display to Modbus driver.



  2. To edit datapoint properties for Datapoint  DI_0, click the Action button () and select the Edit action. 



    The Edit Datapoint Properties view appears.



  3. Click the MONITORING AND LOGGING CONFIGURATION tab.

    As shown in the figure below, the Monitored Yes slider is enabled. Since the Modbus driver can only poll datapoints, in order for the values to be monitored continuously, you need to enable the Polled Yes slider. Also, 
    Poll Interval (Seconds) is set to 2 and Publish Minimum Delta Value is set to On Any Change.



    These settings are important because the event traffic that would be created with 14 datapoints being polled every 2 seconds would needlessly consume CPU cycles. Therefore, if you are not using some of the inputs or outputs in your system, you should disable monitoring for the associated datapoints. (This optimization is not required for a small demonstration panel.)

  4. Exit fullscreen mode for the Datapoint Properties widget by clicking the Collapse button ().

Using the Datapoint Browser Widget

Notice in the figure below that DI_0 is connected to the top switch and DI_1 is connected to the middle switch. The outputs DO_0 and DO_1 connect to inputs DI_2 and DI_3 respectively. 

In the steps that follow, you will use the Datapoint Browser widget to monitor and interact with these points. Follow the steps below to take a closer look at how this works. 

Note: Since monitoring is enabled for the DIO module points, polling done by the Datapoint Browser widget is redundant and not necessary. Therefore, before getting started with the Datapoint Browser widget, you will need to change the Poll Interval (Seconds) on the Datapoint Properties widget from 2s to 0s.

With Poll Interval (Seconds) set to 0s on the Datapoint Properties widget, the Refresh button () on the Datapoint Browser widget (shown in the figure below) can be used to force a get of the current value.


  1. Go to the Datapoint Browser widget.

    Notes: Click the Expand button (  ) for a better view of this widget. 

    To reduce the scope of data that appears on the Datapoint Browser widget, set the filter to narrow down the display to Modbus driver.


  2. Select the checkmark next to each of the following six datapoints: DI_0, DI_1, DI_2, DI_3, DO_0, and DO_1 (the checkmark changes from blue to yellow). Use the scroll bar as needed to select all of the desired devices.



  3. Click the Action button () on the Datapoint Browser widget and select the Show Selected Datapoints action.



    The Datapoint Browser display is updated with only the six selected datapoints.

    The action of the switches on the Starter Kit, and the modification of DO_0 and DO_1 values in the Datapoint Browser widget, will be reflected within the 2s poll interval that is defined in the Adam-4150V20.dla.csv file. This file is contained in the ADAM-4150v20.dtp archive that was imported the Creating Modbus Devices section.



    You have succeeded integrating a simple Modbus RTU device with the SmartServer IoT. Success requires device setup and serial frame compatibility. As with all RS-485 based devices, it is important to pay attention to the communication wire polarity, and the inclusion of the common ground. Go to Creating Devices to set up other devices.