Послідо́вні функціона́льні схе́ми (діагра́ми) або Sequential function chart (SFC) — мова програмування стандарту IEC 61131-3[1], що призначена для програмування промислових контролерів. Знайшла широке використання у SCADA/HMI пакетах багатьох розробників.
SFC — це графічна мова, що призначена для написання програм послідовного керування технологічним процесом, яка описує процес у формі близькій до діаграми станів. Аналогом може слугувати мережа Петрі із різнокольоровим маркерами[2]. У кожному стані система виконує дії (підпрограми) з певними модифікаторами. Наприклад, модифікатор N вказує виконувати, поки стан є активним.
Приклад: Підтримання рівня рідини у посудині з безперервним її витіканням
╔════════╗
║ ║
║ START ║ Початковий стан
╚═══╤════╝
│
─┼─level_low Рівень менший (умова переходу – логічна змінна)
│
┌───┴────┐ ┌───┬────────────┐
│ Motor ├──┤ N │motor_on │ Стан є активним поки не спрацює умова «рівень є більшим». Дія з модифікатором N - поки
│ On │ └───┴────────────┘ стан є активним
└───┬────┘
─┼─level_high Рівень більший (умова переходу - логічна змінна)
┌───┴────┐ ┌───┬────────────┐
│ Motor ├──┤ P │motor_off │ Стан є активним поки не спрацює умова «рівень є більшим. Дія з модифікатором P -
│ Off │ └───┴────────────┘ одноразове спрацювання
└───┬────┘
│
↓
START Перехід на початковий стан
Основними елементами мови є:
стани (кроки), у яких виконуються певні дії; одночасно можуть бути активними декілька станів, один із станів є початковим;
переходи із стану в стан; для кожного переходу задається логічна умова переходу до наступного стану;
альтернативне розгалуження алгоритму, коли з поточного стану можливі переходи до декількох станів, при цьому кожному переходу відповідає своя логічна умова і при виконанні алгоритму проводиться лише один із альтернативних переходів;
паралельне розгалуження, на відміну від альтернативного має загальну умову переходу на декілька паралельно гілок, що працюють паралельно;
перехід до заданого стану;
зупинка процесу.
Модифікатори дій за IEC визначають деталі поведінки дій у станах (кроках). Список можливих модифікаторів включає наступні:
N (англ.Non-stored) — дія виконується, поки активний стан;
SD (англ.Stored and time Delayed) — дія активується через заданий час після активації стану, навіть якщо стан уже не активний;
DS (англ.Delayed and Stored) — дія активується через заданий час після активації стану і залишається активною до скидання;
SL (англ.Stored and time Limited) — дія активується на заданий час.
Мова програмування, наприклад, використовується в інструментальному програмному комплексі CODESYS, також, при програмуванні промислових контролерів сімейства SIMATIC компанії «Siemens» (мова Graph 7 як доповнення до пакету Simatic Step 7 для контролерів SIMATIC S7-300 та SIMATIC S7-400 або мова під назвою SFC, що застосовується в рамках інтегрованого середовища розробки програм контролерів і систем людино-машинного інтерфейсу SIMATIC PCS 7.
↑IEC 61131-3:2013 Programmable controllers — Part 3: Programming languages
↑Макаров И. М., Назаретов В. М., Кульба А. В., Швецов А. Р. Сети Петри с разноцветными маркерами. // Техническая кибернетика. — 1987. — № 6. — С. 101—107.
Джерела
Петров И. В. Программируемые контроллеры. Стандартные языки и приёмы прикладного проектирования / Под ред. проф. В. П. Дьяконова. — М.: СОЛОН-Пресс, 2004. — 256 с. — ISBN 5-98003-079-4
Jochen Petry IEC 61131-3 mit CoDeSys V3: Ein Praxisbuch für SPS-Programmierer. — 2011. — 839 с.
Birgit Vogel-Heuser, Andreas Wannagat Modulares Engineering und Wiederverwendung mit CoDeSys V3". — Oldenbourg Industrieverlag, 2007. — ISBN 3-8356-3105-5