# Writing From Ignition to Kepware

**URL:** <https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880>\
**Category:** Ignition\
**Tags:** perspective, ignition81\
**Created:** [April 9, 2025, 5:48am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880 "2025-04-09T05:48:59Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![scadafan](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@scadafan](https://forum.inductiveautomation.com/u/scadafan)\
**Post date:** [April 9, 2025, 5:48am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/1 "2025-04-09T05:48:59Z")

</div>

Hi there,

Wondering if anyone knows how or has an example of writing from Ignition to Kepware. I am currently reading tags from there. However, I need to create a new expression tag which takes in multiple tags and displays a number depending on which one goes high. For example if tagA is true and tagB and tagC are false then newTag = 1, if tagB is true newTag = 2, if tagC then = 3. I would then like to send this tag back to Kepware where it is being read by another system. Kepware is the main host of all plc communications. Anyone have any ideas how I can do this?

---

<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 9, 2025, 6:14am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/2 "2025-04-09T06:14:09Z")

</div>

Put a tag change script on your expression tag.

If the target tag you want to write to in Kepware exists already in Ignition, use system.tag.writeBlocking to write the value to it on change. If not, you can write directly to it with system.opc.writeValue instead.

---

<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:** [April 9, 2025, 12:12pm UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/3 "2025-04-09T12:12:22Z")

</div>

_Psssst!_ [Republish Action](https://www.automation-pros.com/toolkit/doc/actors.html#republish-action)

---

<div class="post-metadata">

**Author:** ![scadafan](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@scadafan](https://forum.inductiveautomation.com/u/scadafan)\
**Post date:** [April 9, 2025, 1:26pm UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/4 "2025-04-09T13:26:17Z")

</div>

What if the tag doesn't exist in Kepware and I want to do something where Kepware just reads a tag out of ignition is this possible too?

---

<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 9, 2025, 1:30pm UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/5 "2025-04-09T13:30:18Z")

</div>

Yes, Kepware has an OPC UA Client driver. You would configure it to make a connection to Ignition's OPC UA server.

You'll have to make some changes to Ignition's server settings before a connection from another host besides localhost is allowed, and enable the Exposed Tags feature.

It's probably better to make the tag in Kepware if possible because right now Ignition's Exposed Tags feature is all or nothing - you cannot configure any fine grained access control for the Clients you allow to connect. This has been implemented for Ignition 8.3.

---

<div class="post-metadata">

**Author:** ![scadafan](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@scadafan](https://forum.inductiveautomation.com/u/scadafan)\
**Post date:** [April 9, 2025, 1:42pm UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/6 "2025-04-09T13:42:24Z")

</div>

Do you know where this exposed tag feature is?

---

<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 9, 2025, 1:43pm UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/7 "2025-04-09T13:43:42Z")

</div>

> **[Ignition's OPC UA Server | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.1/ignition-modules/opc-ua/ignitions-opc-ua-server#opc-ua-server-settings)**
>
> Ignition's OPC UA server, provided by the OPC UA module, allows an ignition installation to utilize Ignition's various device driver modules. In addition, with the module installed, OPC UA clients can connect to Ignition's UA server, exposing any...

---

<div class="post-metadata">

**Author:** ![Chris\_Bingham](https://avatars.discourse-cdn.com/v4/letter/c/e5b9ba/32.png) [@Chris\_Bingham](https://forum.inductiveautomation.com/u/Chris_Bingham)\
**Post date:** [April 10, 2025, 1:56am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/8 "2025-04-10T01:56:30Z")

</div>

> [@scadafan](#):
>
> What if the tag doesn't exist in Kepware

Many Kepware polling drivers support dynamic tag addressing. If enabled, you can read & write directly to a tag in a PLC without configuring the tag in Kepware at all. If your driver supports this, I highly recommend it! This moves all of the polling configuration to Ignition…a combo that is hard to beat. Though, slightly less useful when data is being served to multiple clients…

> [@scadafan](#):
>
> send this tag back to Kepware where it is being read by another system

Is it possible to avoid placing Ignition as another link in the chain for this logic?

1. Any chance that TagA, TagB, & TagC are all read from the same PLC? If so, perhaps this is the place to add logic for ‘newTag’?
2. Can ‘another system’ perform the same expression internally / locally?
3. Kepware has an Advanced Tags bolt-on which adds the functionality you desire. Some would say this comes with an Impressive price tag…

---

<div class="post-metadata">

**Author:** ![scadafan](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@scadafan](https://forum.inductiveautomation.com/u/scadafan)\
**Post date:** [April 10, 2025, 3:19am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/9 "2025-04-10T03:19:14Z")

</div>

So we just got the advanced tag plugin but everywhere I am reading I can only compare tags to return a true or false statement. Any ideas how I can do this?

---

<div class="post-metadata">

**Author:** ![Chris\_Bingham](https://avatars.discourse-cdn.com/v4/letter/c/e5b9ba/32.png) [@Chris\_Bingham](https://forum.inductiveautomation.com/u/Chris_Bingham)\
**Post date:** [April 10, 2025, 4:35am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/10 "2025-04-10T04:35:45Z")

</div>

You reminded me how creative one has to be to work with the Kepware expression language...  
You mentioned you'd like to return 1 if tagA, 2 if tagB, etc. What should happen if two or more tags are true? Ignoring that detail, does the below output what you're after? ...untested...:  
(TAG(Sim.Device.tagA)\*1)  
+ (TAG(Sim.Device.tagB)\*2)  
+ (TAG(Sim.Device.tagC)\*3)

---

<div class="post-metadata">

**Author:** ![scadafan](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@scadafan](https://forum.inductiveautomation.com/u/scadafan)\
**Post date:** [April 10, 2025, 4:59am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/11 "2025-04-10T04:59:57Z")

</div>

Ok I follow what you are saying ok. I can work with this thank you. Yes I will have to get creative with the fact if two go high at the same time. But something to go off of.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [April 10, 2025, 8:22am UTC](https://forum.inductiveautomation.com/t/writing-from-ignition-to-kepware/104880/12 "2025-04-10T08:22:38Z")

</div>

Would that not be,

```python
TAG(Sim.Device.tagA) * 1
+ TAG(Sim.Device.tagB) * 2
+ TAG(Sim.Device.tagC) * 4

```

to create a binary encoding?
