مقدمه برنامه نویسی تیا پورتال

TIA Portal یک بسته نرم افزاری و ابزاری است که توسط زیمنس توسعه یافته است که هدف آن ادغام چندین ابزار توسعه برای دستگاه های اتوماسیون از یکپارچه سازی و بازسازی نرم افزارهای از قبل موجود مانند : Simatic Step 7، Simatic WinCC و Sinamics Starter است. این محیط ها برای برنامه نویسی، پیکربندی PLC های زیمنس، HMI ها و اینورترها هستند. منطق برنامه‌نویسی در تیا پورتال

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

Simatic Step 7 برای برنامه ریزی PLC های خانواده S7-1200، S7-1500، S7-300 و S7-400 استفاده می شود. WinAC و جدیدترین کنترلر نرم افزاری S7-1500 کنترلرهای جایگزین برای کامپیوترهای صنعتی هستند.

WinAC و جدیدترین کنترلر نرم افزاری S7-1500 کنترلرهای جایگزین برای کامپیوترهای صنعتی هستند. زبان های برنامه نویسی موجود عبارتند از ladder، FBD (Function Block Diagram)، SCL (Structured Control Language)، STL (Statements List) و S7 GRAPH .

توسعه صفحه نمایش HMI در WinCC برای سیستم های نظارتی روی رایانه ها، SCADA، و Hmi های Basic، Comfort و Mobile اعمال می شود. پروتکل های ارتباطی Profibus، PROFINET و AS-I برای ارتباط با PLC ها می توان به وجود CM ها (Communication Modules) برای برقراری ارتباط در پروتکل های مختلف صنعتی مانند Modbus و CANOpen اشاره کرد. شکل زیر ویژگی های اصلی SIMATIC STEP 7 و SIMATIC WinCC را جمع آوری می کند .

مانیتورینگ و کنترل عملگرها توسط کنترلر انجام می شود. یک سیستم عامل cpu  به عنوان یک عامل مترجم برای اجرای الگوریتم ها عمل می کند. سیستم عامل های PLC مسئول ترجمه دستورالعمل های منطقی برای فرمان به سخت افزار با توجه به برنامه کاربر و پیکربندی سخت افزاری PLC هستند.

برنامه‌نویسی کنترل‌کننده ها بر اساس بلوک هابه اسامی OB (بلوک‌های سازمان)، FCs (توابع)، FBs (بلوک‌های تابع) و DBs (بلوک‌های داده) تقسیم‌بندی شده است.

آشنایی با بلوک های سازمانی در تیا پورتال :

بلوک های سازمانی مرتبط به چرخه های اجرایی برنامه و وقفه ها هستند، زیرا اجرای آنها به فلاسفی بلوک قبلی مانند بازه زمانی یا تشخیص خرابی سخت افزار مرتبط است.

OB1 یا بلوک برنامه نویسی Main، برای مقداردهی اولیه و اسکن متوالی بلوک های برنامه نویسی شده مانند fc ها و fb ها میباشد، و این بلوک و فراخوانی فانکشن ها و فانکشن بلاک ها در آن برای اجرای برنامه  ضروری است، با توجه به نمایش شکل زیر، اجرای برنامه های در  OB1 به صورت خطی و همزمان، کدهایی از چپ به راست و از ابتدا تا انتهای بلوک شروع به پردازش می شود. در پایان این بلوک، CPU از ابتدا اجرای کد را از سر می گیرد و این روند به طور نامحدود تکرار می شود.

اگرچه کاربر چندین بلوک از توابع و داده ها را ایجاد می کند ولی PLC فقط دستورالعمل های فراخوانی شده و به ترتیب مشخص شده در OB1 اجرا می کند. شکل زیر ایجاد زیربرنامه هایی را نشان می دهد که در OB1 فراخوانی شده است ، که ممکن است ارتباط های مکمل با هم داشته باشند.

از آنجایی که برای اجرا دستورالعمل ها در تابع MAIN OB1 به پردازش همه دستور های برنامه نویسی شده نیاز است، زمان چرخه مانیتورینگ و دستور آن ممکن است با توجه به حجم برنامه و پیچیدگی آن و یا حتی هر شرایط برنامه ریزی پیش بینی نشده در هر سیکل  متفاوت باشد.

مقاله پیشنهادی : آموزش کانفیگ PLC S71500 ، دانلود و تست برنامه

بنابراین، برای جلوگیری از عدم کارکرد برنامه PLC و تضمین اجرای چرخه ای در یک زمان منطقی خاص، OB وقفه چرخه ای توصیه می شود. بلوک های وقفه چرخه ای نیز به صورت چرخه ای اجرا می شوند اما با فاصله زمانی از پیش تعریف شده بین اجراها هنگام ایجاد بلوک ها.

ایجاد بلوک در تیا پورتال

بنابراین،  به عنوان مثال هر ۱۰۰ میلی‌ثانیه، پردازش فعلی قطع می‌شود تا دستورالعمل‌های موجود در بلوک وقفه چرخه‌ای انجام شود.

درک و تعریف توابع (FCs) در TIA PORT : FCها الگوریتم و برنامه های نوشته شده توسط کاربر را فشرده می کنند و مقادیر خروجی و نتیجه برنامه PLC را به متغیرهای تعریف شده به عنوان خروجی، با توجه به تغییر وضعیت متغیرهای ورودی و بازرسی انجام شده در داخل بلوک، منتقل میکند.

به طور خلاصه برنامه نویس برنامه خود را داخل FC مینویسد و فقط ورودی و خروجی ها به خارج از FC منتقل خواهند شد و کاربرد اصلی آن در برنامه نویسی ساختار یافته و منظم است.نکته این جاست که این FC حتما باید در OB1 فراخوانی گردد در غیر اینصورت عملکردی نخواهد داشت.

متغیرهای محلی اعلام شده در FC می توانند از نوع In (ورودی)، خروجی (خروجی)، InOut (ورودی و خروجی)، Temp (موقت) یا Fixed (ثابت) باشند.

ورودی: پارامترهای ورودی تابع.پارامتر هایی که معملا از سنسور ها و .. فیدبک گرفته شده ور در آلنالیز برنامه داخل FC  از آنها استفاده میگردد.خروجی: پارامترهای خروجی تابع. نتایج خروجی برنامه نوشته شده توسط برنامه نویس به این خروجی ها منتقل میگردد که به عملگر ها مانند خروجی های دیجیتال و آنالوگ PLC  متصل میگردد.ورودی و خروجی: پارامتری که می تواند همزمان به عنوان ورودی و خروجی اختصاص داده شود.ابزاری مفید جهت سهولت در برنامه نویسی میباشد.

مموری موقتی که هنگام شروع بلوک به فضای حافظه CPU اختصاص داده می شوند و در انتهای آن بازنویسی می شوند، بدون اینکه امکان حفظ یا ارجاع کلی وجود داشته باشد.ثابت: اینها متغیرهای موقتی هستند که مقادیر آنها ثابت است.

درک عملکرد بلوک ها (FBs) در تیا پرتال:در زیر نمودار ساده شده FB ها را می بینیم که ساختار و عملکردی مشابه FC ها دارند، با تفاوت اینکه قابلیت اضافه شدن ایجاد DB (نمونه بلوک های داده) مربوط به  FB ممکن شده است و به بیان دیگر بلوک های حافظه دار هستند بر خلاف FC ها .

متغیرهاو مموری های موجود در FC برای FB نیز موجود هستند، اما FB یک نوع  حافظه دیگر دارد که static نام دارد. متغیرهای از نوع static حافظه های نگهدارنده ای هستند که در حافظه غیر فرار CPU ذخیره می شوند و می توانند در سراسر برنامه ارجاع داده شوند (آنها سراسری هستند). هنگامی که یک FB در یک روال برنامه نویسی فراخوانی می شود، لازم است که یک DB به آن بلوک اختصاص داده شود. بنابراین، فراخوانی های مختلف یک مدل FB باید دارای فضای حافظه متفاوتی و به عبارت دیگر DB های متفاوت باشد.

شکل نمونه ای از استفاده از فراخوانی های متعدد از یک FB است. با فرض یک FB به نام  Motorsکه توسط برنامه نویس نوشته شده است بنابراین این فراخوانی بلاک در OB1 در دو خط کد متفاوت با دو DB منحصربفرد انجام شده است. و  هر متغیر استاتیک یا  DB به نام Motor_A و Motor B وضعیت آن موتور مربوطه خود را نشان می دهد.

به این ترتیب می توان نشان داد که موتور A از طریق DB1 و موتور B از طریق متغیر اختصاص داده شده در DB2 متصل است.

آشنایی با انواع داده های کاربر در تیا پورتال :

علاوه بر انواع داده های معمول (INTIGER، REAL، BOOL…) یک متغیر در تیا پورتال می تواند از نوع داده از پیش تعریف شده به نام DATA TYPE باشد. ساختار آن قابل تغییر است و می تواند از هر ترکیبی از دیگر انواع داده های موجود و آرایه ها تشکیل شود. استفاده از UDT ها به سازماندهی و تکرار ساختار داده کمک می کند و توسعه و تشخیص برنامه ها را آسان تر می کند.

مثال عملی :

  • فعال سازی موتورها

در این مثال، ما از بلوک‌های تابع ، انواع داده‌ها و بلوک‌های داده برای برنامه نویسی و بهینه‌سازی یک عملیات کنترلی ساده موتورها  استفاده می‌کنیم. در ابتدا، ما باید یک نوع داده به نام “Motor” ایجاد کنیم که شامل تمام اطلاعات لازم برای مبادله با HMI است.

برای FC Motor Actuation ، پارامترهای ورودی و خروجی باید تمامی تجهیزات فیزیکی مورد نیاز برای کارکرد موتور را پوشش دهند. مانند کلید AUTO/MANUAL ، دکمه‌های استارت و توقف، و فیدبک MOTOR RUNING. پارامتر “Data” از نوع DATA TYPE “Motor” که به تازگی ایجاد کرده ایم و خروجی (برای فعال کردن کنتاکتور موتور) باید به عنوان InOut تعریف شود زیرا ما از آنها به عنوان پارامترهای ورودی و خروجی در برنامه استفاده خواهیم کرد.

“Data” موتور ما از نوع DATA TYPE باید در یک Data Block گلوبال ذخیره شود، که متغیر های لازم برای هر موتوری است که باید کار کند. بنابراین، باید برای هر موتور یک DAA TYPE  اختصاص داده شود و ما این کار را با استفاده از AARAY  انجام میدهیم به این گونه که یک دیتا بلاک ایجاد میکنیم و به تعداد موتور ها به صورت ARRAY دیتا تایپ اضافه خواهیم نمود.

این فانکشن قادر است وضعیت سنسور فیدبک  و وضعیت خروجی موتور را برای تشخیص سناریوهای خرابی احتمالی نظارت کند. در صورتی که فیدبک بدون دستور CLP برای راه اندازی موتور انجام شود، می توانیم سنسور یا کنتاکتور معیوب را شناسایی کنیم.

مقاله پیشنهادی : برنامه نویسی PLC / HMI

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

هنگامی که موتور هیچ مانعی و مشکلی جهت استارت ندارد، فانکشن ما شرایط را بررسی می کند تا در واقع موتور را روشن کند. موتور را می توان از شصتی های کنترلی لوکال، دستور های استپ و استارت REMOTE و دستورات خودکار فعال کرد. هنگامی که وضعیت موتور و فیدبک آن به مدت زمان نظارت از پیش تعریف شده ارزیابی شد، یک حافظه به نام “Motor Running” برای نمایش اطلاعات و وضعیت در HMI فعال می شود.

اکنون بیایید فانکشن خود را در OB1  فراخوانی کنیم و سپس اولین وروردی و خروجی موتور را به اولین موتور خود پیوند دهیم. تنها کاری که باید انجام شود این است که پارامترهای ورودی و خروجی مربوط به تجهیزات و سیگنال ها را وارد کنید.

یکی از مزایای اصلی استفاده از فانکشن، تکرار آن برای سیستم های مشابه است. به عنوان مثال، فعال سازی یک موتور مشابه (در مورد عملکرد پردازش)، به آسانی تکرار فراخوانی بلوک و وارد کردن پارامترها برای موتور مربوطه است.

یکی دیگر از فانکشن های ممکن برای برنامه نویسی، استفاده از یک FB به جای یک FC است. به این ترتیب، نیازی به ایجاد یک DATA BLOCK برای ذخیره کردن داده های موتور نمیباشد و با استفاده از مموری های Statics میتوان مقادیر را ذخیره و اصلاح نمود. ساختار پارامتر FB تقریباً مشابه FC خواهد بود، تنها تفاوت در نوع پارامتر است که داده ها در FB به عنوان Static تعریف می شوند.

به محض فراخوانی فانکشن بلاک موتور FB برای ایجاد موتور 3 در OB1  از کاربر برای ایجاد یک دیتا بلاک سوال میشود و این دیتا بلاک به صورت اتوماتیک تشکیل شده و مقادیر مربوطه در آن ذخیره خواهد شد.

همچنین می توان DB را تحت عنوان MULTIINSTANCE  تشکیل داد، که به عنوان یک تگ از نوع داده “Motor_FB” در پارامترهای استاتیک “Motors_Calls” FB تعریف شده است. این استراتژی کمک میکند که در تمامی دیتا بلک فانکشن بلک ها در یک دیتا بلک ذخیره شده و این گونه دسترسی به آنها منظم تر و سریع تر میباشد.

پاسخ بدهید