The project's highly modular approach has allowed us to avoid many problems which are traditionally encountered while developing a telescope control system.
The GBT control system is a distributed system. Rarely anymore does one find a large telescope control system where all devices are controlled and monitored from one computer. Even if one tries to avoid building a distributed system, the continuing introduction of new devices often with their own control computers will create a range of computers that need to communicate with each other. If one designs a control system so that each device acts as an autonomous unit, then one can remove the need for real-time dependencies between computers. Because each device in the GBT is almost wholly independent of other devices, the GBT monitor and control system is able to use ``vanilla" ONC RPCs to handle those communications which are needed. So, though it is a distributed system, the development effort is greatly reduced.
As in any system, the devil is in the details, and we have expended a significant amount of effort in debugging code as devices undergo increasing amounts of use. However, integration per se, i.e., problems resulting from adding devices to the system as they come on line, has been almost painless. The interfaces between devices are so few and small that system integration has simply not been an issue.
Related to system integration is device testing and maintenance. In early reviews of the requirements and design for the system, a recurrent question from engineers was the ability to run and test a specific piece of equipment while the rest of the telescope was being used by other engineers, was shut down, or was being used for observing. Specifically, they wanted to know what they had to do to get the device to work, e.g., how to run a backend with no antenna which traditionally initiates the ``go'' signal and generates antenna positions? Because of the autonomy of each device, the answer is ``nothing."
Some software engineers like to stress that they are ``real-time" programmers, almost as if it were a badge of honor. And it is certainly true that the constraints of deadlines in code adds an entirely new dimension to every aspect of a problem. In large real-time systems the problems become very complicated very quickly. Many, large real-time systems are tours de force and the brain children of some extremely talented people. However, by defining a telescope control system not as a real-time system, but as a computer system that contains small pieces that are real-time, the problem becomes greatly simplified. Because each device is an autonomous unit, one can design devices so that real-time loops are closed within the same processor. And perhaps most importantly, because real-time dependencies are local to a device, the implementation of these real-time programs can be handled by a single engineer.
One of the most gratifying aspects of dealing with a system where modularity has allowed a single set of interface to be developed for all devices on the telescope, is the ease of integrating this interface into interpreters which are used both as a user-interface and a tool to generate graphical-user interfaces. We currently have two interfaces for the system: Glish (Schiebel et al, 1996) and Tcl/Tk (Ousterhout, 1994). The original implementation of a Glish client for the antenna was a two day effort, and the current client which works for all devices took three weeks. The enhanced Tcl interpreter for communicating with all telescope devices took less than a month. As a device comes on line, we expend no effort toward interfacing the new device to our interpreters, though the appearance of the graphical-user interface per se for a specific device does take significant thought and planning.
My original concepts (Clark, 1992) underwent extensive change and enhancement because of the experiences gained and the close-knit team effort during development. I especially want to thank J. Richard Fisher and Geoff Croes, without whose confidence and invaluable insights, the project would have fallen far short of its goals.
The National Radio Astronomy Observatory is a facility of the National Science Foundation operated under cooperative agreement by Associated Universities, Inc.