[evla-sw-discuss] AMCS Architecture's impact on the OS/Language we choose (and vice versa)
Kevin Ryan
kryan at aoc.nrao.edu
Wed Mar 27 16:11:13 EST 2002
Hi all,
Based on concerns and issues raised, I get the feeling that some
people are still thinking in terms of a central processing type
monitor and control architecture. I want to express that we must
think in terms of modularity if we want a flexible system and
what impact this will have on the OS's and language we choose.
I've written information similar to what is presented below and
people have said that they've read it, but I get the feeling that
some have not understood it. So please take enough time to truly
understand the few concepts presented below. You will then find
that issues such as "where will the MIB screens reside" and "where
will the technician plug in his laptop" are not issues at all,
in fact their answers are obvious and natural.
Understanding this system will also help us to think along the
same lines while looking into MIB OS's
If Barry does not mind, maybe we can talk about it at the next
meeting.
Thanks for taking the time.
Kevin
--------------
More emphasis needs to be placed on supporting the software
architecture of the EVLA AMCS. Successful AMCS software creation
depends on The following items in the order presented:
1) The language must support the software structure - Object Oriented.
2) The Operating System must support the language.
3) The hardware must support the OS.
Instead we are working exactly backwards from this (albeit, the
RFI issue is responsible for *some* of this backwardsness)
One of the main requirements of the EVLA is that it be flexible. The
online system must be able to support different types of antennas
operating within the same array. Different antennas mean differences
in the way their hardware is controlled at the lowest levels (the bit
registers within the hardware components). These differences preclude
the use of status quo systems that use a single central processor to
control all antenna hardware at the bit level.
The alternative is to let the low level hardware components control
themselves via use of their own embedded processor. This is called
distributed processing. This model means that the central computer
needs only to tell the hardware *what* must be done, the embedded
processors in the hardware take care of handling the intimate details
of *how* the control is carried out. This effectively hides the 'bit'
requirements from the upper level central computer. Now different
antennas types can co-exist in the same array under control of the
same central computer without the central computer having to know
about the differences.
Distributed processing (if done properly) results in modularity
which in turn results in flexibility.
There are a few rules that must be met in order for such a system
to work:
1) A module must be completely stand-alone.
2) Modules can only be aware of themselves and those below them.
3) Upper level modules cannot know implementation details of lower
levels.
The last two rules cause the following implications:
1) Command data must specify *what* not how.
2) Command data must flow from high to low levels (not up or sideways).
3) Monitor data must flow from low to high levels (not down or sideways).
4) Monitor data must be generic in nature when crossing levels.
What does this mean to us?
1) Completely independent modules:
- No module must rely on any other module for operation. In other
words, the Antenna Computer will not be needed to operate the
1st LO.
Benefits: A module can be operated, tested, troubleshot, maintained
without being in the system. This means Wayne will not need
his own version of the antenna control process in order to
stimulate the broken 1st LO on his bench.
Changes and mods can be made to modules with minimal affects
(and hence minimal regression testing) on the rest of the
system.
Different module types/models can be controlled by the same
central processor without it having to know about their
differences.
2 and 3) Modules aware of themselves and below, and implementation details
are hidden from upper levels means:
- MIBS will not be aware of each other, nor will they know the concept
of an antenna. No inter-MIB communications.
- The Antenna Control Process will be aware of its components (LO's,
servos, etc.) but will only see their 'front panels', not their
guts.
- The Logger cannot request that a certain monitor point be logged;
instead, the monitor point must present himself to the logger at
the required interval. Why? Because the monitor point is an
implementation detail that the logger is not allowed to know about.
Consider this contrived example: The EVLA uses 5V logic in its
1st LO Synthesizer and needs 2 power supplies to supply the
required current. The NMA antennas will use only a single 3.3V
power supply. If the logger asked for monitor points, he would
have to know about the differences in order to ask for the right
info from each antenna type. This is not good.
In the proposed system, the logger is 'dumb' in that he takes anything
that conforms to the rules of a datum. He does not care what it is
or where it came from. His job is just to log it.
- Monitor data screens will be similar to the logger. Monitor points
will only be built into 'screens' at the level which they originate.
(A MIB screen will know about the 5V power supply, but an array
operators screen will not - this doesn't imply the operator won't
be able to see the 5V PS from his screen, only that the PS monitor
point will not be hardcoded into his array GUI).
Benefits:
- Operator screens will not be clogged with unnecessary monitor data.
Each module will keep track of itself and its children. As long
as each monitor point that the module watches is OK, there is no
need to alert the operator. He will see 27 green blocks on his
control screen. When the 1st LO Synthesize 5V Power Supply #1
smokes in Antenna 13, the operator will see 26 green blocks and
one red one. When he selects the red one he will see that that
the 1st LO block is red, when he selects that, he will see that
5V PS #1 has failed.
This does not mean the operator can't look at every single monitor
point in the whole system if he wants to (he can certainly select
every one), it just means he is not forced to.
- Monitor points can actually be monitored more often and more
thoroughly because they have a dedicated processor to oversee
them instead of human wading through a screen full of data.
Why software is so important.
We locked ourselves into a distributed processing modular system when
we selected Ethernet as our field bus.
The above modular system cannot be made by using the concept that a
MIB is only a gateway to a device's registers. We cannot make a robust
system of heterogeneous antennas and antenna subcomponents communicating
over Ethernet with Internet protocols, using the idea of a single
central processor peeking and poking thousands of bits of data to
and from thousands of registers.
The MIBs have to be smart enough to fit this whole system concept of
modularity and distribution of functionality.
Object oriented development works and works well to speed design,
help ensure 'correctness' and promote software re-use.
The above modular software model is very well defined using OO
principles.
Java is a very good OO language.
- It was originally designed for embedded systems so it can be very small.
- It was designed for network operations. Designing networked client
server programs are almost trivial in Java.
- It was designed with safety and security in mind
- a programmer would have to go out of his way to write to a
null pointer.
- a programmer is forced to resolve all possible exceptions (bad
things that could cause it to break) at compile time.
- It was designed. C++ is a bloated hack job.
- It has Java Beans which might work quite nicely for our model. A
Bean hides details inside itself but presents to the rest of the
world what it is, what its attributes are and what it can do.
We have a much higher level interface (TCP/UDP/HTTP/IP over Ethernet)
we need higher level software and OS's to handle this.
I agree with Barry that we should avoid middle-ware if possible.
If we are forced to use C only then we should consider NDDS (middle-ware)
because IP communications in C will not be trivial.
Conclusion.
Modular design is essential for flexible operation and growth in
a heterogeneous system.
It is no longer questioned that software represents the majority
of the expense of a project in terms of development time and ongoing
maintenance.
The more capable the language/OS that we choose up front, the less
expensive and more efficient is the development and maintenance over
the long haul.
More information about the evla-sw-discuss
mailing list