format used for electro-mechanical control panels. Newer formats, such as state logic and Function Block (which is similar to the way logic is depicted when using digital integrated logic circuits) exist, but they are still not as popular as ladder logic. A primary reason for this is that PLCs solve the logic in a predictable and repeating sequence, and ladder logic allows the person writing the logic to see any issues with the timing of the logic sequence more easily than would be possible in other formats. Up to the mid-1990s, PLCs were programmed using proprietary programming panels or special-purpose programming terminals, which often had dedicated function keys representing the various logical elements of PLC programs. Some proprietary programming terminals displayed the elements of PLC programs as graphic symbols, but plain ASCII character representations of contacts, coils, and wires were common. Programs were stored on cassette tape cartridges. Facilities for printing and documentation were minimal due to a lack of memory capacity. The oldest PLCs used non-volatile magnetic core memory. Architecture A PLC is an industrial microprocessor-based controller with programmable memory used to store program instructions and various functions. It consists of: a processor unit (CPU) which interprets inputs, executes the control program stored in memory and sends output signals, a power supply unit which converts AC voltage to DC, a memory unit storing data from inputs and program to be executed by the processor, an input and output interface, where the controller receives and sends data from/to external devices, a communications interface to receive and transmit data on communication networks from/to remote PLCs. PLCs require programming device which is used to develop and later download the created program into the memory of the controller. Modern PLCs generally contain a real-time operating system, such as OS-9 or VxWorks. Mechanical design There are two types of mechanical design for PLC systems. A single box, or a brick is a small programmable controller that fits all units and interfaces into one compact casing, although, typically, additional expansion modules for inputs and outputs are available. Second design type – a modular PLC – has a chassis (also called a rack) that provides space for modules with different functions, such as power supply, processor, selection of I/O modules and communication interfaces – which all can be customized for the particular application. Several racks can be administered by a single processor and may have thousands