کنترل‌گر منطقی برنامه‌پذیر
پی‌ال‌سی یا کنترل‌گر منطقی برنامه‌پذیر، یک رایانه دیجیتال صنعتی است که برای استفاده در کاربردهای صنعتی استحکام بخشیده شده‌است و در فرایندهای صنعتی مانند کنترل فرایندهای تولید، کنترل خطوط مونتاژ، کنترل دستگاه‌های رباتیک یا هر فرایندی که نیاز به کنترل دقیق و قابل اطمینان و عیب‌یابی ساده داشته باشد از آن استفاده می‌شود.
استفاده از PLCها باعث شده‌است که بسیاری از سیم کشی‌های مرسوم در مدارهای کنترلی رله‌ای حذف گردد. دیگر مزایای استفاده از PLC به جای سامانه‌های رله‌ای شامل: نصب و برنامه‌نویسی آسان، زمان پاسخ کوتاه، سرعت بالای کنترل، قابلیت شبکه کردن مجموعه، تست و عیب‌یابی ساده و قابلیت اطمینان بالای این سامانه‌ها می‌باشد.
PLC یا کنترل‌گر منطقی برنامه‌پذیر: به زبان ساده PLC دستگاهی ست با قابلیت برنامه‌ریزی منطقی که می‌توان داده‌هایی را به عنوان ورودی به دستگاه تغذیه کنید، روی آن‌ها پردازش انجام دهید و در نهایت خروجی‌هایی را کنترل کرد یا نمایش داد.
PLC برخلاف یک رایانهٔ عادی غیر صنعتی:
PLC جایگزین مناسب مدار فرمان الکتریکی‌ست. اما چون منطقی‌ست، دارای اشتباه کمتری و در برخی موارد مقرون به صرفه اقتصادی و کار با آن ساده‌تر و بهتر است.
کنترل منطقی از کنترلی‌ست که در آن صدور فرمان‌ها نیازمند برآورده شدن تعدادی توابع و خواست‌های منطقی باشد
ساختار PLC مشابه ساختار رایانه‌است. شامل: در PLCهای کوچک همهٔ موارد (پردازنده، I/O، منبع تغذیه در یک واحد و در PLCهای بزرگتر هر یک در واحدی مجزّا جای داده شده‌اند.
حافظهٔ PLC دو نوع است:
در صنعت PLC بیش از یکصد کارخانه با تنوع بسیار در طراحی و ساخت انواع مختلف PLC فعالیت می‌کنند. PLCها را می‌توان از نظر اندازه، حافظه، تعداد ورودی/خروجی، وسعت عملیات (محلی یا وسیع) و … دسته‌بندی نمود. باید توجه داشت که برای ارزیابی قابلیت یک PLC باید ویژگی‌های دیگری مانند پردازنده، زمان اجرای یک سیکل، سادگی زبان برنامه‌نویسی، قابلیت توسعه و … را در نظر گرفت.
کاربرد: کنترل سامانه‌هایی با حجم کوچک (تعداد ورودی و خروجی‌های محدود) و برای کنترل هم‌زمان تعداد کمتری از پروسه‌ها یا کنترل دستگاه‌های مجزای صنعتی (به علت قابلیت محدودتر) ارائه: اغلب شرکت‌های سازنده، این نوع پی ال سی ها را همراه دیگر پی ال سی ها به بازار ارائه می‌دهند ولی برخی از شرکت‌های سازنده آن را با نام مینی پی ال سی یا اسمارت رله ارائه می‌نمایند. از جمله این نوع پی ال سی ها می‌توان به نمونه‌های زیر اشاره کرد:
کاربرد: کنترل سایت کارخانه‌ها و دستگاه‌های صنعتی، نظارت و حفاظت. ارائه: از جمله معروف‌ترین PLCها از این خانواده را که می‌توان نام برد عبارتند از:
داشتن دیدگاه کاملی نسبت به تنوّع PLCها مهم‌ترین موضوع در انتخاب یک PLC مناسب است؛ لذا باید به این جنبه‌های تنوّع توجّه داشت از طرفی امروزه عموماً از PLC به‌صورت وسیعی در صنایع مختلف استفاده می‌شود. از طرفی هم بیشتر خط تولیدهای جدید رو به استفاده از نسخه جدید PLCهای که دارای کنترل حرکت به روز هستند رفته‌اند که در آن خیلی از مشکلات نسخه‌های قبلی رفع شده و کنترل‌ها بسیار ساده‌تر گردیده‌است.
یک PLC کوچک تنها دارای تعداد محدودی از ورودی/خروجی‌هاست و معمولاً امکان گسترش ورودی/خروجی‌ها تا تعداد بیشتری هم در صورت نیاز وجود دارد.
PLCهای ماژولار دارای یک اسکلت (یا رک) هستند که واحدهای مختلف PLC با توجه به نیاز بر روی آن سوار می‌شوند. در این PLCها پردازنده و ماژول‌های ورودی/خروجی می‌توانند با توجه به کاربرد سامانه انتخاب شوند. همچنین این امکان وجود دارد که چندین رک (Rack) یا تعداد خیلی بسیاری از ورودی/خروجی‌ها به وسیله یک پردازنده کنترل شوند.
برای نمایش برنامهٔ PLC از سه روش استفاده می‌شود: این روش‌ها ابتکاری نیستند. نمایش مدار در مهندسی برق و الگوریتم و فلوچارت در مهندسی رایانه معمول است.
اصطلاحات فرم یا طرز نمایش، و فرمول بندی یا شکل‌دهی در ریاضیات کابرد بسیاری یافته‌اند. علّت در اینجا بارز تر می‌شود: برنامه یک نظم دهی ست، و نظم برای انسان حتماً نیازمند شکل است. پس نمی‌توان گفت روش‌های نمایش فرع برنامه‌اند و تعریف برنامه اصل آن. زیرا نوشتن یک برنامه چیزی جز نمایش دستورات در جای صحیح نیست.
به هر دستور یک رشته خط برنامه گفته می‌شود هر خط برنامه معمولاً یکی از ترکیب‌های منطقی ریاضی را دربردارد؛ که همچنین کنترل فلگ‌ها و فلیپ‌فلاپ‌ها را به عهده دارند در این روش هر چند خط برنامه که عمل خاصی را انجام می‌دهند یک سگمنت گفته می‌شود و یک برنامه می‌تواند شامل یک سگمنت یا بیشتر باشد. هر برنامه با یک «نقطه‌ویرگول(;)» آغاز شده و با "BE" به پایان می‌رسد. ریز پردازنده از سطر اول برنامه آغاز به خواندن و اجرای دستورات می‌کند تا به دستور "BE" برسد. مدت زمان لازم برای اجرای این کار را سیکل زمانی اجرای برنامه می‌گویند برای تسریع در اجرای برنامه و کاهش این سیکل زمانی می‌توان پردازنده‌ای با سرعت بالا به کار برد که مشمول هزینه خواهد بود یا برنامه را سامان‌دهی بهتری نمود. هر کدام از ورودی‌ها، خروجی‌ها و فلگ‌ها در دسته‌های ۸بیتی سازمان‌دهی می‌شوند و در آدرس‌دهی ابتدا باید آدرس بایت مربوط و سپس آدرس بیت تعیین شود.
در نوشتن برنامه‌های پیچیده که معمولاً طولانی هستند برنامه‌های فرعی را در بخش‌های جداگانه می‌نویسند و سپس آن‌ها را در برنامه اصلی به کار می‌برند، هر کدام از این بخش‌ها در یک بلوک خاص نوشته می‌شود.
در کل پنج نوع بلوک وجود دارد که عبارتند از:
بلوک‌های برنامه یا PB: تشکیل دهندهٔ برنامهٔ کنترل یک فرایند می‌باشند که از شمارهٔ ۰ تا ۲۵۵ شماره‌گذاری شده‌اند. کاربر برنامه را به تشخیص خود در هر بلوک "PB" می‌نویسد و در انتهای آن از "BE" استفاده می‌نماید.
بلوک‌های ترتیبی یا SB: در کنترل‌های ترکیبی مثل راه‌اندازی خط‌های تولید استفاده می‌شود.
بلوک‌های تابع ساز یا FB: توابعی که در طول برنامه بارها مورد استفاده هستند و در خود برنامه تعریف نشده‌اند مثل ضرب دو عدد باینری که از شماره ۰ تا ۲۵۵ شماره‌گذاری شده‌اند. هر FB از دو بخش تشکیل شده‌است. FBها اجزا و انواعی دارند: بلوک‌های اطلاعاتی DB: تعداد ۲۵۶ بلوک برای ذخیره اطلاعاتی در نظر گرفته شده که هنگام اجرای برنامه مورد استفاده‌اند. همچون، پیغامها، هشدارها و… بلوک سازماندهی OB: این بلوک ساختار برنامه را مشخص می‌نماید هر OB بایک شمارهٔ خاص مشخص می‌شود. شامل:
دستورهای برنامه‌نویسی PLC سه‌گانه‌اند: این دستورها ممکن است در PLCهای شرکت‌های مختلف متفاوت باشند.
دستور AN برای خواندن صفر: همان‌طور که گفته شد، سه روش برای نمایش برای برنامهٔ PLC وجود دارد: در روش LAD و CSF برای خواندن عدد صفر از ورودی از دستور AN استفاده می‌شود؛ که عبارت «صفر یا یک» در ورودی را به عبارت معکوسش یعنی «یک یا صفر» تبدیل می‌کند.
وقتی دکمهٔ فشار فشرده یا کلیدی روشن گردد بر حسب نوع کانتاکت عددی که در ورودی و خروجی ظاهر می‌شود متفاوت است:
مثال: برنامه‌ای بنویسید که با دو کلید A و B که به صورت سری به هم وصل هستند خروجی را روشن و خاموش نمایند.
فلگ: هر فلگ یک بیت از حافظه PLC می‌باشد که آن را می‌توان معادل خروجی مجازی دانست. این بیت مانند هر بیت از حافظه می‌تواند دو مقدار «صفر» یا «یک» بگیرد با این تفاوت که فلگ‌ها حافظه‌های موقتی هستند. آدرس دهی فلگ‌ها همانند ورودی‌ها و خروجی‌ها است. کاربرد فلگ‌ها در برنامه‌هایی است که عملگر "OR" قبل از عملگر "AND" بیاید و با حذف پرانتزها می‌توان از فلگ استفاده کرد. البته گاهی ممکن است برنامه طولانی‌تر شود. مثال:
بیت RLO:
فلیپ فلاپ‌ها: فلیپ فلاپ شامل دو ورودی set و reset می‌باشد. در کل دو نوع فلیپ فلاپ وجود دارد:
تفاوت بین فلیپ فلاپ‌های فوق در ارجحیت ورودی‌های set و reset است. مثال:
در فلیپ فلاپ‌های SR هنگامی که ورودی R در حالت «صفر» باشد کافی است در یک لحظه ورودی S در حالت «یک» قرار بگیرد تا خروجی به صورت پایدار «یک» شود این وضعیت مادامی که R به صورت «صفر» است باقی خواهد ماند. در این فلیپ فلاپ اگر هر دو ورودی برابر «یک» باشد ارجحیت با دستور دوم است. چرا که دستور دوم ناقض دستور اول است و PLC دستورات را سطر به سطر اجرا می‌کند. با این بیان می‌توان اصل کلی زیر را نتیجه گرفت: هر دستوری که به خط پایان برنامه (BE) نزدیک تر باشد از نظر اجرا ارجح تر است.
دستور NOP ۰ در فلیپ‌فلاپ: در PLCهای زیمنس، هر گاه بخواهیم از خروجی یک فلیپ فلاپ یا بخشی از برنامه هیچ استفاده‌ای نکنیم از دستور «NOP ۰» استفاده می‌نماییم. مثال:
با «NOP ۰» می‌توان خروجی یک فلیپ فلاپ را در یک فلگ قرار داد. مثال:
دستورات JU و JC: همان‌طور که گفته شد نتیجه عملکرد دستورات هر خط در بیت خاصی با نام RLO ذخیره می‌شود که دستورات می‌توانند به بیت RLO وابسته باشند یا نه. اگر دستورات به RLO وابسته نباشند غیر شرطی خواهند بود.
دستور JU بدون وجود هیچ گونه شرطی پرش یا انقال را انجام می‌دهد این پرش ممکن است از یک بلوک به بلوک دیگر یا از یک سطر به سطر دیگر همان بلوک انجام گیرد.
دستور JC وابسته به بیت RLO می‌باشد و مانند دستور قبل عمل پرش را انجام می‌دهد. مثال: برنامه‌ای که با فشردن یک کلید PB ۱۸ و در صورت غیرفعال نمودن همان کلید PB ۱۹ را اجرا نماید. با اندکی تفکر درمی یابیم که چنین برنامه‌ای را باید در «OB ۱» نوشت، زیرا همان‌طور که گفته شد ساختار کلی سامانه در این بلوک شکل می‌پذیرد. همچنین باید از دستور پرش شرطی استفاده نمود. اگر فرض کنیم کلید فشرده شده I ۰٫۰ باشد:
دستورهای بارگذاری و انتقال: برای بارگذاری از دستور"L" و برای انتقال از دستور "T" استفاده می‌شود. دستورات L و T غیر شرطی‌اند. زیرا به RLO وابسته نیستند. جهت مبادله مقادیر ورودی‌ها، خروجی‌ها یا فلگ‌ها نیاز به یک حافظه واسط می‌باشد که در قسمی بنام انباره یا آکومولاتور (Accumulator) موجود است. این حافظه از نوع رجیستر و شانزده بیتی است که معمولاً شامل شانزده بیت یا دو بایت با ارزش بالا و پایین می‌باشد.
دستور "L": برای بارگذاری اطلاعات از این دستور دستور "L" استفاده می‌نماییم که محتویات یک بایت فراخوانی و در انبارک جایگزین می‌شود. اگر PLC ما دو انبارک داشته باشد با دستور «L IW ۴» شانزده بیت موجود در کلمه ورودی شماره چهار را به «ACCUME ۱» می‌فرستد. اگر در همین حالت «L IW ۶» اجرا شود اطلاعات «ACCUME ۱» به «ACCUME ۲» می‌رود و «IW ۶» به «ACCUME ۱» منتقل می‌شود.
دستور "T": برای انتقال اطلاعاتی که در انبارک‌ها موجود است به خروجی‌ها یا فلگ‌ها از این دستور استفاده می‌شود. مثلاً در برنامهٔ زیر با اجرای دستور اول محتویات «ACCUME 1» به کلمه «خروجی هشت» کپی می‌شود.
برای پیاده‌سازی PLC در رایانه‌های معمولی از یک نرم‌افزار شبیه‌ساز مانند "S5W" استفاده می‌شود.
1. HMI یا واسط بین انسان و ماشین: این تجهیزات به کاربر این امکان را خواهد تا پردازش‌های در حال اجرا را که از قبل برنامه‌نویس و طراح آن‌ها را تعبیه کرده‌اند را مشاهده کنند، خروجی‌ها رو به صورت گرافیکی ببینند یا ورودی‌ها را توسط مانیتورهای تاچ اسکرین یا کلیدهای شستی بفشارند. به نوعی می‌توان گفت این تجهیزات می‌توانند هم به عنوان ورودی و هم خروجی ایفای نقش نمایند. به‌طور مثال: می‌توان دمای حرارت کوره را به صورت گرافیکی روی مانیتور مشاهده کنید (خروجی). یا می‌توان دکمه استارت پمپ را در آن تعبیه نمود که به صورت تاج کاربر پمپ را روشن نماید (ورودی).
2. LAN شبکه: می‌توان داده‌ها یا خروجی‌ها را از طریق شبکه به نقاط مختلفی انتقال داد که این کار توسط تجهیزات شبکه‌ای که به PLC متصل می‌گردد قابل انجام است. بستن شیرهای خطوط انتقال سوخت در صورت بروز حادثه را می‌توان به عنوان یک کنترل از راه دور به کمک شبکه مثال زد.
S5W یک سامانه PLC "زیمنس" را شبیه‌سازی می‌نماید. استفاده از این نرم‌افزار ساده‌است؛ پس از پایان کدنویسی و فشردن کلید آغاز شبیه‌سازی پنجره شبیه‌ساز PLC باز می‌شود. در اینجا ورودی‌ها، خروجی‌ها و فلگ‌ها مشاهده می‌شوند و می‌توان عملکرد برنامه نوشته شده را روی PLC آزمود.
پی ال سی ها به خوبی با طیف وسیعی از وظایف اتوماسیون یا خودکارسازی سازگار هستند. اینها معمولاً فرآیندهای صنعتی در تولید هستند که در آن هزینه توسعه و نگهداری سیستم اتوماسیون نسبت به هزینه کل اتوماسیون بالاتر است و در آنجا تغییراتی در سیستم در طول عمر عملیاتی آن انتظار می رود. پی ال سی ها حاوی تجهیزات ورودی و خروجی سازگار با دستگاه ها و کنترل های پایلوت صنعتی هستند. طراحی الکتریکی کمی مورد نیاز است و مشکل طراحی بر بیان توالی مورد نظر از عملیات متمرکز است. برنامه‌های کاربردی پی ال سی معمولاً سیستم‌های بسیار سفارشی‌سازی شده‌اند، بنابراین هزینه یک پی ال سی بسته‌بندی شده در مقایسه با هزینه یک طراحی کنترل‌کننده سفارشی خاص پایین است. از سوی دیگر، در مورد کالاهای تولید انبوه، سیستم های کنترل سفارشی اقتصادی هستند. این به دلیل هزینه کمتر قطعات است که می تواند به طور بهینه به جای یک راه حل "عمومی" انتخاب شود و هزینه های مهندسی غیر تکراری در هزاران یا میلیون ها واحد توزیع می شود.
برای دستگاه‌هایی با اندازه ی کوچک یا متوسط است. پی ال سی هایی که توان اجرای زبان های پی ال سی از جمله ladder و ... را شبیه پی ال سی های مرسوم دارند اما سایز کوچک آنها به توسعه دهندگان این امکان را می‌دهد که آنها را روی pcb سفارشی مانند یک میکروکنترلر بدون دانش برنامه نویسی طراحی کنند.
برای عملیات اتوماسیون ثابت با حجم بالا یا بسیار ساده، از تکنیک های مختلفی استفاده می شود. به عنوان مثال، یک ماشین ظرفشویی  ارزان قیمت توسط یک تایمر بادامک الکترومکانیکی کنترل می شود که هزینه تولید آن تنها چند دلار است.
طراحی مبتنی بر میکروکنترلر در جایی مناسب خواهد بود که صدها یا هزاران واحد تولید شود و بنابراین هزینه توسعه (طراحی منبع تغذیه، سخت‌افزار ورودی/خروجی، و آزمایش‌ها و گواهی‌نامه‌های لازم) در بسیاری از فروش‌ها توزیع شود و در جایی که کاربر نیازی به تغییر کنترل ندارد. به عنوان مثال برنامه های کاربردی خودرو را در نظر بگیرید. میلیون ها واحد هر سال ساخته می شوند و تعداد بسیار کمی از کاربران نهایی برنامه نویسی این کنترلرهای سفارشی را تغییر می دهند. با این حال، برخی از وسایل نقلیه تخصصی مانند اتوبوس های ترانزیت از لحاظ اقتصادی به جای کنترل های سفارشی از PLC استفاده می کنند، زیرا تعداد آنها کم است و هزینه توسعه غیراقتصادی است. جهت کنترل فرآیند بسیار پیچیده، مانند موارد استفاده در صنایع شیمیایی، ممکن است به الگوریتم‌ها و عملکردی فراتر از توانایی پی ال سی هایی با کارایی بالا نیاز داشته باشد. کنترل‌های بسیار پر سرعت یا دقیق ممکن است به راه‌حل‌های سفارشی‌شده نیز نیاز داشته باشند. به عنوان مثال، کنترل پرواز هواپیما. رایانه‌های تک بردی که از سخت‌افزار نیمه سفارشی یا کاملاً اختصاصی استفاده می‌کنند، ممکن است برای برنامه‌های کنترلی بسیار سخت که در آن هزینه‌های توسعه و نگهداری بالا قابل پشتیبانی است، انتخاب شوند.
PLC ها ممکن است شامل منطق حلقه کنترل آنالوگ فیدبک تک متغیری، یک کنترل کننده PID باشند. برای مثال می توان از یک حلقه PID برای کنترل دمای یک فرآیند تولید استفاده کرد. از لحاظ تاریخی، PLC ها معمولاً تنها با چند حلقه کنترل آنالوگ پیکربندی می شدند. در جایی که فرآیندها به صدها یا هزاران حلقه نیاز دارند، در عوض از یک سیستم کنترل توزیع شده (DCS) استفاده می شود. با قدرتمندتر شدن PLC ها، مرز بین برنامه های کاربردی DCS و PLC محو شده است.
در سال‌های اخیر، محصولات کوچکی به نام رله‌ های منطقی قابل برنامه‌ریزی (PLR) یا رله‌های هوشمند، رایج‌ شده‌اند. این رله ها شبیه PLCها هستند و در صنایع هایی استفاده می شوند که تنها به چند نقطه ورودی/خروجی نیاز است و همچنین هزینه کم مورد نظر است.این دستگاه‌های کوچک معمولاً در اندازه و شکل ظاهری مشترک توسط چندین سازنده ساخته می‌شوند و نیز توسط سازندگان PLC‌های بزرگ‌تر برای پر کردن طیف محصولات پایین‌رده خود تولید می‌شوند.اکثر این رله ها دارای 8 تا 12 ورودی مجزا، 4 تا 8 خروجی مجزا و حداکثر 2 ورودی آنالوگ هستند.  اکثر این دستگاه‌ها شامل یک صفحه LCD کوچک به اندازه تمبر پستی جهت مشاهده برنامه ladder (فقط بخش بسیار کوچکی از برنامه در یک زمان معین قابل مشاهده است) و وضعیت نقاط ورودی/خروجی هستند. دکمه فشاری چهار طرفه به اضافه چهار دکمه فشاری جداگانه دیگر، شبیه دکمه های کلیدی روی یک کنترل از راه دور VCR، جهت جابه جایی و ویرایش استفاده می شود. اکثر آنها یک دوشاخه کوچک برای اتصال از طریق RS-232 یا RS-485 به رایانه شخصی دارند. بر خلاف PLC های معمولی که معمولاً ماژولار هستند و بسیار قابل گسترش هستند، PLR ها معمولاً ماژولار یا قابل گسترش نیستند، اما قیمت آنها می تواند بسیار کمتر از یک PLC باشد و همچمین طراحی قوی دارند و برنامه را به خوبی اجرا می کنند.