0
Not a bug

Bug with Internal Digital Channel

A DOMS 2 years ago in IQANdesign updated by Gustav Widén (System support) 2 years ago 3

Hi,

I observed a bug on our machine.

If a sensor is detected in error, a defaut Error value is applied.

For us, this error value is 500 bar.

We made an Internal Digital Channel to detect if the value is egale to 500.

If true, the channel change to TRUE value.

But when the MC43 is a new one, the channel doesn't work.

As you can see on the picture, the channel value is 500, but the Internal Digital Channel is still FALSE :

Image 3167

Whereas the Qcode is simply :

Image 3168

If I just change the defaut error value to another in IQANRun, and set back to 500, the channel starts to work.

Did you already see that ?

The value tested comes from a filter channel, maybe that's the point, but it is strange that it's working if I change the value and set it back to the same defaut value :

Image 3169

We already observed something similar if we update a machine with a new soft on which one we change something on an existing variable. But here it's a new MC43.

GOOD, I'M SATISFIED
Satisfaction mark by A DOMS 2 years ago
+1

A filter will prevent small changes from applying to the value.

If your input changes from 499 to 500 the filtered value might actually be 499.99999999 which is not = 500.

The best way would be to look at the error status of the channel, not the value.

Or, if you really want to look at the filtered value, set the error value to 505 if the range is 0-500, and trigger your digital channel if value>500.

That's what I thought. 

But It happen only when I upload the sofware for the first time in the MC43, so the value should be a perfect 500,00.

And if I change to 450 and put it back to 500, then it works fine.

So I agree with you, it's better to look at the error status of the channel. Thanks.

+1
Not a bug

The value is a 32-bit Real, the decimals that are showing are not enough to see the difference.

To check if an input is in error, the best approach is usually to look at 

StatusOf(input_name) <> OK

or as an alternative that does not react to warning or disabled

StatusTypeOf(input_name) = stError