Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Implementation

2 views
Skip to first unread message

E. St. John-Olcayto

unread,
Mar 20, 1995, 5:41:02 AM3/20/95
to
I'm implementing a gas turbine control system for a test-bed aeroengine and
I need to calculate a pressure ratio p2/p1. Now, As far as I know, I do not
have redundancy with regards to the pressure sensors. So what should the
policy be if the signal from the the p1 sensor indicates zero? As you can
imagine, I can't allow a division by zero occuring on a REAL system.

Thanks in advance.

---
------------------------------------------------------------------------------
| Ender St. John-Olcayto | "The concept of a |
| Industrial Control Centre | fuzzy state needs |
| Department of Electronic and Electrical Engineering | to be clarified" |
| University of Strathclyde | |
| Scotland | Fuzzy Sets and |
| Tel.:+44 41 552 4400 x2666 | Systems |
| Fax.:+44 41 553 1232 | |
| | Dubois and Prade |
| Email : cna...@ccsun.strath.ac.uk (preferred) | |
| or : sen...@icu.strath.ac.uk | |
------------------------------------------------------------------------------


Joe Pahle

unread,
Mar 20, 1995, 6:29:17 PM3/20/95
to
In article <3kjm3u$3...@rockall.cc.strath.ac.uk>, cna...@ccsun.strath.ac.uk (E. St. John-Olcayto) writes:
|> I'm implementing a gas turbine control system for a test-bed aeroengine and
|> I need to calculate a pressure ratio p2/p1. Now, As far as I know, I do not
|> have redundancy with regards to the pressure sensors. So what should the
|> policy be if the signal from the the p1 sensor indicates zero? As you can
|> imagine, I can't allow a division by zero occuring on a REAL system.

For controls using simplex source signals, you can put a lower bound on the demoninator
and set a system error flag if the parameter goes below that.

example:

if true_velocity < 1.0 then
true_velocity := 1.0;
inverse_velocity := 1.0;
-- set system error "true_velocity out of bounds"
-- use a persistence count to eliminate spurious trips
else
inverse_velocity := 1.0 / true_velocity;
end if;
In this way, 1/p1 is defined and within range. The length of the
persistence count is system dependent, as is the way you want to deal
with the system error event (ignore, fade to fixed gains, panic ...).

--

Joseph W. Pahle
F-18 HARV flight controls
phone: 805 258-3185
e-mail: jo...@neon.dfrc.nasa.gov
NASA Dryden Flight Research Center, Edwards,CA
********* laywers, look away !! ********************
There is no relationship between my opinion and NASA policy
********* O.K. you sharks, you can look again ******


Tom Erkkinen

unread,
Mar 22, 1995, 9:29:09 AM3/22/95
to

>I'm implementing a gas turbine control system for a test-bed aeroengine and
>I need to calculate a pressure ratio p2/p1. Now, As far as I know, I do not
>have redundancy with regards to the pressure sensors. So what should the
>policy be if the signal from the the p1 sensor indicates zero? As you can
>imagine, I can't allow a division by zero occuring on a REAL system.

>Thanks in advance.

If your concern is merely how deal with the numerical issue, I
can suggest two ways. First, you can simply write a piece of
conditional logic which sets the ratio of p2/p1 to a desired
value when |p1| < small number (e.g., if-then-else). Or, you can
allow the division to take place and write your own exception handler
(which may be difficult to do).

If your concern is how to deal with a failure condition then
someone more acquainted than I with the gas turbine field should
help you out, but here's some thoughts. You may want to try to
distinguish between sensor noise and an actual failure (plant, actuator
or sensor).

If the sensor produces an occasional erroneous signal but your process
is performing nicely, you probably don't want to power down immediately,
so a filter of some kind could be written to weed out the noise. If you
have an actual failure (plant, sensor, actuator) than of course you want
to stop the process quickly and safely using some fail-safe code.

My final thought is that you generally want to avoid divisions
in real-time code because they take a long time (bit shifts are
much quicker) and present potential divide-by-zero and overflow
conditions (as you can well appreciate). Hope this helps.

-tje

Bob Milam

unread,
Mar 22, 1995, 2:57:29 PM3/22/95
to
(E. St. John-Olcayto) wrote:

> I'm implementing a gas turbine control system for a test-bed aeroengine and
> I need to calculate a pressure ratio p2/p1. Now, As far as I know, I do not
> have redundancy with regards to the pressure sensors. So what should the
> policy be if the signal from the the p1 sensor indicates zero? As you can
> imagine, I can't allow a division by zero occuring on a REAL system.
>
> Thanks in advance.
>
> ---

Is p2 more likely to be non-zero than p1 ? If so why not just calculate
p1/p2 ?
If neither is more likely to to be non-zero, than a suggestion like the
first response is usable.

0 new messages