Readout Language

One general problem with data acquisition systems is that the software and hardware can become bewilderingly complicated. At Jefferson lab. we expect to have a rapid turn over of users who cannot be expected to learn the syntax of the subroutine libraries for CAMAC and FASTBUS. One way around this problem is to hide the data acquisition system behind a readout list or language which is simpler to learn and manipulate. In the list paradigm the modules to be read out are described in tables of commands and addresses. these are loaded and interpreted by the embedded controllers. The problem with this method is that lists are static and canot adapt in real time without some extensions to allow branching at which time the list syntax becomes cryptic and defeats the original object of being easy to understand.

The other approach is to devise a programming language tailored to the needs of describing how to read out the modules in a data acquisition system. The advantage of this method is that a programming language is flexible enough to take care of the unforseen cases without having to forsee every case when the language is developed. This approach is followed by CODA .

CODA Readout Language (CRL) is an English like language similar to scripting languages like Tcl, AppleScript and HyperTalk. For example to read data from sub address 2 of FASTBUS module at geographic address 12 the following code fragment could be used...



        geographic address 12
        secondary address 2
        block read
        release address


CRL is then compiled using a compiler (ccrl) which generates C code as its's output. The C code is compiled into an object module which is dynamically linked into the already executing ROC. The CRL compiler inserts C code to perform initialization and common actions such as linking trigger sources to trigger handlers. Embedded C code may also be used like the follwing...


        geographic address 12
%%
        for(int i=0;i



The user is required to provide routines to be called on the major 
run control state transitions   download, prestart, go, pause and end, a routine to be called on each trigger and a routine to be called to re-enable the trigger after readout.


Finally, CRL is context sensitive, and layered on top of the "standard"  subroutine libraries for CAMAC and FASTBUS.


For more detail see:
CRL language
guide




 

This site was built with the NetObjects Fusion 4.0 Trial.
Download your FREE trial today!