Skip to Content

Mapping any M-Duino PLC for OpenPLC

How to configure OpenPLC I/O mapping for any M-Duino PLC using a zone-based approach covering digital, analog, and relay outputs
June 18, 2026 by
Boot & Work Corp. S.L, Arnau Tena

Note: this post was created before M-Duino was officially supported in OpenPLC. For an updated guide on using M-Duino with OpenPLC, see this post:

 Using ESP32 PLC, M-Duino and Ardbox with OpenPLC

Prerequisite OpenPLC Tutorials for M-Duino Programming

Before we get to mapping M-Duinos, you may want to take a look at some of the previous posts we made about OpenPLC, especially if you have not familiarized yourself with the software yet.

This post will get you started on how to use OpenPLC to program PLCs:

First steps with OpenPLC

This one builds on the previous post and shows you how to use Modbus with OpenPLC:

Modbus on Arduino with OpenPLC

This last one proves that the M-Duino 42+ can be programmed through OpenPLC:

OpenPLC on M-Duino 42+

How to Map M-Duino PLC Zones in OpenPLC

The M-Duino family of PLCs is very modular, the different models are always built from the same basic blocks. These blocks are called zones. There are three possible layers of zones, and a zone can either be an analog/digital zone or a relay zone. They are easy to tell apart from each other, just look for the presence of relays. If we know how to map these zones, we can easily map any M-Duino.

We will start by mapping the analog/digital zones. We can do this by mapping an M-Duino 58+, which has three layers of analog/digital zones.

M-Duino 58+

ZoneDigital InputsM-Duino 58+IEC 61131-3Modbus input
022, 23, 24, 25, 26, 2, 3, 99,I0.0-I0.6%IX0.0-%IX0.60-6
127, 28, 29, 30, 31, 18, 19, 99,I1.0-I1.6%IX1.0-%IX1.68-14
232, 33, 34, 35, 99, 20, 21, 99I2.0-I2.3, I2.5-I2.6%IX2.0-%IX2.3, %IX2.5-%IX2.616-19, 21-22
ZoneDigital OutputsM-Duino 58+IEC 61131-3Modbus coil
036, 37, 38, 39, 40, 99, 99, 99,Q0.0-Q0.4%QX0.0-%QX0.40-4
141, 42, 43, 44, 45, 99, 99, 99,Q1.0-Q1.4%QX1.0-%QX1.48-12
253, 47, 48, 49, 99, 99, 99, 99,Q2.0-Q2.3%QX2.0-%QX2.316-19
Comm14, 15, 16, 17, 18, 19, 20, 21TX3-SCL%QX3.0-%QX3.724-31
ZoneAnalog InputsM-Duino 58+IEC 61131-3Modbus input R
0A0, A1, A2, A3, A4, A5,I0.7-I0.12%IW0-%IW50-5
1A6, A7, A8, A9, A10, A11,I1.7-I1.12%IW6-%IW116-11
2A12, A13, A14, A15I2.7-I2.10%IW12-%IW1512-15
ZoneAnalog OutputsM-Duino 58+IEC 61131-3Modbus holding R
04, 5, 6,A0.5-A0.7%QW0-%QW20-2
18, 9, 7,A1.5-A1.7%QW3-%QW53-5
212, 13A2.5-A2.6%QW6-%QW76-7

Remember that the 99 is used to prevent different layers from overlapping.

To map the relay zones, we can map the M-Duino 57R+, which has three layers of relay zones.

M-Duino 57R+

ZoneDigital InputsM-Duino 57R+IEC 61131-3Modbus input
02, 3, 99, 99, 99, 99, 99, 99,I0.0-I0.1%IX0.0-%IX0.10-1
118, 19, 99, 99, 99, 99, 99, 99,I1.0-I1.1%IX1.0-%IX1.18-9
220, 21, 99, 99, 99, 99, 99, 99I2.0-I2.1%IX2.0-%IX2.116-17
ZoneDigital OutputsM-Duino 57R+IEC 61131-3Modbus coil
023, 22, 25, 24, 40, 39, 38, 37,R0.1-R0.8%QX0.0-%QX0.70-7
128, 27, 30, 29, 45, 44, 43, 42,R1.1-R1.8%QX1.0-%QX1.78-15
233, 32, 35, 34, 49, 48, 47,R2.1-R2.8%QX2.0-%QX2.716-23
Comm14, 15, 16, 17, 18, 19, 20, 21TX3-SCL%QX3.0-%QX3.724-31
ZoneAnalog InputsM-Duino 57R+IEC 61131-3Modbus input R
0A0, A1, A2, A3,I0.2-I0.5%IW0-%IW30-3
1A6, A7, A8, A9,I1.2-I1.5%IW4-%IW74-7
2A12, A13, A14, A15I2.2-I2.5%IW8-%IW118-11
ZoneAnalog OutputsM-Duino 57R+IEC 61131-3Modbus holding R
04, 5, 6,A0.5-A0.7%QW0-%QW20-2
18, 9, 7,A1.5-A1.7%QW3-%QW53-5
212, 13A2.5-A2.6%QW6-%QW76-7

Applying Zone Mapping to Any M-Duino PLC Model

Now that we know how to map any zone, we can map any M-Duino. For example, we will map the M-Duino 38AR+. It has two zones: the first is analog/digital and the second is relay. To map it, take zone 0 from the first table and zone 1 from the second.

This is the resulting mapping for the M-Duino 38AR+:

ZoneDigital InputsM-Duino 38AR+IEC 61131-3Modbus input
022, 23, 24, 25, 26, 2, 3, 99,I0.0-I0.6%IX0.0-%IX0.60-6
118, 19, 99, 99, 99, 99, 99, 99,I1.0-I1.1%IX1.0-%IX1.18-9
ZoneDigital OutputsM-Duino 38AR+IEC 61131-3Modbus coil
036, 37, 38, 39, 40, 99, 99, 99,Q0.0-Q0.4%QX0.0-%QX0.40-4
128, 27, 30, 29, 45, 44, 43, 42,R1.1-R1.8%QX1.0-%QX1.78-15
99, 99, 99, 99, 99, 99, 99, 99,
Comm14, 15, 16, 17, 18, 19, 20, 21TX3-SCL%QX3.0-%QX3.724-31
ZoneAnalog InputsM-Duino 38AR+IEC 61131-3Modbus input R
0A0, A1, A2, A3, A4, A5,I0.7-I0.12%IW0-%IW50-5
1A6, A7, A8, A9,I1.2-I1.5%IW4-%IW74-7
ZoneAnalog OutputsM-Duino 38AR+IEC 61131-3Modbus holding R
04, 5, 6,A0.5-A0.7%QW0-%QW20-2
18, 9, 7,A1.5-A1.7%QW3-%QW53-5

This is what it looks like in OpenPLC:

You should now be able to map any M-Duino model.

Next post:

MQTT on M-Duino with OpenPLC

​Search in our Blog

Boot & Work Corp. S.L, Arnau Tena June 18, 2026
Share this post
Tags

Looking for your ideal Programmable Logic Controller?

Take a look at this product comparison with other industrial controllers Arduino-based. 

We are comparing inputs, outputs, communications and other features with the ones of the relevant brands.

PLC Comparison