# Modbus TCP Default Max Holding Registers Per Request Amount Is To Big

**URL:** <https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022>\
**Category:** Ignition\
**Created:** [October 4, 2023, 3:39pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022 "2023-10-04T15:39:06Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jacob\_Leonard](https://avatars.discourse-cdn.com/v4/letter/j/919ad9/32.png) [@Jacob\_Leonard](https://forum.inductiveautomation.com/u/Jacob_Leonard)\
**Post date:** [October 4, 2023, 3:39pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/1 "2023-10-04T15:39:06Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/5/d5a142673ddc0f3e602102f03b07db0b54d61732.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/6/9616a906bde9fe358135f1598f146af56d87cefb.png)  
It is my understanding that the max number of registers that you can read over Modbus TCP is 123 and the setting defaults to 125

---

<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:** [October 4, 2023, 4:12pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/2 "2023-10-04T16:12:54Z")

</div>

The limit would be the ReadHoldingRegistersResponse, and 125 registers fits just fine.

FC - 1 byte  
Byte Count - 1 byte  
Data - 250 bytes

The length indicated in the MBAP header would be 253 because it includes the 1 byte unit id that follows it.

---

<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:** [October 4, 2023, 4:24pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/3 "2023-10-04T16:24:33Z")

</div>

The Modbus ADU limit of 256 only applies to Modbus RTU. Modbus TCP has a separate specification. The pictured reference document is simply wrong.

---

<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:** [October 4, 2023, 4:24pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/4 "2023-10-04T16:24:58Z")

</div>

It's from Wikipedia. The author drew an incorrect conclusion out of thin air 🤷‍♂️

---

<div class="post-metadata">

**Author:** ![Jacob\_Leonard](https://avatars.discourse-cdn.com/v4/letter/j/919ad9/32.png) [@Jacob\_Leonard](https://forum.inductiveautomation.com/u/Jacob_Leonard)\
**Post date:** [October 4, 2023, 6:58pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/5 "2023-10-04T18:58:21Z")

</div>

Ok. Thanks everyone for their input. Now I just need to update the Wikipedia entry in this. Hopefully anyone who has this question again will see this post

---

<div class="post-metadata">

**Author:** ![Jacob\_Leonard](https://avatars.discourse-cdn.com/v4/letter/j/919ad9/32.png) [@Jacob\_Leonard](https://forum.inductiveautomation.com/u/Jacob_Leonard)\
**Post date:** [October 4, 2023, 7:02pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/6 "2023-10-04T19:02:09Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/9/89d5cdc0ad12835997fceb4bd392d1911d49a767.png)  
page 5 of citation 7 from Wikipedia ([https://modbus.org/docs/Modbus\_Application\_Protocol\_V1\_1b3.pdf](https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf))

---

<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:** [October 4, 2023, 7:05pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/7 "2023-10-04T19:05:58Z")

</div>

I'm not sure what you're highlighting here. Do the math that I already laid out for you - a request for 125 registers fits.

Or is this reference for some future traveler?

---

<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:** [October 4, 2023, 8:40pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/8 "2023-10-04T20:40:46Z")

</div>

You underlined the **PDU**. That is the same in both MB Serial and MBTCP. The request or response has to fit in 253 bytes, regardless which type of frame it travels in.

---

<div class="post-metadata">

**Author:** ![Jacob\_Leonard](https://avatars.discourse-cdn.com/v4/letter/j/919ad9/32.png) [@Jacob\_Leonard](https://forum.inductiveautomation.com/u/Jacob_Leonard)\
**Post date:** [October 6, 2023, 12:45pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/9 "2023-10-06T12:45:09Z")

</div>

future traveler

---

<div class="post-metadata">

**Author:** ![francis.henry](https://avatars.discourse-cdn.com/v4/letter/f/a88e4f/32.png) [@francis.henry](https://forum.inductiveautomation.com/u/francis.henry)\
**Post date:** [August 3, 2024, 2:50am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/10 "2024-08-03T02:50:23Z")

</div>

Well Im the future traveler 🙂 Schneider M580 plc with modbus tcp connection would not accept 125 max holding registers when writing consecutive addresses. We are using system.opc.writeValues

Just had a good 2.5 hours of discussion with ignition support and it simply would not work with anything higher than 123.

Non consecutive writing works as long as you dont have more than 123.

---

<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:** [August 3, 2024, 3:25am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-default-max-holding-registers-per-request-amount-is-to-big/80022/11 "2024-08-03T03:25:14Z")

</div>

The max for _writes_ actually is 123, not 125. The driver may use the setting for both, which I wouldn’t argue against being a bug.
