See timer.


A DDE-compatible transmission protocol developed by Rockwell that has DDE-incompatible packet contents. It is useful for communicating with some Rockwell programs.


Distributor of a popular http (web) server and other open-source software.


See Application Programming Interface (API).


A system of hardware and software (COTS (commercial-off-the-shelf) and/or custom) that performs an activity satisfying a set of requirements (eg. process bank machine transactions, bend pipes with a robot arm, log and process acquired image data, etc.).

Application Programming Interface (API)

An interface that allows an application to communicate with an operating system or another application. For example, Cogent provides an API for the Cascade DataHub so that any program can communicate with it, so it can be successfully integrated into other applications.

For more information, see the Cogent C API documentation.


A type of message passing where the sending task does not wait for a reply before continuing processing. If the receiving task cannot take the message immediately, the message often waits on a queue until it can be received.


C is a low-level compiled programming language popular for real-time applications because of its precision and rapid execution times. C++ is an object-oriented superset of C.


A computer process or system that depends on a server (another process or system) for information or processing power.


See Component Object Model (COM).

Component Object Model (COM)

A complex mechanism for transferring not only data but flow of control between tasks. It is the basis for OLE (Object Linking and Embedding), and ActiveX components. COM is essentially a generalization of the RPC (Remote Procedure Call) mechanism introduced years ago in UNIX systems. The major generalization that COM makes is that it can implement remote procedure calls either locally through a shared DLL (Dynamically Linked Library) or through a series of TCP/IP messages. The DLL mechanism is blindingly fast, much faster than DDE. The TCP/IP mechanism, even on the same machine, is likely to be much slower than DDE. A COM interface is customized for the particular application, and both the client and server must be written to use that interface.

Common Object Request Broker Architecture (Corba)

A standard established by OMG for the interaction between objects from different object-oriented development environments.


A communications protocol developed by Allen-Bradley.


See Common Object Request Broker Architecture (Corba).


A term used by Cogent to refer to a real-time database, because the word "database" often conjures up the image of a relational database.

Data Highway / Data Highway Plus

A communications protocol developed by Allen-Bradley.


See Distributed Component Object Model (DCOM).


See Distributed Control System (DCS).


See Dynamic Data Exchange (DDE).


A manufacturer of cables and connectors for industrial and commercial applications.


The degree to which the resources (mainly time, but also memory, disk space, etc.) needed to perform a particular activity can be absolutely determined. Determinism says nothing about how fast the activity must be, it just states that the activity must occur within a specific time frame. Performing an action many times may not get exactly the same execution time for each run, but a deterministic system will always stay within the bounding time frame.

As with real-time, the concept of determinism often implies fast execution speeds.

device driver

A program that sends and receives data to and from the outside world. Typically a device driver will communicate with a hardware interface card that receives field device messages and maps their content into a region of memory on the card. The device driver then reads this memory and delivers the contents to the interested software programs (for example, the Cascade DataHub).


A low-level network developed by Allen-Bradley that connects field hardware to PLCs and computers.

Distributed Component Object Model (DCOM)

DCOM is an extension of COM that uses TCP/IP communication across the network. Originally COM was not implemented to do this naturally, but in later versions the distinction between a local COM server and a remote COM server was blurred and COM became DCOM.

distributed control

An approach to system design where control tasks are separated into definable modules and distributed around a network of computers. The goal is to optimize the speed of control action and to fully utilize the computing power available. Distributed control requires fast, reliable messaging, which Cogent provides through the Cascade DataHub.

Distributed Control System (DCS)

A big PLC that may be networked to other PLCs or field devices. It can be very expensive due to built-in security and fail-over features.

Dynamic Data Exchange (DDE)

A relatively old mechanism for exchanging simple data among processes in MS-Windows. The mechanism was intentionally designed to be simple in its implementation, and simple in the data representation. DDE is implemented with care taken to respect the cooperative multitasking that MS-Windows implements. That is, a process that is involved in Windows communication will not block waiting for a DDE transaction to complete, but will actually continue to update its windows during the synchronous transaction. This is done by entering a modal event loop and performing a series of asynchronous message passes through the windows event queue.

For more information see the FAQs: Is DDE dead? and Is DDE better than COM?

dynamic data typing

A feature of a computer language where data types do not have to be written into the code, but are determined at run-time. This feature can cut the time of programming significantly, which cuts overall development time. It is a standard feature in Cogent's Gamma language.


Anything that happens that is significant to a program, such as a mouse click, a change in a data point value, or a command from a user.


A process such as a GUI that responds to events. It enters a main loop, waiting for an event to occur. After responding to the event, it returns to the loop and waits for the next event.


Any condition, such as a hardware interrupt or sofware error-handler, that changes a program's flow of control.

exception reporting

A method of updating data in a system, where a message is sent whenever the value for a given data point changes. This method is generally faster than polling when a significant number of data points is involved. The high speed of the Cascade DataHub is due in part to its exception-reporting architecture.

expert system

A computer program that uses an inference engine to determine facts from an incomplete or less than perfect data set. It uses rules to determine how knowledge is deduced and can be effective at applying "just enough" control at "just the right time." Often marketed as "artificial intelligence", it is really just a decision tree with the ability to soften or harden its control based on gradual changes in the process. For example, expert system programs were quite successful in the mining industry, controlling grinding circuits based on the changing nature of the rock coming into the mill.

Generally these are not considered to be real-time control systems, because the inference engine is forced to poll and the response is not deterministic—it can never be guaranteed within a certain time frame. Very often in the real world, expert system control applications are actually just rule based systems, because you do not want your control program guessing at what action to take; you want it to do the same thing every time and you want it to be done quickly.

See Also determinism/deterministic.

Extensible Markup Language (XML)

A brother of SGML that was developed to enable delivery of SGML information over the Web while overcoming the limitations of HTML.


A mechanism for encapsulating many (name,value) pairs into a single DDE message. It is intended to reduce the per-point transmission overhead by reducing the number of transmissions. It cannot, however, reduce the speed at which the receiving process responds, which is generally the bottleneck (rather than DDE) in the Windows communications environment.


The ability of a system to recover from errors. These may be network breaks, loss of power, or corruption of vital control data.


See Function Block Display (FBD).


A set of communication protocols that some hardware manufacturers use to make their field devices talk to other field devices. Fieldbus protocols are often supported by manufacturers of sensor hardware. There are debates as to which of the different fieldbus protocols is the best. Popular types of fieldbus protocol include Profibus, Devicenet, InterBus, CANopen and Modbus.


See first-in, first out (FIFO).

first-in, first out (FIFO)

In the context of scheduling multiple real-time processes, the first process to request a resource is first to get it.


An extensible programming language that uses data stacks and tokens, and has a postfix syntax. Programs are written as lists of data items called words, which are combined to create subroutines. Its performance/memory ratio makes it popular for certain embedded and real-time applications.

Function Block Display (FBD)

A low-level programming language similar to Ladder Logic Display. One commentator states, "FBD is a throwback to the days when we designed control systems with discrete gates, flip-flops, registers etc."


A dynamically-typed, interpreted programming language developed by Cogent that has been specifically designed to allow rapid development of control and user interface applications. Gamma has a syntax similar to C and C++, but has a range of built-in features that make it a far better language for developing sophisticated real-time systems.

For more information see the Gamma and Gamma/Photon documentation.

Garbage Collection (GC)

A memory management activity carried out by the system to reclaim dynamically allocated memory that is no longer being used. It is generally triggered automatically when free memory falls below a certain level, or after a certain number of memory allocations.


See Garbage Collection (GC).

graphical user interface (GUI)

See human machine interface (HMI).


See human machine interface (HMI).


The Project GNU's extension language, it is a library that lets a programmer write extension modules to other programs. Guile is an implementation of the Scheme programming language, but both the extension module and the original program to be extended can be written in other languages such as C, Tcl, etc.

hard real-time

A hard real-time program is one that respects the definition of what we have defined to be real-time. However, the term "hard real-time system" has become synonymous with a system that has a very fast response. Most of the time hard real-time systems are implemented in systems where the response needs to be very fast. Actually, "hard real-time" does not define how fast the system has to be, it just states that the response from the system has to be within the deadline 100% of the time. Having said that, a hard real-time system that has a 20 minute deadline is not what most people consider to be a real-time system.

For more information see the FAQ: Hard and soft real-time: what's the difference?

high-level control

The control performed by supervisory systems that take data from one or more low-level control systems. High level systems may also be connected directly to field devices, either to read data or perform control.


See human machine interface (HMI).


A duplicate control system that can take over when the primary control system experiences unrecoverable errors. This usually implies that the switchover can be achieved without the process being affected in any way. "Warm-standby" is sometimes used to describe a standby system that can be made to take over from a primary system, but the process may be slightly delayed while the new system "comes up to speed". Also "Cold-standby" is sometimes used to describe a system that is a copy of the primary that can be taken out of storage and put in place of the primary when there is a problem.


See Hypertext Markup Language (HTML).

human machine interface (HMI)

Also referred to as a GUI (graphical user interface) or MMI (man machine interface), this is a process that displays graphics and allows people to interface with the control system in graphic form. It may contain trends, alarm summaries, pictures, or animation. It is usually classified as a separate task within a multitasking environment like QNX. In Windows, the GUI/HMI/MMI program may claim to also provide the control features needed in the system. Very often this is not true, and when it is true, these control programs still have to run on a Windows platform that Cogent considers too unstable for high availability systems.

Hypertext Markup Language (HTML)

A way to mark up text for presentation on web browsers. HTML is a document type definition of SGML.


A high-level programming language with a C-like syntax, with built-in procedures for processing data structures and managing character strings.


Updated from IEC1131-3, an open standard for programmable logic controllers that includes the languages: ST, FBD, LD, IL, and SFC.


See Instruction Listing (IL).

input/output (I/O)

A name given to data that comes from the field or is sent out to the field. The number of I/O points is often used as a measure of how big a control system is. A large control system can have between 5,000 and 10,000 I/O points.

Instruction Listing (IL)

A low-level programming language composed of sequences of machine-code-like instructions. IL is very close to assembly language programming, one of the lowest levels at which programming is done by humans.


A program that reads, interprets, and executes a program, eliminating the need for compiling source code. Running a program through an interpreter can reduce the edit-compile-run-debug cycle to simply edit-run-debug, saving substantial development time.

interprocess communication (IPC)

The communication between different processes, on one machine or over a network.


An event triggered by either hardware or software that causes the processor to first suspend execution of its current process and store information about that process, and then invoke one or more interrupt handlers to decide when and how to handle the new event.


A commercial HMI package for Windows and Windows NT used to build graphical user interfaces and connect them to PLCs.

Used as a standalone product, InTouch is most successfully implemented when providing isolated control of a single process. In these cases, it is usually connected to a PLC through a device driver program that is supplied by the PLC vendor or by Wonderware, the maker of InTouch. The PLC provides low-level control and InTouch provides the graphics to show what's going on.

Anything other than relatively low-level control applications need more powerful control integrated into the system. Cascade Connect and other Cogent tools let you integrate sophisticated real-time control applications into new or existing InTouch applications.


See input/output (I/O).


See interprocess communication (IPC).


A combination of programming language called Java, and interpreter platform made up of an API and the Java VM (Virtual Machine). Programs are written and compiled in Java and run through the Java VM. Since the Java platform can be installed on many different operating systems, programs can be "written once, run anywhere."


See timer.


The core of an operating system that handles resource allocation, hardware interfaces, and other basic functions.

Ladder Logic Display (LD)

A low-level language used by PLC programmers to write sequential type control systems for doing low level control on things like conveyors, pumps and gates. The language is based on graphical depiction of mechanical relays used in industrial applications, which makes it easy to learn, but limits it to relatively simple applications.


See Ladder Logic Display (LD).


A Unix-like operating system whose source code is freely available, used for networking, software development, and as an end-user platform. Popular for its low cost, functionality and reliability, it is also being considered for some real-time applications.

Compared to a dedicated real-time operating system like QNX, Linux has a larger memory footprint, is more difficult to boot from ROM, and services like semaphores are not currently allocated by priority (though this is being discussed). Priorities of all drivers (I/O devices, and filesystems) as well of networking cannot be controlled.

Cogent software running on Linux uses the S/R/R Module to emulate QNX send/receive/reply real-time message passing.


"Lisp" stands for LISt Processing, an interpreted programming language developed for the study of artificial intelligence. All expressions are built as parentheses-enclosed lists, which allows for programs to be handled as data.

Cogent's Gamma language runs on top of SCADALisp, a version of Lisp that has been optimized for size, speed and memory usage, and uses the strengths of Lisp to facilitate development through:

Simplified programsExtensive GUI services
Unrestricted callbacksRun-time debugging
Powerful inter-task communications

low-level control

A general term for simple, sequential control of valves, gates, conveyors etc. This is often performed very quickly by PLCs and DCSs.

man machine interface (MMI)

See human machine interface (HMI).

Management Execution System (MES)

A level of monitoring of a process control system that is above the PLC and HMI level, where data analysis and integration with other aspects of the company such as accounting and purchasing play a significant role.

memory management unit (MMU)

A piece of hardware that maintains the relationship between virtual addresses (generated by the CPU) and physical addresses (in memory).


See Management Execution System (MES).


See human machine interface (HMI).


See memory management unit (MMU).

Modbus Plus

A type of local area network by Modicon for industrial control applications, that uses token-passing nodes grouped on a common signal path.

monolithic control

A single, centralized, unitary control system, as opposed to multiple independent control systems found in open modular systems.


An attempt to extend DDE semantics to network applications. It has not proven successful for more than a few nodes, and offers little more than ordinary DDE.

For more information see the FAQ: What is the difference between DDE and NetDDE?

neural network (NN or ANN)

Also known as an Artificial Neural Network, it is a network of simple processors designed to emulate the functioning of an animal's brain. Rules are introduced to "train" the network to recognize patterns and learn from examples.

For more information see the FAQ: How do neural networks work?


Another name for QNX 6.

Object Management Group (OMG)

A consortium that sets standards for object-oriented programming across differing platforms and development evironments. Two well-known standards are Corba and UML (Unified Modelling Language).

Object Request Broker (ORB)

The part of Corba that connects a client and server, receiving and passing requests and replies across the network.


See Open DataBase Connectivity (ODBC).

OLE for Process Control (OPC)

A particular COM interface specification. Applications which implement the OPC interface are able to inter-operate without the developer needing to control both the server and client development. In essence, by following the OPC interface, clients and servers from different manufacturers can communicate and interact successfully. The OPC interface is designed to offer the types of interactions that are typical of process I/O hardware such as PLCs, DCSs and direct I/O boards.


See Object Management Group (OMG).


See OLE for Process Control (OPC).

Open DataBase Connectivity (ODBC)

A standardized application programmer's interface (API) for databases. It supports Visual Basic, Visual C++, and SQL for Access, Paradox, datahub, Text, Excel and Btrieve databases.

open modular architecture

An architecture that supports an open modular system.

open modular system

A control application where the separate jobs to be performed are divided up and performed by different processes or tasks within the system. These tasks may be spread around a network. The "open" aspect refers to the ability of the developer to add another process (or job) to the system, without breaking the model and without affecting the other processes in a significant way. In other words, these systems are designed correctly from the beginning using an architecture that allows for expansion and which is based on a set of cooperating processes communicating efficiently with each other.

Cogent creates this type of system by placing the Cascade DataHub at the center of the system architecture and having all processes communicate through it.


See Object Request Broker (ORB).


A Unix-like real-time operating system originally developed by Microware Corporation to run on the Motorola 6809 processors. It has a modular kernal which allows for scaling up or down.


See priority-driven preemptive (PDPE).

peer-to-peer networking

A type of network where computers communicate directly with each other, rather than through a central server. One example is the Search for Extraterrestrial Intelligence (SETI) project at UC Berkeley whose network includes over 2 million computers around the world. During low-use periods these computers download and process chunks of data from the Arecibo radio telescope, making the SETI "computer" one of the fastest in the world.


Perl stands for Practical Extraction and Report Language, a high-level language with a flexible syntax designed for processing text files and generating reports.


A windowing environment for QNX used to create GUIs. It superseded the QNX Windows environment.

PID Loops

See Proportional, Integral, Derivative (PID).


See Programmable Logic Controller (PLC).


A method of updating data in a system, where one task sends a message to a second task on a regular basis, to check if a data point has changed. If so, the change in data is sent to the first task. This method is most effective when there are few data points in the system. Otherwise, exception reporting is generally faster.

Although it has an exception-reporting architecture, the Cascade DataHub can support polling as needed.

Portable Operating Systems Interface (POSIX)

A group of standards that define an interface between programs and Unix-like operating systems such as QNX and Linux. A program that is POSIX compliant should run on any POSIX-compliant operating system.


See Portable Operating Systems Interface (POSIX).

priority level

A number assigned to a task or thread in a multitasking system that sets the scheduling priority for that task.

priority-driven preemptive (PDPE)

A way of scheduling real-time system resources where the execution of tasks with lower priorities is delayed in favor of higher-priority tasks.


The activity of a processor and its resources as it executes a program. Resources associated with a process could include a process ID, files, time limits, shared memory, signal handlers, child processes, and so on. A process can be subdivided into threads.


A fieldbus by Siemens.

Programmable Logic Controller (PLC)

A specialized device used to provide high-speed, low-level control of a process. It is programmed using LD or some form of structured language, so that engineers can program it. PLC hardware typically costs a lot of money, and often has very good redundancy and fail-over capabilities. When you walk around a factory, the thing with all the lights and buttons and switches is the PLC (or possibly a DCS, which is a big PLC).

Proportional, Integral, Derivative (PID)

A method of applying a change to a control system in order to maintain stability. The PID part of the equation helps machines like PLCs apply a change while taking into consideration physical plant effects like time delays and sensitivity to rapid changes.


A real-time operating system for embedded software and process control applications.


A high-level, interpreted, interactive, object-oriented programming language. It is similar to Cogent's Gamma language in that it features dynamic data typing which cuts development time.


A POSIX-compliant real-time operating system known for its microkernel architecture and message-based interprocess communication. The microkernel architecture means it is made up of cooperating processes that can be added or removed as necessary. Messages are passed among OS processes and any other process in the system, using S/R/R messaging. There are two versions of QNX currently offered:

QNX 4has a small memory footprint, is easily bootable from a ROM filesystem, and all system limits (maximum file descriptors, tasks, timers, semaphores, etc.) are controllable. Services like serial, network, and console I/O, TCP/IP, file-systems are not only possible to include or exclude, but can be dynamically started and stopped, and their priorities controlled. It has limited control of interrupt scheduling priority, and doesn't page processes to disk, so unexpected delays due to paging cannot occur.

QNX 6(also known as "Neutrino") has an even smaller memory footprint than QNX 4, runs on more machine architectures than just the x86, can run without an MMU, and has kernel-level support for threads. Other than this it is similar to QNX 4, though still not as feature-rich in networking and available drivers, or as developed in terms of third-party tools and libraries, but is gaining momentum.


See rapid application development (RAD).

rapid application development (RAD)

Something of a buzzword used in marketing to describe a development process that has been somehow optimized to make the job easier and hence to allow you to deliver your application sooner.


The characteristic of determinism applied to computer hardware and/or software. A real-time process must perform a task in a determined length of time.

For example, a typical "normal" program may be considered to perform correctly if it behaves as expected and gives the right answer. A real-time program is considered to be correct only if it gives the right answer within a specified deadline. In other words, "real-time" adds a time constraint to the notion of a program being correct.

The phrase "real-time" does not directly relate to how fast the program responds, even though many people believe that real-time means real-fast. This is a direct fall-out from the fact that it is easier to meet deadlines with a fast system. However, many operating systems now run on powerful hardware and are "fast", but that speed does not necessarily imply "determinism". Determinism is more important than average speed for real-time systems.

Rate Monotonic Scheduling (RMS)

A mathematical model for checking the predictability of a priority driven preemptive scheduling system.

real-time database

A flat database designed for quick, deterministic response. Not to be confused with a relational database, a real-time database is like a hub—a lively transfer point where data can be updated and sent virtually instantaneously, from and to many processes at the same time. At Cogent we use the term datahub for this kind of database, and we refer to our datahub as the "Cascade DataHub."

real-time operating system (RTOS)

An operating system implementing components and services that explicitly offer deterministic responses, and therefore allow the creation of hard real-time systems. An RTOS is characterized by the richness of the services it provides, the performance characteristics of those services, and the degree that those performance characteristics can be controlled by the application engineer ( to satisfy the requirements of the application).

The less resources those services require (such as RAM to load the O/S, time to do a task switch, latency of message passing, etc.) and the more deterministic the services are, the more "real-time" the system is said to be. At a minimum, this means priority-driven preemptive scheduling, with all system services capable of being satisfied in deterministic priority-driven FIFO order. And this must be documented.

real-time system

An application or group of applications with real-time requirements.

Relay Ladder Logic (RLL)

See Ladder Logic Display (LD).

remote access

The ability to access a system via modem and get some or all of the same services as a client on the network.


A statistical term associated with accuracy describing how nearly a value is repeated. It is the deviation from the average difference between the expected value and erroneous values. For example, a measuring system may be very inaccurate, but if the erroneous readings are always exactly the same, it has high repeatability. On the other hand, even if a number of readings average out close to the desired value, the repeatability might be low if there were many high and low readings.


See timer.


Any component of a computing machine that can be utilized by software. Examples include: RAM, disk space, CPU time, real-world time, serial devices, network devices, and other hardware, as well as O/S objects such as semaphores, timers, file descriptors, files, etc.


See Ladder Logic Display (LD).


See Rate Monotonic Scheduling (RMS).

RT Linux

A separate O/S kernel that runs beneath Linux and schedules its threads before the Linux kernel and its processes. It has a different programming API, and its threads are not capable of using any Linux drivers or operating system calls. It forces partitioning an application into those parts that don't need any O/S services (besides thread scheduling and IPC between RT threads), and those that need file I/O, device driver I/O, and networking in addition to real-time scheduling. RT Linux threads and Linux processes can communicate using shared memory and RT Linux-named pipes.

For more information see the FAQ: How does RT Linux work?


See real-time operating system (RTOS).

rule based system

A control system that is defined by a set of rules, similar to a decision tree. This kind of system is often easier for a non-programmer to conceptualize than a complex computer program. Cogent's Gamma language can be made to execute rule-based control definitions.


See Supervisory Control And Data Acquisition (SCADA).


Determining when a given process or thread is to be run, within a multitasking environment. Real-time operating systems often use priority-driven preemptive scheduling. Other types of scheduling include round-robin (every process gets an equal-length turn) and FIFO.

Send/Receive/Reply (S/R/R) messaging

A mechanism by which QNX programs can communicate with each other. It is very fast and efficient when compared to something like TCP/IP.

Sequential Function Chart (SFC)

A low-level programming language based on a graphical description of the sequential flow of control in a program, including notation for parallelism and synchronization.


A computer process or system that serves a client (another process or system) with information or processing power.


Work requested from or provided by a server. For example: counting semaphores, disk access, dynamic memory management, network IPC, message passing, Unix pipes, graphic display, serial I/O, etc.


See Sequential Function Chart (SFC).


See Standard Generalized Markup Language (SGML).


A programming language developed in the 1970's to support object-oriented programming. It is said to be "purely" object-oriented, and as such is a standard for comparison with other languages claiming to be object-oriented. It differs from C++ in that there is no attempt to allow C procedural constructs.


Similar to SoftPLC. A software program that claims to have the ability to duplicate the functionality of an expensive DCS on a lower cost PC platform.


A computer program that tries to provide the programming environment and performance of an expensive PLC on a lower cost PC platform.

soft real-time

Basically the equivalent of a hard real-time system, except that an occasional slightly-late response is acceptable. A system that misses an occasional deadline does not really fit into what is perceived as real-time, but it might meet all of the actual time-response requirements of the system.

Chronic or extreme lateness is not acceptable for soft real-time. For example, Windows NT is often talked about as being soft real-time, but many people consider NT to be neither hard real-time nor soft real-time because the occasional missed deadline in NT can be on the order of several seconds. Normally, even in systems with a slow deadline, the deadline will be in the order of milliseconds, a resolution beyond perception of human operators. However, a multi-second miss on a deadline is quite noticeable by any operator, and could lead to serious consequences.


See Standard Query Language (SQL).

S/R/R messaging

See Send/Receive/Reply (S/R/R) messaging.

Standard Generalized Markup Language (SGML)

An international standard for markup languages, the best-known example of which is HTML. SMGL allows text to be stored and retrieved as data, and its markup is generally used to identify aspects of a document's content and structure.

Cogent's online and printed documentation is currently written an SGML document type called DocBook, which is then processed into HTML, QNX Helpviewer, PDF, and other document formats.

Standard Query Language (SQL)

A language used to structure queries in relational database systems like Sybase and Oracle.


See Structured Text (ST).

state machine / state control

A type of control system where you define what the system should be doing at a certain time (or in a certain state). A lot of batch processing systems can be controlled very well with this approach. You can define which things must be running during a certain state, say mixing, and then when a transition is reached, like the end of a line or a timer going off, you move to the next state and change process variables appropriately.

Structured Text (ST)

A high-level, text-based programming language, with a syntax similar to Pascal.

Supervisory Control And Data Acquisition (SCADA)

A system for monitoring and controlling for production processes, and managing related data. Typically a SCADA system is connected to PLCs, which are in turn connected to sensors and production machinery.


A type of message passing where the sending task waits for a reply before continuing processing.


A general term that can refer to a program, process or thread.


See Tool Command Language (Tcl).


See Transmission Control Protocol/Internet Protocol (TCP/IP).


A subprocess that operates within the context of a process, sharing, for example, address space and global variables with other threads of the process. The processor can switch quickly between threads, but care must be taken to protect threads from each other. Switching between threads is generally faster than multitasking (switching between processes).


The feature of a real-time system that allows for starting or stopping a process at a fixed or relative time. Cogent's Gamma language can set timers for actions to take place at one point in time, at regular intervals, or after a specified amount of time has elapsed. Three important attributes of timers are:

Accuracyis how closely the timers' notion of time corresponds to the "real" time.

Jitterrefers to the variation of timer events around a requested periodicity.

Resolutionis an interval used to measure the time. Timers in real-time systems always measure time in integral multiples of some time interval, which is called the resolution.


A GUI library for Tcl, which is also accessible from C or Perl.


An abstract unit of information used for implementing synchronous message passing, in which one process using a resource will be assigned the token, allowing it access to the resource. When the process finishes with that resource, the token is passed to the next process that needs the resource, and so on.

Tool Command Language (Tcl)

An interpreted language similar to Lisp, but with a text-oriented syntax for readability and to facilitate writing algebraic expressions. It was conceived as a scripting language, but is now used for serious programming as well.

Transmission Control Protocol/Internet Protocol (TCP/IP)

The control mechanism used by programs that want to speak over the Internet. It was established in 1968 to help remote tasks communicate over the original ARPANET.


A company offering real-time products for Windows NT.

Visual Basic

A graphical programming language and development environment created by Microsoft in 1990.

VME bus

Now also known as IEEE 1014, this is a backplane interconnection bus system developed by a group of companies in 1981, building on the Motorola VERSAbus standard.


Products that support multiple operating systems (such as Windows and Linux) on a single machine.


A widely-used real-time operating system for embedded software and process control applications.

Windows CE

A version of Windows targeted at the embedded software market. It offers some real-time features.

Windows NT real-time extensions

Various ways to extend Windows NT to appropriately support real-time systems. There are three alternatives:

  • Add a Win32 API to a real-time operating system such as QNX or VxWorks.
  • Put Windows NT and part or all of a real-time operating system on one processor.
  • Run Windows NT and real-time operating systems on different processors.

Cogent's Cascade Connect and Cascade DataHub products are designed to support the third alternative, because we have found it to be the most efficient and robust solution for our customers' needs.


The makers of InTouch and an example of Windows based HMI applications in general.


See Extensible Markup Language (XML).