# Boolean values from modicon OPC UA PLC are logged in historian core strangely

**URL:** <https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974>\
**Category:** Ignition\
**Tags:** support, ignition83\
**Created:** [February 14, 2026, 5:27am UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974 "2026-02-14T05:27:22Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![aaronrsturm](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aaronrsturm/32/83527_2.png) [@aaronrsturm](https://forum.inductiveautomation.com/u/aaronrsturm)\
**Post date:** [February 14, 2026, 5:27am UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/1 "2026-02-14T05:27:22Z")

</div>

Howdy,

Boolean values in my historian are not being recorded as true or false, instead the tag history just counts up or down forever, I see the same behavior with a memory tag or a OPC tag from my PLC.

I am using ignition maker edition 8.3 and historian core, so I don’t know if this is the normal behavior of historised boolean values, but I was expecting them to just be recorded a 0 or 1. Here is an example power trend of 2 boolean values (heat is currently on, cool is off).

 ![Screenshot 2026-02-13 221736](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/3/83e8a5b26346c3e3e1142c7c409914a1a78aec0d.png)

And the associated tag configuration:

 ![Screenshot 2026-02-13 221538](https://us1.discourse-cdn.com/inductiveautomation/original/3X/e/3/e361b9824a5811ab1cd09e201dfbe94dc9fefab8.png)

---

<div class="post-metadata">

**Author:** ![andrew.budaiev](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/andrew.budaiev/32/72921_2.png) [@andrew.budaiev](https://forum.inductiveautomation.com/u/andrew.budaiev)\
**Post date:** [February 14, 2026, 8:41am UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/2 "2026-02-14T08:41:14Z")

</div>

Do they come as Booleans in the Tag Browser?

---

<div class="post-metadata">

**Author:** ![aaronrsturm](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aaronrsturm/32/83527_2.png) [@aaronrsturm](https://forum.inductiveautomation.com/u/aaronrsturm)\
**Post date:** [February 14, 2026, 4:52pm UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/3 "2026-02-14T16:52:16Z")

</div>

Yes, If I browse and add tags directly from the OPC server they are automatically added as booleans.

---

<div class="post-metadata">

**Author:** ![Matrix\_Engineering](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/matrix_engineering/32/19781_2.png) [@Matrix\_Engineering](https://forum.inductiveautomation.com/u/Matrix_Engineering)\
**Post date:** [February 14, 2026, 5:31pm UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/4 "2026-02-14T17:31:02Z")

</div>

Welcome!

Some further insight for you:

> [@I’m trying to understand the recommended best practices for configuring Ignition Tag History, specifically how the following pieces are intended to work together](https://forum.inductiveautomation.com/t/i-m-trying-to-understand-the-recommended-best-practices-for-configuring-ignition-tag-history-specifically-how-the-following-pieces-are-intended-to-work-together/113583):
>
> • Tag Group (normal execution rate) • Historical Tag Group (e.g. Default Historical) • Sample Mode (Tag Group vs On Change vs Periodic) • Deadband Style (Auto vs Analog vs Discrete) I understand that the Tag Group controls how often the tag is evaluated/read, while the Historical Tag Group controls how often the historian evaluates whether a sample should be stored. However, it’s not entirely clear when it is best to reuse existing tag groups versus creating a dedicated Historical Tag Group,…

---

<div class="post-metadata">

**Author:** ![aaronrsturm](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aaronrsturm/32/83527_2.png) [@aaronrsturm](https://forum.inductiveautomation.com/u/aaronrsturm)\
**Post date:** [February 15, 2026, 3:12am UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/5 "2026-02-15T03:12:50Z")

</div>

That’s an interesting read! I did already set all my boolean tags to discrete style deadband that are set to “on change” recording. I might also change my process variable to discrete now, to get the more predicatable behavior.

Here are some more examples of trends for my same boolean tag:

 ![Screenshot 2026-02-14 000818](https://us1.discourse-cdn.com/inductiveautomation/original/3X/1/f/1f2197c01006434d63da5525e4694806eb6aa3d5.png)

 ![Screenshot 2026-02-14 095857](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/7/071f38e381aa0aec458bc97d7486a653f739f0ec.png)

 ![Screenshot 2026-02-14 095538](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/8/4841595153ab9fd9f314bab7a58e9547faddfa4b.png)

---

<div class="post-metadata">

**Author:** ![Matrix\_Engineering](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/matrix_engineering/32/19781_2.png) [@Matrix\_Engineering](https://forum.inductiveautomation.com/u/Matrix_Engineering)\
**Post date:** [February 15, 2026, 10:49am UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/6 "2026-02-15T10:49:17Z")

</div>

I don’t know if you can use Embr Charts on Maker, but if you can, then you should.

---

<div class="post-metadata">

**Author:** ![aaronrsturm](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aaronrsturm/32/83527_2.png) [@aaronrsturm](https://forum.inductiveautomation.com/u/aaronrsturm)\
**Post date:** [February 15, 2026, 3:01pm UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/7 "2026-02-15T15:01:01Z")

</div>

> [@Matrix\_Engineering](#):
>
> Embr Charts

I was able to import the Embr Charts module, looks like it’s free for anyone to use!

---

<div class="post-metadata">

**Author:** ![aaronrsturm](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aaronrsturm/32/83527_2.png) [@aaronrsturm](https://forum.inductiveautomation.com/u/aaronrsturm)\
**Post date:** [February 17, 2026, 1:02am UTC](https://forum.inductiveautomation.com/t/boolean-values-from-modicon-opc-ua-plc-are-logged-in-historian-core-strangely/113974/8 "2026-02-17T01:02:26Z")

</div>

All,

I was able to fix this manually by changing the pen setup in my powerchart for boolean tags, specifically setting aggregateMode = "LastValue".

since I didn’t want to do do that everytime I added a new tag I applied this on change scipt to the props.pens attribute:

```python
def valueChanged(self, previousValue, currentValue, origin, missedEvents):
    # Iterate through all pens currently on the chart
    pens = self.props.pens
    
    for i in range(len(pens)):
        try:
            # 1. Get the Source Path safely
            # Structure based on your JSON: pen -> data -> source
            pen_data = pens[i].get("data", {})
            source_path = pen_data.get("source", "")
            
            # 2. Check if valid tag path
            if source_path and "tag:" in str(source_path):
                tag_path = str(source_path).split("tag:")[-1]
                
                # 3. Check Tag Type
                configs = system.tag.getConfiguration(tag_path, False)
                
                # 4. Apply Logic for Boolean Tags
                if configs and str(configs[0].get("dataType")) == "Boolean":
                    
                    # Fix Interpolation: 'display' -> 'interpolation' = 'curveStep'
                    if pens[i].display.interpolation != "curveStep":
                        self.props.pens[i].display.interpolation = "curveStep"
                        
                    # Fix Aggregation: 'data' -> 'aggregateMode' = 'LastValue'
                    if pens[i].data.aggregateMode != "LastValue":
                        self.props.pens[i].data.aggregateMode = "LastValue"

        except Exception as e:
            # Ignores initialization errors (e.g. when a pen is created but not yet populated)
            pass

```
