نمودار عملکرد پیوسته (CFC؛ به آلمانی Signalflussplan) به انگلیسی Continuous Function Chart (CFC) یک زبان برنامهنویسی برای کنترلگرهای منطقی قابلبرنامهریزی (PLC) است. با اینکه این زبان در استاندارد IEC 61131-3 تعریف نشده است، اما بهعنوان یک گسترش رایج در محیطهای برنامهنویسی مبتنی بر این استاندارد شناخته میشود. کاربرد اصلی آن عمدتاً در فناوری کنترل فرآیند و سیستم های DCS است، زیرا وظایف پیچیده کنترلی و تنظیمی که در این حوزه رخ میدهند، بهخوبی با استفاده از CFC قابل پیادهسازی هستند. از CFC برای طراحی و برنامه نویسی فرایندهایی استفاده می شود که به صورت پیوسته در حال عملیات هستند و نیاز به کنترل و مدیریت پیوسته دارند. در این نوشتار به معرفی زبان برنامه نویسی CFC و کابرد آن پرداخته می شود.
نمودار عملکرد پیوسته (CFC) یک ویرایشگر گرافیکی است که میتوان آن را به همراه بسته نرمافزاری PCS7 و STEP 7 شرکت زیمنس یا ابزارهای دیگری مانند CODESYS و یا PLC های Beckhoff استفاده کرد. این ابزار برای ایجاد کل ساختار نرمافزاری CPU از بلوکهای آماده بهکار میرود. هنگام کار با این ویرایشگر، بلوکها را روی نمودار عملکرد قرار میدهید، به آنها پارامتر اختصاص میدهید و آنها را به یکدیگر متصل میکنید. اتصال بلوکها به این معناست که—برای نمونه—مقدار خروجی یک بلوک به ورودی یک یا چند بلوک دیگر منتقل میشود.
کاربرد زبان برنامهنویسی CFC در PCS7
نمودارهای عملکرد پیوسته اساساً برای کنترل فرآیندهای پیوسته بهکار میروند، جایی که کل منطق برنامه در هر چرخه اسکن PLC اجرا میشود و خروجیها محاسبه میگردند. این در حالی است که در SFC، اجرا بهصورت ترتیبی و مشابه فرآیندهای دستهای (Batch) انجام میشود.
CFC یک زبان برنامهنویسی گرافیکی است که در آن بلوکهای تابعی (Function Blocks) به یکدیگر متصل میشوند، بهجای اینکه مانند زبانهای برنامهنویسی کلاسیک، توالیای از دستورات متنی وارد شود. الگوی این زبان نمودارهای مدار در طراحی سختافزار است. این شیوه نمایش برنامه، برای توسعهدهندگان نرمافزارهای کنترلی که معمولاً پیشزمینه فنی آنها در مهندسی برق است، بسیار مناسب است.
CFC را میتوان بهعنوان گسترشی از زبان بلوکهای تابعی(Function Blocks) در نظر گرفت که در آن پردازش خط به خط از بالا سمت چپ به پایین سمت راست، بهصورت سختگیرانه اجرا نمیشود. بلوکهای تابعی را میتوان بهصورت آزادانه در صفحه قرار داد و برنامهنویس امکان بیشتری برای اتصال ورودیها و خروجیها دارد. ترتیب اجرای بلوکها از طریق شمارهگذاری مشخص میشود.
بلوکهای تابعی اغلب با زبانهای دیگر PLC مانند AWL یا متن ساختیافته (Structured Text) نوشته میشوند و میتوانند توسط سازنده سیستم اتوماسیون بهصورت بلوکهای استاندارد ارائه شوند یا توسط کاربر طراحی شوند.
بسیاری از سیستمهای کنترل فرایند دارای قابلیت تصویریسازی نیز هستند. به همین دلیل، برای بلوکهایی که با کاربر سیستم در ارتباطاند (برای کنترل یا نمایش وضعیت)، اغلب «Faceplate»هایی (تصاویر تصویریسازی) از پیش آماده شدهاند که میتوان آنها را به راحتی در سیستمهای تصویریسازی سازگار استفاده کرد.
به دلیل سطح انتزاع بالاتر در CFC، برنامههای ترجمهشده معمولاً بسیار حجیمتر از زبانهای نزدیکتر به سختافزار مانند AWL هستند. این مسئله ممکن است در برنامههای پیچیده به مشکلاتی مانند کمبود حافظه موجود در کنترلر یا افزایش زمان چرخه منجر شود و استفاده از یک کنترلر قدرتمندتر (و گرانتر) را ضروری کند.
زبان برنامهنویسی CFC در Beckoff
زبان پیادهسازی نمودار عملکرد پیوسته (CFC) یک زبان برنامهنویسی گرافیکی است که زبانهای استاندارد تعریفشده در IEC 61131-3 را گسترش میدهد.
در CFC، میتوانید عناصر (بلوکها) را وارد کرده و بهصورت آزاد در یک بلوک برنامهنویسی جایگذاری کنید. این عناصر با استفاده از اتصالات به یکدیگر متصل میشوند تا یک شبکه منطقی تشکیل دهند. همچنین میتوانید بازخورد (Feedback) نیز اضافه کنید. نتیجه نهایی، نموداری شبیه به نقشه مدار یا دیاگرام بلوکی است که بهآسانی قابل درک و پیگیری است.
ترتیب اجرای یک دیاگرام بلوکی در CFC بر پایه جریان داده (Data Flow) است. یک بلوک برنامهنویسی میتواند چندین جریان داده را پردازش کند. این جریانها دادهای مشترک ندارند و به همین دلیل، چندین شبکه در ویرایشگر وجود دارد که به یکدیگر متصل نیستند. در مقابل، زبانهای دیگر مانند FBD، LD یا IL از ترتیب اجرای مبتنی بر شبکه استفاده میکنند.
زبان پیادهسازی CFC – مبتنی بر صفحه (Page-Oriented) نیز یک زبان گرافیکی است که قابلیتهای CFC را برای طراحی بلوکهای پیچیده و حجیم گسترش میدهد. عناصر و دستورات مشابه با CFC در این حالت هم در دسترس هستند، با این تفاوت که میتوانید کدها را در صفحات مختلف توزیع کنید. این امکان به شما کمک میکند نمودارهای بزرگ را طراحی و در عین حال بهراحتی چاپ کنید. در لبههای هر صفحه، میتوان ورودیها و علامتهای اتصال غرقشونده (Sink) را در سمت چپ و خروجیها و علامتهای اتصال منبع (Source) را در سمت راست قرار داد. این ویژگی به رسم خطوط اتصال کمک کرده و دید بهتری از ساختار فراهم میسازد.
نکته مهم این است که امکان جابجایی یک بلوک برنامهنویسی بین دو زبان CFC و CFC مبتنی بر صفحه وجود ندارد.