آموزش زبان STL در PLC

سطح دوره جامع

زبان برنامه‌نویسی Statement List که به اختصاربا STL شناخته می‌شود، یکی از زبان‌های برنامه‌نویسی استاندارد جهانی برای PLC می‌باشد. این زبان جزء یکی از پنچ زبان پرکاربرد و قدیمی برنامه‌نویسی PLC می‌باشد، که می‌توان گفت بدون آموزش زبان STL، دانش برنامه‌نویسی کامل نخواد شد. این زبان در بسیاری از PLCهای معتبر قابل اجرا است ولی بیشترین کاربرد آن در PLC زیمنس می‌باشد. درنتیجه جهت یادگیری این زبان بهترین انتخاب شرکت در دوره‌های آموزش PLC زیمنس است. در این مقاله سعی بر تشریح جایگاه STL، ساختار حافظه CPU و دستورات برنامه‌نویسی به وسیله این زبان را داریم.

معرفی زبان برنامه‌نویسی STL

زبان STL یکی از زبان‌های برنامه‌نویسی استاندارد PLC است که بر اساس دستورهای متنی و خط به خط نوشته می‌شود. این زبان شباهت زیادی به زبان اسمبلی (Assembly) دارد و به برنامه‌نویس این امکان را می‌دهد که با جزئیات دقیق روی عملیات کنترلی و منطقی کنترل داشته باشد. برخلاف زبان‌های گرافیکی مانند Ladder Diagram یا Function Block Diagram که بیشتر بصری هستند، STL  به صورت متنی و کد محور نوشته می‌شود، این ویژگی باعث می‌شود مهندسان بتوانند ساختار برنامه را بهتر درک کنند و در پروژه‌های پیچیده، کنترل و بهینه‌سازی دقیق‌تری روی فرآیندها اعمال نمایند. همچنین درآموزش PLC استفاده از این زبان، کمک بزرگی در درک بهتر برنامه‌نویسی برندهای مختلف PLC دارد. از جمله مزایای آموزش زبان STL می‌توان به امکان کنترل دقیق و جزئی بر روی دستورات داده شده اشاره نمود. همچنین به دلیل ساختار برنامه‌نویسی خط به خط، سرعت بالایی در اجرای دستورات دارد. در بین زبان‌های برنامه‌نویسی PLC، این زبان در پایین‌ترین و ابتدایی‌ترین سطوح ماشین قرار دارد، به طوریکه زبان‌های برنامه‌نویسی دیگر در نهایت به این زبان تبدیل شده و به CPU دانلود می‌شوند.

ساختار زبان برنامه‌نویسی STL

زبان STL بر پایه نوشتن دستورات خطی و متوالی طراحی شده است. هر خط برنامه یک دستور مشخصی را اجرا می‌کند و پردازشگر PLC این دستورات را از ابتدا تا انها، خط به خط اجرا می‌کند. جهت آموزش زبان STL نیاز به آشنایی با بخش‌های مختلف این زبان می‌باشید، که در ادامه آن‌ها را معرفی می‌کنیم.

  • تعاریف: بخشی که مخصوص معرفی متغییرها، آدرس‌ها و داده‌ها می‌باشد.
  • نتورک بلوک: مخصوص تقسیم کد به شبکه‌ها جهت سازماندهی بهتر می‌باشد.
  • دستورالعمل‌ها: مجموعه‌ای از دستورات منطقی، ریاضی و کنترلی که عملیات را اجرا می‌کنند.

همچنین می‌توان گفت که دستورات STL از چهار بخش تشکیل شده است که در پایین مشاهده می‌نمایید. در ادامه به توضیح مختصر هر یک از این بخش‌ها می‌پردازیم.

  • Label: جهت دستورات پرش استفاده می‌شود.
  • Command: مربوط به دستورات نوشته شده.
  • Operand: این بخش می‌تواند به آدرس اطلاق داده شود.
  • Comment: توضیحات مورد نیاز دستور نوشته می‌شود.
ساختار برنامه نویسی STL

برنامه‌نویسی و فانکشن بلوک STL

در هر CPU تعدادی فانکشن و فانکشن بلوک وجود دارد که از نوع سیستمی می‌باشند و به اختصار به SFC و SFB شناخته می‌شوند. این فانکشن‌ها در حافظه CPU ذخیره می‌شوند، و قابل پاک شدن نیستند و با ری‌استارت و یا قطع‌و‌وصلی پاک نمی‌شوند. هر چه CPU حجم حافظه بیشتری داشته باشد، از فانکشن‌های بیشتر پشتیبانی می‌کند. جهت مشاهده لیست این فانکشن‌های سیستمی می‌توان با استفاده از پنجره Module Information به سربرگ Perfprmance Data رفته و نمونه دستورات سیسمی ذخیره شده را پیدا نمود. تمام فانکشن‌های سیستمی در کتابخانه نرم‌افزار در زیر مجموعه Standrard Library مانند عکس زیر قرار دارند.

فانکشن بلوک STL

در پروژه‌های صنعتی، سه گروه دستوری عملیات‌های منطقی، دستورات مقایسه‌ای و دستورات ریاضی، تقریبا هشتاد درصد کد‌های STL را تشکیل می‌دهند و جهت آموزش زبان STL، پیشنهاد می‌شود از این دستورات استفاده شود. در ادامه به بررسی و معرفی این سه گروه فانکشن می‌پردازیم.

دستورات Bit Logic در STL

دستورات Bit Logic پایه و اساس هر برنامه PLC را تشکیل می‌دهند و امکان کار با ورودی‌ها، خروجی‌ها و بیت‌های حافظه را فراهم می‌کنند .در زبان STL دستورات Bit Logic جهت کنترل وضعیت بیت‌ها و انجام عملیاتی منطقی بین آن‌ها به کار می‌رود. این دستورات عملیات را روی یک بیت انجام می‌دهند. با نوشتن این دستورات، هر خط بر روی وضعیت RLO که نتیجه منطقی عملیات می‌باشد، تاثیر می‌گذرد. در ادامه به معرفی این دستورات می‌پردازیم.

نام نام کامل (Full Name) عملکرد
A AND انجام عمل منطقی AND بین RLO و بیت انتخاب‌شده
AN AND NOT معکوس کردن بیت انتخاب‌شده و سپس AND با RLO
O OR انجام عمل منطقی OR بین RLO و بیت انتخاب‌شده
ON OR NOT معکوس کردن بیت انتخاب‌شده و سپس OR با RLO
X Exclusive OR (XOR) انجام عمل منطقی XOR بین RLO و بیت انتخاب‌شده
XN Exclusive OR NOT معکوس کردن بیت انتخاب‌شده و سپس XOR با RLO
NOT NOT معکوس کردن RLO فعلی
S SET روشن کردن (Set) یک بیت مشخص
R RESET خاموش کردن (Reset) یک بیت مشخص
= Assign قرار دادن مقدار RLO در آدرس مقصد
A( … ) AND Block شروع یک بلوک شرطی AND
AN( … ) AND NOT Block شروع بلوک شرطی AND با بیت معکوس
O( … ) OR Block شروع یک بلوک شرطی OR
ON( … ) OR NOT Block شروع بلوک شرطی OR با بیت معکوس
) Close Block پایان دادن به بلوک شرطی (بستن پرانتز)
FP Positive Edge Detection تشخیص لبه مثبت سیگنال
FN Negative Edge Detection تشخیص لبه منفی سیگنال
SPB Unconditional Jump پرش بدون شرط به برچسب مشخص‌شده
SPBN Jump if Not (RLO=0) پرش اگر RLO صفر باشد
SPBNB Jump if Not with Block پرش اگر RLO صفر باشد (با عبور از بلوک)
SPBB Jump if (RLO=1) پرش اگر RLO یک باشد
=I Assign to Input قرار دادن RLO در ورودی مشخص
=Q Assign to Output قرار دادن RLO در خروجی مشخص
=M Assign to Memory Bit قرار دادن RLO در بیت حافظه مشخص
L Load بارگذاری مقدار یا بیت در آکومولاتور برای عملیات بعدی

دستورات مقایسه‌ای زبان برنامه‌نویسی STL

دستورات مقایسه‌ای جهت تحلیل داده‌های عددی و تصمیم‌گیری‌های شرطی در آموزش زبان STL ضروری هستند. در زبان STL، جهت مقایسه دو مقدار عددی یا بیتی از دستورات Comparison Instruction یا مقایسه‌ای استفاده می‌شود. با استفاده از این دستورات می‌توان به تصمیم‌گیری و تنیجه‌گیری اطلاعات پرداخت. در ادامه به معرفی دستورات مقایسه‌ای در زبان STL می‌پردازیم.

نام نام کامل (Full Name) عملکرد
==I Equal (Integer) مقایسه برابری دو عدد صحیح (Integer)
==D Equal (Double Integer) مقایسه برابری دو عدد صحیح 32 بیتی
==R Equal (Real) مقایسه برابری دو عدد اعشاری (Real)
<>I Not Equal (Integer) بررسی نابرابری دو عدد صحیح
<>D Not Equal (Double Integer) بررسی نابرابری دو عدد صحیح 32 بیتی
<>R Not Equal (Real) بررسی نابرابری دو عدد اعشاری
>I Greater Than (Integer) بررسی بزرگ‌تر بودن یک عدد صحیح از دیگری
>D Greater Than (Double Integer) بررسی بزرگ‌تر بودن یک عدد صحیح 32 بیتی از دیگری
>R Greater Than (Real) بررسی بزرگ‌تر بودن یک عدد اعشاری از دیگری
<I Less Than (Integer) بررسی کوچک‌تر بودن یک عدد صحیح از دیگری
<D Less Than (Double Integer) بررسی کوچک‌تر بودن یک عدد صحیح 32 بیتی از دیگری
<R Less Than (Real) بررسی کوچک‌تر بودن یک عدد اعشاری از دیگری
>=I Greater or Equal (Integer) بررسی بزرگ‌تر یا مساوی بودن یک عدد صحیح
>=D Greater or Equal (Double Integer) بررسی بزرگ‌تر یا مساوی بودن یک عدد صحیح 32 بیتی
>=R Greater or Equal (Real) بررسی بزرگ‌تر یا مساوی بودن یک عدد اعشاری
<=I Less or Equal (Integer) بررسی کوچک‌تر یا مساوی بودن یک عدد صحیح
<=D Less or Equal (Double Integer) بررسی کوچک‌تر یا مساوی بودن یک عدد صحیح 32 بیتی
<=R Less or Equal (Real) بررسی کوچک‌تر یا مساوی بودن یک عدد اعشاری

دستورات محاسبات ریاضی در STL

  1. دستورات محاسباتی امکان انجام عملیات ریاضی پیچیده و کنترل فرآیندهای صنعتی را میسر می‌کنند. در آموزش زبان STL جهت انجام محاسبات ریاضی بر روی داده‌ها از دستورات Arithmetic استفاده می‌شود. این داده‌ها می‌توانند عدد صحیح، عدد 32 بیتی و عدد اعشاری باشد. نوع داده با پسوند دستور به شکل زیر نمایش داده می‌شود. جهت مشاهده تمامی دستورات محاسباتی در STL به جدول زیر مراجعه نمایید.
  • I = عدد صحیح ۱۶ بیتی (Integer)
  • D = عدد صحیح ۳۲ بیتی (Double Integer)
  • R = عدد اعشاری (Real)
نام نام کامل (Full Name) عملکرد
+I Add Integer جمع دو عدد صحیح 16 بیتی
+D Add Double Integer جمع دو عدد صحیح 32 بیتی
+R Add Real جمع دو عدد اعشاری (Real)
-I Subtract Integer تفریق دو عدد صحیح 16 بیتی
-D Subtract Double Integer تفریق دو عدد صحیح 32 بیتی
-R Subtract Real تفریق دو عدد اعشاری
*I Multiply Integer ضرب دو عدد صحیح 16 بیتی
*D Multiply Double Integer ضرب دو عدد صحیح 32 بیتی
*R Multiply Real ضرب دو عدد اعشاری
/I Divide Integer تقسیم دو عدد صحیح 16 بیتی
/D Divide Double Integer تقسیم دو عدد صحیح 32 بیتی
/R Divide Real تقسیم دو عدد اعشاری
MOD Modulus محاسبه باقی‌مانده تقسیم
INC Increment افزایش یک واحد به عدد
DEC Decrement کاهش یک واحد از عدد
NEG Negate معکوس کردن علامت عدد (مثبت به منفی یا بالعکس)
ABS Absolute Value محاسبه قدر مطلق عدد
SQRT Square Root محاسبه ریشه دوم عدد (فقط برای Real)
LN Natural Logarithm محاسبه لگاریتم طبیعی عدد
EXP Exponential محاسبه توان e به عدد داده‌شده
SIN Sine محاسبه سینوس (زاویه به رادیان)
COS Cosine محاسبه کسینوس (زاویه به رادیان)
TAN Tangent محاسبه تانژانت (زاویه به رادیان)

برنامه‌نویسی با فانکشن‌های IEC

فانکشن‌های این زبان‌ برنامه‌نویسی که با IEC شناخته می‌شود، جهت عملیات‌های کنترلی و محاسباتی پیچیده و دشوار مورد استفاده قرار می‌گیرند. در واقع این توابع مجموعه‌ای از فانکشن و فانکشن بلوک‌های آماده هستند که در همه زبان‌های برنامه‌نویسی PLC زیمنس به کار گرفته می‌شوند. این فانکشن‌ها سیستمی نیستند و بایستی ابتدا خود فانکشن به CPU دانلود شوند و سپس برنامه دانلود بشود تا منجر به توقف نشود. فانکشن‌های IEC را با توجه به عملکردشان می‌توان به سه دسته‌ی مربوط به تاریخ و زمان، مربوط به رشته‌های استرینگ و مربوط به متغییرهای عددی، تقسیم نمود. درواقع  IEC Functions استانداردهای بین‌المللی را در برنامه‌نویسی PLC تضمین می‌کنند و قابلیت استفاده چند زبانه را فراهم می‌آورند. لیست کامل این فانکشن‌ها را در جدول زیر مشاهده می‌فرمایید.

نام فانکشن شرح به فارسی
FC3 D_TOD_DT ترکیب تاریخ و زمان روز به یک مقدار تاریخ-زمان
FC6 DT_DATE استخراج تاریخ از مقدار تاریخ-زمان
FC7 DT_DAY استخراج روز هفته از مقدار تاریخ-زمان
FC8 DT_TOD استخراج زمان روز از مقدار تاریخ-زمان
FC33 S5TI_TIM تبدیل نوع داده S5TIME به TIME
FC40 TIM_S5TI تبدیل نوع داده TIME به S5TIME
FC16 L_STRNG تبدیل نوع داده LONGINT به رشته
FC5 DI_STRNG تبدیل نوع داده DINT به رشته
FC30 R_STRNG تبدیل نوع داده REAL به رشته
FC38 STRNG_I تبدیل رشته به نوع داده INT
FC37 STRNG_DI تبدیل رشته به نوع داده DINT
FC39 STRNG_R تبدیل رشته به نوع داده REAL
FC9 EQ_DT مقایسه دو مقدار تاریخ-زمان برای برابری
FC12 GE_DT مقایسه مقدار تاریخ-زمان برای بزرگ‌تر یا مساوی بودن
FC14 GT_DT مقایسه مقدار تاریخ-زمان برای بزرگ‌تر بودن
FC18 LE_DT مقایسه مقدار تاریخ-زمان برای کوچکتر یا مساوی بودن
FC23 LT_DT مقایسه مقدار تاریخ-زمان برای کوچکتر بودن
FC28 NE_DT مقایسه مقدار تاریخ-زمان برای نامساوی بودن
FC10 EQ_STRNG مقایسه رشته‌ها برای برابری
FC13 GE_STRNG مقایسه رشته‌ها برای بزرگ‌تر یا مساوی بودن
FC15 GT_STRNG مقایسه رشته‌ها برای بزرگ‌تر بودن
FC19 LE_STRNG مقایسه رشته‌ها برای کوچکتر یا مساوی بودن
FC24 LT_STRNG مقایسه رشته‌ها برای کوچکتر بودن
FC29 NE_STRNG مقایسه رشته‌ها برای نامساوی بودن
FC21 LEN طول متغیر رشته‌ای
FC20 LEFT بخش سمت چپ یک متغیر رشته‌ای
FC32 RIGHT بخش سمت راست یک متغیر رشته‌ای
FC26 MID بخش میانی یک متغیر رشته‌ای
FC2 CONCAT ترکیب دو متغیر رشته‌ای
FC17 INSERT وارد کردن در یک متغیر رشته‌ای
FC4 DELETE حذف در یک متغیر رشته‌ای
FC31 REPLACE جایگزینی در یک متغیر رشته‌ای
FC11 FIND جستجو در یک متغیر رشته‌ای
FC1 AD_DT_TM افزودن مدت زمان به یک زمان
FC35 SB_DT_TM کم کردن مدت زمان از یک زمان
FC34 SB_DT_DT کم کردن دو مقدار زمانی
FC22 LIMIT محدودیت
FC25 MAX انتخاب حداکثر مقدار
FC27 MIN انتخاب حداقل مقدار
FC36 SEL انتخاب دودویی

نتیجه‌گیری

یادگیری دستورات گفته شده و فهم عمیق نحوه کارکرد آنها، پایه‌ای اساسی برای توسعه برنامه‌های قابل اعتماد و بهینه در محیط‌های صنعتی است. آموزش زبان STL با توجه به سادگی نسبی و قدرت انعطاف‌پذیرش، گزینه‌ای مناسب برای برنامه‌نویسانی است که می‌خواهند کنترل دقیقی روی روند اجرای برنامه داشته باشند. در نهایت، تسلط بر این دستورات و مفاهیم، مهندسان را قادر می‌سازد تا سیستم‌های اتوماسیون را به شکل بهینه و قابل اطمینان طراحی، پیاده‌سازی و عیب‌یابی کنند.

دانلود منابع آموزشی زبان STL

اطلاعات جمع‌آوری شده در این مقاله بر اساس دانش مهندسین نیک صنعت در مورد PLC و زبان STL می‌باشد. همچنین جداول دستورات پرتکرار با توجه به استانداردهای بین‌المللی IEC 61131-3 و منابع معتبرتهیه شده است. جهت مشاهده منابع علمی و مستندات فنی می‌تواند از طریق لینک‌های زیر اقدام به دانلود آن‌ها نمایید.

جزوه فارسی آموزش برنامه‌نویسی PLC به زبان STL

کتاب اتوماسیون کردن با STEP 7 به کمک زبان STL و SCL

منوال رسمی STL برای S7-300/S7-400 Siemens

تشریح زبان‌های استاندارد IEC 61131-3 در سیستم SIMATIC S7

تشریح زبان‌های استاندارد IEC 61131-3 در سیستم STEP 7

بخش STL در راهنمای TIA Portal برای S7-1500:

راهنمای کلی برنامه‌نویسی با STEP 7

نظرات کاربران

اولین نفری باشید که دیدگاهی را ارسال می کنید برای “آموزش زبان STL در PLC”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید

سبد خرید شما خالی است.