# Ignition8 Modbus Write Multiple registers function 16

**URL:** <https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257>\
**Category:** Ignition\
**Created:** [April 19, 2019, 2:47pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257 "2019-04-19T14:47:02Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![enertec](https://avatars.discourse-cdn.com/v4/letter/e/e9bcb4/32.png) [@enertec](https://forum.inductiveautomation.com/u/enertec)\
**Post date:** [April 19, 2019, 2:47pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/1 "2019-04-19T14:47:03Z")

</div>

Hi there,

I need to read data from heat energy meter  
Its goes in 2 steps:

1. Write multiple registers (F16) - its refresh data (LockState 45000)
2. Read holding register (F03) - ist read actual data (temperature 40006)  
its work with modbus tool  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/6/64d4739050d2ee8e322f8ea97e7305e829ecd519.jpeg)

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/b/bb9d359b7d8a880d15a94ea96317859f8ace3339.png)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/7/7402b1030dc965399ffeaf4f18402f21ccc230c4.png)

But I cant understand how to use fuction 16 in Ignition

Thx in advance

---

<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 19, 2019, 6:23pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/2 "2019-04-19T18:23:16Z")

</div>

Function Code 16 is used automatically when you write to contiguous registers.

Make a tag in Ignition using address `HRI45000` (a 32-bit value at HR 45000) and then when you write to it FC16 should get used.

You might find you also need to toggle the 1-based addressing setting or address `HRI45001` instead.

---

<div class="post-metadata">

**Author:** ![Michael\_McCabe](https://avatars.discourse-cdn.com/v4/letter/m/b5a626/32.png) [@Michael\_McCabe](https://forum.inductiveautomation.com/u/Michael_McCabe)\
**Post date:** [September 13, 2022, 11:31am UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/3 "2022-09-13T11:31:24Z")

</div>

Hey folks,  
I see on this ticket ignition automatically uses function 16 for Contiguous registers.  
What if I only want to write 1 single register?  
The device in question does not support function 6 for modbus writes, just 16.

---

<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:** [September 13, 2022, 12:07pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/4 "2022-09-13T12:07:15Z")

</div>

~~I think you are out of luck with Ignition’s native driver.~~ _See Kevin’s comment below._

[My alternate driver](https://inductiveautomation.com/moduleshowcase/module/automation-professionals-llc-advanced-modbus) uses function 16 for all register writes, including singles, unless disabled by configuration.

~~It~~ _My driver_ can also perform any ad-hoc operation desired in scripting with its `system.opc.rawModbus()` function.

---

<div class="post-metadata">

**Author:** ![Michael\_McCabe](https://avatars.discourse-cdn.com/v4/letter/m/b5a626/32.png) [@Michael\_McCabe](https://forum.inductiveautomation.com/u/Michael_McCabe)\
**Post date:** [September 13, 2022, 12:13pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/5 "2022-09-13T12:13:21Z")

</div>

Thanks Phil, Will take a look at the scripting option.

---

<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:** [September 13, 2022, 12:20pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/6 "2022-09-13T12:20:15Z")

</div>

The “It” at the beginning of the statement about `rawModbus()` is my alternate driver, not Ignition’s. Just to avoid misunderstandings. Your situation can just do a single write through my driver to get the behavior you need.

---

<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:** [September 13, 2022, 12:34pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/7 "2022-09-13T12:34:16Z")

</div>

There is an advanced setting on the driver to force the use of Write Multiple Registers function even for single register writes.

---

<div class="post-metadata">

**Author:** ![Michael\_McCabe](https://avatars.discourse-cdn.com/v4/letter/m/b5a626/32.png) [@Michael\_McCabe](https://forum.inductiveautomation.com/u/Michael_McCabe)\
**Post date:** [September 13, 2022, 1:00pm UTC](https://forum.inductiveautomation.com/t/ignition8-modbus-write-multiple-registers-function-16/24257/8 "2022-09-13T13:00:36Z")

</div>

This done the Trick perfectly.  
Thanks for the help Kevin and Phil.
