# Advanced Modbus Driver , Modbus Slave RTU

**URL:** <https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [May 30, 2025, 11:04am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850 "2025-05-30T11:04:03Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [May 30, 2025, 11:04am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/1 "2025-05-30T11:04:03Z")

</div>

I’m trying to send data to a **Modbus RTU (RS485) slave** using the **Advanced Modbus Driver**.

I’ve completed the configuration and started testing, but I’m not receiving any data.

- Verified COM port in **Device Manager** : COM11 Port  

- Configured the **Modbus Slave settings** :  

- Completed the **Configuration** :  

- Confirmed communication using **ModScan**  

Now that all the above setup is complete, I need to map tens of thousands of words from **source tags to Modbus tags**.  
Is there an efficient or recommended method for handling this large-scale mapping?

---

<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 30, 2025, 12:25pm UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/2 "2025-05-30T12:25:14Z")

</div>

I recommend using the Integration Toolkit's **RePublish** tag action to attach the target OPC Item Path directly to the source tag. (In this approach, you don't need Ignition tags for the Modbus registers.)

As for making the assignments, consider including these tag properties in your UDTs, if any, and scripting the writes to these tag properties for atomic tags.

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 1, 2025, 11:16pm UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/3 "2025-06-01T23:16:06Z")

</div>

"Thank you, pturmel, for your prompt response. I'd like to confirm if the above configuration is correct, and if there are any additional settings I should consider."

---

<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:** [June 2, 2025, 12:09am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/4 "2025-06-02T00:09:17Z")

</div>

I don't see anything wrong with your configuration, but I have no way to know if it is correct for your hardware.

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 2, 2025, 8:07am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/5 "2025-06-02T08:07:05Z")

</div>

I have tested the hardware using Modbus Poll as a slave, and I am receiving data correctly. I would like to receive data using the following settings, but it is still not working. The manual only provides the settings shown below, so I am unsure how to proceed. Can you explain the setup process from the beginning with images?

**Settings:**

- **Baudrate:** 19200
- **Data bits:** 8
- **Stop bits:** 1
- **Parity:** None
- **COM Port:** 11  
This test must be completed before proceeding to the next step.

---

<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:** [June 2, 2025, 11:28am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/8 "2025-06-02T11:28:40Z")

</div>

Your hardware is sending a function code that isn't in the list of function codes supported by my driver.

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 4, 2025, 2:13am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/9 "2025-06-04T02:13:14Z")

</div>

"I've reset all the settings and started over from the beginning, but the same issue still occurs. Do I also need to enable Modbus Gateway Support in addition to these settings?"

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 4, 2025, 7:37am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/10 "2025-06-04T07:37:09Z")

</div>

this Configuration

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

ignition device setting

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

If I complete just this configuration, should the Modbus server be activated and ready to send and receive data with the client through COM11?

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 4, 2025, 11:32am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/11 "2025-06-04T11:32:50Z")

</div>

"While testing, I found that communication only works when the parity is set to 'odd'; it doesn't work with 'none' or 'even'. Why could that be?"

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 4, 2025, 11:40am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/12 "2025-06-04T11:40:06Z")

</div>

"When configured with 'odd', we observe that about 1 in 5 communication attempts fails. Is there a way to improve this issue?"

---

<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:** [June 4, 2025, 11:54am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/13 "2025-06-04T11:54:27Z")

</div>

> [@Kim\_JinGeun1](#):
>
> it doesn't work with 'none' or 'even'.

Serial communications require matching parity on both ends. Your device must be using Odd parity. Which is strange, as that is optional in the Modbus standard (devices **must** support even parity). When using no parity, the link **must** use two stop bits instead of one. (See the serial line Modbus standard at [modbus.org](http://modbus.org).)

> [@Kim\_JinGeun1](#):
>
> Is there a way to improve this issue?"

This is almost always caused by physical interference (particularly if running RS232 wires more than a few feet). The protocol performs CRC16 checks on each message and discards corrupted messages. This can usually be improved by reducing the baud rate.

---

<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:** [June 4, 2025, 1:19pm UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/14 "2025-06-04T13:19:59Z")

</div>

> [@pturmel](#):
>
> When using no parity, the link **must** use two stop bits instead of one. (See the serial line Modbus standard at [modbus.org](http://modbus.org).)

I've noticed this, and it's interesting because I'm willing to bet most people are using 8N1 instead of 8N2, if for no other reason than I think that's the default for our driver (and for most serial stuff I've seen?). I wonder why it still works...

---

<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:** [June 4, 2025, 1:44pm UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/15 "2025-06-04T13:44:21Z")

</div>

> [@Kevin.Herron](#):
>
> I wonder why it still works...

Because it only distorts the timing criteria a little, in a generally good direction. But if you are only timing across an entire message, instead of per character, you could allow a gap that should have been rejected.

I default to 8E1, because that is the default in the standard.

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 5, 2025, 1:22am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/16 "2025-06-05T01:22:04Z")

</div>

> [@pturmel](#):
>
> I recommend using the Integration Toolkit's **RePublish** tag action to attach the target OPC Item Path directly to the source tag. (In this approach, you don't need Ignition tags for the Modbus registers.)
> 
> As for making the assignments, consider including these tag properties in your UDTs, if any, and scripting the writes to these tag properties for atomic tags.

How to Use **RePublish** and `queueUtil.py` in Ignition?

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 5, 2025, 1:23am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/17 "2025-06-05T01:23:36Z")

</div>

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

Does this look correct?

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 5, 2025, 9:47am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/18 "2025-06-05T09:47:32Z")

</div>

I found in the forum that configuring it as shown below successfully writes values to the Modbus address.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/1/c/1c128762fbfa291321be9ffa8b88a6e61ab0e4cf.jpeg)

1. The values are written correctly, but I’m seeing the following warning message.  
What should I configure to clear or eliminate this message?

```python
org.python.core.PyException: TypeError: 'com.inductiveautomation.ignition.common.script.ProjectScriptModule' object is not callable

at org.python.core.Py.TypeError(Py.java:234)

at org.python.core.PyObject. __call__ (PyObject.java:396)

at org.python.core.PyObject. __call__ (PyObject.java:461)

at com.automation_pros.simaids.gateway.actors.BulkScriptBatcher.deliver(BulkScriptBatcher.java:51)

at com.automation_pros.simaids.gateway.actors.AbstractBatcher$Processor$2.run(AbstractBatcher.java:110)

at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:550)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

```

1. Do I need to include the following code in the valueChanged script for each tag?  
`RePublish.enqSlavePublish(tag, tagPath, previousValue, currentValue, initialChange, missedEvents)`

2. Do I need to include the following code in the gateway event timer script?  
`RePublish.drainSlavePublish()`

If it is required, how can I determine an appropriate timer delay value?

Thank you for your kind answer.

---

<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:** [June 5, 2025, 10:46am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/19 "2025-06-05T10:46:32Z")

</div>

1. You enabled the BulkScript action with an invalid function name. Turn this back off
2. No.
3. No.

The RePublish and BulkScript action are independent of each other. The RePublish action works without any scripting.

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 9, 2025, 12:23am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/20 "2025-06-09T00:23:40Z")

</div>

pturmel!  
The previous issue has been resolved.  
Is there a method to exclude a certain group of tags from being written to the Modbus slave while the system is operating normally?

---

<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:** [June 9, 2025, 12:26am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/21 "2025-06-09T00:26:32Z")

</div>

Only tags that have the Tag Actions configured on them will be forwarded to the modbus slave device(s). If necessary, write to `RepublishEnabled` as needed at runtime.

---

<div class="post-metadata">

**Author:** ![Kim\_JinGeun1](https://avatars.discourse-cdn.com/v4/letter/k/5f9b8f/32.png) [@Kim\_JinGeun1](https://forum.inductiveautomation.com/u/Kim_JinGeun1)\
**Post date:** [June 11, 2025, 4:23am UTC](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850/23 "2025-06-11T04:23:48Z")

</div>

Can I enable or disable based on a specific tag as a trigger?

[Next page](https://forum.inductiveautomation.com/t/advanced-modbus-driver-modbus-slave-rtu/106850.md?page=2)
