Invalid member of expression is assumed to be 0?

6 Posts
3 Users
0 Likes
44 Views
 AT
(@a-tanarcinfo-com)
Posts: 15
Eminent Member
Topic starter
 

Hello,

I have encountered a situation where the help file does not match the behavior of the application.
On the project Settings, I have enabled the option 'Do not make expression result invalid when a member is invalid', and by doing so, the result of an expression would not be NS whenever either member of the expression is NS.

Moreover, the behavior of the expression when this option is enabled would expect the member of the expression which is invalid to be assumed as 0 during the calculations, which is written in the Help File and this statement is recorded all the way back to PcVue 9.0 Help.

Now comes the issue where the behavior on PcVue, when a member of the expression has turned NS, the expression would used the last recorded value to perform its calculations rather than assuming the invalid member to be 0.

For example
@Branch01.Expression01 = 10
@Branch01.Expression02 = 10
@Branch01.ExpressionRES = 20

Then, when one of the member turns NS, it was observed in PcVue where:

@Branch01.Expression01 = 11
@Branch01.Expression02 = NS
@Branch01.ExpressionRES = 21

Whereas, when following the statement from the Help File, the expected outcome should be:

@Branch01.Expression01 = 11
@Branch01.Expression02 = NS
@Branch01.ExpressionRES = 11

Is this a mistake/misinterpretation on the documentation, or is this a bug on PcVue?

Best regards.

Edit: Also, this is an active ticket from a customer and they are waiting for a response from the support side.

 
Posted : 15/08/2022 2:10 pm
e.mahaut
(@e-mahautarcinfo-com)
Posts: 270
Member Moderator
 

Hi Andy,

Thank you. It seems to be a very old issue.
As you have tried with many versions, latest ones as well as old ones, such as 8.2 the default behavior when the option "Do not make expression result invalid when a member in invalid" is PcVue always taking into account the latest known value (before going to NS).
I would say it is a documentation issue.

A SPR should be declared.
After some answers coming in this thread, the proper component would be assigned later on.

 
Posted : 15/08/2022 4:47 pm
(@c-pinasanzarcinfo-com)
Posts: 42
Trusted Member
 

Hello,

I did some tests also with PcVue 15.2, and it seems that :
- If Variable is internal : PcVue takes the value 0
- If Variable is I/O : PcVue takes latest known value

BR,
Claudia

 
Posted : 17/08/2022 11:17 pm
e.mahaut
(@e-mahautarcinfo-com)
Posts: 270
Member Moderator
 

Hello Claudia,

Can you let us know how you switched the internal variable to NS?
With internal variables, it is also the last known value. If you can double-check when using for instance the SCADA Basic instruction Variable, mode disable.

BR,
Edouard

 
Posted : 18/08/2022 9:00 am
(@c-pinasanzarcinfo-com)
Posts: 42
Trusted Member
 

Hello,

With Scada Basic PcVue keeps the last value.
Maybe I did it on the wrong way. I modified the variable directly by activating the "Inhibited" option in its properties window.

BR,
Claudia

 
Posted : 18/08/2022 11:40 pm
e.mahaut
(@e-mahautarcinfo-com)
Posts: 270
Member Moderator
 

Hello,

I was quite sure of the result.
Whatever internal or coming from a device, it is always the last known value.

When you choose the option 'inhibited' for a register, 2 things would happen:
1/ Initialization to the minimum value. In your case 0 but could be negative or greater than 0, accordingly to the 'minimum value' parameter
2/ Quality set to NS ...

 
Posted : 19/08/2022 2:08 pm