کنترل‌گر منطقی برنامه‌پذیر
آموزش شکل‌دهی برنامهٔ PLC به روش نمایش نوشتاری یا الگوریتم > دستورهای برنامه‌نویسی PLC

دستورهای برنامه‌نویسی PLC سه‌گانه‌اند:
اصلی: توابعی که در تمام بلوک‌ها قابل اجرا هستند به غیر از جمع و تفریق تمام دستورها می‌توان به عنوان ورودی و خروجی به کار روند.
تکمیلی: توابع ترکیبی نظیر دستورات جابجایی، توابع، Shift و نیز دستورات تبدیلی می‌باشد؛ که فقط در FB و حالت STL قابل اجرا هستند.
سامانه: شامل دستورهایی است که مستقیماً روی سیستم‌عامل PLC تأثیر دارد و مخصوص برنامه نویسان حرفه‌ای است.
این دستورها ممکن است در PLCهای شرکت‌های مختلف متفاوت باشند.
دستور AN برای خواندن صفر:
همان‌طور که گفته شد، سه روش برای نمایش برای برنامهٔ PLC وجود دارد:
LAD یا Ladder یا
CSF یا Control System Flowchart یا
STL یا Statement List
در روش LAD و CSF برای خواندن عدد صفر از ورودی از دستور AN استفاده می‌شود؛ که عبارت «صفر یا یک» در ورودی را به عبارت معکوسش یعنی «یک یا صفر» تبدیل می‌کند.
وقتی دکمهٔ فشار فشرده یا کلیدی روشن گردد بر حسب نوع کانتاکت عددی که در ورودی و خروجی ظاهر می‌شود متفاوت است:
| نوع کانتاکت | در ورودی | در خروجی |
| --- | --- | --- |
| کانتاکت در حالت عادی باز (NO) | ۱ | ۰ |
| کانتاکت در حالت عادی بسته (NC) | ۰ | ۱ |
مثال: برنامه‌ای بنویسید که با دو کلید A و B که به صورت سری به هم وصل هستند خروجی را روشن و خاموش نمایند.
A I ۰٫۲= Q 0.0
BE
فلگ:
هر فلگ یک بیت از حافظه PLC می‌باشد که آن را می‌توان معادل خروجی مجازی دانست. این بیت مانند هر بیت از حافظه می‌تواند دو مقدار «صفر» یا «یک» بگیرد با این تفاوت که فلگ‌ها حافظه‌های موقتی هستند. آدرس دهی فلگ‌ها همانند ورودی‌ها و خروجی‌ها است.
کاربرد فلگ‌ها در برنامه‌هایی است که عملگر "OR" قبل از عملگر "AND" بیاید و با حذف پرانتزها می‌توان از فلگ استفاده کرد. البته گاهی ممکن است برنامه طولانی‌تر شود.
مثال:
O I ۱٫۴
O I ۱٫۵= F 6.0
O I 2.0
O I ۲٫۱= F 6.1
A F 6
A F ۶٫۱= Q 3.0
BE
بیت RLO:
PLC در اجرای هر خط از برنامه مقدار حاصل از اعمال منطقی را در بیتی به نام RLO به معنی نتیجهٔ عملیات منطقی (result of logic operation) قرار می‌دهد.
در اجرای هر سطر بعدی این مقدار با عملوند بعدی طبق برنامه ترکیب و مقدار حاصل در RLO جایگزین می‌شود.
این عمل تا رسیدن به خط دستور هم‌ارزی (=) ادامه پیدا می‌کند. در این هنگام RLO مقدار خود را از دست داده و پذیرای مقدار جدید می‌شود.
فلیپ فلاپ‌ها:
فلیپ فلاپ شامل دو ورودی set و reset می‌باشد. در کل دو نوع فلیپ فلاپ وجود دارد:
فلیپ فلاپ SR
فلیپ فلاپ RS
تفاوت بین فلیپ فلاپ‌های فوق در ارجحیت ورودی‌های set و reset است. مثال:
A I ۱٫۱
S Q ۲٫۰
A I ۱٫۲
R Q ۲٫۰
BE
A I 1.2
R Q 2.0
A I 1.1
S Q 2.0
BE
در فلیپ فلاپ‌های SR هنگامی که ورودی R در حالت «صفر» باشد کافی است در یک لحظه ورودی S در حالت «یک» قرار بگیرد تا خروجی به صورت پایدار «یک» شود این وضعیت مادامی که R به صورت «صفر» است باقی خواهد ماند. در این فلیپ فلاپ اگر هر دو ورودی برابر «یک» باشد ارجحیت با دستور دوم است. چرا که دستور دوم ناقض دستور اول است و PLC دستورات را سطر به سطر اجرا می‌کند. با این بیان می‌توان اصل کلی زیر را نتیجه گرفت: هر دستوری که به خط پایان برنامه (BE) نزدیک تر باشد از نظر اجرا ارجح تر است.
دستور NOP ۰ در فلیپ‌فلاپ:
در PLCهای زیمنس، هر گاه بخواهیم از خروجی یک فلیپ فلاپ یا بخشی از برنامه هیچ استفاده‌ای نکنیم از دستور «NOP ۰» استفاده می‌نماییم. مثال:
A I ۲٫۳
S Q ۳٫۴
A I ۲٫۴
R Q ۳٫۵
با «NOP ۰» می‌توان خروجی یک فلیپ فلاپ را در یک فلگ قرار داد. مثال:
A I ۰٫۱
S F ۲٫۷
A I ۰٫۷
R F ۲٫۷
A F ۲٫۷
Q 3.4
BE
دستورات JU و JC:
همان‌طور که گفته شد نتیجه عملکرد دستورات هر خط در بیت خاصی با نام RLO ذخیره می‌شود که دستورات می‌توانند به بیت RLO وابسته باشند یا نه. اگر دستورات به RLO وابسته نباشند غیر شرطی خواهند بود.
دستور JU بدون وجود هیچ گونه شرطی پرش یا انقال را انجام می‌دهد این پرش ممکن است از یک بلوک به بلوک دیگر یا از یک سطر به سطر دیگر همان بلوک انجام گیرد.
دستور JC وابسته به بیت RLO می‌باشد و مانند دستور قبل عمل پرش را انجام می‌دهد.
مثال: برنامه‌ای که با فشردن یک کلید PB ۱۸ و در صورت غیرفعال نمودن همان کلید PB ۱۹ را اجرا نماید.
با اندکی تفکر درمی یابیم که چنین برنامه‌ای را باید در «OB ۱» نوشت، زیرا همان‌طور که گفته شد ساختار کلی سامانه در این بلوک شکل می‌پذیرد. همچنین باید از دستور پرش شرطی استفاده نمود. اگر فرض کنیم کلید فشرده شده I ۰٫۰ باشد:
A I ۰٫۰
JC PB 0.0
AN I ۰٫۰
JC PB 19
BE
دستورهای بارگذاری و انتقال:
برای بارگذاری از دستور"L" و برای انتقال از دستور "T" استفاده می‌شود. دستورات L و T غیر شرطی‌اند. زیرا به RLO وابسته نیستند. جهت مبادله مقادیر ورودی‌ها، خروجی‌ها یا فلگ‌ها نیاز به یک حافظه واسط می‌باشد که در قسمی بنام انباره یا آکومولاتور (Accumulator) موجود است. این حافظه از نوع رجیستر و شانزده بیتی است که معمولاً شامل شانزده بیت یا دو بایت با ارزش بالا و پایین می‌باشد.
دستور "L": برای بارگذاری اطلاعات از این دستور دستور "L" استفاده می‌نماییم که محتویات یک بایت فراخوانی و در انبارک جایگزین می‌شود.
L IB 4
L KD 5
L KH 3
L FY ۵
...
اگر PLC ما دو انبارک داشته باشد با دستور «L IW ۴» شانزده بیت موجود در کلمه ورودی شماره چهار را به «ACCUME ۱» می‌فرستد. اگر در همین حالت «L IW ۶» اجرا شود اطلاعات «ACCUME ۱» به «ACCUME ۲» می‌رود و «IW ۶» به «ACCUME ۱» منتقل می‌شود.
دستور "T": برای انتقال اطلاعاتی که در انبارک‌ها موجود است به خروجی‌ها یا فلگ‌ها از این دستور استفاده می‌شود. مثلاً در برنامهٔ زیر با اجرای دستور اول محتویات «ACCUME 1» به کلمه «خروجی هشت» کپی می‌شود.
T QW 8
T FW ۵۲