SFC crosses transitions when it shouldn't

I ran into the following problem working on a rather complicated SFC, but was able to reproduce it in the very simple one below. Either this is a bug, or there is something I’m not understanding about tags and expressions in Ignition SFCs.

Here’s the SFC. The transitions look at a String tag I created called TestTag.

I initialize a count parameter to 0 in the chart parameters:

Then I increase the value of that parameter by 1 every time the Action step is performed:

To test the chart, I set TestTag to “off”, then start the chart. It seems to me that every time I set TestTag to “on”, count should increase by 1, and when I set it back to “off”, count should not change. However, the behavior I observe is as follows:

Start - count = 0
Set TestTag to “on” - count = 1
Set TestTag to “off” - count = 2
Set TestTag to “on” - count = 4
Set TestTag to “off” - count = 5
Set TestTag to “on” - count = 7
Set TestTag to “off” - count = 8
Set TestTag to “on” - count = 10
… and so on, going up alternately by 1 and 2.

It seems like each time I modify TestTag (apart from the first time) and one transition becomes true, the other transition remains true until it has been crossed once and then changes to false, rather than becoming false right away.

The XML file for the SFC is attached.


Ignition Version: 7.8.2 (b2016030813)
Java Version: Oracle Corporation 1.8.0_91


Thanks for your very helpful description and narrowing it down. It does appear to be a bug with the way tag subscriptions are managed in the transitions- when the transition is activated, the subscription has the value from the previous de-activation cached, and uses that to transition again. When it comes back around, it has the new value, and doesn’t transition again.

We’ve fixed this for 7.8.4. I believe we’re going to shoot for another RC release in the next week, so either RC 2 or the final will have it. We can get you an earlier build of the module, though, if you need it (I see you have a support ticket open on this, so I’ll go through there).


Does this affect the 7.7 LTS version too?

If so will this fix be applied to the 7.7 LTS version.