In computer software , a general-purpose programming language ( GPL ) is a programming language for building software in a wide variety of application domains . Conversely, a domain-specific programming language (DSL) is used within a specific area. For example, Python is a GPL, while SQL is a DSL for querying relational databases .
59-420: Modicon can mean: Modicon PLC , the first programmable logic controller Ethinylestradiol/norethisterone , an oral contraceptive formulation Topics referred to by the same term [REDACTED] This disambiguation page lists articles associated with the title Modicon . If an internal link led you here, you may wish to change the link to point directly to
118-403: 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 of inputs and outputs. Either
177-557: A request for proposals for an electronic replacement for hard-wired relay systems based on a white paper written by engineer Edward R. Clark. The winning proposal came from Bedford Associates from Bedford, Massachusetts . The result, built in 1969, was the first PLC and designated the 084 , because it was Bedford Associates' eighty-fourth project. Bedford Associates started a company dedicated to developing, manufacturing, selling, and servicing this new product, which they named Modicon (standing for modular digital controller). One of
236-541: A "generic" solution, and where the non-recurring engineering charges are spread over thousands or millions of units. Programmable controllers are widely used in motion, positioning, or torque control. Some manufacturers produce motion control units to be integrated with PLC so that G-code (involving a CNC machine) can be used to instruct machine movements. General-purpose programming language Early programming languages were designed for scientific computing (numerical calculations) or commercial data processing, as
295-461: A common element in multiple separate rungs. Unlike physical relays, there is usually no limit to the number of times an input, output or internal coil can be referenced in a PLC program. Some PLCs enforce a strict left-to-right, top-to-bottom execution order for evaluating the rung logic. This is different from electro-mechanical relay contacts, which, in a sufficiently complex circuit, may either pass current left-to-right or right-to-left, depending on
354-565: A computer, with the PLC connected via a communication interface. A PLC works in a program scan cycle, where it executes its program repeatedly. The simplest scan cycle consists of 3 steps: The program follows the sequence of instructions. It typically takes a time span of tens of milliseconds for the processor to evaluate all the instructions and update the status of all outputs. If the system contains remote I/O—for example, an external rack with I/O modules—then that introduces additional uncertainty in
413-665: A connected controller. The vulnerability was given a severity score of 10 out of 10 on the CVSS vulnerability scale . At the time of writing, the mitigation of the vulnerability was to limit network access to affected devices . Safety PLCs can be either a standalone device or a safety-rated hardware and functionality added to existing controller architectures ( Allen-Bradley GuardLogix, Siemens F-series, etc.). These differ from conventional PLC types by being suitable for safety-critical applications for which PLCs have traditionally been supplemented with hard-wired safety relays and areas of
472-437: A general purpose programming language. For example, COBOL , Fortran , and Lisp were created as DSLs (for business processing, numeric computation, and symbolic processing), but became GPL's over time. Inversely, a language may be designed for general use but only applied in a specific area in practice. A programming language that is well suited for a problem, whether it be general-purpose language or DSL, should minimize
531-564: A general-purpose desktop computer to overlap some PLCs in certain applications. Desktop computer controllers have not been generally accepted in heavy industry because desktop computers run on less stable operating systems than PLCs, and because the desktop computer hardware is typically not designed to the same levels of tolerance to temperature, humidity, vibration, and longevity as the processors used in PLCs. Operating systems such as Windows do not lend themselves to deterministic logic execution, with
590-773: A general-purpose language with an appropriate library of data types and functions for the domain may be used instead. While DSLs are usually smaller than GPL in that they offer a smaller range of notations of abstractions, some DSLs actually contain an entire GPL as a sublanguage. In these instances, the DSLs are able to offer domain-specific expressive power along with the expressive power of GPL. General Purpose programming languages are all Turing complete , meaning that they can theoretically solve any computational problem. Domain-specific languages are often similarly Turing complete but are not exclusively so. General-purpose programming languages are more commonly used by programmers. According to
649-453: A group of contacts controlling one coil is called a "rung" of a "ladder diagram", and this concept is also used to describe PLC logic. Some models of PLC limit the number of series and parallel instructions in one "rung" of logic. The output of each rung sets or clears a storage bit, which may be associated with a physical output address or which may be an "internal coil" with no physical connection. Such internal coils can be used, for example, as
SECTION 10
#1732780723484708-460: A programming background. For this reason, a graphical programming language called Ladder Diagram (LD, LAD) was first developed. It resembles the schematic diagram of a system built with electromechanical relays and was adopted by many manufacturers and later standardized in the IEC 61131-3 control systems programming standard. As of 2015, it is still widely used, thanks to its simplicity. As of 2015,
767-537: A 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 . There are two types of mechanical design for PLC systems. A single box (also called 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. The second design type –
826-406: A range of automation tasks. These are typically industrial processes in manufacturing where the cost of developing and maintaining the automation system is high relative to the total cost of the automation, and where changes to the system would be expected during its operational life. PLCs contain input and output devices compatible with industrial pilot devices and controls; little electrical design
885-607: A result, though it was first used by its creators to rewrite the kernel of the Unix operating system, it was easily adapted for use in application development, embedded systems (e.g., microprocessor programming), video games (e.g., Doom ), and so on. Today, C remains one of the most popular and widely-used programming languages. Conceived as an extension to C, C++ introduced object-oriented features, as well as other conveniences like references, operator overloading, and default arguments. Like C, C++'s generality allowed it to be used in
944-516: A simple PLC, or the PLC may have external I/O modules attached to a fieldbus or computer network that plugs into the PLC. The functionality of the PLC has evolved over the years to include sequential relay control, motion control, process control , distributed control systems , and networking . The data handling, storage, processing power, and communication capabilities of some modern PLCs are approximately equivalent to desktop computers . PLC-like programming combined with remote I/O hardware, allows
1003-412: A simple programming language focused on logic and switching operations, it was more user-friendly than computers using general-purpose programming languages . Early PLCs were programmed in ladder logic , which strongly resembled a schematic diagram of relay logic . It also permitted its operation to be monitored. In 1968, GM Hydramatic, the automatic transmission division of General Motors , issued
1062-442: A single manufacturer, different models may not be directly compatible. PLC programs are typically written in a programming device, which can take the form of a desktop console, special software on a personal computer , or a handheld programming device. Then, the program is downloaded to the PLC directly or over a network. It is stored either in non-volatile flash memory or battery-backed-up RAM . In some programmable controllers,
1121-430: A special high-speed serial I/O link or comparable communication method is used so that racks can be distributed away from the processor, reducing the wiring costs for large plants. Discrete (digital) signals can only take on or off value (1 or 0, true or false ). Examples of devices providing a discrete signal include limit switches and photoelectric sensors . Analog signals can use voltage or current that
1180-465: A study, C , Python , and Java were the most commonly used programming languages in 2021. One argument in favor of using general-purpose programming languages over domain-specific languages is that more people will be familiar with these languages, overcoming the need to learn a new language. Additionally, for many tasks (e.g., statistical analysis, machine learning, etc.) there are libraries that are extensively tested and optimized. Theoretically,
1239-439: A unique address, and a PLC instruction can test if the input state is on or off. Just as a series of relay contacts perform a logical AND function, not allowing current to pass unless all the contacts are closed, so a series of "examine if on" instructions will energize its output storage bit if all the input bits are on. Similarly, a parallel set of instructions will perform a logical OR. In an electromechanical relay wiring diagram,
SECTION 20
#17327807234841298-464: A variety of ways, from the relay-derived ladder logic to programming languages such as specially adapted dialects of BASIC and C . While the fundamental concepts of PLC programming are common to all manufacturers, differences in I/O addressing, memory organization, and instruction sets mean that PLC programs are never perfectly interchangeable between different makers. Even within the same product line of
1357-459: A wide range of areas. While its C++'s core area of application is in systems programming (because of C++'s ability to grant access to low-level architecture), it has been used extensively to build desktop applications, video games, databases, financial systems, and much more. Major software and finance companies, such as Microsoft , Apple , Bloomberg , and Morgan Stanley , still widely use C++ in their internal and external applications. Python
1416-481: Is a feature often found in PLC programming software. It allows for testing and debugging early in a project's development. Incorrectly programmed PLC can result in lost productivity and dangerous conditions. Testing the project in simulation improves its quality, increases the level of safety associated with equipment and can save costly downtime during the installation and commissioning of automated control applications since many scenarios can be tried and tested before
1475-718: Is an industrial computer that has been ruggedized and adapted for the control of manufacturing processes, such as assembly lines , machines, robotic devices, or any activity that requires high reliability, ease of programming, and process fault diagnosis. PLCs can range from small modular devices with tens of inputs and outputs (I/O) , in a housing integral with the processor, to large rack-mounted modular devices with thousands of I/O, and which are often networked to other PLC and SCADA systems. They can be designed for many arrangements of digital and analog I/O, extended temperature ranges, immunity to electrical noise , and resistance to vibration and impact. PLCs were first developed in
1534-501: Is analogous to the monitored variable and can take any value within their scale. Pressure, temperature, flow, and weight are often represented by analog signals. These are typically interpreted as integer values with various ranges of accuracy depending on the device and the number of bits available to store the data. For example, an analog 0 to 10 V or 4-20 mA current loop input would be converted into an integer value of 0 to 32,767. The PLC will take this value and translate it into
1593-491: Is becoming more commonplace in the PLC environment, connecting the previously separated plant floor networks and office networks. In February 2021, Rockwell Automation publicly disclosed a critical vulnerability affecting its Logix controllers family. The secret cryptographic key used to verify communication between the PLC and workstation could be extracted from the programming software (Studio 5000 Logix Designer) and used to remotely change program code and configuration of
1652-593: Is carried over various industrial network protocols, like Modbus , or EtherNet/IP . Many of these protocols are vendor specific. PLCs used in larger I/O systems may have peer-to-peer (P2P) communication between processors. This allows separate parts of a complex process to have individual control while allowing the subsystems to co-ordinate over the communication link. These communication links are also often used for user interface devices such as keypads or PC -type workstations. Formerly, some manufacturers offered dedicated communication modules as an add-on function where
1711-443: Is required, and the design problem centers on expressing the desired sequence of operations. PLC applications are typically highly customized systems, so the cost of a packaged PLC is low compared to the cost of a specific custom-built controller design. On the other hand, in the case of mass-produced goods, customized control systems are economical. This is due to the lower cost of the components, which can be optimally chosen instead of
1770-451: The 1960s: GPSS and Simula for discrete event simulation; MAD , BASIC , Logo , and Pascal for teaching programming; C for systems programming; JOSS and APL\360 for interactive programming. The distinction between general-purpose programming languages and domain-specific programming languages is not always clear. A programming language may be created for a specific task, but used beyond that original domain and thus be considered
1829-642: The automobile manufacturing industry to provide flexible, rugged and easily programmable controllers to replace hard-wired relay logic systems. Dick Morley , who invented the first PLC, the Modicon 084, for General Motors in 1968, is considered the father of PLC. A PLC is an example of a hard real-time system since output results must be produced in response to input conditions within a limited time, otherwise unintended operation may result. Programs to control machine operation are typically stored in battery-backed-up or non-volatile memory . The PLC originated in
Modicon - Misplaced Pages Continue
1888-669: The configuration of surrounding contacts. The elimination of these "sneak paths" is either a bug or a feature, depending on the programming style. More advanced instructions of the PLC may be implemented as functional blocks, which carry out some operation when enabled by a logical input and which produce outputs to signal, for example, completion or errors, while manipulating variables internally that may not correspond to discrete logic. PLCs use built-in ports, such as USB , Ethernet , RS-232 , RS-485 , or RS-422 to communicate with external devices (sensors, actuators) and systems ( programming software , SCADA , user interface ). Communication
1947-410: The desired units of the process so the operator or program can read it. Some special processes need to work permanently with minimum unwanted downtime. Therefore, it is necessary to design a system that is fault-tolerant and capable of handling the process with faulty modules. In such cases to increase the system availability in the event of hardware component failure, redundant CPU or I/O modules with
2006-536: The discovery of the Stuxnet computer worm in June 2010, the security of PLCs received little attention. Modern programmable controllers generally contain real-time operating systems, which can be vulnerable to exploits in a similar way as desktop operating systems, like Microsoft Windows . PLCs can also be attacked by gaining control of a computer they communicate with. Since 2011, these concerns have grown – networking
2065-417: The documentation. Troubleshooting was a tedious process. When general-purpose computers became available, they were soon applied to control logic in industrial processes. These early computers were unreliable and required specialist programmers and strict control of working conditions, such as temperature, cleanliness, and power quality. The PLC provided several advantages over earlier automation systems. It
2124-545: 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 magnetic-core memory . A PLC is an industrial microprocessor-based controller with programmable memory used to store program instructions and various functions. It consists of: PLCs require
2183-475: The first 084 models built is now on display at Schneider Electric's facility in North Andover, Massachusetts . It was presented to Modicon by GM , when the unit was retired after nearly twenty years of uninterrupted service. Modicon used the 84 moniker at the end of its product range until after the 984 made its appearance. In a parallel development, Odo Josef Struger is sometimes known as the "father of
2242-426: The intended article. Retrieved from " https://en.wikipedia.org/w/index.php?title=Modicon&oldid=1097755268 " Category : Disambiguation pages Hidden categories: Short description is different from Wikidata All article disambiguation pages All disambiguation pages Programmable logic controller#Modicon A programmable logic controller ( PLC ) or programmable controller
2301-468: The late 1960s in the automotive industry in the US and was designed to replace relay logic systems. Before, control logic for manufacturing was mainly composed of relays , cam timers , drum sequencers , and dedicated closed-loop controllers . The hard-wired nature of these components made it difficult for design engineers to alter the automation process. Changes would require rewiring and careful updating of
2360-438: The level of detail required while still being expressive enough in the problem domain. As the name suggests, general-purpose language is "general" in that it cannot provide support for domain-specific notation while DSLs can be designed in diverse problem domains to handle this problem. General-purpose languages are preferred to DSLs when an application domain is not well understood enough to warrant its own language. In this case,
2419-487: 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
Modicon - Misplaced Pages Continue
2478-431: The logic, and so it was instead represented as a series of logic expressions in some kind of Boolean format, similar to Boolean algebra . As programming terminals evolved, because ladder logic was a familiar format used for electro-mechanical control panels, it became more commonly used. Newer formats, such as state logic, function block diagrams , and structured text exist. Ladder logic remains popular because PLCs solve
2537-406: The majority of PLC systems adhere to the IEC 61131-3 standard that defines 2 textual programming languages: Structured Text (ST; similar to Pascal ) and Instruction List (IL); as well as 3 graphical languages: ladder logic , function block diagram and sequential function chart . Instruction List (IL) was deprecated in the third edition of the standard. Modern PLCs can be programmed in
2596-665: The memory dedicated to the safety instructions. The standard of safety level is the SIL . A safety PLC might be used to control access to a robot cell with trapped-key access , or to manage the shutdown response to an emergency stop button on a conveyor production line. Such PLCs typically have a restricted regular instruction set augmented with safety-specific instructions designed to interface with emergency stop buttons, light screens, and other safety-related devices. The flexibility that such systems offer has resulted in rapid growth of demand for these controllers. PLCs are well adapted to
2655-437: The people who worked on that project was Dick Morley , who is considered to be the father of the PLC. The Modicon brand was sold in 1977 to Gould Electronics and later to Schneider Electric , its current owner. About this same time, Modicon created Modbus , a data communications protocol used with its PLCs. Modbus has since become a standard open protocol commonly used to connect many industrial electrical devices. One of
2714-624: The presence of these libraries should bridge the gap between general-purpose and domain-specific languages. An empirical study in 2010 sought to measure problem-solving and productivity between GPLs and DSLs by giving users problems who were familiar with the GPL ( C# ) and unfamiliar with the DSL ( XAML ). Ultimately, users of this specific domain-specific language performed better by a factor of 15%, even though they were more familiar with GPL, warranting further research. The predecessor to C , B ,
2773-530: The processor had no network connection built-in. PLCs may need to interact with people for the purpose of configuration, alarm reporting, or everyday control. A human-machine interface (HMI) is employed for this purpose. HMIs are also referred to as man-machine interfaces (MMIs) and graphical user interfaces (GUIs). A simple system may use buttons and lights to interact with the user. Text displays are available as well as graphical touch screens. More complex systems use programming and monitoring software installed on
2832-421: The program is transferred from a personal computer to the PLC through a programming board that writes the program into a removable chip, such as EPROM . Manufacturers develop programming software for their controllers. In addition to being able to program PLCs in multiple languages, they provide common features like hardware diagnostics and maintenance, software debugging, and offline simulation. PLC simulation
2891-626: The programmable logic controller" as well. He was involved in the invention of the Allen-Bradley programmable logic controller and is credited with coining the PLC acronym. Allen-Bradley (now a brand owned by Rockwell Automation ) became a major PLC manufacturer in the United States during his tenure. Struger played a leadership role in developing IEC 61131-3 PLC programming language standards. Many early PLC programming applications were not capable of graphical representation of
2950-448: The response time of the PLC system. As PLCs became more advanced, methods were developed to change the sequence of ladder execution, and subroutines were implemented. Special-purpose I/O modules may be used where the scan time of the PLC is too long to allow predictable performance. Precision timing modules, or counter modules for use with shaft encoders , are used where the scan time would be too long to reliably count pulses or detect
3009-453: The result that the controller may not always respond to changes of input status with the consistency in timing expected from PLCs. Desktop logic applications find use in less critical situations, such as laboratory automation and use in small facilities where the application is less demanding and critical. The most basic function of a programmable logic controller is to emulate the functions of electromechanical relays. Discrete inputs are given
SECTION 50
#17327807234843068-449: The same functionality can be added to hardware configuration for preventing total or partial process shutdown due to hardware failure. Other redundancy scenarios could be related to safety-critical processes, for example, large hydraulic presses could require that both PLCs turn on output before the press can come down in case one output does not turn off properly. Programmable logic controllers are intended to be used by engineers without
3127-598: The sense of rotation of an encoder. This allows even a relatively slow PLC to still interpret the counted values to control a machine, as the accumulation of pulses is done by a dedicated module that is unaffected by the speed of program execution. In his book from 1998, E. A. Parr pointed out that even though most programmable controllers require physical keys and passwords, the lack of strict access control and version control systems, as well as an easy-to-understand programming language make it likely that unauthorized changes to programs will happen and remain unnoticed. Prior to
3186-743: The system is activated. The main difference from most other computing devices is that PLCs are intended for and therefore tolerant of more severe conditions (such as dust, moisture, heat, cold), while offering extensive input/output (I/O) to connect the PLC to sensors and actuators . PLC input can include simple digital elements such as limit switches , analog variables from process sensors (such as temperature and pressure), and more complex data such as that from positioning or machine vision systems. PLC output can include elements such as indicator lamps, sirens, electric motors , pneumatic or hydraulic cylinders, magnetic relays , solenoids , or analog outputs. The input/output arrangements may be built into
3245-476: Was computer hardware. Scientific languages such as Fortran and Algol supported floating-point calculations and multidimensional arrays, while business languages such as COBOL supported fixed-field file formats and data records . Much less widely used were specialized languages such as IPL-V and LISP for symbolic list processing ; COMIT for string manipulation; APT for numerically controlled machines . Systems programming requiring pointer manipulation
3304-473: Was designed to tolerate the industrial environment better than systems intended for office use, and was more reliable, compact, and required less maintenance than relay systems. It was easily expandable with additional I/O modules. While relay systems required tedious and sometimes complicated hardware changes in case of reconfiguration, a PLC can be reconfigured by loading new or modified code. This allowed for easier iteration over manufacturing process design. With
3363-467: Was developed largely for a specific purpose: systems programming . By contrast, C has found use in a variety of computational domains, such as operating systems , device drivers , application software , and embedded systems . C is suitable for use in a variety of areas because of its generality. It provides economy of expression, flow control, data structures, and a rich set of operators, but does not constrain its users to use it in any one context. As
3422-406: Was typically done in assembly language , though JOVIAL was used for some military applications. IBM 's System/360 , announced in 1964, was designed as a unified hardware architecture supporting both scientific and commercial applications, and IBM developed PL/I for it as a single, general-purpose language that supported scientific, commercial, and systems programming. Indeed, a subset of PL/I
3481-475: Was used as the standard systems programming language for the Multics operating system. Since PL/I, the distinction between scientific and commercial programming languages has diminished, with most languages supporting the basic features required by both, and much of the special file format handling delegated to specialized database management systems . Many specialized languages were also developed starting in
#483516