Connecting to Unipi extension

The Unipi extensions are a convenient way how to extend the number of inputs and outputs at one location or make accessible at another one.


The communication between controller and extension is via RS485 ports. The extension acts as a Modbus slave, which has extended support in the Mervis.

You need only two cables (e.g. JYSTY 2×0.8) to connect the Unipi extension to the controller. Just interconnect the RS485-A port on the controller to RS485-A port on the extension and RS485-B on the controller to RS485-B on the extension.

The extension module and the control system communicate via the RS485 serial line using Modbus RTU protocol. For all devices to communicate you need to configure matching communication parameters for each of them. However, each module must have its own unique Modbus address within the bus. Modules can be configured using blue-white (HW configuration) switches placed next to the power connectors, or alternatively next to the RS485 on some models. Another option is configuration via Modbus registers (SW configuration). Configuration via DIP switches offers enough options for most applications, while configuration via Modbus registers provides broader possibilities (wider range of addresses and bitrates).

HW configuration is recommended for the module's first use and the subsequent SW configuration upload.

SW configuration via Modbus RTU

Modules can be easily configured in Mervis, as described in this guide.

Default communication parameters (SW configuration)*:

  • Number of data bits: 8 bits (fixed)
  • Modbus address: 15
  • Bitrate: 19200 baud
  • Parity: None

*SW configuration of the module is used only when all address switches are set to 0 (OFF). Switch states are used only during the module's startup (connecting the power supply, SW reset, Master Watchdog).

Modbus registre tables for Unipi Extension:

HW configuration using DIP switches

Each Unipi Extension features a set of blue-white switches.

Extension xG18:

This module features 6 configurable switches located at the left bottom part. The switch no.6 is placed closest to the power connectors. The lone switch next to the RS485 connector serves to attach/detach terminal resistor, eg. cannot be used for configuration.


  • n.1 → Address bit 1 (OFF - ignored, ON - value +1)
  • n.2 → Address bit 2 (OFF - ignored, ON - value +2)
  • n.3 → Address bit 3 (OFF - ignored, ON - value +4)
  • n.4 → Address bit 4 (OFF - ignored, ON - value +8)
  • n.5 → Bitrate selection (OFF - 19200, ON - 9600)
  • n.6 → Parity selection (OFF - even, ON - none)
Extension xS11, xS51:

These modules have 5 switches located next to the power connector at the module's bottom. The no.5 switch is closest to the power connector.


  • n.1 → Adress bit 1 (OFF - ignored, ON - value +1)
  • n.2 → Adress bit 2 (OFF - ignored, ON - value +2)
  • n.3 → Adress bit 3 (OFF - ignored, ON - value +4)
  • n.4 → Bitrate selection (OFF - 19200, ON - 9600)
  • n.5 → Parity selection (OFF - even, ON - none)
Extension xS10, xS30, xS40:

These modules feature 8 switches located next to the RS485 connector at the upper part of the module. No. 1 switch is closest to the RS485 connector.


  • n.1 → Attaches/detaches the bus terminating resistor (not related to configuration
  • n.2 → Unused
  • n.3 → Address bit 1 (OFF - ignored, ON - value +1)
  • n.4 → Address bit 2 (OFF - ignored, ON - value +2)
  • n.5 → Address bit 3 (OFF - ignored, ON - value +4)
  • n.6 → Address bit 4 (OFF - ignored, ON - value +8)
  • n.7 → Bitrate selection (OFF - 19200, ON - 9600)
  • n.8 → Parity selection (OFF - even, ON - none)
Extension xS50:

Only 3 switches are available on this module, located between the power connector and the digital input terminals at the module's bottom. Switch no. 3 is closest to the power connector.


  • n.1 → Address bit 1 (OFF - ignored, ON - value +1)
  • n.2 → Address bit 2 (OFF - ignored, ON - value +2)
  • n.3 → AAddress bit 3 (OFF - ignored, ON - value +4)

Let's assume you have a basic project in Full mode, you are attached to the controller, you have Executable project with one FBD program and this program is configured as a sole Task of the PLC. And you Set Autogen on the Unipi device. Your workspace should look like this:

As we stated previously, the communication with Unipi extension is via Modbus RTU. To create a channel by right-clicking on the PLC in the Left panel and selecting the Add Channel option.

A new channel will appear under the PLC. Select it and in the Properties panel change the Name to something more descriptive, like ModbusRTU. Also, change the Protocol to Modbus.

Leave the Link Protocol to Serial, but change the Port Number to the serial port on your PLC. Our testing Unipi Neuron L503 is equipped with two RS485 ports, and we will use the one on the 1st group.

We will also change the Baud Rate (a.k.a speed) to 19200, as it is a default value for Unipi's extensions.

Now we can add the device and we can do it in two ways. You are used to right-clicking on the channel name and then clicking on the Add Library Device and then selecting the proper device from the list. This will work, but with Unipi extensions, you can let the Mervis detect all the units on the bus automatically and add all of them at once.

When a new channel is added, the autodetection will not work until you deploy the solution, because the PLC doesn't know this channel yet.

To autodetect the devices, right-click on the channel name in Left panel and in the context menu click on the Unipi - Modules autodetect.

You will be probably presented with dialogue warning you, that the autodetection needs to be executed while the PLC is in the Commissioning mode. The Mervis will offer you to switch to this mode and after the detection, it will switch back to the previous model.

Next dialogue will ask you for the range of Modbus ID's the autodetect will look for. You can leave the default 1 - 15.

The detection has finished and you can see a list of Unipi extensions on your RS485 bus. You can tick the Import checkbox and import their definitions.

And confirm the restore to the previous mode.

A new device(s) will appear under the channel. You should rename them to something more descriptive, e.g. by their purpose or location.

Also, run Set Autogen on the device to generate all the variables which the extension has.

Turn on the Debugging and select the Variable browser tab in the Main window. Under the name, search for the name you gave the extension (in our case the boilerRoom). In the browser, you should now see only the variables for the extension and their current values.

You can try changing the values of boilerRoom_ULED_1.01 and you should see the LED X1 on the extension turn ON and OFF.

We already learned that you can set a subset of the communication parameters by HW DIP switches. Now we will learn, how to set those in Mervis.

To set the parameters, you need to have a working connection with the extension. We already have this in our current project, so let's continue.

The parameters are configured on the device itself. Select the extension in the Left panel and check the properties on the Left panel.

In Mervis, we can set address, baud rate and parity. The data bits will always be 8 and stop bits will be 1. So let's change the parameters to address = 12 and baudrate = 115200.

To save these settings, you need to configure the module. Right-click on the extension in the Left panel and in the context menu, click on Unipi - Configure module.

You will probably be asked to switch to Commissioning mode as with the autodetection. After confirmation, you will see a progress bar of the configuration. After the configuration finishes, confirm the dialogue by clicking on OK

We downloaded the configuration into the extension, but to apply the settings, you need to restart the extension as well.

Now that we changed the configuration of extension, we need to do changes in the project as well. Remember, that our ModbusRTU channel is configured to 19200bps. We need to change it to 115200bps to match the speed of the extension. You should know the drill: select the channel in Left panel, change the Baud Rate property in the Properties panel to 115200 and don't forget to Deploy the solution afterwards.

If you run the Unipi - Modules autodetect again, you should find the extension on new address 12. You could import the new device, but then you would have two devices under the ModbusRTU channel. An easier way is to change the communication address in the current device's properties. Select the extension in the Left panel and in the Properties panel check the Modbus Device Parameters.

Change the Device Address to match the Module SW Address, Deploy the solution and start the Debugging. In the Variable browser you should see all the properties and their current value.