CINXE.COM

Programmable logic controller - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Programmable logic controller - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"a626ce64-a3ff-4af1-bce1-9e7ab0e24985","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Programmable_logic_controller","wgTitle":"Programmable logic controller","wgCurRevisionId":1259858735,"wgRevisionId":1259858735,"wgArticleId":24992,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description is different from Wikidata","Use American English from September 2023","All Wikipedia articles written in American English","All articles with unsourced statements","Articles with unsourced statements from April 2020","Articles containing potentially dated statements from 2015","All articles containing potentially dated statements","Articles with unsourced statements from November 2014", "Articles containing potentially dated statements from 2011","Articles with unsourced statements from July 2022","Articles with unsourced statements from February 2020","Articles with unsourced statements from July 2009","Articles with unsourced statements from September 2023","Articles that may contain original research from March 2020","All articles that may contain original research","All articles with vague or ambiguous time","Vague or ambiguous time from February 2020","Commons category link is on Wikidata","Wikipedia articles with ASCII art","Programmable logic controllers","Computer engineering","Industrial automation","Industrial computing"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Programmable_logic_controller","wgRelevantArticleId":24992,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia", "wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":40000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q188674","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false, "wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","mediawiki.page.media","ext.scribunto.logs","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging", "ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.quicksurveys.init","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg/1200px-Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="797"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg/800px-Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="532"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg/640px-Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="425"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Programmable logic controller - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Programmable_logic_controller"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Programmable_logic_controller&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Programmable_logic_controller"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Programmable_logic_controller rootpage-Programmable_logic_controller skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Programmable+logic+controller" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=Programmable+logic+controller" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Programmable+logic+controller" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Programmable+logic+controller" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Invention_and_early_development" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Invention_and_early_development"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Invention and early development</span> </div> </a> <button aria-controls="toc-Invention_and_early_development-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Invention and early development subsection</span> </button> <ul id="toc-Invention_and_early_development-sublist" class="vector-toc-list"> <li id="toc-Modicon" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Modicon"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Modicon</span> </div> </a> <ul id="toc-Modicon-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Allen-Bradley" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Allen-Bradley"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>Allen-Bradley</span> </div> </a> <ul id="toc-Allen-Bradley-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Early_methods_of_programming" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Early_methods_of_programming"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.3</span> <span>Early methods of programming</span> </div> </a> <ul id="toc-Early_methods_of_programming-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Architecture" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Architecture"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Architecture</span> </div> </a> <button aria-controls="toc-Architecture-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Architecture subsection</span> </button> <ul id="toc-Architecture-sublist" class="vector-toc-list"> <li id="toc-Mechanical_design" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Mechanical_design"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Mechanical design</span> </div> </a> <ul id="toc-Mechanical_design-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Discrete_and_analog_signals" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Discrete_and_analog_signals"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Discrete and analog signals</span> </div> </a> <ul id="toc-Discrete_and_analog_signals-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Redundancy" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Redundancy"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Redundancy</span> </div> </a> <ul id="toc-Redundancy-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Programming" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Programming"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Programming</span> </div> </a> <button aria-controls="toc-Programming-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Programming subsection</span> </button> <ul id="toc-Programming-sublist" class="vector-toc-list"> <li id="toc-Programming_device" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Programming_device"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Programming device</span> </div> </a> <ul id="toc-Programming_device-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Simulation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Simulation"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Simulation</span> </div> </a> <ul id="toc-Simulation-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Functionality" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Functionality"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Functionality</span> </div> </a> <button aria-controls="toc-Functionality-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Functionality subsection</span> </button> <ul id="toc-Functionality-sublist" class="vector-toc-list"> <li id="toc-Basic_functions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Basic_functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Basic functions</span> </div> </a> <ul id="toc-Basic_functions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Communication" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Communication"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Communication</span> </div> </a> <ul id="toc-Communication-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-User_interface" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#User_interface"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>User interface</span> </div> </a> <ul id="toc-User_interface-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Process_of_a_scan_cycle" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Process_of_a_scan_cycle"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Process of a scan cycle</span> </div> </a> <ul id="toc-Process_of_a_scan_cycle-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Security" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Security"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Security</span> </div> </a> <ul id="toc-Security-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Safety_PLCs" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Safety_PLCs"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Safety PLCs</span> </div> </a> <ul id="toc-Safety_PLCs-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-PLC_compared_with_other_control_systems" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#PLC_compared_with_other_control_systems"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>PLC compared with other control systems</span> </div> </a> <button aria-controls="toc-PLC_compared_with_other_control_systems-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle PLC compared with other control systems subsection</span> </button> <ul id="toc-PLC_compared_with_other_control_systems-sublist" class="vector-toc-list"> <li id="toc-PLC_chip_/_embedded_controller" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#PLC_chip_/_embedded_controller"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.1</span> <span>PLC chip / embedded controller</span> </div> </a> <ul id="toc-PLC_chip_/_embedded_controller-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Microcontrollers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Microcontrollers"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.2</span> <span>Microcontrollers</span> </div> </a> <ul id="toc-Microcontrollers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Single-board_computers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Single-board_computers"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.3</span> <span>Single-board computers</span> </div> </a> <ul id="toc-Single-board_computers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Programmable_logic_relays_(PLR)" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Programmable_logic_relays_(PLR)"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.4</span> <span>Programmable logic relays (PLR)</span> </div> </a> <ul id="toc-Programmable_logic_relays_(PLR)-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>References</span> </div> </a> <button aria-controls="toc-References-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle References subsection</span> </button> <ul id="toc-References-sublist" class="vector-toc-list"> <li id="toc-Bibliography" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Bibliography"> <div class="vector-toc-text"> <span class="vector-toc-numb">10.1</span> <span>Bibliography</span> </div> </a> <ul id="toc-Bibliography-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Further_reading" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Further_reading"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Further reading</span> </div> </a> <ul id="toc-Further_reading-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Programmable logic controller</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 46 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-46" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">46 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%85%D8%AA%D8%AD%D9%83%D9%85_%D9%85%D9%86%D8%B7%D9%82%D9%8A_%D9%82%D8%A7%D8%A8%D9%84_%D9%84%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" title="متحكم منطقي قابل للبرمجة – Arabic" lang="ar" hreflang="ar" data-title="متحكم منطقي قابل للبرمجة" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Proqramla%C5%9Fd%C4%B1r%C4%B1labil%C9%99n_m%C9%99ntiqi_kontroller" title="Proqramlaşdırılabilən məntiqi kontroller – Azerbaijani" lang="az" hreflang="az" data-title="Proqramlaşdırılabilən məntiqi kontroller" data-language-autonym="Azərbaycanca" data-language-local-name="Azerbaijani" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%97%E0%A7%8D%E0%A6%B0%E0%A6%BE%E0%A6%AE%E0%A7%87%E0%A6%AC%E0%A6%B2_%E0%A6%B2%E0%A6%9C%E0%A6%BF%E0%A6%95_%E0%A6%95%E0%A6%A8%E0%A7%8D%E0%A6%9F%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%B2%E0%A6%BE%E0%A6%B0" title="প্রোগ্রামেবল লজিক কন্ট্রোলার – Bangla" lang="bn" hreflang="bn" data-title="প্রোগ্রামেবল লজিক কন্ট্রোলার" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/PLC" title="PLC – Bosnian" lang="bs" hreflang="bs" data-title="PLC" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Controlador_l%C3%B2gic_programable" title="Controlador lògic programable – Catalan" lang="ca" hreflang="ca" data-title="Controlador lògic programable" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Programovateln%C3%BD_logick%C3%BD_automat" title="Programovatelný logický automat – Czech" lang="cs" hreflang="cs" data-title="Programovatelný logický automat" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Programmable_logic_controller" title="Programmable logic controller – Danish" lang="da" hreflang="da" data-title="Programmable logic controller" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Speicherprogrammierbare_Steuerung" title="Speicherprogrammierbare Steuerung – German" lang="de" hreflang="de" data-title="Speicherprogrammierbare Steuerung" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Programmeeritav_loogikakontroller" title="Programmeeritav loogikakontroller – Estonian" lang="et" hreflang="et" data-title="Programmeeritav loogikakontroller" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/%CE%A0%CF%81%CE%BF%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%84%CE%B9%CE%B6%CF%8C%CE%BC%CE%B5%CE%BD%CE%BF%CF%82_%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CF%8C%CF%82_%CE%B5%CE%BB%CE%B5%CE%B3%CE%BA%CF%84%CE%AE%CF%82" title="Προγραμματιζόμενος λογικός ελεγκτής – Greek" lang="el" hreflang="el" data-title="Προγραμματιζόμενος λογικός ελεγκτής" data-language-autonym="Ελληνικά" data-language-local-name="Greek" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Controlador_l%C3%B3gico_programable" title="Controlador lógico programable – Spanish" lang="es" hreflang="es" data-title="Controlador lógico programable" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wikipedia.org/wiki/PLC" title="PLC – Basque" lang="eu" hreflang="eu" data-title="PLC" data-language-autonym="Euskara" data-language-local-name="Basque" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%DA%A9%D9%86%D8%AA%D8%B1%D9%84%E2%80%8C%DA%AF%D8%B1_%D9%85%D9%86%D8%B7%D9%82%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%BE%D8%B0%DB%8C%D8%B1" title="کنترل‌گر منطقی برنامه‌پذیر – Persian" lang="fa" hreflang="fa" data-title="کنترل‌گر منطقی برنامه‌پذیر" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Automate_programmable_industriel" title="Automate programmable industriel – French" lang="fr" hreflang="fr" data-title="Automate programmable industriel" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/PLC" title="PLC – Galician" lang="gl" hreflang="gl" data-title="PLC" data-language-autonym="Galego" data-language-local-name="Galician" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EB%B8%94_%EB%A1%9C%EC%A7%81_%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC" title="프로그래머블 로직 컨트롤러 – Korean" lang="ko" hreflang="ko" data-title="프로그래머블 로직 컨트롤러" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%AA%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A5%88%E0%A4%AE%E0%A5%87%E0%A4%AC%E0%A4%B2_%E0%A4%B2%E0%A4%BE%E0%A4%9C%E0%A4%BF%E0%A4%95_%E0%A4%95%E0%A4%82%E0%A4%9F%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B2%E0%A4%B0" title="प्रोग्रैमेबल लाजिक कंट्रोलर – Hindi" lang="hi" hreflang="hi" data-title="प्रोग्रैमेबल लाजिक कंट्रोलर" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/PLC_(ra%C4%8Dunalo)" title="PLC (računalo) – Croatian" lang="hr" hreflang="hr" data-title="PLC (računalo)" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Kontrol_logika_terprogram" title="Kontrol logika terprogram – Indonesian" lang="id" hreflang="id" data-title="Kontrol logika terprogram" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/I%C3%B0nt%C3%B6lvur" title="Iðntölvur – Icelandic" lang="is" hreflang="is" data-title="Iðntölvur" data-language-autonym="Íslenska" data-language-local-name="Icelandic" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Controllore_logico_programmabile" title="Controllore logico programmabile – Italian" lang="it" hreflang="it" data-title="Controllore logico programmabile" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%91%D7%A7%D7%A8_%D7%9C%D7%95%D7%92%D7%99_%D7%9E%D7%99%D7%AA%D7%9B%D7%A0%D7%AA" title="בקר לוגי מיתכנת – Hebrew" lang="he" hreflang="he" data-title="בקר לוגי מיתכנת" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Programozhat%C3%B3_logikai_vez%C3%A9rl%C5%91" title="Programozható logikai vezérlő – Hungarian" lang="hu" hreflang="hu" data-title="Programozható logikai vezérlő" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0%D0%B1%D0%B8%D0%BB%D0%B5%D0%BD_%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%BA%D0%B8_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D1%83%D0%B2%D0%B0%D1%87" title="Програмабилен логички управувач – Macedonian" lang="mk" hreflang="mk" data-title="Програмабилен логички управувач" data-language-autonym="Македонски" data-language-local-name="Macedonian" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Pengawal_logik_boleh_atur_cara" title="Pengawal logik boleh atur cara – Malay" lang="ms" hreflang="ms" data-title="Pengawal logik boleh atur cara" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%87%D0%BB%D0%B0%D0%B3%D0%B4%D0%B0%D1%85_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA_%D1%83%D0%B4%D0%B8%D1%80%D0%B4%D0%BB%D0%B0%D0%B3%D0%B0" title="Програмчлагдах логик удирдлага – Mongolian" lang="mn" hreflang="mn" data-title="Програмчлагдах логик удирдлага" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wikipedia.org/wiki/%E1%80%95%E1%80%AE%E1%80%A1%E1%80%9A%E1%80%BA%E1%80%9C%E1%80%BA%E1%80%85%E1%80%AE" title="ပီအယ်လ်စီ – Burmese" lang="my" hreflang="my" data-title="ပီအယ်လ်စီ" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="Burmese" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Programmable_logic_controller" title="Programmable logic controller – Dutch" lang="nl" hreflang="nl" data-title="Programmable logic controller" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%96%E3%83%AB%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9" title="プログラマブルロジックコントローラ – Japanese" lang="ja" hreflang="ja" data-title="プログラマブルロジックコントローラ" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Programmerbar_logisk_styring" title="Programmerbar logisk styring – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Programmerbar logisk styring" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/PLS" title="PLS – Norwegian Nynorsk" lang="nn" hreflang="nn" data-title="PLS" data-language-autonym="Norsk nynorsk" data-language-local-name="Norwegian Nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Programowalny_sterownik_logiczny" title="Programowalny sterownik logiczny – Polish" lang="pl" hreflang="pl" data-title="Programowalny sterownik logiczny" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Controlador_l%C3%B3gico_program%C3%A1vel" title="Controlador lógico programável – Portuguese" lang="pt" hreflang="pt" data-title="Controlador lógico programável" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/PLC" title="PLC – Romanian" lang="ro" hreflang="ro" data-title="PLC" data-language-autonym="Română" data-language-local-name="Romanian" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80" title="Программируемый логический контроллер – Russian" lang="ru" hreflang="ru" data-title="Программируемый логический контроллер" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/PLC" title="PLC – Albanian" lang="sq" hreflang="sq" data-title="PLC" data-language-autonym="Shqip" data-language-local-name="Albanian" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Programmable_logic_controller" title="Programmable logic controller – Simple English" lang="en-simple" hreflang="en-simple" data-title="Programmable logic controller" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0%D0%B1%D0%B8%D0%BB%D0%BD%D0%B8_%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%BA%D0%B8_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%B5%D1%80" title="Програмабилни логички контролер – Serbian" lang="sr" hreflang="sr" data-title="Програмабилни логички контролер" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Ohjelmoitava_logiikka" title="Ohjelmoitava logiikka – Finnish" lang="fi" hreflang="fi" data-title="Ohjelmoitava logiikka" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Programmerbart_logiskt_styrsystem" title="Programmerbart logiskt styrsystem – Swedish" lang="sv" hreflang="sv" data-title="Programmerbart logiskt styrsystem" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%A8%E0%AE%BF%E0%AE%B0%E0%AE%B2%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%AA%E0%AF%81_%E0%AE%A4%E0%AE%B0%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%95%E0%AF%8D_%E0%AE%95%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AE%BF" title="நிரலேற்பு தருக்கக் கட்டுப்படுத்தி – Tamil" lang="ta" hreflang="ta" data-title="நிரலேற்பு தருக்கக் கட்டுப்படுத்தி" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/PLC" title="PLC – Turkish" lang="tr" hreflang="tr" data-title="PLC" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BB%D0%BE%D0%B3%D1%96%D1%87%D0%BD%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%B5%D1%80" title="Програмований логічний контролер – Ukrainian" lang="uk" hreflang="uk" data-title="Програмований логічний контролер" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/Programmable_logic_controller" title="Programmable logic controller – Vietnamese" lang="vi" hreflang="vi" data-title="Programmable logic controller" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E5%8F%AF%E7%A8%8B%E5%BC%8F%E5%8C%96%E9%82%8F%E8%BC%AF%E6%8E%A7%E5%88%B6%E5%99%A8" title="可程式化邏輯控制器 – Cantonese" lang="yue" hreflang="yue" data-title="可程式化邏輯控制器" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E5%8F%AF%E7%BC%96%E7%A8%8B%E9%80%BB%E8%BE%91%E6%8E%A7%E5%88%B6%E5%99%A8" title="可编程逻辑控制器 – Chinese" lang="zh" hreflang="zh" data-title="可编程逻辑控制器" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q188674#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Programmable_logic_controller" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Programmable_logic_controller" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Programmable_logic_controller"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Programmable_logic_controller&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Programmable_logic_controller"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Programmable_logic_controller&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Programmable_logic_controller" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Programmable_logic_controller" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Programmable_logic_controller&amp;oldid=1259858735" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Programmable_logic_controller&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=Programmable_logic_controller&amp;id=1259858735&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FProgrammable_logic_controller"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FProgrammable_logic_controller"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Programmable_logic_controller&amp;action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Programmable_logic_controller&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Programmable_logic_controller" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-wikibooks mw-list-item"><a href="https://en.wikibooks.org/wiki/Programmable_Logic" hreflang="en"><span>Wikibooks</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q188674" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Programmable digital computer used to control machinery</div> <p class="mw-empty-elt"> </p> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg/220px-Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg" decoding="async" width="220" height="146" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg/330px-Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg/440px-Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg 2x" data-file-width="4912" data-file-height="3264" /></a><figcaption>PLCs for a monitoring system in the pharmaceutical industry</figcaption></figure> <style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1246091330">.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}</style><table class="sidebar nomobile nowraplinks"><tbody><tr><td class="sidebar-pretitle">Part of <a href="/wiki/Category:Secondary_sector_of_the_economy" title="Category:Secondary sector of the economy">a series</a> of articles on</td></tr><tr><th class="sidebar-title-with-pretitle"><a href="/wiki/Machine_industry" title="Machine industry">Machine industry</a></th></tr><tr><td class="sidebar-image"><span typeof="mw:File"><a href="/wiki/File:Factory.svg" class="mw-file-description" title="Mill"><img alt="Mill" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Factory.svg/100px-Factory.svg.png" decoding="async" width="100" height="87" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Factory.svg/150px-Factory.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Factory.svg/200px-Factory.svg.png 2x" data-file-width="502" data-file-height="438" /></a></span></td></tr><tr><th class="sidebar-heading"> Manufacturing methods</th></tr><tr><td class="sidebar-content hlist"> <ul><li><a href="/wiki/Batch_production" title="Batch production">Batch production</a></li> <li><a href="/wiki/Job_production" title="Job production">Job production</a></li> <li><a href="/wiki/Mass_production" title="Mass production">Flow production</a></li> <li><a href="/wiki/Lean_manufacturing" title="Lean manufacturing">Lean manufacturing</a></li> <li><a href="/wiki/Agile_manufacturing" title="Agile manufacturing">Agile manufacturing</a></li></ul></td> </tr><tr><th class="sidebar-heading"> Industrial technologies</th></tr><tr><td class="sidebar-content hlist"> <ul><li><a href="/wiki/Product_lifecycle" title="Product lifecycle">PLM</a></li> <li><a href="/wiki/Reliability-centered_maintenance" title="Reliability-centered maintenance">RCM</a></li> <li><a href="/wiki/Total_productive_maintenance" title="Total productive maintenance">TPM</a></li> <li><a href="/wiki/Value-driven_maintenance" title="Value-driven maintenance">VDM</a></li> <li><a href="/wiki/Quick_response_manufacturing" title="Quick response manufacturing">QRM</a></li> <li><a href="/wiki/Theory_of_constraints" title="Theory of constraints">TOC</a></li> <li><a href="/wiki/Six_Sigma" title="Six Sigma">Six Sigma</a></li> <li><a href="/wiki/Total_quality_management" title="Total quality management">TQM</a></li> <li><a href="/wiki/Zero_Defects" title="Zero Defects">ZD</a></li></ul></td> </tr><tr><th class="sidebar-heading"> Information and communication</th></tr><tr><td class="sidebar-content hlist"> <ul><li><a href="/wiki/ISA-88" title="ISA-88">ISA-88</a></li> <li><a href="/wiki/ANSI/ISA-95" title="ANSI/ISA-95">ISA-95</a></li> <li><a href="/wiki/Enterprise_resource_planning" title="Enterprise resource planning">ERP</a></li> <li><a href="/wiki/IEC_62264" title="IEC 62264">IEC 62264</a></li> <li>B2MML</li></ul></td> </tr><tr><th class="sidebar-heading"> Process control</th></tr><tr><td class="sidebar-content hlist"> <ul><li><a class="mw-selflink selflink">PLC</a></li> <li><a href="/wiki/Distributed_control_system" title="Distributed control system">DCS</a></li> <li><a href="/wiki/SCADA" title="SCADA">SCADA</a></li></ul></td> </tr><tr><td class="sidebar-navbar"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Machine_industry" title="Template:Machine industry"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Machine_industry" title="Template talk:Machine industry"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Machine_industry" title="Special:EditPage/Template:Machine industry"><abbr title="Edit this template">e</abbr></a></li></ul></div></td></tr></tbody></table> <p>A <b>programmable logic controller</b> (<b>PLC</b>) or <b>programmable controller</b> is an industrial <a href="/wiki/Computer" title="Computer">computer</a> that has been <a href="/wiki/Ruggedized" class="mw-redirect" title="Ruggedized">ruggedized</a> and adapted for the control of manufacturing processes, such as <a href="/wiki/Assembly_line" title="Assembly line">assembly lines</a>, machines, <a href="/wiki/Robotic" class="mw-redirect" title="Robotic">robotic</a> devices, or any activity that requires high reliability, ease of programming, and process fault diagnosis. </p><p>PLCs can range from small modular devices with tens of <a href="/wiki/Input/output" title="Input/output">inputs and outputs (I/O)</a>, 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 <a href="/wiki/SCADA" title="SCADA">SCADA</a> systems.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup> They can be designed for many arrangements of digital and analog I/O, extended temperature ranges, immunity to <a href="/wiki/Electrical_noise" class="mw-redirect" title="Electrical noise">electrical noise</a>, and resistance to vibration and impact. </p><p>PLCs were first developed in the automobile manufacturing industry to provide flexible, rugged and easily programmable controllers to replace hard-wired <a href="/wiki/Relay_logic" title="Relay logic">relay logic</a> systems. <a href="/wiki/Dick_Morley" title="Dick Morley">Dick Morley</a>, who invented the first PLC, the Modicon 084, for <a href="/wiki/General_Motors" title="General Motors">General Motors</a> in 1968, is considered the father of PLC. </p><p>A PLC is an example of a <a href="/wiki/Hard_real-time" class="mw-redirect" title="Hard real-time">hard real-time</a> 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 <a href="/wiki/Non-volatile_memory" title="Non-volatile memory">non-volatile memory</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Invention_and_early_development">Invention and early development</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=1" title="Edit section: Invention and early development"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The PLC originated in the late 1960s in the automotive industry in the US and was designed to replace relay logic systems.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup> Before, control logic for manufacturing was mainly composed of <a href="/wiki/Relay" title="Relay">relays</a>, <a href="/wiki/Cam_timer" title="Cam timer">cam timers</a>, <a href="/wiki/Drum_sequencer_(controller)" class="mw-redirect" title="Drum sequencer (controller)">drum sequencers</a>, and dedicated <a href="/wiki/Closed-loop_controller" title="Closed-loop controller">closed-loop controllers</a>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> </p><p>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 the documentation. Troubleshooting was a tedious process.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup> When general-purpose computers became available, they were soon applied to control logic in industrial processes. These early computers were unreliable<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">&#91;</span>5<span class="cite-bracket">&#93;</span></a></sup> and required specialist programmers and strict control of working conditions, such as temperature, cleanliness, and power quality.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup> </p><p>The PLC provided several advantages over earlier automation systems. It 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 a simple programming language focused on logic and switching operations, it was more user-friendly than computers using <a href="/wiki/General-purpose_programming_language" title="General-purpose programming language">general-purpose programming languages</a>. Early PLCs were programmed in <a href="/wiki/Ladder_logic" title="Ladder logic">ladder logic</a>, which strongly resembled a schematic diagram of <a href="/wiki/Relay_logic" title="Relay logic">relay logic</a>. It also permitted its operation to be monitored.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">&#91;</span>7<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">&#91;</span>8<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Modicon">Modicon</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=2" title="Edit section: Modicon"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In 1968, GM Hydramatic, the <a href="/wiki/Automatic_transmission" title="Automatic transmission">automatic transmission</a> division of <a href="/wiki/General_Motors" title="General Motors">General Motors</a>, issued a <a href="/wiki/Request_for_proposal" title="Request for proposal">request for proposals</a> 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 <a href="/wiki/Bedford,_Massachusetts" title="Bedford, Massachusetts">Bedford, Massachusetts</a>. The result, built in 1969, was the first PLC and designated the <i>084</i>, because it was Bedford Associates' eighty-fourth project.<sup id="cite_ref-:9_9-0" class="reference"><a href="#cite_note-:9-9"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-:0_10-0" class="reference"><a href="#cite_note-:0-10"><span class="cite-bracket">&#91;</span>10<span class="cite-bracket">&#93;</span></a></sup> </p><p>Bedford Associates started a company dedicated to developing, manufacturing, selling, and servicing this new product, which they named <b><style data-mw-deduplicate="TemplateStyles:r1238216509">.mw-parser-output .vanchor>:target~.vanchor-text{background-color:#b1d2ff}@media screen{html.skin-theme-clientpref-night .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}</style><span class="vanchor"><span id="Modicon"></span><span class="vanchor-text">Modicon</span></span></b> (standing for modular digital controller). One of the people who worked on that project was <a href="/wiki/Dick_Morley" title="Dick Morley">Dick Morley</a>, who is considered to be the father of the PLC.<sup id="cite_ref-:1_11-0" class="reference"><a href="#cite_note-:1-11"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup> The Modicon brand was sold in 1977 to <a href="/wiki/Gould_Electronics" title="Gould Electronics">Gould Electronics</a> and later to <a href="/wiki/Schneider_Electric" title="Schneider Electric">Schneider Electric</a>, its current owner.<sup id="cite_ref-:0_10-1" class="reference"><a href="#cite_note-:0-10"><span class="cite-bracket">&#91;</span>10<span class="cite-bracket">&#93;</span></a></sup> About this same time, Modicon created <a href="/wiki/Modbus" title="Modbus">Modbus</a>, a data communications protocol used with its PLCs. Modbus has since become a standard open protocol commonly used to connect many industrial electrical devices.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">&#91;</span>12<span class="cite-bracket">&#93;</span></a></sup> </p><p>One of the first 084 models built is now on display at Schneider Electric's facility in <a href="/wiki/North_Andover,_Massachusetts" title="North Andover, Massachusetts">North Andover, Massachusetts</a>. It was presented to Modicon by <a href="/wiki/General_Motors" title="General Motors">GM</a>, 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.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">&#91;</span>13<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Allen-Bradley">Allen-Bradley</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=3" title="Edit section: Allen-Bradley"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In a parallel development, Odo Josef Struger is sometimes known as the "father of the programmable logic controller" as well.<sup id="cite_ref-:1_11-1" class="reference"><a href="#cite_note-:1-11"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup> He was involved in the invention of the <a href="/wiki/Allen-Bradley" title="Allen-Bradley">Allen-Bradley</a> programmable logic controller<sup id="cite_ref-:2_14-0" class="reference"><a href="#cite_note-:2-14"><span class="cite-bracket">&#91;</span>14<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-nytimes2_15-0" class="reference"><a href="#cite_note-nytimes2-15"><span class="cite-bracket">&#91;</span>15<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-anzovin2_16-0" class="reference"><a href="#cite_note-anzovin2-16"><span class="cite-bracket">&#91;</span>16<span class="cite-bracket">&#93;</span></a></sup> and is credited with coining the PLC acronym.<sup id="cite_ref-:1_11-2" class="reference"><a href="#cite_note-:1-11"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-:2_14-1" class="reference"><a href="#cite_note-:2-14"><span class="cite-bracket">&#91;</span>14<span class="cite-bracket">&#93;</span></a></sup> Allen-Bradley (now a brand owned by <a href="/wiki/Rockwell_Automation" title="Rockwell Automation">Rockwell Automation</a>) became a major PLC manufacturer in the United States during his tenure.<sup id="cite_ref-short2_17-0" class="reference"><a href="#cite_note-short2-17"><span class="cite-bracket">&#91;</span>17<span class="cite-bracket">&#93;</span></a></sup> Struger played a leadership role in developing <a href="/wiki/IEC_61131-3" title="IEC 61131-3">IEC 61131-3</a> PLC programming language standards.<sup id="cite_ref-:1_11-3" class="reference"><a href="#cite_note-:1-11"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Early_methods_of_programming">Early methods of programming</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=4" title="Edit section: Early methods of programming"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Many early PLC programming applications were not capable of graphical representation of the logic, and so it was instead represented as a series of logic expressions in some kind of Boolean format, similar to <a href="/wiki/Boolean_algebra" title="Boolean algebra">Boolean algebra</a>. 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,<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">&#91;</span>18<span class="cite-bracket">&#93;</span></a></sup> <a href="/wiki/Function_block_diagram" title="Function block diagram">function block diagrams</a>, and <a href="/wiki/Structured_text" title="Structured text">structured text</a> exist. Ladder logic remains popular because 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.<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">&#91;</span>19<span class="cite-bracket">&#93;</span></a></sup> </p><p>Up to the mid-1990s, PLCs were programmed using proprietary programming panels or special-purpose programming <a href="/wiki/Computer_terminal" title="Computer terminal">terminals</a>, which often had dedicated function keys representing the various logical elements of PLC programs.<sup id="cite_ref-:9_9-1" class="reference"><a href="#cite_note-:9-9"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup> Some proprietary programming terminals displayed the elements of PLC programs as graphic symbols, but plain <a href="/wiki/ASCII_art" title="ASCII art">ASCII</a> character representations of contacts, coils, and wires were common. Programs were stored on <a href="/wiki/Cassette_tape_cartridge" class="mw-redirect" title="Cassette tape cartridge">cassette tape cartridges</a>. Facilities for printing and documentation were minimal due to a lack of memory capacity. The oldest PLCs used <a href="/wiki/Magnetic-core_memory" title="Magnetic-core memory">magnetic-core memory</a>.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">&#91;</span>20<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Architecture">Architecture</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=5" title="Edit section: Architecture"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A PLC is an industrial microprocessor-based controller with programmable memory used to store program instructions and various functions.<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">&#91;</span>21<span class="cite-bracket">&#93;</span></a></sup> It consists of: </p> <ul><li>A processor unit (CPU) which interprets inputs, executes the control program stored in memory and sends output signals,</li> <li>A power supply unit which converts AC voltage to DC,</li> <li>A memory unit storing data from inputs and program to be executed by the processor,</li> <li>An input and output interface, where the controller receives and sends data from and to external devices,</li> <li>A communications interface to receive and transmit data on communication networks from and to remote PLCs.<sup id="cite_ref-:4_22-0" class="reference"><a href="#cite_note-:4-22"><span class="cite-bracket">&#91;</span>22<span class="cite-bracket">&#93;</span></a></sup></li></ul> <p>PLCs require a programming device which is used to develop and later download the created program into the memory of the controller.<sup id="cite_ref-:4_22-1" class="reference"><a href="#cite_note-:4-22"><span class="cite-bracket">&#91;</span>22<span class="cite-bracket">&#93;</span></a></sup> </p><p>Modern PLCs generally contain a <a href="/wiki/Real-time_operating_system" title="Real-time operating system">real-time operating system</a>, such as <a href="/wiki/OS-9" title="OS-9">OS-9</a> or <a href="/wiki/VxWorks" title="VxWorks">VxWorks</a>.<sup id="cite_ref-:5_23-0" class="reference"><a href="#cite_note-:5-23"><span class="cite-bracket">&#91;</span>23<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Mechanical_design">Mechanical design</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=6" title="Edit section: Mechanical design"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Siemens_sps_logo_8_12-24_RCE-03.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Siemens_sps_logo_8_12-24_RCE-03.jpg/220px-Siemens_sps_logo_8_12-24_RCE-03.jpg" decoding="async" width="220" height="144" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Siemens_sps_logo_8_12-24_RCE-03.jpg/330px-Siemens_sps_logo_8_12-24_RCE-03.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Siemens_sps_logo_8_12-24_RCE-03.jpg/440px-Siemens_sps_logo_8_12-24_RCE-03.jpg 2x" data-file-width="3798" data-file-height="2482" /></a><figcaption>Compact PLC with 8 inputs and 4 outputs</figcaption></figure> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:PLC_AB_InstaladoV1.JPG" class="mw-file-description"><img alt="Modular PLC with EtherNet/IP module, digital and analog I/O, with some slots being empty." src="//upload.wikimedia.org/wikipedia/commons/thumb/b/b3/PLC_AB_InstaladoV1.JPG/220px-PLC_AB_InstaladoV1.JPG" decoding="async" width="220" height="116" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/b3/PLC_AB_InstaladoV1.JPG/330px-PLC_AB_InstaladoV1.JPG 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b3/PLC_AB_InstaladoV1.JPG/440px-PLC_AB_InstaladoV1.JPG 2x" data-file-width="1285" data-file-height="679" /></a><figcaption>Modular PLC with <a href="/wiki/EtherNet/IP" title="EtherNet/IP">EtherNet/IP</a> module, discrete and analog I/O, with some slots being empty</figcaption></figure> <p>There are two types of mechanical design for PLC systems. A <i>single box</i> (also called a <i>brick</i>) 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&#160;&#8211;&#32; a <i>modular</i> PLC&#160;&#8211;&#32; has a chassis (also called a <i>rack</i>) that provides space for modules with different functions, such as power supply, processor, selection of I/O modules and communication interfaces&#160;&#8211;&#32; which all can be customized for the particular application.<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">&#91;</span>24<span class="cite-bracket">&#93;</span></a></sup> Several racks can be administered by a single processor and may have thousands of inputs and outputs. Either 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.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (April 2020)">citation needed</span></a></i>&#93;</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Discrete_and_analog_signals">Discrete and analog signals</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=7" title="Edit section: Discrete and analog signals"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Digital_signal" title="Digital signal">Discrete (digital) signals</a> can only take <i>on</i> or <i>off</i> value (1 or 0, <i>true</i> or <i>false</i>). Examples of devices providing a discrete signal include <a href="/wiki/Limit_switch" title="Limit switch">limit switches</a> and <a href="/wiki/Photoelectric_sensor" title="Photoelectric sensor">photoelectric sensors</a>.<sup id="cite_ref-:8_25-0" class="reference"><a href="#cite_note-:8-25"><span class="cite-bracket">&#91;</span>25<span class="cite-bracket">&#93;</span></a></sup> </p><p><a href="/wiki/Analog_signal" title="Analog signal">Analog signals</a> can use voltage or current that 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.<sup id="cite_ref-:8_25-1" class="reference"><a href="#cite_note-:8-25"><span class="cite-bracket">&#91;</span>25<span class="cite-bracket">&#93;</span></a></sup> For example, an analog 0 to 10&#160;V or 4-20 mA <a href="/wiki/Current_loop" title="Current loop">current loop</a> input would be <a href="/wiki/Analog-to-digital_converter" title="Analog-to-digital converter">converted</a> into an integer value of 0 to 32,767. The PLC will take this value and translate it into the desired units of the process so the operator or program can read it. </p> <div class="mw-heading mw-heading3"><h3 id="Redundancy">Redundancy</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=8" title="Edit section: Redundancy"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>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, <a href="/wiki/Redundancy_(engineering)" title="Redundancy (engineering)">redundant</a> CPU or I/O modules with the same functionality can be added to hardware configuration for preventing total or partial <a href="/wiki/Plant_process_and_emergency_shutdown_systems" class="mw-redirect" title="Plant process and emergency shutdown systems">process shutdown</a> 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. </p> <div class="mw-heading mw-heading2"><h2 id="Programming">Programming</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=9" title="Edit section: Programming"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Ladder_temporizado.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/5/56/Ladder_temporizado.svg/200px-Ladder_temporizado.svg.png" decoding="async" width="200" height="213" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/56/Ladder_temporizado.svg/300px-Ladder_temporizado.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/56/Ladder_temporizado.svg/400px-Ladder_temporizado.svg.png 2x" data-file-width="233" data-file-height="248" /></a><figcaption>Example of a ladder diagram logic</figcaption></figure> <p>Programmable logic controllers are intended to be used by engineers without a programming background. For this reason, a graphical programming language called <a href="/wiki/Ladder_logic" title="Ladder logic">Ladder Diagram</a> (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 <a href="/wiki/IEC_61131-3" title="IEC 61131-3">IEC 61131-3</a> control systems programming standard. As of 2015,<sup class="plainlinks noexcerpt noprint asof-tag update" style="display:none;"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Programmable_logic_controller&amp;action=edit">&#91;update&#93;</a></sup> it is still widely used, thanks to its simplicity.<sup id="cite_ref-:6_26-0" class="reference"><a href="#cite_note-:6-26"><span class="cite-bracket">&#91;</span>26<span class="cite-bracket">&#93;</span></a></sup> </p><p>As of 2015,<sup class="plainlinks noexcerpt noprint asof-tag update" style="display:none;"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Programmable_logic_controller&amp;action=edit">&#91;update&#93;</a></sup> the majority of PLC systems adhere to the <a href="/wiki/IEC_61131-3" title="IEC 61131-3">IEC 61131-3</a> standard that defines 2 textual programming languages: <a href="/wiki/Structured_text" title="Structured text">Structured Text</a> (ST; similar to <a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>) and <a href="/wiki/Instruction_list" title="Instruction list">Instruction List</a> (IL); as well as 3 graphical languages: <a href="/wiki/Ladder_logic" title="Ladder logic">ladder logic</a>, <a href="/wiki/Function_block_diagram" title="Function block diagram">function block diagram</a> and <a href="/wiki/Sequential_function_chart" title="Sequential function chart">sequential function chart</a>.<sup id="cite_ref-:6_26-1" class="reference"><a href="#cite_note-:6-26"><span class="cite-bracket">&#91;</span>26<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">&#91;</span>27<span class="cite-bracket">&#93;</span></a></sup> <a href="/wiki/Instruction_list" title="Instruction list">Instruction List</a> (IL) was deprecated in the third edition of the standard.<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">&#91;</span>28<span class="cite-bracket">&#93;</span></a></sup> </p><p>Modern PLCs can be programmed in a variety of ways, from the relay-derived ladder logic to programming languages such as specially adapted dialects of <a href="/wiki/BASIC" title="BASIC">BASIC</a> and <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a>.<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">&#91;</span>29<span class="cite-bracket">&#93;</span></a></sup> </p><p>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 a single manufacturer, different models may not be directly compatible.<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">&#91;</span>30<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Programming_device">Programming device</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=10" title="Edit section: Programming device"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>PLC programs are typically written in a programming device, which can take the form of a desktop console, special software on a <a href="/wiki/Personal_computer" title="Personal computer">personal computer</a>, or a handheld programming device.<sup id="cite_ref-:7_31-0" class="reference"><a href="#cite_note-:7-31"><span class="cite-bracket">&#91;</span>31<span class="cite-bracket">&#93;</span></a></sup> Then, the program is downloaded to the PLC directly or over a network. It is stored either in non-volatile <a href="/wiki/Flash_memory" title="Flash memory">flash memory</a> or battery-backed-up <a href="/wiki/RAM" class="mw-redirect" title="RAM">RAM</a>. In some programmable controllers, 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 <a href="/wiki/EPROM" title="EPROM">EPROM</a>. </p><p>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.<sup id="cite_ref-:7_31-1" class="reference"><a href="#cite_note-:7-31"><span class="cite-bracket">&#91;</span>31<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Simulation">Simulation</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=11" title="Edit section: Simulation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>PLC simulation is a feature often found in PLC programming software. It allows for testing and <a href="/wiki/Debugging" title="Debugging">debugging</a> early in a project's development. </p><p>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 the system is activated.<sup id="cite_ref-:7_31-2" class="reference"><a href="#cite_note-:7-31"><span class="cite-bracket">&#91;</span>31<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">&#91;</span>32<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Functionality">Functionality</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=12" title="Edit section: Functionality"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Siemens_Simatic_S7-416-3.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Siemens_Simatic_S7-416-3.jpg/170px-Siemens_Simatic_S7-416-3.jpg" decoding="async" width="170" height="263" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Siemens_Simatic_S7-416-3.jpg/255px-Siemens_Simatic_S7-416-3.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Siemens_Simatic_S7-416-3.jpg/340px-Siemens_Simatic_S7-416-3.jpg 2x" data-file-width="1670" data-file-height="2580" /></a><figcaption>PLC system in a rack, left-to-right: power supply unit (PSU), CPU, interface module (IM) and communication processor (CP)</figcaption></figure> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:PLC_Control_Panel.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/42/PLC_Control_Panel.png/170px-PLC_Control_Panel.png" decoding="async" width="170" height="266" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/42/PLC_Control_Panel.png/255px-PLC_Control_Panel.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/42/PLC_Control_Panel.png/340px-PLC_Control_Panel.png 2x" data-file-width="428" data-file-height="670" /></a><figcaption>Control panel with PLC (gray elements in the center). The unit consists of separate elements, from left to right: <a href="/wiki/Power_supply" title="Power supply">power supply</a>, controller, <a href="/wiki/Relay" title="Relay">relay</a> units for input and output.</figcaption></figure> <p>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 <a href="/wiki/Input/output" title="Input/output">input/output</a> (I/O) to connect the PLC to <a href="/wiki/Sensor" title="Sensor">sensors</a> and <a href="/wiki/Actuator" title="Actuator">actuators</a>. PLC input can include simple digital elements such as <a href="/wiki/Limit_switch" title="Limit switch">limit switches</a>, analog variables from process sensors (such as temperature and pressure), and more complex data such as that from positioning or <a href="/wiki/Machine_vision" title="Machine vision">machine vision</a> systems.<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">&#91;</span>33<span class="cite-bracket">&#93;</span></a></sup> PLC output can include elements such as indicator lamps, sirens, <a href="/wiki/Electric_motor" title="Electric motor">electric motors</a>, <a href="/wiki/Pneumatic" class="mw-redirect" title="Pneumatic">pneumatic</a> or <a href="/wiki/Hydraulic" class="mw-redirect" title="Hydraulic">hydraulic</a> cylinders, magnetic <a href="/wiki/Relay" title="Relay">relays</a>, <a href="/wiki/Solenoid" title="Solenoid">solenoids</a>, or analog outputs. The input/output arrangements may be built into a simple PLC, or the PLC may have external <a href="/wiki/I/O_module" class="mw-redirect" title="I/O module">I/O modules</a> attached to a fieldbus or computer network that plugs into the PLC. </p><p>The functionality of the PLC has evolved over the years to include sequential relay control, motion control, <a href="/wiki/Process_control" class="mw-redirect" title="Process control">process control</a>, <a href="/wiki/Distributed_control_system" title="Distributed control system">distributed control systems</a>, and <a href="/wiki/Computer_network" title="Computer network">networking</a>. The data handling, storage, processing power, and communication capabilities of some modern PLCs are approximately equivalent to <a href="/wiki/Desktop_computer" title="Desktop computer">desktop computers</a>. PLC-like programming combined with remote I/O hardware, allows 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 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.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (November 2014)">citation needed</span></a></i>&#93;</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Basic_functions">Basic functions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=13" title="Edit section: Basic functions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The most basic function of a programmable logic controller is to emulate the functions of electromechanical relays. Discrete inputs are given 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, 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 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. </p><p>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 the configuration of surrounding contacts. The elimination of these "sneak paths" is either a bug or a feature, depending on the programming style. </p><p>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. </p> <div class="mw-heading mw-heading3"><h3 id="Communication">Communication</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=14" title="Edit section: Communication"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>PLCs use built-in ports, such as <a href="/wiki/USB" title="USB">USB</a>, <a href="/wiki/Ethernet" title="Ethernet">Ethernet</a>, <a href="/wiki/RS-232" title="RS-232">RS-232</a>, <a href="/wiki/RS-485" title="RS-485">RS-485</a>, or <a href="/wiki/RS-422" title="RS-422">RS-422</a> to communicate with external devices (sensors, actuators) and systems (<a href="/wiki/Programming_software" class="mw-redirect" title="Programming software">programming software</a>, <a href="/wiki/SCADA" title="SCADA">SCADA</a>, <a href="/wiki/User_interface" title="User interface">user interface</a>). Communication is carried over various industrial network protocols, like <a href="/wiki/Modbus" title="Modbus">Modbus</a>, or <a href="/wiki/EtherNet/IP" title="EtherNet/IP">EtherNet/IP</a>. Many of these protocols are vendor specific. </p><p>PLCs used in larger I/O systems may have <a href="/wiki/Peer-to-peer" title="Peer-to-peer">peer-to-peer</a> (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 <a href="/wiki/Personal_computer" title="Personal computer">PC</a>-type workstations. </p><p>Formerly, some manufacturers offered dedicated communication modules as an add-on function where the processor had no network connection built-in. </p> <div class="mw-heading mw-heading3"><h3 id="User_interface">User interface</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=15" title="Edit section: User interface"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/User_interface" title="User interface">User interface</a> and <a href="/wiki/List_of_human-computer_interaction_topics" class="mw-redirect" title="List of human-computer interaction topics">List of human-computer interaction topics</a></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Control-panel-plc.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/d/db/Control-panel-plc.jpg/170px-Control-panel-plc.jpg" decoding="async" width="170" height="227" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/db/Control-panel-plc.jpg/255px-Control-panel-plc.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/db/Control-panel-plc.jpg/340px-Control-panel-plc.jpg 2x" data-file-width="720" data-file-height="960" /></a><figcaption>Control panel with a PLC user interface for <a href="/wiki/Thermal_oxidiser" class="mw-redirect" title="Thermal oxidiser">thermal oxidizer</a> regulation</figcaption></figure> <p>PLCs may need to interact with people for the purpose of configuration, alarm reporting, or everyday control. A <a href="/wiki/SCADA#Human-machine_interface" title="SCADA">human-machine interface</a> (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 a computer, with the PLC connected via a communication interface. </p> <div class="mw-heading mw-heading2"><h2 id="Process_of_a_scan_cycle">Process of a scan cycle</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=16" title="Edit section: Process of a scan cycle"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A PLC works in a program scan cycle, where it executes its program repeatedly. The simplest scan cycle consists of 3 steps: </p> <ol><li>Read inputs.</li> <li>Execute the program.</li> <li>Write outputs.<sup id="cite_ref-:3_34-0" class="reference"><a href="#cite_note-:3-34"><span class="cite-bracket">&#91;</span>34<span class="cite-bracket">&#93;</span></a></sup></li></ol> <p>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.<sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">&#91;</span>35<span class="cite-bracket">&#93;</span></a></sup> If the system contains remote I/O—for example, an external rack with I/O modules—then that introduces additional uncertainty in the response time of the PLC system.<sup id="cite_ref-:3_34-1" class="reference"><a href="#cite_note-:3-34"><span class="cite-bracket">&#91;</span>34<span class="cite-bracket">&#93;</span></a></sup> </p><p>As PLCs became more advanced, methods were developed to change the sequence of ladder execution, and subroutines were implemented.<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">&#91;</span>36<span class="cite-bracket">&#93;</span></a></sup> </p><p>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 <a href="/wiki/Shaft_encoder" class="mw-redirect" title="Shaft encoder">shaft encoders</a>, are used where the scan time would be too long to reliably count pulses or detect 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.<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">&#91;</span>37<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Security">Security</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=17" title="Edit section: Security"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>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.<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">&#91;</span>38<span class="cite-bracket">&#93;</span></a></sup> </p><p>Prior to the discovery of the <a href="/wiki/Stuxnet" title="Stuxnet">Stuxnet</a> <a href="/wiki/Computer_worm" title="Computer worm">computer worm</a> 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 <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a>. PLCs can also be attacked by gaining control of a computer they communicate with.<sup id="cite_ref-:5_23-1" class="reference"><a href="#cite_note-:5-23"><span class="cite-bracket">&#91;</span>23<span class="cite-bracket">&#93;</span></a></sup> Since 2011,<sup class="plainlinks noexcerpt noprint asof-tag update" style="display:none;"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Programmable_logic_controller&amp;action=edit">&#91;update&#93;</a></sup> these concerns have grown – networking is becoming more commonplace in the PLC environment, connecting the previously separated plant floor networks and office networks.<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">&#91;</span>39<span class="cite-bracket">&#93;</span></a></sup> </p><p>In February 2021, <a href="/wiki/Rockwell_Automation" title="Rockwell Automation">Rockwell Automation</a> publicly disclosed a critical vulnerability affecting its Logix controllers family. The <a href="/wiki/Key_(cryptography)" title="Key (cryptography)">secret cryptographic key</a> used to <a href="/wiki/Symmetric-key_algorithm" title="Symmetric-key algorithm">verify communication</a> 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 a connected controller. The vulnerability was given a severity score of 10 out of 10 on the <a href="/wiki/Common_Vulnerability_Scoring_System" title="Common Vulnerability Scoring System">CVSS vulnerability scale</a>. At the time of writing, the mitigation of the vulnerability was to <a href="/wiki/Defense_in_depth_(computing)" title="Defense in depth (computing)">limit network access to affected devices</a>.<sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">&#91;</span>40<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">&#91;</span>41<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Safety_PLCs">Safety PLCs</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=18" title="Edit section: Safety PLCs"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Safety PLCs can be either a standalone device or a <a href="/wiki/Safety_integrity_level" title="Safety integrity level">safety-rated</a> hardware and functionality added to existing controller architectures (<a href="/wiki/Allen-Bradley" title="Allen-Bradley">Allen-Bradley</a> GuardLogix, <a href="/wiki/Siemens" title="Siemens">Siemens</a> 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 <a href="/wiki/Safety_relay" title="Safety relay">safety relays</a> and areas of the memory dedicated to the safety instructions. The standard of safety level is the <a href="/wiki/Safety_integrity_level" title="Safety integrity level">SIL</a>. </p><p>A safety PLC might be used to control access to a <a href="/wiki/Industrial_robot" title="Industrial robot">robot cell</a> with <a href="/wiki/Trapped-key_interlocking" title="Trapped-key interlocking">trapped-key access</a>, 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. </p><p>The flexibility that such systems offer has resulted in rapid growth of demand for these controllers.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (July 2022)">citation needed</span></a></i>&#93;</sup> </p> <div class="mw-heading mw-heading2"><h2 id="PLC_compared_with_other_control_systems">PLC compared with other control systems</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=19" title="Edit section: PLC compared with other control systems"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:BMA_Automation_Allen_Bradley_PLC_3.JPG" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/2/25/BMA_Automation_Allen_Bradley_PLC_3.JPG/220px-BMA_Automation_Allen_Bradley_PLC_3.JPG" decoding="async" width="220" height="147" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/2/25/BMA_Automation_Allen_Bradley_PLC_3.JPG/330px-BMA_Automation_Allen_Bradley_PLC_3.JPG 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/25/BMA_Automation_Allen_Bradley_PLC_3.JPG/440px-BMA_Automation_Allen_Bradley_PLC_3.JPG 2x" data-file-width="1620" data-file-height="1080" /></a><figcaption>PLC installed in a control panel</figcaption></figure> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Control-panel.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Control-panel.jpg/220px-Control-panel.jpg" decoding="async" width="220" height="51" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Control-panel.jpg/330px-Control-panel.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Control-panel.jpg/440px-Control-panel.jpg 2x" data-file-width="6144" data-file-height="1422" /></a><figcaption>Control center with a PLC for a <a href="/wiki/Regenerative_thermal_oxidiser" class="mw-redirect" title="Regenerative thermal oxidiser">RTO</a> </figcaption></figure> <p>PLCs are well adapted to a range of <a href="/wiki/Automation" title="Automation">automation</a> 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 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 a "generic" solution, and where the non-recurring engineering charges are spread over thousands or millions of units.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2020)">citation needed</span></a></i>&#93;</sup> </p><p>Programmable controllers are widely used in motion, positioning, or torque control. Some manufacturers produce motion control units to be integrated with PLC so that <a href="/wiki/G-code" title="G-code">G-code</a> (involving a <a href="/wiki/CNC" class="mw-redirect" title="CNC">CNC</a> machine) can be used to instruct machine movements.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (July 2009)">citation needed</span></a></i>&#93;</sup> </p> <div class="mw-heading mw-heading3"><h3 id="PLC_chip_/_embedded_controller"><span id="PLC_chip_.2F_embedded_controller"></span>PLC chip / embedded controller</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=20" title="Edit section: PLC chip / embedded controller"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>These are for small machines and systems with low or medium volume. They can execute PLC languages such as Ladder, Flow-Chart/Grafcet, etc. They are similar to traditional PLCs, but their small size allows developers to design them into custom printed circuit boards like a microcontroller, without computer programming knowledge, but with a language that is easy to use, modify and maintain. They sit between the classic PLC / micro-PLC and microcontrollers.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (September 2023)">citation needed</span></a></i>&#93;</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Microcontrollers">Microcontrollers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=21" title="Edit section: Microcontrollers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <a href="/wiki/Microcontroller" title="Microcontroller">microcontroller</a>-based design would be appropriate where hundreds or thousands of units will be produced and so the development cost (design of power supplies, input/output hardware, and necessary testing and certification) can be spread over many sales, and where the end-user would not need to alter the control. Automotive applications are an example; millions of units are built each year, and very few end-users alter the programming of these controllers. However, some specialty vehicles such as transit buses economically use PLCs instead of custom-designed controls, because the volumes are low and the development cost would be uneconomical.<sup id="cite_ref-McMillan_1999_42-0" class="reference"><a href="#cite_note-McMillan_1999-42"><span class="cite-bracket">&#91;</span>42<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Single-board_computers">Single-board computers</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=22" title="Edit section: Single-board computers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Very complex process control, such as those used in the chemical industry, may require algorithms and performance beyond the capability of even high-performance PLCs. Very high-speed or precision controls may also require customized solutions; for example, aircraft flight controls. <a href="/wiki/Single-board_computer" title="Single-board computer">Single-board computers</a> using semi-customized or fully proprietary hardware may be chosen for very demanding control applications where the high development and maintenance cost can be supported. "Soft PLCs" running on desktop-type computers can interface with industrial I/O hardware while executing programs within a version of commercial operating systems adapted for process control needs.<sup id="cite_ref-McMillan_1999_42-1" class="reference"><a href="#cite_note-McMillan_1999-42"><span class="cite-bracket">&#91;</span>42<span class="cite-bracket">&#93;</span></a></sup> </p><p>The rising popularity of <a href="/wiki/Single-board_computer" title="Single-board computer">single board computers</a> has also had an influence on the development of PLCs. Traditional PLCs are generally <a href="/wiki/Closed_platform" title="Closed platform">closed platforms</a>, but some newer PLCs (e.g. groov EPIC from <a href="/wiki/Opto_22" title="Opto 22">Opto 22</a>, ctrlX from <a href="/wiki/Bosch_Rexroth" title="Bosch Rexroth">Bosch Rexroth</a>, PFC200 from <a href="/wiki/WAGO_Kontakttechnik" class="mw-redirect" title="WAGO Kontakttechnik">Wago</a>, PLCnext from <a href="/wiki/Phoenix_Contact" title="Phoenix Contact">Phoenix Contact</a>, and Revolution Pi from Kunbus) provide the features of traditional PLCs on an <a href="/wiki/Open_platform" title="Open platform">open platform</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Programmable_logic_relays_(PLR)"><span id="Programmable_logic_relays_.28PLR.29"></span>Programmable logic relays (PLR)</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=23" title="Edit section: Programmable logic relays (PLR)"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Original_research plainlinks metadata ambox ambox-content ambox-Original_research" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/40px-Ambox_important.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/60px-Ambox_important.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/80px-Ambox_important.svg.png 2x" data-file-width="40" data-file-height="40" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>possibly contains <a href="/wiki/Wikipedia:No_original_research" title="Wikipedia:No original research">original research</a></b>.<span class="hide-when-compact"> Please <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Programmable_logic_controller&amp;action=edit">improve it</a> by <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">verifying</a> the claims made and adding <a href="/wiki/Wikipedia:Citing_sources#Inline_citations" title="Wikipedia:Citing sources">inline citations</a>. Statements consisting only of original research should be removed.</span> <span class="date-container"><i>(<span class="date">March 2020</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p>In more recent years,<sup class="noprint Inline-Template" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Manual_of_Style/Dates_and_numbers#Chronological_items" title="Wikipedia:Manual of Style/Dates and numbers"><span title="The time period mentioned near this tag is ambiguous. (February 2020)">when?</span></a></i>&#93;</sup> small products called programmable logic relays (PLRs) or smart relays, have become more common and accepted. These are similar to PLCs and are used in light industries where only a few points of I/O are needed, and low cost is desired. These small devices are typically made in a common physical size and shape by several manufacturers and branded by the makers of larger PLCs to fill their low-end product range. Most of these have 8 to 12 discrete inputs, 4 to 8 discrete outputs, and up to 2 analog inputs. Most such devices include a tiny <a href="/wiki/Postage_stamp" title="Postage stamp">postage stamp</a>-sized LCD screen for viewing simplified ladder logic (only a very small portion of the program being visible at a given time) and status of I/O points, and typically these screens are accompanied by a 4-way rocker push-button plus four more separate push-buttons, similar to the key buttons on a <a href="/wiki/VCR" class="mw-redirect" title="VCR">VCR</a> remote control, and used to navigate and edit the logic. Most have an <a href="/wiki/RS-232" title="RS-232">RS-232</a> or <a href="/wiki/RS-485" title="RS-485">RS-485</a> port for connecting to a PC so that programmers can use user-friendly software for programming instead of the small LCD and push-button set for this purpose. Unlike regular PLCs that are usually modular and greatly expandable, the PLRs are usually not modular or expandable, but their cost can be significantly lower than that a PLC, and they still offer robust design and deterministic execution of the logic. </p><p>A variant of PLCs, used in remote locations is the <a href="/wiki/Remote_terminal_unit" title="Remote terminal unit">remote terminal unit</a> or RTU. An RTU is typically a low power, ruggedized PLC whose key function is to manage the communications links between the site and the central control system (typically <a href="/wiki/SCADA" title="SCADA">SCADA</a>) or in some modern systems, "The Cloud". Unlike factory automation using wired communication protocols such as <a href="/wiki/Ethernet" title="Ethernet">Ethernet</a>, communications links to remote sites are often radio-based and are less reliable. To account for the reduced reliability, RTU will buffer messages or switch to alternate communications paths. When buffering messages, the RTU will timestamp each message so that a full history of site events can be reconstructed. RTUs, being PLCs, have a wide range of I/O and are fully programmable, typically with languages from the <a href="/wiki/IEC_61131-3" title="IEC 61131-3">IEC 61131-3</a> standard that is common to many PLCs, RTUs and DCSs. In remote locations, it is common to use an RTU as a gateway for a PLC, where the PLC is performing all site control and the RTU is managing communications, time-stamping events and monitoring ancillary equipment. On sites with only a handful of I/O, the RTU may also be the site PLC and will perform both communications and control functions. </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=24" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/1-bit_computing" title="1-bit computing">1-bit computing</a></li> <li><a href="/wiki/Industrial_control_system" title="Industrial control system">Industrial control system</a></li> <li><a href="/wiki/PLC_technician" title="PLC technician">PLC technician</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=25" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text">Tubbs, Stephen Phillip. <i>Programmable Logic Controller (PLC) Tutorial, Siemens Simatic S7-1200.</i> Publicis MCD Werbeagentur GmbH; 3rd ed., 2018.</span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a href="#CITEREFParr1998">Parr 1998</a>, p.&#160;438</span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFWayand2020" class="citation web cs1">Wayand, Ben (20 March 2020). <a rel="nofollow" class="external text" href="https://www.mroelectric.com/blog/what-is-a-plc/">"What Is a PLC?"</a>. <i>MROElectric.com</i>. MRO Electric<span class="reference-accessdate">. Retrieved <span class="nowrap">11 May</span> 2021</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=MROElectric.com&amp;rft.atitle=What+Is+a+PLC%3F&amp;rft.date=2020-03-20&amp;rft.aulast=Wayand&amp;rft.aufirst=Ben&amp;rft_id=https%3A%2F%2Fwww.mroelectric.com%2Fblog%2Fwhat-is-a-plc%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.controlsystemsandautomation.com/learn/plc/plc-programming-basics-i/">"PLC Programming Basics Part I"</a>. <i>Control Systems &amp; Automation</i>. 2019-07-23<span class="reference-accessdate">. Retrieved <span class="nowrap">2020-02-23</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Control+Systems+%26+Automation&amp;rft.atitle=PLC+Programming+Basics+Part+I&amp;rft.date=2019-07-23&amp;rft_id=https%3A%2F%2Fwww.controlsystemsandautomation.com%2Flearn%2Fplc%2Fplc-programming-basics-i%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><a href="#CITEREFLaughtonWarne2002">Laughton &amp; Warne 2002</a>, p.&#160;16/3: "The first industrial computer application was probably a system installed in an oil refinery in Port Arthur USA in 1959. The reliability and mean time between failure of computers meant that little actual control was performed."</span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><a href="#CITEREFParr1998">Parr 1998</a>, p.&#160;437</span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, p.&#160;6</span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><a href="#CITEREFParr1998">Parr 1998</a>, pp.&#160;438, 450–451</span> </li> <li id="cite_note-:9-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-:9_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:9_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFLaughtonWarne2002">Laughton &amp; Warne 2002</a>, chpt. 16</span> </li> <li id="cite_note-:0-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-:0_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:0_10-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFDunn2009" class="citation web cs1">Dunn, Alison (2009-06-12). <a rel="nofollow" class="external text" href="https://www.automationmag.com/855-the-father-of-invention-dick-morley-looks-back-on-the-40th-anniversary-of-the-plc/">"The Father of Invention: Dick Morley Looks Back on the 40th Anniversary of the PLC"</a>. <i>Manufacturing Automation</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-02-23</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Manufacturing+Automation&amp;rft.atitle=The+Father+of+Invention%3A+Dick+Morley+Looks+Back+on+the+40th+Anniversary+of+the+PLC&amp;rft.date=2009-06-12&amp;rft.aulast=Dunn&amp;rft.aufirst=Alison&amp;rft_id=https%3A%2F%2Fwww.automationmag.com%2F855-the-father-of-invention-dick-morley-looks-back-on-the-40th-anniversary-of-the-plc%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-:1-11"><span class="mw-cite-backlink">^ <a href="#cite_ref-:1_11-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:1_11-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:1_11-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-:1_11-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFStrothman2003" class="citation web cs1">Strothman, Jim (2003-08-01). <a rel="nofollow" class="external text" href="https://www.isa.org/standards-and-publications/isa-publications/intech-magazine/2003/august/cover-story-50th-anniversary-leaders-of-the-pack/">"Leaders of the pack"</a>. <i>ISA</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170808184918/https://www.isa.org/standards-and-publications/isa-publications/intech-magazine/2003/august/cover-story-50th-anniversary-leaders-of-the-pack/">Archived</a> from the original on 2017-08-08<span class="reference-accessdate">. Retrieved <span class="nowrap">2020-02-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=ISA&amp;rft.atitle=Leaders+of+the+pack&amp;rft.date=2003-08-01&amp;rft.aulast=Strothman&amp;rft.aufirst=Jim&amp;rft_id=https%3A%2F%2Fwww.isa.org%2Fstandards-and-publications%2Fisa-publications%2Fintech-magazine%2F2003%2Faugust%2Fcover-story-50th-anniversary-leaders-of-the-pack%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://development.libelium.com/modbus_networking_guide/introduction">"Mobus Networking Guide: Introduction"</a>. <i>Libelium.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">27 October</span> 2022</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Libelium.com&amp;rft.atitle=Mobus+Networking+Guide%3A+Introduction&amp;rft_id=https%3A%2F%2Fdevelopment.libelium.com%2Fmodbus_networking_guide%2Fintroduction&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFChakraborty2016" class="citation book cs1">Chakraborty, Kunal (2016). <i>Industrial Applications of Programmable Logic Controllers and SCADA</i>. Hamburg: Anchor Academic Publishing. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-3960670247" title="Special:BookSources/978-3960670247"><bdi>978-3960670247</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Industrial+Applications+of+Programmable+Logic+Controllers+and+SCADA&amp;rft.place=Hamburg&amp;rft.pub=Anchor+Academic+Publishing&amp;rft.date=2016&amp;rft.isbn=978-3960670247&amp;rft.aulast=Chakraborty&amp;rft.aufirst=Kunal&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-:2-14"><span class="mw-cite-backlink">^ <a href="#cite_ref-:2_14-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:2_14-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.controleng.com/articles/a-b-plc-inventor-dr-odo-struger-dies/">"A-B PLC Inventor, Dr. Odo Struger, Dies"</a>. <i>Control Engineering</i>. 1999-02-01. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20200224210429/https://www.controleng.com/articles/a-b-plc-inventor-dr-odo-struger-dies/">Archived</a> from the original on 2020-02-24<span class="reference-accessdate">. Retrieved <span class="nowrap">2020-02-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Control+Engineering&amp;rft.atitle=A-B+PLC+Inventor%2C+Dr.+Odo+Struger%2C+Dies&amp;rft.date=1999-02-01&amp;rft_id=https%3A%2F%2Fwww.controleng.com%2Farticles%2Fa-b-plc-inventor-dr-odo-struger-dies%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-nytimes2-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-nytimes2_15-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBrier1998" class="citation news cs1">Brier, Steven E. (1998-12-27). <a rel="nofollow" class="external text" href="https://query.nytimes.com/gst/fullpage.html?res=9D00E6DF173FF934A15751C1A96E958260">"O. Struger, 67, A Pioneer In Automation"</a>. <i>The New York Times</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-02-24</span></span>. <q>Dr. Odo J. Struger, who invented the programmable logic controller, which makes possible modern factory automation, amusement park rides and lavish stage effects in Broadway productions, died on December 8 in Cleveland. He was 67.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=The+New+York+Times&amp;rft.atitle=O.+Struger%2C+67%2C+A+Pioneer+In+Automation&amp;rft.date=1998-12-27&amp;rft.aulast=Brier&amp;rft.aufirst=Steven+E.&amp;rft_id=https%3A%2F%2Fquery.nytimes.com%2Fgst%2Ffullpage.html%3Fres%3D9D00E6DF173FF934A15751C1A96E958260&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-anzovin2-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-anzovin2_16-0">^</a></b></span> <span class="reference-text">Anzovin, p. 100, item # 2189. <i>Programmable logic controller was invented by the Austrian-born American engineer Odo J. Struger in 1958–60 at the Allen-Bradley company in Milwaukee, WI, USA. A programmable logic controller, or PLC, is a simple electronic device that allows precise numerical control of machinery. It is widely used to control everything from washing machines to roller coaster to automated manufacturing equipment.</i></span> </li> <li id="cite_note-short2-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-short2_17-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.jimpinto.com/writings/automationhistory.html">"A Short History of Automation Growth"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2008-06-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=A+Short+History+of+Automation+Growth&amp;rft_id=http%3A%2F%2Fwww.jimpinto.com%2Fwritings%2Fautomationhistory.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://control.com/technical-articles/state-machine-programming-in-ladder-logic/">"State Machine Programming in Ladder Logic"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=State+Machine+Programming+in+Ladder+Logic&amp;rft_id=https%3A%2F%2Fcontrol.com%2Ftechnical-articles%2Fstate-machine-programming-in-ladder-logic%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.dosupply.com/tech/2018/08/27/wrapping-your-head-around-ladder-logic/">"Wrapping Your Head around Ladder Logic"</a>. <i>DoSupply.com</i>. 27 August 2018<span class="reference-accessdate">. Retrieved <span class="nowrap">19 October</span> 2020</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=DoSupply.com&amp;rft.atitle=Wrapping+Your+Head+around+Ladder+Logic&amp;rft.date=2018-08-27&amp;rft_id=https%3A%2F%2Fwww.dosupply.com%2Ftech%2F2018%2F08%2F27%2Fwrapping-your-head-around-ladder-logic%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.reddit.com/r/PLC/comments/17p2wzj/the_inside_of_the_core_memory_module_of_a_plc2_if/">"The inside of the core memory module of a PLC2, if anyone's interested"</a>. 6 November 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-07-25</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=The+inside+of+the+core+memory+module+of+a+PLC2%2C+if+anyone%27s+interested.&amp;rft.date=2023-11-06&amp;rft_id=https%3A%2F%2Fwww.reddit.com%2Fr%2FPLC%2Fcomments%2F17p2wzj%2Fthe_inside_of_the_core_memory_module_of_a_plc2_if%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, p.&#160;5</span> </li> <li id="cite_note-:4-22"><span class="mw-cite-backlink">^ <a href="#cite_ref-:4_22-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:4_22-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, p.&#160;7</span> </li> <li id="cite_note-:5-23"><span class="mw-cite-backlink">^ <a href="#cite_ref-:5_23-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:5_23-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFByres2011" class="citation web cs1">Byres (May 2011). <a rel="nofollow" class="external text" href="http://www.tofinosecurity.com/blog/plc-security-risk-controller-operating-systems">"PLC Security Risk: Controller Operating Systems - Tofino Industrial Security Solution"</a>. <i>TofinoSecurity.com</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=TofinoSecurity.com&amp;rft.atitle=PLC+Security+Risk%3A+Controller+Operating+Systems+-+Tofino+Industrial+Security+Solution&amp;rft.date=2011-05&amp;rft.au=Byres&amp;rft_id=http%3A%2F%2Fwww.tofinosecurity.com%2Fblog%2Fplc-security-risk-controller-operating-systems&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, pp.&#160;12–13</span> </li> <li id="cite_note-:8-25"><span class="mw-cite-backlink">^ <a href="#cite_ref-:8_25-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:8_25-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, pp.&#160;23–43</span> </li> <li id="cite_note-:6-26"><span class="mw-cite-backlink">^ <a href="#cite_ref-:6_26-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:6_26-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, pp.&#160;16–18</span> </li> <li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text">Keller, William L Jr. <i>Grafcet, A Functional Chart for Sequential Processes</i>, 14th Annual International Programmable Controllers Conference Proceedings, 1984, p. 71-96.</span> </li> <li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://plcopen.org/status-iec-61131-3-standard">"Status IEC 61131-3 Standard"</a>. <i>PLCopen</i>. 2018-07-19<span class="reference-accessdate">. Retrieved <span class="nowrap">2020-04-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=PLCopen&amp;rft.atitle=Status+IEC+61131-3+Standard&amp;rft.date=2018-07-19&amp;rft_id=https%3A%2F%2Fplcopen.org%2Fstatus-iec-61131-3-standard&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-29">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.isisvarese.edu.it/wp-content/uploads/2016/03/CLIL-5B-MEC-PLC.pdf">"Programmable logic controller for automation systems"</a> <span class="cs1-format">(PDF)</span>. <i>www.isisvarese.edu.it</i><span class="reference-accessdate">. Retrieved <span class="nowrap">April 8,</span> 2024</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=www.isisvarese.edu.it&amp;rft.atitle=Programmable+logic+controller+for+automation+systems&amp;rft_id=https%3A%2F%2Fwww.isisvarese.edu.it%2Fwp-content%2Fuploads%2F2016%2F03%2FCLIL-5B-MEC-PLC.pdf&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/344308053">"A mini view of PLC"</a>. <i>www.researchgate.net</i>. September 2020<span class="reference-accessdate">. Retrieved <span class="nowrap">April 8,</span> 2024</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=www.researchgate.net&amp;rft.atitle=A+mini+view+of+PLC&amp;rft.date=2020-09&amp;rft_id=https%3A%2F%2Fwww.researchgate.net%2Fpublication%2F344308053&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-:7-31"><span class="mw-cite-backlink">^ <a href="#cite_ref-:7_31-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:7_31-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:7_31-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, pp.&#160;19–20</span> </li> <li id="cite_note-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-32">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLinHuang2011" class="citation book cs1">Lin, Sally; Huang, Xiong (9 August 2011). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=CHYlTBxqrM8C&amp;pg=PA553"><i>Advances in Computer Science, Environment, Ecoinformatics, and Education, Part III: International Conference, CSEE 2011, Wuhan, China, August 21-22, 2011. Proceedings</i></a>. Springer Science &amp; Business Media. p.&#160;15. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/9783642233449" title="Special:BookSources/9783642233449"><bdi>9783642233449</bdi></a> &#8211; via Google Books.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Advances+in+Computer+Science%2C+Environment%2C+Ecoinformatics%2C+and+Education%2C+Part+III%3A+International+Conference%2C+CSEE+2011%2C+Wuhan%2C+China%2C+August+21-22%2C+2011.+Proceedings&amp;rft.pages=15&amp;rft.pub=Springer+Science+%26+Business+Media&amp;rft.date=2011-08-09&amp;rft.isbn=9783642233449&amp;rft.aulast=Lin&amp;rft.aufirst=Sally&amp;rft.au=Huang%2C+Xiong&amp;rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DCHYlTBxqrM8C%26pg%3DPA553&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text">Harms, Toni M. &amp; Kinner, Russell H. P.E., <i>Enhancing PLC Performance with Vision Systems</i>. 18th Annual ESD/HMI International Programmable Controllers Conference Proceedings, 1989, p. 387-399.</span> </li> <li id="cite_note-:3-34"><span class="mw-cite-backlink">^ <a href="#cite_ref-:3_34-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:3_34-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFParr1998">Parr 1998</a>, p.&#160;446</span> </li> <li id="cite_note-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-35">^</a></b></span> <span class="reference-text">Maher, Michael J. <i>Real-Time Control and Communications</i>. 18th Annual ESD/SMI International Programmable Controllers Conference Proceedings, 1989, p. 431-436.</span> </li> <li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text">Kinner, Russell H., P.E. <i>Designing Programmable Controller Application Programs Using More than One Designer</i>. 14th Annual International Programmable Controllers Conference Proceedings, 1985, p. 97-110.</span> </li> <li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><a href="#CITEREFLaughtonWarne2002">Laughton &amp; Warne 2002</a>, section 16.4.8</span> </li> <li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text"><a href="#CITEREFParr1998">Parr 1998</a>, p.&#160;451</span> </li> <li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><a href="#CITEREFBolton2015">Bolton 2015</a>, p.&#160;15</span> </li> <li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFGoodin2021" class="citation web cs1">Goodin, Dan (2021-02-26). <a rel="nofollow" class="external text" href="https://arstechnica.com/information-technology/2021/02/hard-coded-key-vulnerability-in-logix-plcs-has-severity-score-of-10-out-of-10/">"Hard-coded key vulnerability in Logix PLCs has severity score of 10 out of 10"</a>. <i>Ars Technica</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-03-07</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Ars+Technica&amp;rft.atitle=Hard-coded+key+vulnerability+in+Logix+PLCs+has+severity+score+of+10+out+of+10&amp;rft.date=2021-02-26&amp;rft.aulast=Goodin&amp;rft.aufirst=Dan&amp;rft_id=https%3A%2F%2Farstechnica.com%2Finformation-technology%2F2021%2F02%2Fhard-coded-key-vulnerability-in-logix-plcs-has-severity-score-of-10-out-of-10%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLi2021" class="citation web cs1">Li, Tom (2021-03-01). <a rel="nofollow" class="external text" href="https://www.itworldcanada.com/article/max-level-vulnerability-found-in-logix-plcs/443152,%20https://www.itworldcanada.com/article/max-level-vulnerability-found-in-logix-plcs/443152">"Max level vulnerability found in Logix PLCs | IT World Canada News"</a>. <i>ITWorldCanada.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-03-07</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=ITWorldCanada.com&amp;rft.atitle=Max+level+vulnerability+found+in+Logix+PLCs+%7C+IT+World+Canada+News&amp;rft.date=2021-03-01&amp;rft.aulast=Li&amp;rft.aufirst=Tom&amp;rft_id=https%3A%2F%2Fwww.itworldcanada.com%2Farticle%2Fmax-level-vulnerability-found-in-logix-plcs%2F443152%2C%2520https%3A%2F%2Fwww.itworldcanada.com%2Farticle%2Fmax-level-vulnerability-found-in-logix-plcs%2F443152&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> <li id="cite_note-McMillan_1999-42"><span class="mw-cite-backlink">^ <a href="#cite_ref-McMillan_1999_42-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-McMillan_1999_42-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMcMillan1999" class="citation book cs1">McMillan, Gregory K. (1999). "Section 3: Controllers". In Considine, Douglas M. (ed.). <i>Process/Industrial Instruments and Controls Handbook</i> (Fifth&#160;ed.). McGraw-Hill. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-07-012582-1" title="Special:BookSources/0-07-012582-1"><bdi>0-07-012582-1</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.atitle=Section+3%3A+Controllers&amp;rft.btitle=Process%2FIndustrial+Instruments+and+Controls+Handbook&amp;rft.edition=Fifth&amp;rft.pub=McGraw-Hill&amp;rft.date=1999&amp;rft.isbn=0-07-012582-1&amp;rft.aulast=McMillan&amp;rft.aufirst=Gregory+K.&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading3"><h3 id="Bibliography">Bibliography</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=26" title="Edit section: Bibliography"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239549316">.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}</style><div class="refbegin" style=""> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBolton2015" class="citation book cs1">Bolton, William (2015). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=sDqnBQAAQBAJ"><i>Programmable Logic Controllers</i></a> (6th, revised&#160;ed.). Newnes. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/9780081003534" title="Special:BookSources/9780081003534"><bdi>9780081003534</bdi></a> &#8211; via Google Books.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Programmable+Logic+Controllers&amp;rft.edition=6th%2C+revised&amp;rft.pub=Newnes&amp;rft.date=2015&amp;rft.isbn=9780081003534&amp;rft.aulast=Bolton&amp;rft.aufirst=William&amp;rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DsDqnBQAAQBAJ&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFParr1998" class="citation book cs1">Parr, E. A. (1998). "Computers and industrial control". <a rel="nofollow" class="external text" href="https://books.google.com/books?id=zLwtngK3T1UC"><i>Industrial Control Handbook</i></a>. Industrial Press Inc. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-8311-3085-7" title="Special:BookSources/0-8311-3085-7"><bdi>0-8311-3085-7</bdi></a> &#8211; via Google Books.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.atitle=Computers+and+industrial+control&amp;rft.btitle=Industrial+Control+Handbook&amp;rft.pub=Industrial+Press+Inc.&amp;rft.date=1998&amp;rft.isbn=0-8311-3085-7&amp;rft.aulast=Parr&amp;rft.aufirst=E.+A.&amp;rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DzLwtngK3T1UC&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLaughtonWarne2002" class="citation book cs1">Laughton, M. A.; Warne, D. F. (2002). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=5jOblzV5eZ8C"><i>Electrical Engineer's Reference Book</i></a> (16th&#160;ed.). Newnes. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/9780750646376" title="Special:BookSources/9780750646376"><bdi>9780750646376</bdi></a> &#8211; via Google Books.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Electrical+Engineer%27s+Reference+Book&amp;rft.edition=16th&amp;rft.pub=Newnes&amp;rft.date=2002&amp;rft.isbn=9780750646376&amp;rft.aulast=Laughton&amp;rft.aufirst=M.+A.&amp;rft.au=Warne%2C+D.+F.&amp;rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3D5jOblzV5eZ8C&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></li></ul> </div> <div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Programmable_logic_controller&amp;action=edit&amp;section=27" title="Edit section: Further reading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1235681985">.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);display:flow-root}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}</style><style data-mw-deduplicate="TemplateStyles:r1237033735">@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}</style><div class="side-box side-box-right plainlinks sistersitebox"><style data-mw-deduplicate="TemplateStyles:r1126788409">.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}</style> <div class="side-box-flex"> <div class="side-box-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png" decoding="async" width="30" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/45px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/59px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></span></span></div> <div class="side-box-text plainlist">Wikimedia Commons has media related to <span style="font-weight: bold; font-style: italic;"><a href="https://commons.wikimedia.org/wiki/Category:Programmable_logic_controller" class="extiw" title="commons:Category:Programmable logic controller">Programmable logic controller</a></span>.</div></div> </div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1235681985"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1237033735"><div class="side-box side-box-right plainlinks sistersitebox"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"> <div class="side-box-flex"> <div class="side-box-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/40px-Wikiversity_logo_2017.svg.png" decoding="async" width="40" height="33" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/60px-Wikiversity_logo_2017.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/80px-Wikiversity_logo_2017.svg.png 2x" data-file-width="626" data-file-height="512" /></span></span></div> <div class="side-box-text plainlist">Wikiversity has learning resources about <i><b><a href="https://en.wikiversity.org/wiki/Programmable_logic_controller_(basics)" class="extiw" title="v:Programmable logic controller (basics)">Programmable logic controller (basics)</a></b></i></div></div> </div> <ul><li>Daniel Kandray, <i>Programmable Automation Technologies</i>, Industrial Press, 2010 <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0-8311-3346-7" title="Special:BookSources/978-0-8311-3346-7">978-0-8311-3346-7</a>, Chapter 8 <i>Introduction to Programmable Logic Controllers</i></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFWalker2012" class="citation book cs1">Walker, Mark John (2012-09-08). <a rel="nofollow" class="external text" href="http://oro.open.ac.uk/54687/1/594090.pdf"><i>The Programmable Logic Controller: its prehistory, emergence and application</i></a> <span class="cs1-format">(PDF)</span> (PhD thesis). Department of Communication and Systems Faculty of Mathematics, Computing and Technology: <a href="/wiki/The_Open_University" class="mw-redirect" title="The Open University">The Open University</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180620115412/http://oro.open.ac.uk/54687/1/594090.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 2018-06-20<span class="reference-accessdate">. Retrieved <span class="nowrap">2018-06-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=The+Programmable+Logic+Controller%3A+its+prehistory%2C+emergence+and+application&amp;rft.place=Department+of+Communication+and+Systems+Faculty+of+Mathematics%2C+Computing+and+Technology&amp;rft.pub=The+Open+University&amp;rft.date=2012-09-08&amp;rft.aulast=Walker&amp;rft.aufirst=Mark+John&amp;rft_id=http%3A%2F%2Foro.open.ac.uk%2F54687%2F1%2F594090.pdf&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AProgrammable+logic+controller" class="Z3988"></span></li></ul> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox authority-control" aria-label="Navbox" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Help:Authority_control" title="Help:Authority control">Authority control databases</a>: National <span class="mw-valign-text-top noprint" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q188674#identifiers" title="Edit this at Wikidata"><img alt="Edit this at Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&amp;authority_id=XX531788">Spain</a></span></li></ul></div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐api‐ext.codfw.main‐67468f59cb‐6kqdr Cached time: 20241127132640 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.668 seconds Real time usage: 0.799 seconds Preprocessor visited node count: 4531/1000000 Post‐expand include size: 86099/2097152 bytes Template argument size: 7288/2097152 bytes Highest expansion depth: 15/100 Expensive parser function count: 14/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 113313/5000000 bytes Lua time usage: 0.401/10.000 seconds Lua memory usage: 7907129/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 710.088 1 -total 32.86% 233.340 1 Template:Reflist 19.79% 140.491 16 Template:Cite_web 12.76% 90.573 1 Template:Manufacturing 11.83% 84.033 1 Template:Sidebar 10.54% 74.874 6 Template:Citation_needed 9.83% 69.807 7 Template:Fix 8.44% 59.929 1 Template:Short_description 6.02% 42.754 1 Template:Commons_category 5.99% 42.539 2 Template:Sister_project --> <!-- Saved in parser cache with key enwiki:pcache:idhash:24992-0!canonical and timestamp 20241127132642 and revision id 1259858735. Rendering was triggered because: edit-page --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Programmable_logic_controller&amp;oldid=1259858735">https://en.wikipedia.org/w/index.php?title=Programmable_logic_controller&amp;oldid=1259858735</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Programmable_logic_controllers" title="Category:Programmable logic controllers">Programmable logic controllers</a></li><li><a href="/wiki/Category:Computer_engineering" title="Category:Computer engineering">Computer engineering</a></li><li><a href="/wiki/Category:Industrial_automation" title="Category:Industrial automation">Industrial automation</a></li><li><a href="/wiki/Category:Industrial_computing" title="Category:Industrial computing">Industrial computing</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:Use_American_English_from_September_2023" title="Category:Use American English from September 2023">Use American English from September 2023</a></li><li><a href="/wiki/Category:All_Wikipedia_articles_written_in_American_English" title="Category:All Wikipedia articles written in American English">All Wikipedia articles written in American English</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_April_2020" title="Category:Articles with unsourced statements from April 2020">Articles with unsourced statements from April 2020</a></li><li><a href="/wiki/Category:Articles_containing_potentially_dated_statements_from_2015" title="Category:Articles containing potentially dated statements from 2015">Articles containing potentially dated statements from 2015</a></li><li><a href="/wiki/Category:All_articles_containing_potentially_dated_statements" title="Category:All articles containing potentially dated statements">All articles containing potentially dated statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_November_2014" title="Category:Articles with unsourced statements from November 2014">Articles with unsourced statements from November 2014</a></li><li><a href="/wiki/Category:Articles_containing_potentially_dated_statements_from_2011" title="Category:Articles containing potentially dated statements from 2011">Articles containing potentially dated statements from 2011</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_July_2022" title="Category:Articles with unsourced statements from July 2022">Articles with unsourced statements from July 2022</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_February_2020" title="Category:Articles with unsourced statements from February 2020">Articles with unsourced statements from February 2020</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_July_2009" title="Category:Articles with unsourced statements from July 2009">Articles with unsourced statements from July 2009</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_September_2023" title="Category:Articles with unsourced statements from September 2023">Articles with unsourced statements from September 2023</a></li><li><a href="/wiki/Category:Articles_that_may_contain_original_research_from_March_2020" title="Category:Articles that may contain original research from March 2020">Articles that may contain original research from March 2020</a></li><li><a href="/wiki/Category:All_articles_that_may_contain_original_research" title="Category:All articles that may contain original research">All articles that may contain original research</a></li><li><a href="/wiki/Category:All_articles_with_vague_or_ambiguous_time" title="Category:All articles with vague or ambiguous time">All articles with vague or ambiguous time</a></li><li><a href="/wiki/Category:Vague_or_ambiguous_time_from_February_2020" title="Category:Vague or ambiguous time from February 2020">Vague or ambiguous time from February 2020</a></li><li><a href="/wiki/Category:Commons_category_link_is_on_Wikidata" title="Category:Commons category link is on Wikidata">Commons category link is on Wikidata</a></li><li><a href="/wiki/Category:Wikipedia_articles_with_ASCII_art" title="Category:Wikipedia articles with ASCII art">Wikipedia articles with ASCII art</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 27 November 2024, at 13:26<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Programmable_logic_controller&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-6df7948d6c-68lnm","wgBackendResponseTime":182,"wgPageParseReport":{"limitreport":{"cputime":"0.668","walltime":"0.799","ppvisitednodes":{"value":4531,"limit":1000000},"postexpandincludesize":{"value":86099,"limit":2097152},"templateargumentsize":{"value":7288,"limit":2097152},"expansiondepth":{"value":15,"limit":100},"expensivefunctioncount":{"value":14,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":113313,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 710.088 1 -total"," 32.86% 233.340 1 Template:Reflist"," 19.79% 140.491 16 Template:Cite_web"," 12.76% 90.573 1 Template:Manufacturing"," 11.83% 84.033 1 Template:Sidebar"," 10.54% 74.874 6 Template:Citation_needed"," 9.83% 69.807 7 Template:Fix"," 8.44% 59.929 1 Template:Short_description"," 6.02% 42.754 1 Template:Commons_category"," 5.99% 42.539 2 Template:Sister_project"]},"scribunto":{"limitreport-timeusage":{"value":"0.401","limit":"10.000"},"limitreport-memusage":{"value":7907129,"limit":52428800},"limitreport-logs":"anchor_id_list = table#1 {\n [\"CITEREFBolton2015\"] = 1,\n [\"CITEREFBrier1998\"] = 1,\n [\"CITEREFByres2011\"] = 1,\n [\"CITEREFChakraborty2016\"] = 1,\n [\"CITEREFDunn2009\"] = 1,\n [\"CITEREFGoodin2021\"] = 1,\n [\"CITEREFLaughtonWarne2002\"] = 1,\n [\"CITEREFLi2021\"] = 1,\n [\"CITEREFLinHuang2011\"] = 1,\n [\"CITEREFMcMillan1999\"] = 1,\n [\"CITEREFParr1998\"] = 1,\n [\"CITEREFStrothman2003\"] = 1,\n [\"CITEREFWalker2012\"] = 1,\n [\"CITEREFWayand2020\"] = 1,\n}\ntemplate_list = table#1 {\n [\"!\"] = 1,\n [\"As of\"] = 3,\n [\"Authority control\"] = 1,\n [\"Citation needed\"] = 6,\n [\"Cite book\"] = 7,\n [\"Cite news\"] = 1,\n [\"Cite web\"] = 16,\n [\"Commons category\"] = 1,\n [\"Harvnb\"] = 16,\n [\"ISBN\"] = 1,\n [\"Manufacturing\"] = 1,\n [\"Original research section\"] = 1,\n [\"Refbegin\"] = 1,\n [\"Refend\"] = 1,\n [\"Reflist\"] = 1,\n [\"See also\"] = 1,\n [\"Short description\"] = 1,\n [\"Snd\"] = 3,\n [\"Use American English\"] = 1,\n [\"Visible anchor\"] = 1,\n [\"When\"] = 1,\n [\"Wikiversity\"] = 1,\n}\narticle_whitelist = table#1 {\n}\n"},"cachereport":{"origin":"mw-api-ext.codfw.main-67468f59cb-6kqdr","timestamp":"20241127132640","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Programmable logic controller","url":"https:\/\/en.wikipedia.org\/wiki\/Programmable_logic_controller","sameAs":"http:\/\/www.wikidata.org\/entity\/Q188674","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q188674","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2002-02-25T15:51:15Z","dateModified":"2024-11-27T13:26:40Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/d\/df\/Automate_industriel_WAGO_pour_un_syst%C3%A8me_de_monitoring_en_industrie_pharmaceutique.jpg","headline":"digital computer used for automation of electromechanical processes"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10