FF function block programming bears a strong resemblance to analog function block circuit design, where specific tasks are divided up into discrete elements, those elements connected together to form a larger system with more complex functionality.
One of the important distinctions between legacy analog function block circuit design and FF function block programming is the data content of the lines connecting blocks together. In the analog world, each connecting line (wire) carries exactly one piece of information: a single variable represented in analog form by a voltage signal. In the world of Fieldbus, each connecting line carries not only the variable’s numerical value, but also a status and in some cases an engineering unit (a unit of measurement).
For example, a Fieldbus transmitter sensing temperature might output a digital process variable (PV) signal of “342 degrees Celsius, Good”, whereas a temperature transmitter with an analog (e.g. 4-20 mA) output is merely able to send a signal representing the temperature (no measurement unit or status information).
The inclusion of status along with data is a powerful concept, with roots in scientific practice. Scientists, as a rule, do their best to report the degree of confidence associated with the data they publish from experiments. Data is important, of course, but so is the degree of certainty with which that data was obtained. Obviously, data gathered with instruments of low quality (high uncertainty) will have different significance than data gathered with instruments of high precision and impeccable accuracy (low uncertainty). Any scientist basing research on a set of scientific data published by another scientist will have access to the data’s certainty in addition to the data itself – a very valuable detail.
By the same token, data “published” by a FF device is only as good as the health of that device. A FF transmitter exhibiting noisy or wildly fluctuating measurements might very well be nearing complete failure, and therefore its published data should be treated with skepticism. Since FF devices are “smart” (meaning, among other things, they have self-diagnostic capability), they have the ability to flag their own data as “Bad” if an internal fault is detected. The data still gets published and sent to other FF function blocks, but the status sent along with that data warns all downstream blocks of its uncertainty.
The three major status conditions associated with every FF signal passed between function blocks are Good, Bad, and Uncertain. Sub-status states also exist to further delineate the nature of the uncertainty. “Sensor Failure” is an example of a sub-status value, describing the reason for a “Bad” status value from a process transmitter.
For example, sub-statuses for a “Bad” status include out of service, device failure, sensor failure, and non-specific. Sub-statuses for an “Uncertain” status include last usable value (LUV), sensor conversion not accurate, engineering unit range violation, sub-normal, and non-specific.
In computer science, there is a truism that “Garbage In equals Garbage Out,” sometimes abbreviated as GIGO. No algorithm, no matter how advanced, can guarantee an output of good data from an input of bad data. This principle finds intelligent application in FF function block programming, as the blocks are programmed to switch mode when “Bad” or “Uncertain” input statuses are detected.
For example, here are some of the possible actions a function block may be configured to take upon detection of a “Bad” input signal status:
- Set output signal to last “Good” value
- Fail high (set output signal to top-of-range value)
- Fail low (set output signal to bottom-of-range value)
Furthermore, status values are propagated in a FF system from the input to the output of every function block connected in series, reflecting the effect of an input signal’s uncertainty throughout the entire control loop. For example, an analog input (AI) block sending a “Bad” status signal to the process variable input of a PID control block will have its “Bad” status propagated to the output of the PID block as well. When that “Bad” PID output signal reaches the analog output (AO) function block, that final block knows the signal is not to be trusted, because its origin (the AI block) is untrustworthy.
Any function blocks receiving the PID block’s output signal will likewise sense the “Bad” status and further propagate that status to their output signal(s). This “status propagation” ensures all function blocks in a Fieldbus control system are “aware” of the input data status, so that a “Bad” measurement does not result in “bad” control decisions made on that data.