DeltaV CND Block Timmer Error

The default timer built into the CND block is not triggering. As this is a class-based object, there are other places where this CND function block is being used, but in those places the timer is working properly. Any ideas on why this might be happening?

8 Replies

  • I've not seen a condition block not count correctly and the condition block has been unchanged for years (since the early days of Deltav). That being said, it's probably more likely something related to configuration (though no guarantees). Is there a change the Disable is being turned on (even occasionally) through other code? Also, if the condition goes to false at all for some reason, the timer starts over at 0. Without seeing your code, it's hard to guess, but I would start by making sure that the condition is staying true (all parts of it) as well as there is no logic writing to the disable or time parameters.

    If you can give us a few more details about the application, we might also be able to brainstorm a few more ideas of what could be going on. And of course, if in doubt, we encourage you to contact the GSC for help.
  • In reply to Matt Forbis:

    Hello Matt,

    I thought it was something to do with the configuration as well, but there are other CND's being used all over place in my system and they are working ok. Currently the timer is set to 300 seconds, and I do see the conditions being met for over 10 mins and the timer never starts, and in addition no logic is telling it to become disabled.

    Thank you
    Kashyap Soni
  • In reply to Kashyap Soni:

    If you are viewing the module online, you can examine the state of the logic in the CND block. Aside from the actual conditions evaluating to a True or False value; if any of the parameters in the CND block are of a Bad status (< Good) then that will likely force the CND output to false. This will depend on the configuration of the CND block's status handling though.
  • In reply to dave_marshall:


    Yes that is correct, but I see the condition being true, but the timer did not start.

    Thank you
    Kashyap Soni
  • In reply to Kashyap Soni:

    Dave brings up a good point. What is the value of ALGO_OPTS, ERROR_OPT and what is the status on PRE_OUT_D when it's true?

    Secondly, how are you confirming that the condition is true and not changing? Control Studio Online updates only every 5 seconds, whereas your module can update much faster, so it's still theoretically possible it's going false at some-point but you aren't seeing it.
  • In reply to Matt Forbis:

    when the condition is true below are the parameter values
    ALGO_OPTS - No Online Value
    ERROR_OPT - UseLast
    PRE_OUT_D - 0

    I simulated an alarm condition value so the math block in the condition is satisfied which in itself is very simple (A - B < 10) where A was simulated to prove the math with B being 12.
  • In reply to Kashyap Soni:

    Does that evaluate as ((A-B) < 10)  or  (A - (B<10)).  Add another set of braces and control the logic execution...

    What exactly are A and B in your example?  Just wondering what you entered.  Assuming A is a reference that allows you to control logic result?  I would drop back and use a boolean parameter reference as the expression and toggle the value true and false.  

    have you looked at this through the Expression Viewer?  Double click on the CND block while in online view

    The expression is logically broken out.  The current value of the references are shown in the items below the tree.  If the expression is evaluating False, ie a red X, this helps understand what is happening.

    Note.  This is not actually what the CND block is evaluating.  The Expression Viewer grabs the Expression and evaluates it independently of the CND block.  The references are resolved from the point of view of the workstation, not the controller.  So if you have external references in different controllers, and your controller running the CND block is not able to "Locate" the source module, the controller may not be receiving the actual values and have a BAD status and a read error.  The workstation on the other hand is able to read the values from the other controller and resolves the expression successfully.  

    If the CND block error is good, ie no yellow question mark, then the above is not happening, or if you only have local references.  

    If Pre-OUT is 0, this tells us the logic is not evaluating to true.

    Hope this helps.

    Andre Dicaire

  • In reply to Andre Dicaire:

    Hello All,

    Thank you for the suggestions. we ended up creating a GSE ticket for it and them seeing it live they are stumped as well. Hopefully, I will be able to solve the issue with them.