From Esolang
Jump to: navigation, search

Cutlass is the internally-developed language used by the CEGB and later Powergen and National Power for their power station control systems. It was developed during the 1980s, and ran originally on DEC PDP-11 machines. There were many hundreds of machines running this around the power stations in the UK.

Originally the Cutlass system itself was written in Coral 66, a language developed by the British military.

Cutlass was designed to be used by engineers without specialised training in computer programming, and so made great efforts to protect engineers from certain types of problems, such as data skew. For example, shared variables are either write-only or read-only for any one process. The language was designed to handle bad data from its inception so an engineer would not have to explicitly write code to handle bad data scenarios.

Most of the former National Power stations have now replaced their Cutlass systems, mainly for the now almost obsolete APMS system. In the early 1990s, led by David Mann of Powergen, Cutlass was ported to the C programming language. Cutlass is now developed and managed by the Software and Modelling Department of E.ON New Build and Technology.

The most current version of Cutlass is now running on Motorola PPC-based hardware, with the engineering workstation and administrative functions provided from a standard Microsoft Windows PC. This version of Cutlass is known as kit 9 and is fully-compatible (barring a few minor exceptions) with the DEC PDP-11 version (kit 1) released by Powergen and has a high level of compatibility with the version of kit 1 released by National Power.

There are four subsets of the Cutlass language, which is somewhat similar in appearance to FORTRAN with hints of COBOL although it is simpler to understand and write:

  • The General Purpose subset, for general processing and serial I/O.
  • The Direct Digital Control subset, for plant I/O and control loops.
  • The Sequence subset, which is a finite state machine - used for open loop or sequence control.
  • The VDU subset, for graphical output (not available in kit 9).

The above variants are written in schemes. A scheme contains independently executing tasks, which are used to perform control functions. Generally speaking, control schemes are spread between several networked CPUs (called 'targets'), making this a true distributed control system.

Cutlass employs IEEE 803.2 Ethernet for inter-target communication and is able to communicate with 'foreign' systems by a variety of means including OPC, Modbus/TCP and a public API. Supported I/O hardware includes systems from Intercole, Capula Limited (formerly Instem Computer Systems UK), and Rockwell Automation.

The Cutlass language contains an extensive library of functions specially tailored for process control applications. These include mode and history-dependent functions such as integrators, filters, PID controllers, as well as a range of data-reduction routines and steam tables. Cutlass also directly supports matrix manipulation which is often used in advanced control schemes. The actual functions available depend on the language subset used. Cutlass also supports user-defined subroutines.

Full handling of bad data permeates the whole of Cutlass. A variable is bad if its value is unknown, perhaps due to a faulty plant transducer or an undefined mathematical operation. When a bad data value is used in a calculation or function, the result is bad unless the value of the bad variable would not have affected the output anyway. (For example, FALSE AND LBAD = FALSE.) In a DDC control scheme bad data is handled in such a way as to ensure that the power station control loop is put in a safe state.