# Modbus address Problem with TCP/IP device

**URL:** <https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348>\
**Category:** Ignition\
**Created:** [May 31, 2023, 12:06pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348 "2023-05-31T12:06:17Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![yogesh\_n](https://avatars.discourse-cdn.com/v4/letter/y/d2c977/32.png) [@yogesh\_n](https://forum.inductiveautomation.com/u/yogesh_n)\
**Post date:** [May 31, 2023, 12:06pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/1 "2023-05-31T12:06:17Z")

</div>

I'am using ABB controller TCP/IP device here attched all details

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/c/2c515b8043fdfc690b676c4c89b594bb74abdc7e.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/7/e/7e844a0a42f2542a3e7016e30a66bc028ac45c88.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/2/922050f2bce5f0e40f8ebc736a64267718c14a31.png)

But am getting error can you please help us regarding this issue how can we solve by entering correct value?

Thanks

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 31, 2023, 12:11pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/2 "2023-05-31T12:11:53Z")

</div>

Based on the hexadecimal values, which typically are used for one-the-wire documentation, I would expect you to need zero-based addressing (a device setting in Ignition).

With modbus TCP, you may also need to use UnitID zero, not 1. The docs should say or should have an example.

---

<div class="post-metadata">

**Author:** ![yogesh\_n](https://avatars.discourse-cdn.com/v4/letter/y/d2c977/32.png) [@yogesh\_n](https://forum.inductiveautomation.com/u/yogesh_n)\
**Post date:** [May 31, 2023, 12:48pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/3 "2023-05-31T12:48:07Z")

</div>

Thanks for the quick response

can you please give me example based on the mobus mapping register  
it will help us

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 31, 2023, 12:57pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/4 "2023-05-31T12:57:59Z")

</div>

I don't use the modbus mapping feature, so I cannot help you. {In fact, I don't use IA's Modbus driver at all. I [wrote my own](https://forum.inductiveautomation.com/t/automation-professionals-advanced-modbus-driver/41312) to supply some missing features.}

---

<div class="post-metadata">

**Author:** ![yogesh\_n](https://avatars.discourse-cdn.com/v4/letter/y/d2c977/32.png) [@yogesh\_n](https://forum.inductiveautomation.com/u/yogesh_n)\
**Post date:** [May 31, 2023, 1:16pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/5 "2023-05-31T13:16:32Z")

</div>

If i did zero this is what i got

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/7/b/7bfa69fe4bbf7448ecccd688487b13abd6c45d08.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/b/dbf62e232a0baf62433a02d8adb266b5139c0d39.png)

---

<div class="post-metadata">

**Author:** ![yogesh\_n](https://avatars.discourse-cdn.com/v4/letter/y/d2c977/32.png) [@yogesh\_n](https://forum.inductiveautomation.com/u/yogesh_n)\
**Post date:** [May 31, 2023, 1:17pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/6 "2023-05-31T13:17:16Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/7/c/7c33fb44b6b1e998d5b6d1bfc0ddcba4c9cc2d7d.png)

---

<div class="post-metadata">

**Author:** ![sherman](https://avatars.discourse-cdn.com/v4/letter/s/e5b9ba/32.png) [@sherman](https://forum.inductiveautomation.com/u/sherman)\
**Post date:** [May 31, 2023, 7:36pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/7 "2023-05-31T19:36:00Z")

</div>

The modbus address field should not include the function offset. Holding registers are in the 40000 range so if you had 43254 and you are zero indexed it would be 3254.

However the register you had highlighted is in the 30000 range, which is not the holding registers but rather the input registers. So you need to change the drop-down to the appropriate mode and then subtract the base value from the register (30000 or 30001, depending on the configuration)

Maybe this is helpful [Standard Modbus Data Address Format](https://www.fernhillsoftware.com/help/drivers/modbus/data-address-format.html)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 31, 2023, 7:40pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/8 "2023-05-31T19:40:00Z")

</div>

> [@sherman](#):
>
> the 30000 range, which is not the holding registers but rather the input registers

No, the material from the docs, particularly the hexadecimal offsets, very clearly indicate that these are offsets without the '3' or '4' prefix. (Modbus offsets are 16-bit unsigned integers. Only the oldest devices are limited to 9999. Which is clearly shown in your Fernhill link.)

---

<div class="post-metadata">

**Author:** ![sherman](https://avatars.discourse-cdn.com/v4/letter/s/e5b9ba/32.png) [@sherman](https://forum.inductiveautomation.com/u/sherman)\
**Post date:** [May 31, 2023, 7:47pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/9 "2023-05-31T19:47:14Z")

</div>

Huh I've never seen a device that was programmed like that. Admittedly I've only used a dozen or so, but all of them had decimal register addresses, and I never needed to use the offsets. I can't see the headers for the mapping document so I was guessing that the 2nd column was the address, which look like 32 bit input registers.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 31, 2023, 7:47pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/10 "2023-05-31T19:47:23Z")

</div>

@yogesh_n, consider contacting support. They can look over your shoulder while you try various combinations.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 31, 2023, 7:49pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/11 "2023-05-31T19:49:27Z")

</div>

The first column is the hexadecimal of the second column. I can't recall ever seeing the hexadecimal shown when it **wasn't** the zero-based protocol offset.

---

<div class="post-metadata">

**Author:** ![sherman](https://avatars.discourse-cdn.com/v4/letter/s/e5b9ba/32.png) [@sherman](https://forum.inductiveautomation.com/u/sherman)\
**Post date:** [May 31, 2023, 8:18pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/12 "2023-05-31T20:18:06Z")

</div>

Well based on the document shown at the top and the assumption that we are zero-indexed my guess to read the first three contiguous registers would be something like this

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/8/084b13214396a009c6438ed41ebc3183fe0acb05.png)

edit: should be float not double, since they are 2 registers wide

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 31, 2023, 8:21pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/13 "2023-05-31T20:21:38Z")

</div>

Sigh. No.

---

<div class="post-metadata">

**Author:** ![sherman](https://avatars.discourse-cdn.com/v4/letter/s/e5b9ba/32.png) [@sherman](https://forum.inductiveautomation.com/u/sherman)\
**Post date:** [May 31, 2023, 8:37pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/14 "2023-05-31T20:37:57Z")

</div>

I am confused why you think this isn't possible -- the first column being hex addresses lines up perfectly with the second column being decimal addresses. 9002x0 == 36866. 30000 is coded to Input Registers, and while I don't know that those fields aren't 32 bit integers voltage seems like it would be some kind of float. Maybe it should be Input Register (Float) instead of Input Register (Double)?

---

<div class="post-metadata">

**Author:** ![Ryan\_Allen](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_allen/32/47013_2.png) [@Ryan\_Allen](https://forum.inductiveautomation.com/u/Ryan_Allen)\
**Post date:** [May 31, 2023, 8:45pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/15 "2023-05-31T20:45:12Z")

</div>

In your modbus device connection, under "Show advanced properties," try setting the Zero-based Addressing to true. This is what he meant.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/4/d4e33e368c1189363ba3dc58cfc797aec82b8149.png)

The unit ID should be changed from 0 to whatever the Modbus ID of your device is.

Here's an example i eventually got to work:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/3/63a8cfabeca3ce1ed81df2f32c4e752b70f8fcd1.png)

Setting the Start address to be the same as the Modbus Address worked for me.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 31, 2023, 8:45pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/16 "2023-05-31T20:45:40Z")

</div>

> [@sherman](#):
>
> 30000 is coded to Input Registers

only in "Modicon" syntax. It would be strange for them to give you an offset in hex, translate it to decimal, _then_ expect you to treat the first digit as an area specifier.

We're all just sitting here bickering for no reason though because none of us can verify this.

---

<div class="post-metadata">

**Author:** ![sherman](https://avatars.discourse-cdn.com/v4/letter/s/e5b9ba/32.png) [@sherman](https://forum.inductiveautomation.com/u/sherman)\
**Post date:** [May 31, 2023, 8:59pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/17 "2023-05-31T20:59:43Z")

</div>

I guess it could feel like bickering if you assume that everyone involved already know everything they could know. However, I just learned that there are multiple syntaxes for Modbus TCP -- I've never personally seen a device with a 6 digit address schema. I also have never needed to use hex offsets when I have the decimal address available to me.

What I posted was my honest guess at how to solve the problem 🤷‍♂️. Like I said I can't see the headers for the data sheet so I don't know if those are holding registers designated in a 6 digit format, if I was handed the sheet I would look at them and assume they are input registers. In a 6 digit format they could be either input or holding registers, in which case the map rows might look like

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/e/e/ee8432c6c5f3de0f8bf407654e99bdaf54af26f2.png)

or

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/6/56c8bf6e78dfd8eb8e7ef17692c349b01831a2c6.png)

either of which is different than what @yogesh_n put in the original page (Unit ID 0, [start-end] == 3 as they are spanning 6 registers before there is a gap -- I have seen devices reject requests for data where there are no registers mapped, although it's not a given).

For completeness, if it were indeed an input register (which is seeming less likely, with the observation that the hex offsets are per-datatype rather than global), I think it would look like this:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/1/d1726118c6a6098b48dc01a2aaf28bea755b9355.png)

---

<div class="post-metadata">

**Author:** ![sherman](https://avatars.discourse-cdn.com/v4/letter/s/e5b9ba/32.png) [@sherman](https://forum.inductiveautomation.com/u/sherman)\
**Post date:** [May 31, 2023, 9:01pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/18 "2023-05-31T21:01:09Z")

</div>

From what I understand about the modbus mapper, the start and end addresses are for the tags that become available in Ignition -- while you _can_ set them to be the same, they really just need to span the range that you want to map.

---

<div class="post-metadata">

**Author:** ![Ryan\_Allen](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_allen/32/47013_2.png) [@Ryan\_Allen](https://forum.inductiveautomation.com/u/Ryan_Allen)\
**Post date:** [May 31, 2023, 9:02pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/19 "2023-05-31T21:02:22Z")

</div>

IIRC when i set this up, doing a 0-10 start didn't work for me.

---

<div class="post-metadata">

**Author:** ![sherman](https://avatars.discourse-cdn.com/v4/letter/s/e5b9ba/32.png) [@sherman](https://forum.inductiveautomation.com/u/sherman)\
**Post date:** [May 31, 2023, 9:12pm UTC](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348/20 "2023-05-31T21:12:45Z")

</div>

Could have been because you couldn't sweep all of them in one fell swoop, you'd need to do still the three rows but from 0-4 each. They'd then look like LS50-LS54, LS60-LS64, and LS70-LS74.

I think that then if you wanted you'd be able to do three rows with just LS as the header and then 0-4, 5-9, 10-14 and you'd functionally have LS0-LS14 (it may default to three folders, but I think you could add them to project all into one). I'm not 100% sure about this though, I'd have to try and see if it worked.

[Next page](https://forum.inductiveautomation.com/t/modbus-address-problem-with-tcp-ip-device/74348.md?page=2)
