Understanding Exception-Based Processing

Exception-based processing lets SAC scan a block or chain by exception, not at scheduled time intervals. An exception is:

  • A change in a process value greater than the defined exception dead band; or
  • An unsolicited message from your process hardware.

Using exception-based processing generally requires less CPU time and improves performance because SAC does not have to scan blocks at defined intervals. However, if a block's value changes very frequently, time-based processing may be more efficient.

You can use exception-based processing only if your I/O driver supports it. Consult your I/O driver client manual to learn if your I/O driver supports exception-based processing.

NOTE: The SM2 driver supports exception-based processing; the SIM driver does not support exception-based processing.

CAUTION: Do not assign the same I/O address to exception-based and time-based blocks. Doing so will cause the exception-based blocks to occasionally miss an incoming value.

Blocks that Work Best with Exception-Based Processing

While you can use exception-based processing with most blocks, certain blocks perform better with exception-processing than others. You can use the following blocks in exception-based chains as needed:

  • Analog Input
  • On-Off Control
  • Analog Output
  • Pareto
  • Digital Input
  • Ratio/Bias
  • Digital Output
  • SQL Data
  • Fanout
  • Timer
  • Histogram
  • Totalizer

Using Program and Statistical Data Blocks

Typically, the blocks listed in the following table are used as stand-alone blocks and have limitations when incorporated in an exception-based chain.

Program and Statistical Data Block Considerations

When you add the block...

In an exception-based chain, do not use the...

Program

CALL, DELAY, WAITFOR, or WAITSTAT commands.

Statistical Data

WAIT TIME fields.

Blocks that Receive Multiple Inputs

The Boolean, Calculation, Event Action, and Signal Select blocks can use values from multiple blocks, but SAC only processes them according to their upstream primary block's scan time. Therefore, use these blocks with care in exception-based chains.

For example, the following figure shows a sample chain containing a Calculation block that receives values from Analog Input blocks outside the chain.

Exception-Based Chain Processing

In this chain, if SAC scans AI1 by exception, then CA1 only accesses values from the remaining Analog Input blocks when that exception occurs. CA1 does not access values based upon the scan times of the Analog Input blocks outside the chain. This means that regardless of whether AI2 and AI3 change in value, CA1 does not recalculate its output unless triggered by AI1.

The following figure shows an improved chain design using the blocks from the previous figure. This chain allows CA1 to recalculate its value whenever an exception occurs to any of the Analog Input blocks and ensures all blocks are processed before the recalculating the output.

Improved Exception-Based Chain Processing

Blocks that Define a Time Constant

PID, Lead Lag, and Dead Time blocks use the local computer's system time to define a time constant. For this reason, it is recommended not using them in exception-based chains.

Using Analog Alarm and Digital Alarm Blocks

Analog Alarm and Digital Alarm blocks support exception-based processing. However, you must leave the Re-alarm Time and the Delay Time fields unmodified; otherwise, SAC places these blocks (and their chains) off scan when iFIX starts or when you reload the database. SAC processes exception-based Analog Alarm and Digital Alarm blocks only when an operator acknowledges an alarm from the iFIX WorkSpace. If an operator acknowledges the alarm with the Remote Acknowledge field, SAC does not process the block.

Assigning Exception-Based Scan Times

You can assign an exception-based scan time to a block by selecting Process by Exception from the block's dialog box. If you are configuring an exception-based chain with multiple primary blocks, you must enter 0 in the Scan Time field of every primary block that does not start the chain, and select the Off Scan option button.

Configuring the primary blocks that do not start the chain in this manner ensures that SAC processes the chain properly.

 

See Also