در این قسمت یک Data Block واقعی برای یک تجهیز صنعتی طراحی میکنیم و مواردی مانند Data Type، ساختار متغیرها، Naming Convention، سازماندهی اطلاعات تجهیز و نحوه استفاده از DB در FC و FB را بررسی خواهیم کرد.
در ادامه نیز بهترتیب سراغ Instance DB، Multi-Instance، Recipe DB و Retain میرویم تا در پایان مجموعه، مخاطب فقط با مفهوم DB آشنا نباشد؛ بلکه بتواند یک ساختار حرفهای Data Block برای پروژههای صنعتی PLC زیمنس طراحی کند پس با این مقاله تخصصی از الکترونت همراه باشید.
ساخت Shared DB در SIMATIC Manager؛ آموزش مرحلهبهمرحله با مثال صنعتی
در پروژههای اتوماسیون صنعتی، یکی از مهمترین
موضوعات در طراحی نرمافزار
PLC، نحوه سازماندهی و مدیریت دادهها
است. در
PLCهای زیمنس و بهخصوص در محیط SIMATIC Manager و STEP 7 Classic، این وظیفه تا حد زیادی بر عهده Data Block یا DB قرار
دارد.
در بخش قبلی مقاله
با مفهوم
Data Block،
کاربرد آن در
PLC زیمنس و تفاوت کلی Shared DB و Instance DB آشنا
شدیم. در این مقاله قصد داریم وارد بخش عملی شویم و ببینیم چگونه یک Shared DB در SIMATIC Manager ایجاد کنیم و آن را برای یک تجهیز صنعتی
ساختاربندی کنیم.هدف این آموزش فقط ایجاد یک DB نیست. در یک پروژه واقعی نفت، گاز، پتروشیمی یا
نیروگاهی، نحوه نامگذاری، انتخاب
Data Type،
دستهبندی اطلاعات و ارتباط DB
با FC
و FB
اهمیت زیادی دارد. به همین دلیل در این مقاله،
ساخت
Shared DB را با نگاه مهندسی
پروژه و استانداردسازی نرمافزار PLC بررسی
میکنیم.
چرا Shared DB در پروژههای صنعتی اهمیت دارد؟
در پروژههای کوچک ممکن است برنامهنویس بتواند
تعداد محدودی از متغیرها را مستقیماً در قسمتهای مختلف برنامه مدیریت کند. اما در
پروژههای بزرگ، تعداد اطلاعات بسیار زیاد میشود.
برای مثال، یک واحد پتروشیمی ممکن است شامل دهها
پمپ، موتور، ولو، کمپرسور، مخزن و تجهیزات ابزار دقیق باشد.
هر تجهیز نیز دارای مجموعهای از اطلاعات کنترلی
و فرآیندی است.
اگر این اطلاعات بدون ساختار مشخص در برنامه PLC قرار بگیرند، مشکلات زیادی در مراحل بعدی پروژه
ایجاد میشود.
از جمله:
· دشوار شدن عیبیابی برنامه
· افزایش زمان Commissioning
· دشوار شدن توسعه نرمافزار
· افزایش احتمال خطای برنامهنویسی
· دشوار شدن ارتباط PLC با
HMI و
SCADA
· افزایش زمان Maintenance
· دشوار شدن انتقال پروژه به تیم بهرهبرداری
بنابراین طراحی
صحیح
Data Block یکی از
بخشهای مهم
Software Engineering در
پروژههای
PLC زیمنس محسوب میشود.
مثال صنعتی؛ طراحی Shared DB برای پمپ P-101
برای اینکه آموزش عملی باشد، در این مقاله یک
مثال ساده از یک پمپ فرآیندی را در نظر میگیریم.
فرض کنید در یک واحد فرآیندی، پمپ P-101 وظیفه انتقال سیال را بر عهده دارد.
PLC باید
اطلاعات زیر را برای این پمپ مدیریت کند:
· فرمان Start
· فرمان Stop
· وضعیت Running
· وضعیت Fault
· حالت
Auto
· فشار فعلی
· Setpoint فشار
· زمان کارکرد
· تعداد دفعات Start
در یک طراحی ساده میتوانیم یک Shared DB با نام زیر ایجاد کنیم:
DB_P101
و متغیرهای مربوط به پمپ را در آن قرار دهیم.
ساختار پیشنهادی میتواند شامل این موارد باشد:
Command
Status
Process
Maintenance
این دستهبندی از همان ابتدا باعث میشود Data Block خواناتر و قابل مدیریتتر باشد.
آموزش ساخت Shared DB در
SIMATIC Manager
اکنون وارد بخش عملی میشویم.
در محیط SIMATIC Manager ابتدا
پروژه
PLC مورد نظر را باز کنید.
پس از ورود به پروژه، CPU و Station مربوط به سیستم را پیدا کنید و وارد بخش Blocks شوید.
در این قسمت محل نگهداری Blockهای برنامه PLC را مشاهده خواهید کرد.
برای ایجاد یک Data Block جدید، از منوی ایجاد Block استفاده کنید و نوع Block را روی DB یا Data Block قرار
دهید.
در این مرحله باید مشخص کنیم که DB مورد نظر یک Shared DB است یا Instance DB.
برای مثال در این آموزش قصد داریم یک Shared DB برای پمپ P-101 ایجاد کنیم.
نام پیشنهادی:
DB_P101
پس از ایجاد DB، آن
را در محیط
STEP 7 باز کنید.
اکنون میتوانیم متغیرهای مورد نیاز را تعریف
کنیم.
انتخاب Data Type در
Shared DB
یکی از مهمترین مراحل طراحی Data Block،
انتخاب صحیح Data Type است.
در
STEP 7 Classic بسته
به نوع اطلاعات، میتوان از
Data Typeهای مختلف استفاده کرد.
برای مثال:
BOOL برای
اطلاعات منطقی مانند
Start، Stop، Running و
Fault مناسب است.
INT برای
مقادیر عددی صحیح در محدوده مورد نیاز استفاده میشود.
DINT برای
اعداد صحیح بزرگتر کاربرد دارد.
REAL برای
مقادیر فرآیندی اعشاری مانند
Pressure، Temperature و
Flow بسیار کاربردی است.
WORD و DWORD نیز در
شرایطی که دادهها بهصورت کلمهای یا بیتهای ترکیبی مورد استفاده قرار میگیرند،
کاربرد دارند.
بنابراین انتخاب Data Type نباید صرفاً بر اساس عادت برنامهنویس انجام شود.
باید مشخص شود داده مورد نظر از نظر ماهیت
فرآیندی چه نوع مقداری است و سیستم کنترل چگونه باید آن را پردازش کند.
طراحی ساختار DB_P101
اکنون میتوانیم ساختار اطلاعات پمپ P-101 را مشخص کنیم.
برای مثال:
Command:
Status:
Process:
Maintenance:
در این ساختار، اطلاعات مربوط به هر بخش از
عملکرد پمپ در قسمت مشخصی قرار میگیرد.
این کار در پروژههای بزرگ بسیار مهم است؛ زیرا
مهندس دیگری که بعداً وارد پروژه میشود، بدون بررسی تمام برنامه میتواند ساختار
اطلاعات تجهیز را سریعتر درک کند.
Naming Convention در
Data Block
یکی از موضوعاتی که در پروژههای حرفهای اهمیت
زیادی دارد، Naming
Convention یا استاندارد نامگذاری است.
نام متغیرها باید بهگونهای انتخاب شود که
عملکرد آنها برای برنامهنویس، مهندس
Commissioning و تیم Maintenance قابل فهم باشد.
برای مثال:
Start
نامی ساده است، اما در پروژه بزرگ ممکن است مشخص
نباشد مربوط به کدام تجهیز است.
در مقابل، ساختاری مانند:
P101_Start_CMD
اطلاعات بیشتری در اختیار مهندس قرار میدهد.
البته در صورت استفاده از ساختارهای Hierarchical یا
Structure-based، میتوان
نامگذاری را کوتاهتر و منظمتر انجام داد.
نکته مهم این است که Naming Convention باید از ابتدای پروژه مشخص و در تمام برنامه
یکسان اجرا شود.
در پروژههای نفت، گاز و پتروشیمی، بهتر است این
استاندارد با فلسفه نامگذاری تجهیزات و Tagهای مهندسی پروژه هماهنگ باشد.
تفاوت Data Type و
Naming Convention
گاهی این دو موضوع با یکدیگر اشتباه گرفته میشوند.
Data Type مشخص میکند که PLC با داده چگونه برخورد کند.
برای مثال:
Pressure_PV میتواند از نوع REAL باشد.
اما
Naming Convention مشخص
میکند این متغیر با چه نامی در برنامه شناخته شود.
برای مثال:
Pressure_PV
یا:
P101_Pressure_PV
بنابراین یک Data Block استاندارد هم به Data Type مناسب نیاز دارد و هم به نامگذاری استاندارد.
استفاده از Shared DB در FC
پس از ایجاد Shared DB،
قسمتهای مختلف برنامه میتوانند از اطلاعات آن استفاده کنند.
فرض کنید یک FC وظیفه کنترل پمپ P-101 را بر عهده دارد.
این FC
میتواند اطلاعات مورد نیاز خود را از DB_P101 دریافت کند.
برای مثال، منطق برنامه میتواند بر اساس Start Command،
وضعیت
Interlock و وضعیت Fault تصمیم بگیرد که آیا پمپ اجازه راهاندازی دارد
یا خیر.
همچنین خروجی منطق کنترل میتواند وضعیت Running را در ساختار داده مربوط به پمپ قرار دهد.
در این حالت DB نقش واسطی برای تبادل اطلاعات میان قسمتهای
مختلف نرمافزار
PLC را ایفا میکند.
ارتباط Shared DB با
HMI و
SCADA
یکی از کاربردهای مهم Data Block در پروژههای صنعتی، ارتباط آن با سیستم
مانیتورینگ است.
فرض کنید HMI باید وضعیت پمپ P-101 را نمایش دهد.
اطلاعاتی مانند:
میتوانند از ساختار داده مربوط به پمپ در PLC برای نمایش در HMI استفاده شوند.
این موضوع زمانی اهمیت بیشتری پیدا میکند که
پروژه دارای SCADA یا WinCC باشد و
تعداد
Tagهای سیستم زیاد باشد.
اگر ساختار Data Block از ابتدا استاندارد باشد، تعریف و مدیریت Tagها نیز میتواند منظمتر انجام شود.
Shared DB برای چه دادههایی مناسب است؟
Shared DB میتواند برای طیف وسیعی از اطلاعات پروژه
استفاده شود.
برای مثال:
Process Data: مقادیر Pressure، Temperature، Flow و
Level
Command Data: فرمانهای Start، Stop و
Reset
Status Data: وضعیت Running، Fault و
Mode
Configuration Data: پارامترها
و تنظیمات سیستم
Alarm Data: وضعیت
برخی
Alarmها
Recipe Data: اطلاعات Recipe و
Setpointهای مربوط به فرآیند
Maintenance Data: Runtime، Start Counter و اطلاعات مورد نیاز نگهداری
البته اینکه تمام این اطلاعات در یک DB قرار بگیرند یا در چند DB مختلف تقسیم شوند، به Architecture پروژه بستگی دارد.
آیا برای تمام تجهیزات یک Shared DB بسازیم؟
پاسخ این سؤال به طراحی نرمافزار پروژه بستگی
دارد.
در پروژههای کوچک ممکن است یک ساختار ساده قابل
استفاده باشد.
اما در پروژههای بزرگ بهتر است اطلاعات بر اساس
نوع تجهیز، واحد فرآیندی و معماری نرمافزار سازماندهی شوند.
برای مثال ممکن است پروژه دارای DBهای زیر باشد:
DB_PROCESS
DB_CONFIG
DB_ALARM
DB_RECIPE
DB_P101
DB_P102
DB_M101
DB_TANK101
این نامگذاری صرفاً یک نمونه آموزشی است و
استاندارد نهایی باید مطابق استاندارد پروژه و کارفرما تعریف شود.
Shared DB یا Instance DB؛ کدام را انتخاب کنیم؟
این یکی از مهمترین سؤالات در طراحی نرمافزار PLC زیمنس است.
اگر اطلاعات مستقل و مشترک بین بخشهای مختلف
برنامه دارید، Shared DB میتواند انتخاب مناسبی باشد.
اما اگر یک Function Block برای کنترل تجهیز طراحی کردهاید و FB به حافظه استاتیک نیاز دارد، معمولاً موضوع Instance DB مطرح
میشود.
برای مثال اگر یک FB عمومی برای کنترل پمپ داشته باشیم:
FB_PUMP
میتوانیم Instanceهای مختلفی برای پمپها داشته باشیم:
DB_P101
DB_P102
DB_P103
در این معماری، یک منطق عمومی برای چند تجهیز
مشابه استفاده میشود.
این روش در پروژههای بزرگ باعث کاهش تکرار کد و
افزایش قابلیت استانداردسازی میشود.
Shared DB در برابر Instance DB در پروژه صنعتی
بهصورت کلی میتوان گفت:
Shared DB برای
دادههای مستقل و مشترک برنامه مناسب است.
Instance DB برای
نگهداری دادههای مرتبط با اجرای یک FB
استفاده میشود.
بنابراین نباید صرفاً بر اساس تعداد DBها تصمیمگیری کنیم.
سؤال اصلی این است:
معماری نرمافزار PLC پروژه چگونه باید طراحی شود؟
این دقیقاً همان نقطهای است که برنامهنویسی PLC از یک کار صرفاً نرمافزاری به یک موضوع مهندسی
پروژه تبدیل میشود.
اشتباهات رایج هنگام ساخت Shared DB
یکی از اشتباهات رایج، استفاده از نامهای
نامفهوم برای متغیرها است.
برای مثال نامهایی مانند:
در پروژههای بزرگ بسیار مشکلساز خواهند شد.
اشتباه دیگر، استفاده نادرست از Data Type است.
برای مثال انتخاب REAL برای تمام متغیرها، بدون توجه به ماهیت داده،
روش استانداردی نیست.
همچنین ایجاد DBهای بسیار بزرگ و بدون ساختار نیز میتواند در
مراحل بعدی پروژه مشکل ایجاد کند.
بهترین روش این است که قبل از توسعه نرمافزار، ساختار داده و استاندارد نامگذاری پروژه مشخص
شود.
نکته مهم برای پروژههای نفت، گاز و پتروشیمی
در پروژههای صنعتی بزرگ، Data Block نباید بهصورت جدا از سایر بخشهای مهندسی طراحی
شود.
ساختار DB باید با مواردی مانند:
· Tag List
· I/O List
· Control Philosophy
· Cause & Effect
· HMI Design
· SCADA Architecture
· Alarm Philosophy
· Equipment List
· Naming Convention
هماهنگ باشد.
برای مثال اگر نام تجهیز در مدارک مهندسی P-101 است، ساختار نرمافزار PLC، HMI و
مستندات پروژه نیز باید تا حد امکان از یک استاندارد یکسان پیروی کنند.
این هماهنگی یکی از عوامل مهم در کاهش خطا و
افزایش سرعت
Commissioning پروژه
است.
یک نگاه مهندسی به Shared DB
اگر بخواهیم موضوع را از دید یک مدیر پروژه یا
مدیر مهندسی بررسی کنیم، مسئله فقط این نیست که مهندس PLC بتواند یک DB ایجاد کند.
سؤال مهمتر این است:
آیا ساختار DB طراحیشده در زمان توسعه پروژه، Commissioning و Maintenance نیز قابل استفاده و قابل توسعه خواهد بود؟
یک ساختار خوب Data Block باید بتواند با توسعه پروژه رشد کند، اطلاعات را
منظم نگه دارد و ارتباط میان
PLC، HMI، SCADA و سایر سیستمها را سادهتر کند.
به همین دلیل، طراحی DB یکی از بخشهای مهم PLC Software Architecture در
پروژههای صنعتی است.
جمعبندی؛ ساخت Shared DB در
STEP 7 Classic
در این مقاله با مفهوم Shared DB در SIMATIC Manager و STEP 7 Classic آشنا
شدیم و یک ساختار پیشنهادی برای مدیریت اطلاعات یک پمپ صنعتی را بررسی کردیم.
دیدیم که Shared DB میتواند برای سازماندهی Process Data، Command، Status، Configuration، Alarm، Recipe و
Maintenance Data مورد
استفاده قرار گیرد.
همچنین با اهمیت انتخاب Data Type، Naming Convention و ساختاردهی متغیرهای Data Block آشنا شدیم.
در پروژههای صنعتی، استفاده صحیح از Shared DB میتواند به استانداردسازی نرمافزار PLC،
کاهش زمان عیبیابی، تسهیل
Commissioning و سادهتر
شدن توسعه سیستم کمک کند.
اما هنوز یک سؤال اساسی باقی میماند:
اگر در یک پروژه 50 پمپ، 30 موتور و دهها تجهیز
مشابه داشته باشیم، آیا باید برای هر تجهیز منطق برنامه را جداگانه بنویسیم؟
پاسخ این سؤال ما را به موضوع مهم بعدی یعنی Function Block و Instance DB میرساند.
در ادامه از مجموعه آموزش Data Block، سراغ
یکی از مهمترین مفاهیم برنامهنویسی حرفهای در STEP 7 Classic میرویم:
Instance DB چیست و چه تفاوتی با Shared DB دارد؟
در این مقاله با یک مثال واقعی از کنترل چند پمپ در یک پروژه صنعتی
بررسی خواهیم کرد که چگونه یک FB
میتواند برای چند تجهیز استفاده شود و هر تجهیز
چگونه
Instance DB مخصوص خود را داشته باشد.
سپس در ادامه مجموعه به سراغ Multi-Instance، طراحی Recipe DB و Retain در Data Block خواهیم رفت.
Instance DB در PLC زیمنس چیست و چه تفاوتی با Shared DB دارد؟
در ادامه آموزش Data Block در SIMATIC Manager و STEP 7 Classic، به یکی از مفاهیم مهم برنامهنویسی حرفهای PLC زیمنس یعنی Instance DB میرسیم.
Instance DB زمانی اهمیت پیدا میکند که بخواهیم یک Function Block یا FB را
برای چند تجهیز مشابه استفاده کنیم. در این روش، منطق کنترلی تجهیز در FB نوشته میشود و اطلاعات مربوط به هر نمونه از
تجهیز در یک
Instance DB جداگانه ذخیره میشود.
Instance DB چیست؟
Instance DB یک
Data Block مرتبط با یک FB است که برای نگهداری اطلاعات استاتیک آن FB استفاده میشود.
برای مثال فرض کنید در یک پروژه پتروشیمی، سه
پمپ داریم:
به جای اینکه برای هر پمپ یک برنامه کنترلی
جداگانه بنویسیم، میتوانیم یک FB
عمومی با نام:
FB_PUMP
طراحی کنیم.
سپس برای هر پمپ یک Instance DB داشته باشیم:
در این حالت، منطق کنترل هر سه پمپ در یک FB قرار دارد، اما اطلاعات هر پمپ در Instance DB مربوط به همان تجهیز ذخیره میشود.
تفاوت Instance DB و
Shared DB
تفاوت اصلی این دو نوع DB در نحوه استفاده از آنهاست.
Shared DB یک Data Block مستقل است و میتواند برای نگهداری دادههای
عمومی و مشترک برنامه استفاده شود.
اما Instance DB به یک FB وابسته است و حافظه اطلاعات استاتیک مورد نیاز
آن FB
را فراهم میکند.
به زبان ساده:
Shared DB: محل
نگهداری دادههای مستقل و مشترک
Instance DB: حافظه اختصاصی یک FB برای یک نمونه از تجهیز
مثال صنعتی Instance DB
فرض کنید یک پروژه نفت و گاز دارای 20 پمپ مشابه
باشد.
به جای ایجاد 20 برنامه مستقل برای کنترل پمپها،
یک FB
استاندارد برای کنترل پمپ طراحی میکنیم.
سپس برای هر پمپ یک Instance DB اختصاص میدهیم.
به این ترتیب:
FB_PUMP → منطق عمومی کنترل پمپ
DB_P101 → اطلاعات پمپ P-101
DB_P102 → اطلاعات پمپ P-102
DB_P103 → اطلاعات پمپ P-103
این معماری باعث کاهش تکرار برنامه، افزایش
استانداردسازی و سادهتر شدن توسعه و
Maintenance نرمافزار PLC میشود.
چرا
Instance DB در پروژههای صنعتی مهم است؟
در پروژههای بزرگ مانند پالایشگاه، پتروشیمی، نیروگاه و واحدهای فرآیندی
تعداد تجهیزات مشابه بسیار زیاد است.
استفاده صحیح از FB و
Instance DB کمک میکند یک منطق استاندارد برای تجهیز طراحی
شود و همان منطق برای تعداد زیادی تجهیز مورد استفاده قرار گیرد.
مزایای اصلی این روش عبارتاند از:
· کاهش حجم و تکرار برنامه
· استانداردسازی کنترل تجهیزات
· کاهش خطای برنامهنویسی
· سادهتر شدن Commissioning
· سهولت توسعه پروژه
· سادهتر شدن Maintenance
جمعبندی مقاله
Data Block یا DB یکی از
مهمترین اجزای برنامهنویسی
PLC زیمنس در محیط SIMATIC Manager و STEP 7 Classic است و
نقش مهمی در ذخیره، سازماندهی و مدیریت اطلاعات سیستم کنترل دارد. در پروژههای
صنعتی، طراحی صحیح DB
فقط به تعریف چند متغیر محدود نمیشود؛ بلکه
بخشی از معماری نرمافزار PLC محسوب
میشود.
در این مجموعه با مفاهیم اصلی Data Block مانند Shared DB، Instance DB، Multi-Instance، Data Type، Naming Convention، Recipe و Retain آشنا
میشویم و کاربرد آنها را در ساختارهای واقعی PLC بررسی میکنیم.
همچنین دیدیم که Shared DB میتواند برای مدیریت دادههای مشترک مانند Process Value، Setpoint، Command، Status و Configuration استفاده
شود، در حالی که
Instance DB برای نگهداری اطلاعات مرتبط با یک Function Block و تجهیز مشخص کاربرد دارد. این ساختار بهخصوص در پروژههایی
که تعداد زیادی تجهیزات مشابه مانند پمپ،
موتور، ولو و کمپرسور دارند، امکان استانداردسازی و استفاده مجدد
از منطق کنترلی را فراهم میکند.
از طرف دیگر، انتخاب صحیح Data Type،
نامگذاری استاندارد متغیرها و دستهبندی مناسب اطلاعات، تأثیر مستقیمی بر خوانایی
برنامه، سرعت عیبیابی، Commissioning
و توسعه آینده سیستم دارد. ارتباط صحیح Data Block با HMI و SCADA نیز
باعث میشود اطلاعات فرآیند، وضعیت تجهیزات، Alarmها و
Setpointها به شکل منظم در اختیار سیستم مانیتورینگ قرار
بگیرند.
در نهایت، هدف از طراحی حرفهای Data Block این نیست که صرفاً یک DB در
SIMATIC Manager ایجاد
کنیم؛ بلکه باید ساختاری ایجاد شود که در یک پروژه واقعی از مرحله Engineering تا Commissioning، بهرهبرداری، Maintenance و توسعه سیستم قابل اتکا باشد.
به همین دلیل، تسلط بر Data Block یکی از مهارتهای مهم برای طراحی نرمافزار PLC زیمنس در پروژههای نفت، گاز، پتروشیمی، پالایشگاه، نیروگاه و سایر
صنایع فرآیندی محسوب میشود.
