# Direct Modbus Write/Reads (HC900)

**URL:** <https://forum.inductiveautomation.com/t/direct-modbus-write-reads-hc900/104589>\
**Category:** Ignition\
**Tags:** ignition79, scripting, vision\
**Created:** [April 2, 2025, 2:46pm UTC](https://forum.inductiveautomation.com/t/direct-modbus-write-reads-hc900/104589 "2025-04-02T14:46:46Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jacob.leonard](https://avatars.discourse-cdn.com/v4/letter/j/da6949/32.png) [@jacob.leonard](https://forum.inductiveautomation.com/u/jacob.leonard)\
**Post date:** [April 2, 2025, 2:46pm UTC](https://forum.inductiveautomation.com/t/direct-modbus-write-reads-hc900/104589/1 "2025-04-02T14:46:46Z")

</div>

**TLDR:**  
I want to make direct Modbus Writes/Reads without using tags. Is this possible through scripting?

**Details:**  
Using a Honeywell [HC900-C50](https://process.honeywell.com/us/en/products/control-and-supervisory-systems/modular-controllers/controledgehc900#overview) Furnace Controller, I would like to be able to download new heat treat profile settings to a controller and verify that it is correct. This is outlined through this [manual](https://www.dgfg.nl/wp-content/uploads/2018/02/51-52-25-111-hc900-communications-user-guide.pdf), on page 64 (56).

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

Each controller can support 99 profiles\*, which to the layman should be enough, but the furnace guys want even more than 99. I have this idea that we designate a "dynamic" profile and update the dynamic profile's heat treatment details based on what part they are running.

**Issue:**  
The profile can be up to 50 segments of 8 registers each. 400 registers per controller, and we have 6 of them, that's 2400 tags. That just seems like a lot of tags. I know there are ways to lessen the work: dynamic tags, UDTs ect; but I was wondering if there was a way to interact with the Modbus Module itself or do I need to use tags?

(\*) This can be expanded to up to 1310 profiles, but they have issues keeping the profiles consistence across all furnaces, so Modbus reading question still stands. If anyone is using a HC900 Furnace Controller and finds this post, it's under the "Recipe", then "Allocate Recipe Memory" setting.

---

<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:** [April 2, 2025, 3:02pm UTC](https://forum.inductiveautomation.com/t/direct-modbus-write-reads-hc900/104589/2 "2025-04-02T15:02:52Z")

</div>

> [@jacob.leonard](#):
>
> but I was wondering if there was a way to interact with the Modbus Module itself or do I need to use tags?

Yes, these scripting functions do not require tags to exist:

- [system.opc.readValues | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.1/appendix/scripting-functions/system-opc/system-opc-readValues)
- [system.opc.writeValues | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.1/appendix/scripting-functions/system-opc/system-opc-writeValues)

However,

> [@jacob.leonard](#):
>
> 400 registers per controller, and we have 6 of them, that's 2400 tags. That just seems like a lot of tags.

that's a paltry amount of tags in the context of Ignition.

You will also probably need to have at least 1 tag created and polling at less than ~10 seconds, because most Modbus devices will close inactive TCP connections from clients after around this amount of time has elapsed. Otherwise you'll find your device toggling between connected/disconnected states.
