• Not Answered

Programming a timed response in a CALC expression

I'm currently working on programming a CND for a pump start permissive. So far, it looks like this:

IF '^/PERMISSIVE_1.CV' >= 8.0 THEN '^/PERMISSIVE_1.CV' =  TRUE

ELSE '^/PERMISSIVE_1.CV' < 8.0 AND '^/PERMISSIVE_1.CV' >4.0 ....this is where it gets funky.....I need the permissive to turn a pump off for 30 minutes, then back on for 30 minutes...

ELSE '^/PERMISSIVE_1.CV' < 4.0 then pump off for 60 minutes and then on for 15 minutes

I know this can be done with function blocks...but is it possible in an expression? I realize it's essentially structured text, but do all FBs have a related ST instruction set?

3 Replies

  • It seems like the function blocks are probably an easier to maintain and troubleshoot in the future. Why do you want to push all of this into a CND block?
  • In reply to Brian Atkinson:

    To make it a permissive prior to motor start.

  • In reply to Barrick_JA:

    Items to note:
    A permissive is only going to let you control when the pump will start. It doesn't cause the DC block to transition from active to passive.
    Calc blocks cannot do timing - timing has to be offloaded to a timer or block with timing (like CND).
    If you want the SP of the DC block changed based on an algorithm - you need to write sequencing or other logic to do that without trying to use the interlocks and permissives for that purpose.
    I have not played with it yet, but the block introduced in version 13 that replaces the old CND/BFI approach to interlocks and permissives includes forced setpoint changes as well that may help you do what you are trying to do.

    Good Luck!