Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка IEC 1131-3(200%).doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.66 Mб
Скачать

6. Язык последовательных функциональных схем sfc

Язык последовательных функциональных схем (Sequential Function Charts, или Grafcet) позволяет формулировать логику программы на основе чередующихся процедурных шагов и транзакций (условных переходов).

Обычно язык SFC выбирается для программирования сложных многорежимных последовательно-параллельных задач с большим количеством управляемых элементов. При этом программа, написанная на SFC, представляется в простой наглядной структурированной форме в виде блок схемы шагов и переходов между ними.

Всякая программа на языке SFC разделяется на два уровня:

    1. Уровень структуры – здесь задаются последовательность и связи между шагами и переходами.

    2. Уровень программы – внутри каждого шага и перехода находится программа, реализованная на одном из языков стандарта МЭК 61131.

Структурная схема в языке SFC

Существует четыре основных компонента структуры в языке SFC:

    1. Шаги – предназначены для описания действий, выполняемых с переменными (рисунок 6.1.а).

    2. Переходы – описывают условия перехода между шагами (рисунок 6.1.б)

    3. Соединительные линии – линии связи между шагами и переходами.

    4. Прыжки – осуществляют переход на указанный шаг (рисунок 6.1.в).

а) б) в)

Рисунок 6.1 – Графическое обозначение основных компонентов структуры языка SFC

а) – шаг; б) – переход; в) – прыжок

Основные правила создания структуры на языке SFC:

    1. В начале структуры обязательно находится начальный шаг.

    2. После шага обязательно следует переход (шаги и переходы чередуются).

    3. Шаги и переходы соединяются линиями связи.

    4. Структура может разветвляться с помощью специальных линий связи (расхождения и схождения).

    5. Шаги и переходы имеют сквозную независимую друг от друга нумерацию. После создания шага или перехода ему автоматически присваивается следующий по порядку создания номер и прописывается в его графическое изображение (рисунок 6.1).

Шаги подразделяются на:

    1. Начальный шаг – предназначен для задания начальных условий.

    2. Шаг – содержит программу, выполняющую действие над переменными.

    3. Макрошаг – содержит ссылку на отдельную конструкцию шагов и переходов (макрос).

    4. Начальный макрошаг – задает начальные условия и указывает на начало макроса. На схеме обозначается также как и простой шаг.

    5. Конечный макрошаг – определяет окончание макрошага. На схеме обозначается также как и простой шаг.

а) б) в)

Рисунок 6.2 – Графическое обозначение шагов

а) – начальный шаг; б) – шаг; в) – макрошаг

У шага есть атрибуты. Они могут быть использованы в любом другом языке:

GSnnn.x........................активность шага (логическая переменная)

GSnnn.t........................продолжительность активного состояния шага (таймер)

(где nnn - номер шага)

Пример 1: Примеры конструкций на SFC приведены на рисунке 6.3.

Обратите внимание на последовательность нумерации шагов и переходов в примере 1 – шаги нумеруются отдельно от нумерации переходов. Нумерация происходит автоматически. В примере с макросом (рисунок 6.3.в), макрос содержит шаги 2, 3 и переход 2.

Макрос представляет собой отдельную конструкцию, не соединенную ни с какими другими частями схемы. Ссылка на макрос осуществляется с помощью макрошага. Макрошаг не имеет собственного номера. Номер макрошага, соответствует номеру начального шага мага (начального макрошага – шаг 2 в примере). На рисунке 6.3.г приведена конструкция аналог конструкции с макросом. Здесь видно, что фактически конструкция, содержащаяся в макросе, подставляется в основную схему.

Важно понимать также, что все примеры на рисунке 6.3 фактически не несут никакой смысловой нагрузки и не выполняют никакого действия, т.к. в них не задана собственно программа (содержание шагов и переходов, или второй уровень схемы).

а) б) в) г)

Рисунок 6.3 – Примеры конструкций на SFC

а) – простая конструкция; б) конструкция с ветвлением;

в) – конструкция с макросом; г) – конструкция аналог, конструкции (в)

Последовательность выполнения конструкции языка SFC

Язык SFC является языком последовательного типа. В каждом цикле контроллера может выполняться лишь активная часть программы последовательного типа. Активной частью является пара - шаг и переход, в которые выполнение зашло согласно заданной конструкции и программному содержанию. Пара шаг-переход будет активна пока не выполнится условие заданное в переходе. После выполнения условия перехода активность приобретает шаг находящийся после перехода. В общем случае активной может быть не одна пара шаг-переход.

Во время работы активный шаг помечается маркером (закрашивается в черный цвет).

Рассмотрим пример 1, с точки последовательности выполнения шагов и переходов.

Схема на рисунке 6.3.а выполняется в следующей последовательности:

    1. В начале цикла контроллера выполняется действие начального шага, затем проверяется условие перехода 1, при этом шаг 2 и переход 2 пассивны и в этом цикле не выполняются;

    2. Если условие перехода 1 верно, то осуществляется переход на шаг 2 и пара начальный шаг и переход 1 теряет активность.

Активность шага сохраняется до тех пор, пока не выполнится условие следующего за ним перехода. Выполнение перехода соответствует случаю, когда выражение, находящееся в переходе будет равно true (истине)

    1. В начале очередного цикла контроллера, после потери шагом 1 активности, начинает выполняться шаг 2 и следующий за ним переход 2. Выполнением проверки условия перехода 2 завершается цикл выполнения.

    2. Выполнение пары шаг 2 и переход 2 осуществляется столько циклов контроллера, сколько пройдет до момента выполнения условия перехода 2.

    3. После выполнения условия перехода 2, в следующем цикле шаг 2 теряет активность, выполняется прыжок на шаг 1, шаг 1 приобретает активность. Затем в этом же цикле выполняется программа шага 1 и условие перехода 1, т.е. выполнение начинается с начала.

Рассмотрим особенности выполнения конструкции на рисунке 6.3.б.

После выполнения действия шага 1, по очереди выполняется проверка условий переходов 1 и 3. В случае истинности обоих условий активность приобретают два шага – 2 и 3, и в следующем цикле контроллера выполняются по очереди две пары – шаг 2 и переход 2, шаг 3 и переход 4, в соответствующей последовательности. Так реализуется параллельное выполнение задач. При организации сложных параллельных вычислений во избежание непредсказуемых результатов важно правильно задавать условия переходов.

В минимальном варианте в программе SFC может находиться один начальный шаг. Завершение программы прыжком необязательно. Присутствие прыжка во всех примерах конструкциях на рисунке 3 связано со спецификой программирования контроллеров, где все действия цикличны.

Второй уровень языка SFC – программа

Написание программы осуществляется в шагах. Программа, заключенная в шаге называется действием. Действие в программе на языке SFC несет основную функциональную нагрузку. Совокупность действий в различных шагах объединяется условиями переходов.

В переходах размещается одна строка программы, включающая только одно логическое выражение. Результатом выполнения этого выражения может быть истина или ложь. Переход осуществляется если выражение истинно.

Действия могут быть написаны на языках ST, IL, логическими фразами SFC.

Условия переходов могут быть написаны на языках ST, LD, IL.

Благодаря возможности ссылаться на блоки, функции и подпрограммы из любого языка, фактически везде могут использоваться также язык FBD и LD в действиях (через ссылки).

Действия в шагах

Основные типы действий:

  • Булевские действия;

  • Импульсные действия;

  • Не сохраняемые действия;

  • Действия SFC.

В одном шаге могут быть описаны несколько действий одинаковых или разных типов. Использование любого языка возможно посредством вызова подпрограм, функций или функциональных блоков, написанных на любом языке, включая С. Это можно реализовать с помощью языков ST или IL.

Булевские действия

Булевские действия присваивают значение логической переменной при активизации шага. Логические переменные могут быть выходными или внутренними. Им присваивается значение каждый раз, когда шаг становится активным или перестает быть активным. Синтаксис основных логических действий:

<boolean_variable> (N) ; присвоить переменной сигнал активности шага

<boolean_variable> ; тот же эффект (N не обязательно)

/ <boolean_variable> ; присвоить переменной отрицание сигнала активности шага

Есть другие возможности установки и сброса логических переменных, когда шаг становится активным. Синтаксис установки и сброса логических действий:

<boolean_variable> (S) ; присваивает переменной значение TRUE, когда шаг;

<boolean_variable> (R) ; присваивает переменной значение FALSE, когда шаг.

Пример 2: Простое булевское действие. На рисунке 6.4 изображена схема из одного шага, который всегда активен и выполняет y=true. На рисунке использованы три разных булевских действия, приводящих к одному результату.

Рисунок 6.4 – Пример простого булевского действия

Импульсные действия

Импульсное действие - это список инструкций ST или IL, которые выполняются только однажды при активизации шага. Инструкции пишутся в соответствии со следующим синтаксисом:

ACTION (P) :

(*ST операторы *)

END_ACTION ;

Не сохраняемые действия

Не сохраняемое действие - это список инструкций ST или IL, которые выполняются на каждом цикле, в течение всего периода активности шага. Инструкции пишутся в соответствии со следующим синтаксисом:

ACTION (N) :

(* ST операторы *)

END_ACTION ;

Действия Р0 и Р1

IsaGraf поддерживает два дополнительных типа действий, выполняемых единожды в начале (Р0) и в конце (Р1) активности шага.

ACTION (P0) :

(* ST операторы *)

END_ACTION ;

ACTION (P1) :

(* ST операторы *)

END_ACTION ;

Действия SFC

С помощью действий SFC осуществляется активизация дочерней программы SFC. Дочерняя программа создается в проекте и имеет уникальное имя. Действия SFC могут прекратить активность дочерней программы.

Присвоение активности дочерней программы значения активности вызывающего шага:

<имя_дочерней_программы> (N);

<имя_дочерней_программы>;

Установка активности дочерней программы:

<имя_дочерней_программы> (S);

Сброс активности дочерней программы:

<имя_дочерней_программы> (R);

Условия, присоединенные к переходам

К каждому переходу может присоединяться логическое выражение, которое является условием прохождения этого перехода. Условие может быть написано на языках ST, LD или IL.

Если к переходу не присоединено выражение, то по умолчанию условие - TRUE.

Соглашения языка ST

Язык ST можно использовать для описания условий, присоединенных к переходам. Выражение должно иметь логический тип и заканчиваться точкой с запятой:

< boolean_expression > ;

Выражение может быть константой TRUE или FALSE, входом или внутренней логической переменной, или комбинацией переменных, которые дают логическое значение.

Соглашения языка LD

Язык Релейных Диаграмм (LD) можно использовать для описания условий, присоединенных к переходам. Диаграмма состоит из штанги с витком. Значение витка представляет значение перехода. При этом витку не присваивается переменная. В среде IsaGraf возможно создание только одной ветви LD, поэтому использование этого языка для описания сложных не всегда удобно или невозможно. Язык ST в этом отношении более гибок (хотя в нем тоже возможна только одна строка).

Соглашения языка IL

Язык Список Инструкций (IL) можно использовать для описания SFC переходов или содержимого действий шагов, согласно следующему синтаксису:

#info=IL

<инструкция>

<инструкция>

....

#endinfo

Значение, которое содержит текущий результат (IL регистр) в конце IL последовательности, будет являться условием, присоединенным к переходу:

result = 0 условие перехода – FALSE;

result <> 0 условие перехода – TRUE.

Специальные ключевые слова #info=IL и #endinfo должны быть введены именно так, строчными буквами. До или после ключевых слов нельзя вводить пробелы и символы табуляции.

Пример 3: Реализация простых логических конструкций на базе схем языка SFC.

а) б)

в) г)

Рисунок 6.5 – Простые логические конструкции на SFC

а) – y = x1 + x2;

б) – если x3 = 1 то у = x1 или x2 иначе у = x1 и x2;

в) и г) – вариант б) на базе конструкций SFC

В этом примере продемонстрирована методика создания несохраняемого действия. В примере 6.5.а, программа с одним шагом и несохраняемым действием, выполняющим у = х1 или х2.

В примере 6.5.б программа с логикой если x3 = 1 то у = x1 или x2 иначе у = x1 и x2. Здесь х1, х2, х3 – входные булевы переменные, у – булевый выход.

В примерах 6.5.в и 6.5.г продемонстрирован вариант 6.5.б, но условие реализовано на базе переходов языка SFC. Для таких простых функций нет необходимости использования таких конструкций. Здесь они приведены для примера построения логических конструкций.

Вариант 6.5.г в отличие от 6.5.в является более оптимальным, т.к. в переходах 3 и 4 находятся условия, истинность которых приводит к переходу на противоположное действие (в шагах 3 или 2). При этом пара шаг-переход активна до тех пор пока условие верно. В варианте 6.5.г шаги 2 и 3 постоянно теряют активность в связи с пустыми переходами 3 и 4 и выполнение переходит на первый шаг. Необходимость наличия пустых переходов 3 и 4 в варианте 6.5.в вызвана правилом очередности шагов и переходов – если бы не было переходов 3 и 4 выполнение после шагов 3 и 4 сразу переходило бы на шаг 1, что недопустимо согласно синтаксису языка SFC.

Во всех примерах на рисунке 6.5 использованы условия, написанные на ST.

Пример 4: Автоматизированная система управления водоотливной установкой на основе языка SFC.

На рисунке 6.6 представлена схема водоотливной установки, как пример автоматизируемого технологического процесса.

ДД

Рисунок 6.6 – Схема водоотливной установки

На рисунке 6.6 есть следующие обозначения:

1, 2, 3 – водооткачивающие насосы;

НУ – нижний уровень;

ВУ – верхний уровень;

ПВУ – повышенный верхний уровень;

АВУ – аварийный верхний уровень.

Задача водоотливной установки сводится к откачке воды из сливной ямы шахтной выработки. Не допускается превышение уровня воды выше аварийного уровня.

На каждом уровне установлены дискретные датчики уровня жидкости с двумя выходными логическими состояниями: истина и ложь. Также в системе имеется датчик давления, предназначенный для контроля наличия воды в насосной системе.

Датчики подключаются к цифровым входам ПЛК. В ПЛК записывается управляющая программа, формирующая управляющие сигналы по данным от датчиков. Эти сигналы поступают на выходы релейного типа, далее, через промежуточные согласующие устройства, на исполнительные устройства – различные насосы. Поэтому важно понимать, что при программировании ПЛК имеет значение лишь типы и число входов выходов, а также логика управления процессом. Ниже приведена таблица, содержащая входные/выходные сигналы ПЛК, управляющего водоотливной установкой.

Таблица 4.2 – Сигналы ввода/вывода

Сигналы

Комментарии

Тип сигнала

Входные:

НУ (NY)

Датчик нижнего уровня

дискретный

ДД (DAWL)

Датчик давления

дискретный

ВУ (WY)

Датчик верхнего уровня

дискретный

ПВУ (PWY)

Датчик повышенного верхнего уровня

аналоговый

АВУ (AWY)

Датчик аварийного верхнего уровня

аналоговый

Выходные:

ZAL

Коммутация питания заливочного насоса

дискретный

NS1

Коммутация питания первого насоса

дискретный

NS3

Коммутация питания второго насоса

дискретный

NS1

Коммутация питания третьего насоса

дискретный

Словесное описание процесса работы водоотливной установки:

  1. Вода начинает заполнять емкость.

  2. При достижении нижнего уровня (датчик НУ) включается заливочный насос.

  3. Насос работает до тех и только в том случае если давление в системе недостаточно. Т.е. значение датчика давления равно логическому нулю.

  4. При достижении водой верхнего уровня срабатывает датчик верхнего уровня и включается первый насос.

  5. При включении первого насоса начинается отсчет времени работы первого насоса. За заранее определенное значение времени первый насос должен откачать воду до нижнего уровня (НУ).

  6. Если вода продолжает повышаться, т.е. скорость притока воды выше, чем производительность первого насоса, то вода достигает повышенный верхний уровень (ПВУ), срабатывает датчик ПВУ и включается второй насос. Кроме того, второй насос включается также и в том случае если первый насос не успевает откачать воду до нижнего уровня.

  7. При включении второго насоса начинается отсчет времени работы второго насоса. За заранее определенное значение времени первый и второй насосы должны откачать воду до нижнего уровня (НУ).

  8. Если они не справляются с этой задачей, или вода продолжает прибывать и достигает верхнего аварийного уровня, включается третий насос. Расчет системы осуществляется таким образом, чтобы в наихудшем варианте хватило производительности трех насосов. Поэтому уровень воды постепенно опускается до нижнего уровня.

  9. Когда вода опускается до нижнего уровня все включенные насосы отключаются и вода вновь начинает прибывать.

На рисунке 6.7 представлена структурная схема системы управления водоотливной установкой.

Рисунок 6.7 – Блок-схема АСУ водоотливом

На рисунке 6.8 приводится графическая схема созданная с помощью SFC.

Рисунок 6.8 – Структурная схема АСУ водоотливом на SFC

На втором уровне в шаге номер два выполняется импульсное действие:

NS1(R); (* язык SFC *)

NS2(R);

ACTION (P) :

NS3:=false; (* язык ST *)

#info=IL (* язык IL *)

LD false

st ZAL

#endinfo

END_ACTION;

На втором уровне в шаге номер три выполняется не сохраняемое действие:

ACTION (N) :

ZAL:=not(DAWL);

if WY and not(NS1) then

NS1:=true;

END_IF;

if (PWY or TNS1) and not(NS2) then

NS2:=true;

END_IF;

if (AWY or TNS2) and not(NS3) then

NS3:=true;

END_IF;

ton1 (NS1, qt);

TNS1:=ton1.Q;

ton2 (NS2, qt);

TNS2:=ton2.Q;

ton1_q:=ton1.Q;

END_ACTION;

Выводы по языку: Язык SFC сложных многорежимных последовательно-параллельных задач с большим количеством управляемых элементов. При программировании на SFC программист получает новые возможности, которые, в принципе, можно реализовать самостоятельно в языке ST, но использование конструкций SFC упрощает программу, а также делает ее более наглядной, благодаря наличию функциональной схемы отображающей этапы работы программы. Более того, в режиме симуляции программы, легко наблюдать какой шаг или переход выполняется в настоящее время.

Список использованных источников

  1. www.softcraft.ru

  2. ISaGRAF. Version 3.4. Руководство пользователя. CJ INTERNATIONAL.:Перевод Науцилус, М.: НИИЯФ МГУ.2000г. 439с.

  3. www.isagraf.ru

  4. Густав Олссон, Джангуидо Пиани. Цифровые системы автоматизации и управления. — СПб.: Невский Диалект, 2001.-557 с.: ил.

Содержание

Введение 4

  1. О стандарте IEC 61131-3 5

  2. Язык программирования Instruction List (IL) 7

  3. Язык программирования Quick Ladder Diagram (LD) 15

  4. Язык программирования Functional Block Diagram (FBD) 22

  5. Язык структурированный текст (ST) 29

  6. Язык последовательных функциональных схем (SFC) 43

Список использованных источников 54

Обсужден на заседании Одобрен методическим бюро __ЭМФ___

кафедры АПП (аббрев. Фак-та)

(наименование кафедры) Протокол №_____

" " 200_г Председатель учебно-методического бюро

Протокол № __ЭМФ___

Зав. кафедрой АПП (аббрев. Фак-та)

(наименование кафедры) ______________/ Умбеталин Т.С. ______________ проф., д.т.н. Брейдо И.В. (подпись) (Ф.И.О. председателя)

(подпись) (Ф.И.О. зав. кафедры) «_____»_____________200_ г.

ЯЗЫКИ ПРОГРАММИРОВАНИЯ ПРОМЫШЛЕННЫХ ЛОГИЧЕСКИХ КОНТРОЛЛЕРОВ СТАНДАРТА IEC 61131-3

по дисциплинам

«ПРОМЫШЛЕННЫЕ КОНТРОЛЛЕРЫ»

«ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СИСТЕМ УПРАВЛЕНИЯ»

Разработали: Андреев Е.В.,

Брейдо И.В.,

Войткевич С.В.,

Пахомов В.В.

Редактор

Подписано к печати ____________ Формат__________ Тираж__________экз.

Объем ______ Заказ№____ Цена договорная

Печатно-множительная мастерская КарГТУ. Караганда. Бульвар мира, 56