در
PLCهای زیمنس خانواده SIMATIC S7-300 و
S7-400،
علاوه بر OB، FC و FBهایی که مهندس برنامهنویس ایجاد میکند، مجموعهای
از بلوکهای سیستمی نیز در اختیار برنامه قرار دارد که با عنوان System Function Block یا SFB شناخته
میشوند.
در پروژههای اتوماسیون صنعتی، یکی از تفاوتهای اصلی میان یک برنامه PLC ساده و یک نرمافزار مهندسیشده برای پروژههای بزرگ EPC، نحوه استفاده از قابلیتهای داخلی سیستمعامل PLC است.
SFBها برای انجام وظایف استاندارد و سیستمی مانند تایمر، کانتر، ارتباطات، خواندن و نوشتن رکوردهای تجهیزات، مدیریت Alarm و انتقال داده طراحی شدهاند. زیمنس در مستندات S7-PLCSIM، برای نمونه SFB0 تا SFB5 را بهترتیب CTU، CTD، CTUD، TP، TON و TOF معرفی میکند و همچنین SFB32، SFB35، SFB37، SFB52، SFB53 و SFB54 را در میان SFBهای پشتیبانیشده فهرست کرده است.
در پروژههای نفت، گاز و پتروشیمی، اهمیت SFBها فقط به «برنامهنویسی سریعتر» محدود نمیشود.
استفاده صحیح از آنها میتواند روی مواردی مانند:
· قابلیت اطمینان نرمافزار
· استانداردسازی برنامه
· کاهش زمان مهندسی
· کاهش زمان Commissioning
· مدیریت Alarm
· ارتباط با تجهیزات هوشمند
· Diagnostic
· ثبت دادههای فرآیندی
· توسعه و Revamp پروژه
تأثیر مستقیم داشته باشد.
SFB چیست؟
SFB مخفف System Function Block است.
SFB یک
بلوک سیستمی است که توسط سیستمعامل
CPU زیمنس ارائه میشود و برای انجام یک وظیفه مشخص
در برنامه
PLC مورد استفاده قرار میگیرد.
تفاوت مهم SFB با یک FB معمولی این است که SFB بخشی از قابلیتهای سیستمی CPU است و مهندس پروژه معمولاً منطق داخلی آن را از
صفر طراحی نمیکند.
برای مثال، اگر بخواهیم یک تایمر تأخیر در وصل
داشته باشیم، به جای اینکه خودمان منطق تایمر را با بیتها، مقایسهها و شمارندهها
طراحی کنیم، میتوانیم از:
SFB4 = TON
استفاده کنیم.
یا برای یک شمارنده افزایشی:
SFB0 = CTU
را به کار میبریم.
زیمنس SFBهای CTU، CTD، CTUD، TP، TON و TOF را بهعنوان بلوکهای سیستمی استاندارد معرفی کرده است.
تفاوت SFB و
SFC چیست؟
یکی از پرسشهای مهم مهندسان در STEP7 Classic این است که چرا برخی قابلیتهای سیستمی با عنوان SFB و برخی با عنوان SFC ارائه شدهاند.
بهصورت ساده:
SFB = System Function Block
و
SFC = System Function
است.
تفاوت مهم در نحوه نگهداری وضعیت داخلی است.
SFBها
معمولاً برای عملکردهایی استفاده میشوند که نیاز به حافظه وضعیت دارند و به همین
دلیل در زمان فراخوانی به یک Instance DB نیاز
دارند.
برای مثال:
SFB4 → TON
برای نگهداری وضعیت تایمر، زمان سپریشده و
وضعیت خروجی به حافظه نیاز دارد.
در مستندات زیمنس نیز برای SFBها، اختصاص Data Block هنگام فراخوانی ذکر شده است.
در مقابل، SFCها
معمولاً به شکل
Function سیستمی فراخوانی میشوند و ساختار حافظهای آنها
مانند
SFB نیست.
بنابراین در پروژههای STEP7 باید از همان ابتدا تفاوت این دو مفهوم برای تیم مهندسی مشخص باشد.
چرا
SFBها برای پروژههای نفت و گاز مهم هستند؟
در یک پروژه کوچک ممکن است یک مهندس تنها چند
تایمر و کانتر داشته باشد.
اما در یک واحد فرآیندی بزرگ، تعداد این عملیات
میتواند به صدها یا هزاران مورد برسد.
فرض کنید در یک پالایشگاه داریم:
· ۱۵۰ موتور
· ۱۰۰ شیر موتوری
· ۸۰ پمپ
· ۳۰ سیستم تزریق
· ۲۰ کمپرسور
· چندین سیستم Utility
· صدها
Alarm
· تعداد زیادی تجهیز Profibus و
Remote I/O
هرکدام از این تجهیزات ممکن است به تایمر،
شمارنده، Diagnostic یا ارتباط داده نیاز داشته باشند.
استفاده از SFBهای استاندارد باعث میشود مهندس پروژه مجبور نباشد برای هر تجهیز، منطق مشابه را از ابتدا طراحی کند.
SFB0 چیست؟ CTU
Counter Up
SFB0 با نام CTU برای
پیادهسازی شمارنده افزایشی استفاده میشود.
وظیفه اصلی آن این است که با دریافت پالسهای
ورودی، مقدار شمارش را افزایش دهد.
به زبان ساده:
هر بار که یک رویداد مشخص اتفاق بیفتد، شمارنده
یک واحد افزایش پیدا میکند.
این قابلیت برای بسیاری از فرآیندهای صنعتی کاربرد دارد.
مثال صنعتی SFB0 در پروژه نفت و گاز
فرض کنید در یک واحد بارگیری، تعداد Batchهای منتقلشده باید شمارش شود.
هر بار که یک Batch با موفقیت تکمیل میشود، یک پالس به ورودی
شمارنده ارسال میشود.
ساختار منطقی:
Batch Complete
↓
SFB0 / CTU
↓
Count Value
↓
HMI / SCADA
به این ترتیب اپراتور میتواند تعداد Batchهای تکمیلشده را مشاهده کند.
مثال
SFB0 در نیروگاه
در نیروگاه میتوان از شمارنده برای ثبت تعداد Startهای یک تجهیز استفاده کرد.
برای مثال:
Motor Start
↓
CTU
↓
Start Counter
↓
HMI
این اطلاعات در نگهداری پیشگیرانه اهمیت زیادی
دارد.
اگر یک موتور در مدت کوتاهی تعداد Start بسیار زیادی داشته باشد، میتوان آن را بهعنوان یک شاخص برای بررسی شرایط عملیاتی یا تنظیمات کنترل در نظر گرفت.
نکته مهم طراحی SFB0
در پروژههای EPC نباید صرفاً مقدار شمارش را نمایش داد.
باید مشخص شود:
· چه رویدادی باعث افزایش شمارنده میشود؟
· آیا پالس باید Rising Edge باشد؟
· مقدار اولیه چیست؟
· چه زمانی Reset انجام میشود؟
· آیا مقدار باید Retentive باشد؟
· آیا مقدار باید در HMI قابل مشاهده باشد؟
· آیا
Reset توسط اپراتور مجاز است؟
این موارد باید در Functional Design Specification یا FDS پروژه مشخص شوند.
SFB1 چیست؟ CTD
Counter Down
SFB1 با نام CTD برای
شمارش نزولی استفاده میشود.
در این حالت مقدار شمارنده با دریافت رویداد
مناسب کاهش پیدا میکند.
این عملکرد برای فرآیندهایی مناسب است که یک ظرفیت اولیه داریم و میخواهیم تعداد باقیمانده را محاسبه کنیم.
مثال عملی SFB1 در مخزن ذخیره
فرض کنید یک سیستم دارای ظرفیت 100 Batch است.
با هر بار مصرف یک Batch:
100
↓
99
↓
98
↓
...
SFB1 میتواند مقدار باقیمانده را مدیریت کند.
این روش در سیستمهای Batch،
انبارش، بستهبندی و توالیهای تولید کاربرد دارد.
مثال عملی در سیستم مواد شیمیایی
فرض کنید یک سیستم تزریق مواد شیمیایی دارای
تعداد مشخصی سیکل مجاز است.
با هر سیکل موفق:
Cycle Remaining = Cycle Remaining - 1
در نتیجه میتوان قبل از رسیدن به پایان ظرفیت، Alarm یا Maintenance Request تولید کرد.
SFB2 چیست؟ CTUD
Up/Down Counter
SFB2 با نام CTUD ترکیبی
از شمارش افزایشی و کاهشی است.
یعنی یک سیستم میتواند همزمان مفهوم:
Count Up
و
Count Down
را مدیریت کند.
این قابلیت زمانی اهمیت دارد که مقدار یک تجهیز
ممکن است هم افزایش و هم کاهش داشته باشد.
مثال صنعتی SFB2
فرض کنید در یک سیستم انتقال مواد:
ورود محصول به مخزن باعث افزایش شمارنده شود.
خروج محصول از مخزن باعث کاهش شمارنده شود.
ساختار مفهومی:
Product In
↓
Count Up
↓
SFB2
↓
Count Value
↓
Count Down
←
Product Out
این معماری برای سیستمهای تولید، Batch و
Material Handling قابل
استفاده است.
SFB3 چیست؟ TP
Pulse Timer
SFB3 با نام TP برای
تولید یک پالس زمانی استفاده میشود.
وقتی شرایط Trigger برقرار شود، خروجی برای مدت زمان تعیینشده فعال
میشود.
بهصورت مفهومی:
Trigger
↓
SFB3 / TP
↓
Output Pulse
↓
Actuator
این عملکرد برای تجهیزات و فرآیندهایی که نیاز
به فرمان پالسی دارند بسیار کاربردی است.
مثال صنعتی SFB3 در سیستم Purge
فرض کنید شیر Purge باید پس از دریافت فرمان، برای مدت مشخصی باز
شود.
فرمان:
Purge Request
↓
SFB3
↓
Purge Valve
↓
زمان مشخص
↓
Valve Close
در پروژه واقعی، این منطق باید همراه با Feedback شیر، Interlock و شرایط ایمنی فرآیند طراحی شود.
SFB3 صرفاً زمان پالس را مدیریت میکند و نباید بهتنهایی
بهعنوان منطق ایمنی فرآیند در نظر گرفته شود.
مثال
SFB3 برای پمپ تزریق
فرض
کنید یک پمپ تزریق مواد شیمیایی باید برای مدت 5 ثانیه فعال شود.
فرمان:
Dosing
Request
↓
SFB3
↓
Pump Start
↓
5 sec
↓
Pump Stop
این روش برای عملیاتهای کوتاه و مشخص زمانی بسیار کاربردی است.
SFB4 چیست؟ TON
On-Delay Timer
SFB4 با نام TON یکی از
پرکاربردترین
SFBهای
STEP7 Classic است.
TON برای
ایجاد تأخیر زمانی در وصل شدن خروجی استفاده میشود.
یعنی شرط ورودی باید برای مدت مشخصی برقرار
بماند تا خروجی فعال شود.
منطق آن:
Input ON
↓
شروع زمانسنجی
↓
Time Elapsed
↓
Output ON
مثال صنعتی SFB4
فرض کنید یک موتور باید فقط زمانی Running معتبر داشته باشد که Feedback آن حداقل 3 ثانیه برقرار باشد.
منطق:
Motor Feedback
↓
SFB4 TON
↓
3 Seconds
↓
Motor Confirmed Running
این روش از تشخیصهای لحظهای و کاذب جلوگیری میکند.
مثال
SFB4 در سیستم فن
فرض کنید پس از فرمان Start،
باید 10 ثانیه صبر کنیم تا فشار هوا به حد مناسب برسد.
Fan Start
↓
SFB4
↓
10 sec
↓
Pressure Check
↓
Next Sequence
این نوع منطق در Sequenceهای راهاندازی بسیار رایج است.
مثال
SFB4 در کمپرسور
در یک سیستم Compressor،
ممکن است پس از
Start فرمان، سیستم نیاز داشته باشد چند ثانیه صبر کند
تا:
· روغنکاری برقرار شود.
· Pressure به حد مجاز برسد.
· Running Feedback دریافت شود.
· شرایط Interlock بررسی شود.
در چنین شرایطی TON میتواند یکی از اجزای منطق توالی راهاندازی
باشد.
البته برای هر کمپرسور باید منطق نهایی مطابق Cause & Effect، Vendor Logic و Functional Design پروژه طراحی شود.
SFB5 چیست؟ TOF
Off-Delay Timer
SFB5 با نام TOF برای
ایجاد تأخیر در خاموش شدن خروجی استفاده میشود.
یعنی وقتی شرط ورودی قطع میشود، خروجی بلافاصله
خاموش نمیشود؛ بلکه برای مدت مشخصی فعال باقی میماند.
منطق:
Input OFF
↓
شروع زمان تأخیر
↓
Time Elapsed
↓
Output OFF
مثال صنعتی SFB5 در فن خنککننده
فرض کنید پس از خاموش شدن موتور اصلی، فن خنککننده
باید برای مدت 30 ثانیه به کار خود ادامه دهد.
Motor OFF
↓
SFB5 / TOF
↓
30 sec
↓
Cooling Fan OFF
این روش در سیستمهایی که نیاز به Post-Cooling دارند بسیار مفید است.
مثال
SFB5 در سیستم تهویه
در برخی فرآیندها پس از توقف یک تجهیز، تهویه
باید برای مدت مشخصی ادامه داشته باشد.
Equipment OFF
↓
TOF
↓
Ventilation ON
↓
30 sec
↓
Ventilation OFF
البته زمان واقعی باید بر اساس Process Design و الزامات ایمنی پروژه تعیین شود.
تفاوت SFB3، SFB4 و
SFB5
سه SFB بسیار مهم را میتوان اینگونه به خاطر سپرد:
SFB3 / TP
برای
تولید یک پالس با مدت مشخص.
SFB4 / TON
برای
تأخیر در روشن شدن خروجی.
SFB5 / TOF
برای
تأخیر در خاموش شدن خروجی.
این سه بلوک در طراحی Sequenceهای صنعتی، Interlockها، راهاندازی تجهیزات و منطقهای زمانمحور بسیار کاربردی هستند.
نکته
بسیار مهم در استفاده از
SFBهای
Timer
در پروژههای حرفهای نباید یک Instance مربوط به یک SFB Timer را برای چند تجهیز مستقل بهصورت اشتراکی
استفاده کرد.
هر وضعیت زمانی باید حافظه مستقل داشته باشد.
برای مثال اگر دو پمپ به دو TON مستقل نیاز دارند:
Pump A
↓
TON Instance A
و
Pump B
↓
TON Instance B
بهتر است وضعیت هر Timer مستقل مدیریت شود.
این موضوع خصوصاً در طراحیهای Multi-Instance و کتابخانههای استاندارد پروژه اهمیت زیادی
دارد.
زیمنس نیز در معماری SFBها، استفاده از Data Block برای نگهداری وضعیت عملکرد را مطرح میکند.
معماری پیشنهادی در پروژه EPC
در یک پروژه حرفهای میتوان ساختار را به شکل
زیر طراحی کرد:
Process Signal
↓
Engineering Logic
↓
Equipment FB
↓
SFB Timer / Counter
↓
Interlock
↓
Command
↓
Field Equipment
این معماری باعث میشود SFB مستقیماً مسئول کل منطق تجهیز نباشد، بلکه بهعنوان
یک جزء استاندارد از منطق کنترل
استفاده شود.
برای مثال:
FB_MOTOR
میتواند از چند SFB4 و
SFB5 برای مدیریت:
· Start Delay
· Stop Delay
· Feedback Timeout
· Restart Delay
استفاده کند.
این روش بسیار قابل توسعهتر از قرار دادن تعداد زیادی Timer پراکنده در OB1 است.
اشتباهات رایج مهندسان در استفاده از SFB
یکی از اشتباهات رایج این است که مهندس صرفاً
نام
SFB را میشناسد اما منطق فرآیندی پشت آن را طراحی
نمیکند.
برای مثال:
TON ≠ Interlock
TON فقط یک
تأخیر زمانی ایجاد میکند.
اگر یک موتور باید به دلیل Low Pressure متوقف شود، TON بهتنهایی
نمیتواند منطق حفاظتی موتور را تشکیل دهد.
همچنین:
TP ≠ Safety Function
SFB3 میتواند یک پالس ایجاد کند، اما اینکه آن پالس
برای یک تجهیز ایمن است یا خیر، به کل
Cause & Effect و
طراحی سیستم بستگی دارد.
نکات مهم برای مدیران پروژه
در پروژههای EPC،
استفاده صحیح از
SFBها باید در مرحله طراحی نرمافزار مشخص شود.
مدیر پروژه باید بتواند از تیم اتوماسیون درباره
این موارد سؤال کند:
آیا
Timerهای پروژه استاندارد شدهاند؟
آیا هر تجهیز Instance مستقل دارد؟
آیا منطقهای زمانی در Functional Design مستند شدهاند؟
آیا
Timerها در FAT تست شدهاند؟
آیا مقادیر زمان در HMI قابل مشاهده یا تنظیم هستند؟
آیا تغییرات زمانبندی در Revision Management ثبت میشوند؟
این موارد مستقیماً روی کیفیت Commissioning و
Maintenance پروژه تأثیر میگذارند.
جمعبندی :
در قسمت اول آموزش System Function Block در STEP7 Classic با
مفهوم
SFB و شش بلوک پایه آشنا شدیم:
SFB0 – CTU
شمارنده افزایشی
SFB1 – CTD
شمارنده کاهشی
SFB2 – CTUD
شمارنده افزایشی/کاهشی
SFB3 – TP
تولید پالس
SFB4 – TON
تأخیر در وصل
SFB5 – TOF
تأخیر در قطع
این بلوکها اگرچه از نظر عملکرد ساده به نظر میرسند،
اما در پروژههای بزرگ نفت، گاز، پتروشیمی و نیروگاهی، پایه بسیاری از منطقهای Sequence، Interlock، Start/Stop، Permissive و Equipment Control را
تشکیل میدهند.
درمقاله بعدی از گروه فنی مهندسی الکترونت وارد SFBهای پیشرفتهتر میشویم؛ جایی که موضوع از Timer و Counter به سمت Sequence Control، Alarm، Diagnostic، ارتباطات و دسترسی به دادههای تجهیزات هوشمند حرکت میکند. پس با ما همراه باشید.
