Process and Experiment Automation Realtime Language
The extraordinary increase in software costs forces the transition from assembler programming to structured programming in a higher real-time programming language. PEARL is the only application-oriented higher real-time programming language in the world. Independent problems can be programmed as independent processes (tasks) and executed in parallel - a significant simplification in the realization of automation problems.
A modern concept
The beginnings of PEARL lie in the 70s. The aim of the BMFT-funded development was to define a language that combines the most important elements of the common high-level languages with a clear real-time and tasking concept. UH-PEARL is an implementation of language on microprocessor systems, the development of which began in the early 1980s at the University of Hanover under the direction of Prof. Dr.-Ing. W. Gerth.
Easy to learn
PEARL is an easy-to-learn programming language, especially for solving real-time problems. Unlike Process-FORTRAN, for example, it is a unified language with directly integrated language elements for process I/O and task scheduling. This ensures a high degree of portability.
PEARL is a block-oriented, structured language. It is also universally suitable for solving complex algorithmic problems. PEARL provides language elements for interrupt handling and synchronized communication between tasks.
An elaborated multitasking concept, the support of all common algorithmic control structures as well as easy-to-use real-time language elements are essential features of the UH-PEARL. During the development of the language, special emphasis was placed on good self-documentation and simple, clear formulation of the real-time and multitasking behavior. Unlike e.g. Ada, Pearl can be learned and effectively used by application-oriented developers in a short time.
The modular structure of PEARL programs creates the prerequisite for safe and efficient program development and maintenance for larger projects.
The subdivision of a module into a hardware-dependent SYSTEM part, in which the connection between the PEARL data stations and the environment is defined, and the hardware-independent PROBLEM part facilitates the porting of PEARL programs into another hardware environment.
The subdivision of a module into hierarchical blocks with encapsulation of local data offers a problem-adapted program structure. Quasi-parallel processing of the tasks and re-entry-proof as well as recursive procedures enable the simple division of a problem into independent processes.
In addition to the basic data types FIXED, FLOAT and CHAR, which are also common in other languages, Pearl also provides CLOCK (time), DURATION (duration), SEMA (synchronization variable) and BIT (bit chain). New data types can be agreed upon by problem-specific grouping of elements of different basic data types to form linked data types (STRUCT) and by individual type agreements (TYPE). Together with pointer variables (REF), this allows a finely graduated modularization of the programs.
PEARL has been standardized since 1981 in DIN 66 253 Part 1 (Basic PEARL) and since 1982 in DIN 66 253 Part 2 (Full PEARL) and has already proven itself in over 200 large and many hundreds of small projects.
The simple temporal organization of the program flow
AFTER 10 SEC ALL 4 SEC UNTIL 17:00:00 ACTIVATE Regler PRIO 6;
(Cyclic execution of the task Regler up to a fixed time)
as well as integrated interrupt processing
WHEN Feuer ACTIVATE Loesch;
(Scheduling the Task Loesch on the interrupt Feuer)
are carried out using self-documenting statements.
Inputs/outputs are always made via identical Pearl data stations. Computer-specific control and conversion functions are determined by agreements only in the SYSTEM part. In particular, process I/O
SEND Aus TO Motor ;
TAKE belegt FROM Lichtschranke ;
and file-oriented, alphanumeric I/Os
PUT Temperatur TO Protokolldatei;
GET Sollhoehe FROM Bedienkonsole ;
can be easily adapted to different device configurations.
The PEARL compiler optionally generates ROM-capable code and thus allows the programming of closed systems without mass storage. When the system is started, only the variables with initial values are created in the RAM; the program code is executed from the ROM.
IEP supports the use of UH-PEARL on all computers running the Operating system RTOS-UH.
Target processors are NXP MC68xxx and PowerPC. Target systems are available in all performance classes, from the low-end 680xx series with the 683xx controllers to the complete VMEbus spectrum up to multiprocessor PPC workstations.
The UH-PEARL compiler can also be used as a cross compiler. Compiler versions for e.g. Windows or UNIX etc. are available; the generated code can be used as can be executed on any computer under RTOS-UH.