برنامهنویسی PLC فقط به Ladder Diagram محدود نمیشود. در پروژههایی که محاسبات، شرطهای متعدد، الگوریتمها یا منطقهای نسبتاً پیچیده داریم، نمایش تمام منطق بهصورت Ladder میتواند برنامه را طولانی و نگهداری آن را دشوار کند.
یکی از زبانهایی که برای چنین شرایطی در محیط ISPSoft در دسترس است، Structured Text یا ST است؛ یک زبان متنی برای برنامهنویسی کنترلرهای صنعتی که ساختار آن برای افرادی که سابقه برنامهنویسی دارند بسیار آشناست.
در این راهنما با Structured Text در ISPSoft آشنا میشویم و از ساختار اولیه دستورات تا شرطها، حلقهها، Function Blockها و یک مثال عملی را بررسی میکنیم.
ISPSoft چیست؟
ISPSoft نرمافزار برنامهنویسی PLCهای Delta است که برای ایجاد، ویرایش، مدیریت و عیبیابی پروژههای PLC استفاده میشود.
یکی از مزیتهای مهم ISPSoft نسبت به محیطهای قدیمیتر، امکان ساخت پروژههای ساختاریافتهتر و استفاده از قابلیتهایی مانند Variable Declaration، Task، Program و Function Block است. Delta نیز ISPSoft را برای توسعه پروژههای بزرگتر و استفاده مجدد از Function Blockها مناسبتر معرفی میکند.
بسته به خانواده کنترلر، ISPSoft زبانهای مختلفی مانند موارد زیر را پشتیبانی میکند:
- Ladder Diagram یا LD
- Structured Text یا ST
- Function Block Diagram یا FBD
- Sequential Function Chart یا SFC
- و در برخی خانوادهها CFC و C
نکته مهم این است که همه این زبانها روی تمام CPUهای Delta قابل استفاده نیستند و باید سازگاری زبان برنامهنویسی با PLC مورد نظر بررسی شود.
Structured Text چیست؟
Structured Text (ST) یک زبان متنی برای برنامهنویسی کنترلرهای صنعتی است.
برخلاف Ladder که منطق برنامه را با Contact، Coil و بلوکهای گرافیکی نمایش میدهد، در Structured Text منطق کنترل با دستورهای متنی نوشته میشود.
برای مثال، یک انتساب ساده میتواند به شکل زیر باشد:
MotorSpeed := SetPoint;یا یک شرط:
IF StartCommand THEN
MotorRun := TRUE;
ELSE
MotorRun := FALSE;
END_IF;اگر با زبانهای برنامهنویسی متداول کار کرده باشید، منطق این ساختار برایتان آشنا خواهد بود.
Structured Text مخصوصاً زمانی مفید است که برنامه شامل محاسبات، مقایسههای متعدد، الگوریتمها یا تصمیمگیریهای چندمرحلهای باشد.
آیا همه PLCهای Delta از Structured Text پشتیبانی میکنند؟
خیر.
این نکته هنگام کار با ISPSoft بسیار مهم است.
ISPSoft از خانوادههای مختلف PLC دلتا پشتیبانی میکند، اما وجود ST در خود نرمافزار به این معنی نیست که هر CPU دلتا بتواند برنامه ST را اجرا کند.
طبق جدول زبانهای برنامهنویسی در User Manual رسمی ISPSoft، پشتیبانی زبانها بین خانوادههای مختلف متفاوت است. برای نمونه، خانوادههای AS و تعدادی از خانوادههای AH از Structured Text پشتیبانی میکنند؛ در جدول فعلی Manual، برای خانواده عمومی DVP در ستون ST مشخصاً ES3 ذکر شده است.
بنابراین قبل از ایجاد پروژه ST:
- مدل دقیق CPU را مشخص کنید.
- Manual همان CPU را بررسی کنید.
- جدول Programming Language Support در ISPSoft را کنترل کنید.
- سپس نوع POU و زبان برنامهنویسی را انتخاب کنید.
این کار جلوی یکی از اشتباهات رایج کاربران ISPSoft را میگیرد: فرض اینکه هر PLC قابل برنامهریزی با ISPSoft الزاماً از تمام زبانهای ISPSoft پشتیبانی میکند.
ساختار برنامه Structured Text در ISPSoft

برنامه ST از مجموعهای از Expressionها، Statementها، Variableها و Operatorها تشکیل میشود.
در پروژههای واقعی، خوانایی کد اهمیت زیادی دارد. بنابراین بهتر است برنامه را از همان ابتدا به بخشهای منطقی تقسیم کنید و از نامهای مشخص برای Variableها استفاده کنید.
برای مثال:
TankLevel
PumpCommand
HighLevelAlarm
TargetTemperature
MotorSpeedاز نامهایی مانند Var1 یا Temp2 فقط زمانی استفاده کنید که واقعاً مفهوم مشخصی داشته باشند.
Variable چیست؟
Variable متغیری است که برای نگهداری یا نمایش یک مقدار در برنامه استفاده میشود.
مثلاً:
MotorRunمیتواند یک متغیر Boolean باشد و تنها دو وضعیت TRUE و FALSE داشته باشد.
در مقابل:
MotorSpeedممکن است یک مقدار عددی باشد.
تعریف درست نوع داده اهمیت زیادی دارد؛ زیرا نوع داده مشخص میکند چه مقادیری میتوان در متغیر ذخیره کرد و چه عملیاتی روی آن قابل انجام است.
Expression چیست؟
Expression یا عبارت، ترکیبی از مقادیر، متغیرها و عملگرهاست که یک نتیجه ایجاد میکند.
مثلاً:
Pressure > MaxPressureنتیجه این عبارت Boolean است.
یا:
Value1 + Value2یک عملیات محاسباتی انجام میدهد.
میتوان Expressionها را در شرطها یا محاسبات پیچیدهتر استفاده کرد.
عملگر انتساب := در Structured Text
یکی از اولین مواردی که در ST باید یاد بگیرید، تفاوت Assignment و Comparison است.
برای قرار دادن یک مقدار داخل متغیر از عملگر:
:=استفاده میشود.
مثلاً:
MotorSpeed := 1000;یعنی مقدار 1000 در MotorSpeed قرار بگیرد.
یا:
OutputValue := InputValue;یعنی مقدار InputValue به OutputValue اختصاص داده شود.
این مفهوم با بررسی برابر بودن دو مقدار متفاوت است.
شرطنویسی با IF در Structured Text
یکی از کاربردیترین ساختارهای ST دستور IF است.
فرض کنید میخواهیم اگر فرمان Start فعال بود، موتور روشن شود:
IF StartCommand THEN
MotorRun := TRUE;
END_IF;اگر بخواهیم وضعیت مخالف را نیز مشخص کنیم:
IF StartCommand THEN
MotorRun := TRUE;
ELSE
MotorRun := FALSE;
END_IF;برای شرایط بیشتر میتوان منطق را توسعه داد.
مثلاً فرض کنید موتور فقط زمانی اجازه روشن شدن داشته باشد که فرمان Start فعال و هیچ خطایی موجود نباشد:
IF StartCommand AND NOT Fault THEN
MotorRun := TRUE;
ELSE
MotorRun := FALSE;
END_IF;در پروژه واقعی معمولاً همین Interlockها اهمیت بسیار زیادی دارند.
استفاده از CASE در Structured Text
وقتی یک ماشین چند وضعیت دارد، استفاده از تعداد زیادی IF ممکن است خوانایی برنامه را کاهش دهد.
در چنین شرایطی CASE میتواند گزینه مناسبی باشد.
فرض کنید ماشین چهار State دارد:
CASE MachineState OF
0:
MotorRun := FALSE;
1:
MotorRun := TRUE;
2:
MotorRun := FALSE;
Alarm := TRUE;
3:
MotorRun := FALSE;
Alarm := FALSE;
END_CASE;برای مثال میتوان Stateها را به این شکل در نظر گرفت:
- 0 = Stop
- 1 = Run
- 2 = Fault
- 3 = Reset
این نوع ساختار در طراحی State Machine برای ماشینآلات صنعتی بسیار کاربردی است.
حلقه FOR در Structured Text
Structured Text امکان استفاده از Loop را نیز فراهم میکند.
برای مثال:
FOR i := 1 TO 10 DO
Total := Total + Values[i];
END_FOR;در این مثال تعدادی مقدار پشت سر هم پردازش میشوند.
این قابلیت هنگام کار با Arrayها و پردازش مجموعهای از دادهها مفید است.
حلقه WHILE
در WHILE اجرای حلقه تا زمانی ادامه پیدا میکند که شرط برقرار باشد.
ساختار کلی:
WHILE Condition DO
(* Program *)
END_WHILE;استفاده از WHILE در PLC باید با دقت انجام شود.
PLC برنامه را بهصورت چرخهای اجرا میکند و ایجاد حلقهای که مدت زیادی CPU را درگیر کند یا شرط خروج مناسبی نداشته باشد، میتواند Scan Time را تحت تأثیر قرار دهد.
بنابراین Loop در PLC نباید دقیقاً با همان ذهنیتی استفاده شود که ممکن است در یک برنامه کامپیوتری معمولی داشته باشیم.
حلقه REPEAT
ساختار دیگری که در ST وجود دارد REPEAT است.
تفاوت مهم آن با WHILE این است که بدنه REPEAT قبل از بررسی شرط خروج حداقل یک بار اجرا میشود.
ساختار کلی آن:
REPEAT
(* Program *)
UNTIL Condition
END_REPEAT;وجود FOR، WHILE و REPEAT در Structured Text رسمی ISPSoft مستند شده است.
Comment نویسی در برنامه ST
یکی از سادهترین کارهایی که کیفیت یک پروژه PLC را به شکل محسوسی افزایش میدهد، نوشتن Comment مناسب است.
مثلاً:
(* Start main conveyor *)
ConveyorRun := StartCommand;اما Comment نباید صرفاً چیزی را تکرار کند که از خود کد مشخص است.
مثلاً به جای:
(* Set motor to true *)
Motor := TRUE;بهتر است دلیل تصمیم مشخص شود:
(* Conveyor permitted only after safety interlocks are confirmed *)در پروژهای که چند ماه بعد باید عیبیابی شود، این تفاوت بسیار ارزشمند است.
Function و Function Block در ISPSoft
یکی از مزایای مهم برنامهنویسی ساختاریافته، جلوگیری از تکرار بیدلیل منطق برنامه است.
فرض کنید در یک خط تولید چند موتور داریم که منطق کنترلی مشابهی دارند.
به جای اینکه منطق Start، Stop، Fault و Interlock را بارها تکرار کنیم، میتوان بخش مناسبی از منطق را به شکل ساختاریافته و قابل استفاده مجدد طراحی کرد.
Function Block در چنین معماریهایی بسیار کاربردی است.
مثلاً یک Function Block فرضی برای موتور میتواند ورودیهایی مانند:
Start
Stop
Fault
Enableو خروجیهایی مانند:
RunCommand
Running
Alarmداشته باشد.
سپس همان بلوک را میتوان برای چند تجهیز استفاده کرد.
ISPSoft از Function Block و توسعه ماژولار پروژه پشتیبانی میکند و Delta نیز قابلیت استفاده مجدد از Function Block را از مزیتهای ISPSoft معرفی کرده است.
ساخت اولین برنامه Structured Text در ISPSoft
برای یادگیری بهتر، یک پروژه ساده در نظر میگیریم.
هدف این پروژه کنترل یک پمپ بر اساس فرمان اپراتور و وضعیت سطح مخزن است.
منطق مورد نظر:
- اپراتور فرمان Start میدهد.
- اگر سطح مخزن مناسب باشد، پمپ روشن میشود.
- اگر High Level فعال شود، پمپ متوقف میشود.
- در صورت Fault نیز پمپ اجازه کار ندارد.
مرحله ۱: ایجاد پروژه
ISPSoft را اجرا کرده و یک پروژه جدید ایجاد کنید.
در هنگام ایجاد پروژه، CPU یا Controller مورد استفاده را مطابق سختافزار واقعی انتخاب کنید.
انتخاب CPU اهمیت زیادی دارد زیرا قابلیتها، Instructionها و زبانهای قابل استفاده میتوانند به مدل کنترلر وابسته باشند.
مرحله ۲: ایجاد Program یا POU
در ساختار پروژه یک Program/POU مناسب ایجاد کرده و در صورتی که CPU انتخابشده از آن پشتیبانی میکند، زبان Structured Text (ST) را انتخاب کنید.
در ISPSoft میتوان پروژه را به بخشهای منطقی مختلف تقسیم کرد؛ این قابلیت در پروژههای بزرگ باعث میشود نگهداری برنامه سادهتر شود.
Manual رسمی ISPSoft بخش مستقلی برای ایجاد Structured Text و کار با محیط ST ارائه کرده است.
مرحله ۳: تعریف Variableها
برای مثال پروژه ما به متغیرهای منطقی مشابه موارد زیر نیاز دارد:
StartCommand
StopCommand
HighLevel
Fault
PumpRunدر پروژه واقعی باید Variableها متناسب با معماری I/O و استاندارد نامگذاری پروژه تعریف شوند.
مرحله ۴: نوشتن منطق برنامه
یک نمونه ساده آموزشی:
IF Fault THEN
PumpRun := FALSE;
ELSIF HighLevel THEN
PumpRun := FALSE;
ELSIF StopCommand THEN
PumpRun := FALSE;
ELSIF StartCommand THEN
PumpRun := TRUE;
END_IF;این مثال عمداً ساده نگه داشته شده است تا ساختار شرطها مشخص باشد.
در پروژه واقعی باید موارد دیگری مانند:
- Emergency Stop
- Safety Interlock
- Feedback
- Overload
- Timeout
- Mode Selection
- Manual/Auto
- Alarm Handling
نیز مطابق طراحی ماشین در نظر گرفته شوند.
مثال عملی: کنترل مخزن با Structured Text
حالا مثال را کمی واقعیتر کنیم.
فرض کنید یک مخزن داریم که دارای دو سنسور سطح است:
LowLevel
HighLevelهدف این است که وقتی سطح پایین فعال شد، پمپ شروع به کار کند و پس از رسیدن مایع به سطح بالا متوقف شود.
یک منطق آموزشی ساده میتواند به این صورت باشد:
IF Fault THEN
PumpRun := FALSE;
ELSIF HighLevel THEN
PumpRun := FALSE;
ELSIF LowLevel THEN
PumpRun := TRUE;
END_IF;اما یک نکته مهم وجود دارد.
در این منطق، وضعیت بین Low و High باید با توجه به رفتار واقعی سنسورها و فرآیند طراحی شود. در یک پروژه صنعتی معمولاً باید State، Latch یا منطق کنترلی مناسب فرآیند تعریف شود تا خروجی رفتار قابل پیشبینی داشته باشد.
بنابراین هدف مثال بالا فقط نمایش Syntax نیست؛ بلکه نشان میدهد چرا قبل از نوشتن کد باید Sequence واقعی ماشین مشخص باشد.
مثال State Machine در Structured Text
یکی از جاهایی که ST قدرت خود را بهتر نشان میدهد، پیادهسازی State Machine است.
فرض کنید یک ماشین سه مرحله دارد:
- آمادهبهکار
- در حال اجرا
- خطا
میتوان State را به شکل زیر مدیریت کرد:
CASE MachineState OF
0:
MotorRun := FALSE;
IF StartCommand AND NOT Fault THEN
MachineState := 1;
END_IF;
1:
MotorRun := TRUE;
IF Fault THEN
MachineState := 2;
ELSIF StopCommand THEN
MachineState := 0;
END_IF;
2:
MotorRun := FALSE;
IF ResetCommand AND NOT Fault THEN
MachineState := 0;
END_IF;
END_CASE;این نمونه نشان میدهد چرا در ماشینهایی با Sequenceهای متعدد، ST میتواند خوانایی بسیار خوبی ایجاد کند.
با بزرگتر شدن پروژه میتوان هر State را نیز به بخشهای ساختاریافتهتر تقسیم کرد.
Structured Text بهتر است یا Ladder؟
پاسخ کوتاه این است:
هیچکدام همیشه بهتر نیستند.
انتخاب زبان باید بر اساس مسئله انجام شود.
| نوع کار | Ladder | Structured Text |
|---|---|---|
| منطق ساده دیجیتال | بسیار مناسب | مناسب |
| Interlock | بسیار مناسب | مناسب |
| عیبیابی سریع I/O | بسیار مناسب | نیازمند آشنایی با ST |
| محاسبات ریاضی | ممکن است حجیم شود | بسیار مناسب |
| شرطهای پیچیده | ممکن است طولانی شود | خواناتر |
| پردازش Array | دشوارتر | مناسب |
| Loop | محدودتر | مناسب |
| State Machine | قابل اجرا | معمولاً خوانا |
| الگوریتمهای پیچیده | دشوارتر | مناسبتر |
برای مثال، مدار ساده Start/Stop یک موتور احتمالاً در Ladder بسیار واضح است.
اما اگر قرار باشد دهها مقدار پردازش شوند، چند مرحله محاسبه انجام شود و بر اساس شرایط متعدد تصمیم گرفته شود، ST میتواند خواناتر باشد.
آیا میتوان Ladder و Structured Text را در یک پروژه استفاده کرد؟
در معماری ISPSoft امکان استفاده از بیش از یک زبان برنامهنویسی در یک پروژه وجود دارد، البته قابلیت دقیق به خانواده PLC و ساختار پروژه وابسته است.
این موضوع اجازه میدهد زبان را براساس مسئله انتخاب کنیم.
مثلاً:
Ladder
برای:
- Start/Stop
- Interlock
- Safety-related logic در چارچوب سختافزار و استاندارد مربوطه
- I/O logic
- منطقهایی که تکنسین باید سریع بررسی کند
و Structured Text
برای:
- محاسبات
- الگوریتمها
- پردازش داده
- Arrayها
- State Machine
- منطقهای شرطی پیچیده
استفاده شود.
این رویکرد در بسیاری از پروژهها از تلاش برای نوشتن همه چیز با یک زبان منطقیتر است.
Compile کردن برنامه در ISPSoft
بعد از نوشتن برنامه، پروژه باید Compile شود.
Compile به شما کمک میکند خطاهای Syntax و بخشی از مشکلات ساختاری برنامه را قبل از انتقال به PLC پیدا کنید.
اما یک نکته بسیار مهم وجود دارد:
Compile موفق به معنی صحیح بودن منطق ماشین نیست.
ممکن است برنامه از نظر Syntax کاملاً صحیح باشد اما Sequence ماشین اشتباه طراحی شده باشد.
به همین دلیل تست نرمافزار PLC فقط بررسی خطای Compile نیست.
شبیهسازی برنامه با ISPSoft
ISPSoft دارای قابلیت Simulator است که در بعضی شرایط میتواند برای بررسی برنامه بدون PLC واقعی مفید باشد.
اما نباید Simulator را جایگزین تست واقعی سختافزار دانست.
Delta صراحتاً اعلام میکند که نتیجه Simulator الزاماً دقیقاً مشابه اجرای برنامه روی PLC واقعی نیست و برخی Instructionها نیز توسط Simulator پشتیبانی نمیشوند. شرکت توصیه میکند برنامه پیش از بهرهبرداری روی PLC واقعی آزمایش شود.
بنابراین روند مناسب تقریباً چنین است:
Programming ← Compile ← Simulation/Test ← Download ← Hardware Test ← Commissioning
ارتباط ISPSoft با PLC
برای انتقال برنامه به PLC باید ارتباط میان کامپیوتر و کنترلر برقرار شود.
بسته به مدل PLC و روش ارتباطی ممکن است از Interfaceهای مختلف استفاده شود.
در برخی ارتباطها نرمافزار COMMGR نیز در کنار ISPSoft مورد استفاده قرار میگیرد. Delta برای نمونه، روند تنظیم COMMGR، انتخاب COM Port و سپس انتخاب همان Connection در Communication Settings نرمافزار ISPSoft را مستند کرده است.
روش دقیق اتصال باید براساس مدل PLC و Interface مورد استفاده تعیین شود.
اشتباهات رایج در برنامهنویسی ST
استفاده بیش از حد از Loop
وجود FOR و WHILE به این معنی نیست که باید تمام مسائل را با Loop حل کنیم.
Scan Time در PLC اهمیت دارد و یک حلقه نامناسب میتواند زمان اجرای برنامه را افزایش دهد.
شرط خروج نامطمئن
بهخصوص در WHILE باید مطمئن شویم برنامه امکان خروج از حلقه را دارد.
یک حلقه اشتباه میتواند اجرای منطقی Task را مختل کند.
برنامهنویسی همه چیز در یک POU
اگر تمام منطق ماشین در یک برنامه بسیار بزرگ نوشته شود، یکی از مهمترین مزایای ISPSoft یعنی ساختار ماژولار را از دست میدهیم.
نامگذاری نامناسب Variableها
این:
M1
M2
Value1
Flag3در یک پروژه بزرگ بهسرعت گیجکننده میشود.
نامی مانند:
ConveyorRunCommand
TankHighLevel
FillingActiveمعمولاً مفهوم بسیار بیشتری منتقل میکند.
تست نکردن روی سختافزار واقعی
Simulator ابزار مفیدی است، اما جای Commissioning روی سیستم واقعی را نمیگیرد.
استفاده از ST بدون بررسی مدل PLC
این یکی برای کاربران Delta اهمیت ویژهای دارد.
قبل از طراحی پروژه با ST، حتماً مدل CPU و پشتیبانی آن از Structured Text را بررسی کنید.
چه زمانی از Structured Text استفاده کنیم؟
ST انتخاب مناسبی است وقتی با موارد زیر روبهرو هستید:
- محاسبات متعدد
- فرمولهای کنترلی
- پردازش داده
- Array
- الگوریتمهای چندمرحلهای
- State Machine
- شرطهای پیچیده
- ساختارهای تکرارشونده
- Function و Function Block
- پروژههایی که نیاز به معماری ماژولار دارند
در مقابل، برای یک مدار ساده Relay Logic ممکن است Ladder بسیار سریعتر و واضحتر باشد.
هدف یک برنامهنویس PLC حرفهای این نیست که همیشه از پیچیدهترین زبان استفاده کند؛ بلکه باید مناسبترین ابزار را برای هر بخش پروژه انتخاب کند.
سوالات متداول درباره Structured Text در ISPSoft
Structured Text چیست؟
Structured Text یا ST یک زبان متنی برای برنامهنویسی PLC است که برای پیادهسازی منطق کنترل، محاسبات، شرطها، Loopها و الگوریتمهای ساختاریافته استفاده میشود.
آیا ISPSoft از Structured Text پشتیبانی میکند؟
بله. ST یکی از زبانهای پشتیبانیشده در ISPSoft است، اما پشتیبانی آن به خانواده و مدل PLC بستگی دارد.
آیا همه PLCهای DVP از ST پشتیبانی میکنند؟
نباید چنین فرضی کرد. در جدول فعلی User Manual رسمی ISPSoft، برای خانواده DVP در بخش Structured Text مشخصاً ES3 ذکر شده است. قبل از شروع پروژه باید مدل دقیق CPU بررسی شود.
برای برنامهنویسی PLC دلتا Ladder بهتر است یا ST؟
به نوع پروژه بستگی دارد. Ladder برای منطق دیجیتال و عیبیابی بصری بسیار مناسب است، در حالی که ST معمولاً برای محاسبات، پردازش داده و الگوریتمهای پیچیده خواناتر است.
آیا میتوان ST و Ladder را در یک پروژه استفاده کرد؟
ISPSoft امکان استفاده از چند زبان در یک پروژه را فراهم میکند، اما زبانهای قابل استفاده باید با PLC انتخابشده سازگار باشند.
آیا Simulator نرمافزار ISPSoft جای PLC واقعی را میگیرد؟
خیر. Delta اعلام کرده است نتیجه شبیهسازی دقیقاً معادل اجرای PLC واقعی نیست و برنامه باید قبل از بهرهبرداری روی سختافزار واقعی تست شود.
جمعبندی
Structured Text یکی از ابزارهای قدرتمند برای توسعه نرمافزار PLC در ISPSoft است. استفاده از ساختارهایی مانند IF، CASE، FOR، WHILE و Function Block میتواند پیادهسازی بخشهایی از پروژههای پیچیده را بسیار خواناتر و ساختاریافتهتر کند.
اما استفاده حرفهای از ST فقط به یادگیری Syntax محدود نمیشود.
انتخاب صحیح CPU، طراحی معماری برنامه، تعریف Variableهای مناسب، مدیریت Scan Time، تقسیم پروژه به بخشهای منطقی، تست و در نهایت Commissioning روی سختافزار واقعی همگی بخشی از توسعه یک سیستم کنترل قابل اعتماد هستند.
در پروژههای صنعتی نیز لازم نیست میان Ladder و Structured Text یکی را برای تمام پروژه انتخاب کنیم. در صورتی که PLC مورد استفاده اجازه دهد، میتوان هر زبان را در بخشی به کار برد که بیشترین خوانایی و قابلیت نگهداری را ایجاد میکند.
برای طراحی، برنامهنویسی یا عیبیابی سیستمهای کنترل صنعتی میتوانید از بخش خدمات مهندسی PLCSEA استفاده کنید و برای مطالعه آموزشهای بیشتر PLC و اتوماسیون صنعتی به دانشنامه PLCSEA مراجعه کنید.

