Control software runs on a PC connected to FORCAST with fiber optics. The user interface runs on a Java-enabled networked platform.
| hardware access/control
|Microsoft NT DDK (C)|
storage, quick look processing,
|graphical user interface||Borland JBuilder (Java)|
Custom adapter cards on the PCI bus provide optic fiber channels to each of the two (nearly identical) hardware modules operating the two infrared detectors. A private TCP/IP network communicates with FORCAST network-enabled devices including an eight-module motor controller and a multi-port RS232/485 server in the counterweight rack.
|PCI interface access||Communication with FORCAST hardware takes place over the PCI bus||The device driver makes NT HAL function calls to obtain PCI BIOS-assigned recource information, retains it within the driver, and makes it available to user-mode code|
|Data acquisition||Digitized array data are brought into the control computer. High volume data.||Upon request for some specified number of data words, a sequence of bus-mastering (DMA) transfers is set up to accept data. Custom PCI adapter card acquires data on the fiber optic link and busmasters them over the PCI bus|
|DC-level monitor data||Application obtains hardware DC-bias and clock monitor levels for display and recording. Low-volume data.||Polled query-response communication takes place over the fiber-optic/PCI bus path|
|Motor control||Motor indexers control filter wheels, dichroic slide, etc.||ASCII commands are sent to, and status received from the motor controller via TCP/IP|
The FPGA-based electronics package clocks the detectors, sets detector biases, controls chopping outputs, coadds detector data, and is flexible enough to do much more. Commands are accepted from, and coadded data are returned to, the control computer over optics-fiber links.
|Array clocking||Clocking tables are generated with a flexible scheme that gives users complete access to the entire pattern, allowing for asymmetric clocking, even to the level of a single detector element. Tables are file-based and can be cached by the program, ready to upload quickly|
|Detector operations||Operation sequencing includes throw-away frames (during chop settle), non-destructive reading, chop positioning, and coadding details. This is also done with a file-based system designed for flexibility|
|Communications protocol||Communication over fiber is done with a verification scheme that includes a byte-wise checksum comparison. A command/configuration is applied only after verification is acknowledged.|
The control program accepts user input only in the form of textual commands on a network socket (TCP) connection.
|Commands||A "little language" provides access to all functionality in a programming environment that includes conditional execution, nestable looping, functions definition, hex/decimal/binary input and output, integer, floating point, arrays, file access, etc.|
|Access to array data|| Memory
mapping provides direct access to acquired detector data
(after it's been saved to disk!)
|Graphical user interface||The GUI is a Java program that can run on the same machine as the hardware-control program, or on any machine that can establish a network connection with it. Binary information flows back to the GUI on a separate socket allowing the GUI to accurately represent current status|
A single TCP socket is provided to the SOFIA Data Cycle System (DCS) allowing complete command and control of FORCAST.
|Built-in commands||The DCS-SI protocol specification is completely supported|
|Command extensions||The DCS can define macros for its own use that execute any FORCAST command(s) and return text-formatted results|