# Modbus TCP driver with Schneider M580 PLC

**URL:** <https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101>\
**Category:** Ignition\
**Created:** [January 11, 2024, 10:52am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101 "2024-01-11T10:52:48Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Curlyandshemp](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Curlyandshemp](https://forum.inductiveautomation.com/u/Curlyandshemp)\
**Post date:** [January 11, 2024, 10:52am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/1 "2024-01-11T10:52:48Z")

</div>

I have an upcoming project where I need to read Holding Register tags from a Schneider M580 PLC. Looking at the Ignition documentation, Holding Registers are consider to be 4XXXX and above, so in Ignition HR1 would read 40001 in the PLC.  
But the M580 Holding Registers are in the 4XXXXX range. Would HR1 in Ignition read 400001 ?  
I do not have access to M580 PLC to try this at the moment, but have to configure Ignition on the job site. Would like to be prepared if Ignition has an issue with the starting range of the Holding Registers

---

<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:** [January 11, 2024, 1:11pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/2 "2024-01-11T13:11:38Z")

</div>

HR1 reads HR1. The 4 prefix is a made up convention used by some devices to indicate Holding Register area. You’ll have to try it and see. In this case it seems likely.

---

<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:** [January 11, 2024, 1:16pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/3 "2024-01-11T13:16:39Z")

</div>

> [@Kevin.Herron](#):
>
> made up convention used by some devices

Made up for the original Gould Modicon family of PLCs. Before you were born, I think. 😆

> [@Curlyandshemp](#):
>
> I do not have access to M580 PLC

Consider setting up my Modbus Server driver temporarily, to provide a target for your development. (You can run it in a 2nd Ignition instance and point IA's native driver at it.)

---

<div class="post-metadata">

**Author:** ![peter](https://avatars.discourse-cdn.com/v4/letter/p/278dde/32.png) [@peter](https://forum.inductiveautomation.com/u/peter)\
**Post date:** [January 11, 2024, 3:35pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/4 "2024-01-11T15:35:43Z")

</div>

> [@pturmel](#):
>
> Made up for the original Gould Modicon family of PLCs

Now I'm having flashback to a very long time ago. I can see in my mind the image of a genuine Gould Modicon PLC sitting in a cabinet, but for the life of me I can't remember what job site that was on. 🤣

---

<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:** [January 11, 2024, 3:38pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/5 "2024-01-11T15:38:26Z")

</div>

My very first PLC programming task in my very first full-time job was a Modicon 584. The second PLC programming task was an adjacent Modicon 984. About a year later, a different part of that facility introduced me to Allen-Bradley (PLC-5).

Yeah, I'm old. 😆

---

<div class="post-metadata">

**Author:** ![peter](https://avatars.discourse-cdn.com/v4/letter/p/278dde/32.png) [@peter](https://forum.inductiveautomation.com/u/peter)\
**Post date:** [January 11, 2024, 3:50pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/6 "2024-01-11T15:50:04Z")

</div>

Yeah, well I started off with

- Some PLC (Siemens?) that had a dedicated, hardware only programmer that had separate physical switches for inserting each type of logic element in a rung.

- GE Series Six, and the 30lb "portable" programmer with the 6 inch screen.

- Minicomputers that had their drum memory replaced with a solid state solution - but still had physical meters with moving needles that showed disk usage 0-100%

Great times 🤣

---

<div class="post-metadata">

**Author:** ![jay](https://avatars.discourse-cdn.com/v4/letter/j/ed8c4c/32.png) [@jay](https://forum.inductiveautomation.com/u/jay)\
**Post date:** [January 11, 2024, 6:11pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/7 "2024-01-11T18:11:00Z")

</div>

The PLC address of the first holding register on an M580 is %MW0. The Ignition address for that register is HR0. You must set up the device so that 1 based addressing is NOT selected and do select reverse word order.

The first coil in the M580 is %M0. That would be accessed from Ignition as %C0.

Unity processors do not use the 4xxxxx addressing unless you go out your way to enable them, usually from importing an old Proworx program.

---

<div class="post-metadata">

**Author:** ![Curlyandshemp](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Curlyandshemp](https://forum.inductiveautomation.com/u/Curlyandshemp)\
**Post date:** [January 11, 2024, 7:31pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/8 "2024-01-11T19:31:40Z")

</div>

I was able to connect to the PLC and read tags correctly. Floats were not correct until i selected Word swapping in the OPC-UA driver

---

<div class="post-metadata">

**Author:** ![Curlyandshemp](https://avatars.discourse-cdn.com/v4/letter/c/bcef8e/32.png) [@Curlyandshemp](https://forum.inductiveautomation.com/u/Curlyandshemp)\
**Post date:** [January 11, 2024, 7:48pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/9 "2024-01-11T19:48:16Z")

</div>

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

This is where I derived the addressing from, the existing Vijeo HMI project

---

<div class="post-metadata">

**Author:** ![jay](https://avatars.discourse-cdn.com/v4/letter/j/ed8c4c/32.png) [@jay](https://forum.inductiveautomation.com/u/jay)\
**Post date:** [January 11, 2024, 7:53pm UTC](https://forum.inductiveautomation.com/t/modbus-tcp-driver-with-schneider-m580-plc/84101/10 "2024-01-11T19:53:02Z")

</div>

OK. The address of "PV" in the M580 should be %MW14940 and %MW14941. You would see that in the Unity/ControlExpert program under "Elementary Variables"
