Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование промышленных контроллеров. Учебное пособие
.pdf
SFC применяют около 30 % пользователей. Диаграммы SFC являются самым выразительным графическим средством. Но их эффективное использование требует специальной подготовки. SFC-исполнитель требует определенных ресурсов процессора, что несколько
ограничивает его применение в самых массовых и дешевых контроллерах. Чаще всего SFC используют совместно с ST.
Языки МЭК можно рассмотреть с точки зрения их применимости на основных этапах проектирования. На рис. 3.2 графически представлены области применения языков программирования [12]. Благодаря специальным расширениям стандарта МЭК область применимости ST и FBD несколько шире.
Рис. 3.2. Области применения языков программирования [12]
От 12,5 до 50 % пользователей постоянно используют в своих
проектах два и более языков МЭК 61131-3. Однако далеко не все пользователи имеют возможность свободно выбирать язык программирования ПЛК. В крупных компаниях существуют определенные правила,
оговаривающие язык программирования, способы создания идентификаторов и документирования проектов. Например, все машины крупнейшего пользователя CODESYS компании Robert Bosch GmbH ориентированы на языки SFC и ST. Ограничение свободы выбора языков
снижает расходы на обучение персонала. А жесткие правила обеспечивают понимание текстов программ разными людьми. Это особенно
важно для технического персонала, обязанного оперативно вносить изменения в «старые» программы. К тому же постоянное использование
только двух языков повышает надежность программ.
21

3.1. Язык FBD
Язык FBD – язык функциональных блок-схем – графический
язык программирования, созданный для описания процессов прохож-
дения сигналов и обеспечивающий управление потоками данных всех
типов. Этот язык похож на электрические схемы, поэтому удобен для
инженеров-схемотехников, которые легко могут составить электрическую схему системы управления на «жесткой логике», но не имеют
опыта программирования. FBD подходит для управления непрерывными процессами и процессами регулирования. При программировании на данном языке применяются наборы библиотечных блоков, а
также собственные блоки, написанные на FBD, на других языках МЭК
61131-3 или на языке С, которые могут быть многократно использованы в разных частях программы. FBD заимствует символику булевой
алгебры. Основными объектами языка FBD являются EFB, DFB,
UDEFB [4].
EFB (Elementary Function Block) – элементарные функции и элементарные функциональные блоки, находящиеся в библиотеках. Логика
обработки в EFB написана на языке С и не может быть изменена в редакторе FBD. Изменять можно только параметры блоков.
DFB (Derived Function Block) – производные функции и функциональные блоки пользователя, созданные им из EFB.
UDEFB (User Defined Elementary Function Block) – функции и
функциональные блоки, разработанные пользователем на языке С.
Оформляются как объекты библиотек.
Для EFB, DFB и UDEFB принято общее обозначение – FFB
(Functions/Function Block). Каждый из перечисленных объектов представляет собой подпрограмму, которая помещается в одну из библиотек, используемых при разработке программы работы ПЛК. Таким
образом обеспечивается возможность вызова и хранения FFB в форме
библиотек.
Разработка программы для ПЛК осуществляется с помощью графического редактора FBD посредством формирования блок-схемы из
перечисленных выше FFB. Каждая отдельная цепь представляет собой
выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи
блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход ПЛК. Пример секции FBD представлен на рис. 3.3.
22

Рис. 3.3. Представление секции FBD
Последовательность обработки отдельных FFB в программе,
в каждой FBD-секции определяется потоком данных внутри секции.
Теоретически каждая секция может включать любое количество FFB и
любое число входов и выходов, но желательно разделять сложную
программу на ряд логических секций.
3.1.1. Элементарные функции и функциональные блоки EFB
Элементарная функция графически представлена в виде рамки
со входами и одним выходом. Функции не имеют внутренних состояний (условий), так как это комбинационные схемы. Одним и тем же
23

значениям входных величин будут соответствовать одни и те же значения величин на выходе вне зависимости от числа исполнений функций. Например, функция сложения двух величин обеспечивает тот же
самый результат при каждом неоднократном исполнении.
Тип функции изображается в центре рамки:
Элементарный функциональный блок также представляется
графически как рамка с входами и выходами. Функциональные блоки
могут иметь более одного выхода. Тип функционального блока изображается в центре рамки. Элементарные функциональные блоки, в
отличие от элементарных функций, имеют внутренние состояния, т. е.
если входы имеют одинаковые значения, значение выхода может быть
разным для каждого последующего исполнения. Например, в инкрементно-декрементном счетчике значение выхода увеличивается или
уменьшается на 1 в зависимости от внутренних условий. Пример элементарного функционального блока типа «инкрементно-декрементный счетчик»:
3.1.2. Производные функциональные блоки DFB
Пользовательские или производные функциональные блоки
DFB являются функциональными блоками, которые сконструированы
пользователем из EFB-объектов. В DFB не существует различий меж-
ду функцией и функциональным блоком. Не принимая во внимание их
внутреннюю структуру, к ним всегда обращаются как к функциональным блокам. Изображение функционального блока типа DFB:
24

При программировании DFB имеется различие между двумя типами переменных: внутренними переменными и входными/выходными переменными. Внутренними переменными являются переменные,
которые используются только внутри логики DFB. Эти переменные
могут быть изменены только в среде разработки. Такое изменение затем применяется ко всем экземплярам создаваемого DFB.
3.1.3. Связь, порядок обработки и конфигурирование
контуров в FBD
Связи являются соединениями между FFB. Несколько связей
могут быть соединены с FFB выходом. Пункты любого такого соединения отмечаются жирной точкой. Входы/выходы, которые будут соединены, должны иметь соответствующие типы данных. Несвязанным
входам FFB назначается по умолчанию значение «0».
Порядок обработки в первую очередь определяется порядком
при размещении FFB (номер в верхнем правом углу функции или
функционального блока). Если FFB впоследствии соединяются с помощью графических связей, порядок обработки информации определяется потоком данных, например:
При создании программы конфигурирование контуров исключительно через связи, как показано на схеме, не позволяется, так как
не имеется никакой опции для чистого определения потока данных,
т. е. выход одного FFB является входом следующего FFB, его выход
в свою очередь является входом первого:
25

Далее изображены два варианта разрешенных контуров с применением фактических параметров так, чтобы чистое определение
потока данных было возможно:
Также позволяются контуры через несколько фактических параметров, как показано на схеме:
К преимуществам языка FBD относятся простота, наглядность,
четкая последовательность, легкая структура команд, надежный и
быстрый код. Но при реализации сложной задачи программный код
может разрастись, включив в себя большое число секций, и, таким
образом, потерять свою наглядность. Существуют модернизации языка FBD, которые используются специалистами. Эти модернизации
возникли в результате того, что техники перерабатывают FBD под себя. В CODESYS такой модернизацией является язык CFC (Continuous
Function Chart) со свободным размещением элементов языка, блоков и
соединений. Основные различия языков FBD и CFC представлены
в табл. 3.1 [13].
26

Таблица 3.1
CFC редактор
FBD редактор
Элементы и функциональные
блоки расставляются свободно
Элементы и функциональные
блоки размещаются в порядке
выполнения в цепи
Соединения выполняются
вручную
Соединения выполняются автоматически
Обратная связь линией
Обратная связь требует промежуточной переменной
Порядок выполнения задается
индивидуально
«Логический» порядок выполнения: слева направо, цепь за цепью
Допускается использование блока с логическим разрешением
EN/ENO (Enable)
Не используется логическое разрешение
Как видно из таблицы, язык CFC позволяет использовать FFB
с параметрами EN/ENO, и если при этом значение EN равно нулю, то
алгоритмы, определяемые FFB, не будут выполняться. В этом случае
значение ENO автоматически устанавливается равным нулю. Если же
значение EN равно единице, то алгоритмы, определяемые FFB, будут
выполнены. После выполнения этих алгоритмов без ошибок значение
ENO автоматически устанавливается равным единице. Если же возникает ошибка во время выполнения этих алгоритмов, то значение ENO
будет установлено равным нулю. Поведение FFB одинаково как
в случае вызова FFB с EN = 1, так и при вызове без параметров
EN/ENO.
Пример реализации FFB с EN/ENO на языке CFC представлен
на рис. 3.4.
27

Рис. 3.4. Пример реализации FFB
с EN/ENO на языке CFC
28

3.2. Язык LD
LD («лестничные диаграммы») – графический язык, основанный
на принципах работы релейно-контактных схем с возможностью использования большого количества различных функциональных блоков. Язык LD использует жесткую логику, т. е. принимает только два
значения – «ложь» и «истина», (где 0 – ложь, а 1 – истина). Символика
этого языка была заимствована из проектирования в области электротехники. Объектами языка программирования LD являются контакты,
катушки и FFB. С помощью данных средств обеспечивается структурирование организационной единицы ПЛК (секции). Эти объекты взаимосвязаны через фактические параметры или связи.
Структура LD-секции представлена в виде ступеней. На рис. 3.5
приведен фрагмент программы в редакторе LD. Вертикальная линия
слева – «провод с высоким потенциалом», вертикальная линия справа – «нулевой провод». Между ними располагаются контактные цепи
в виде горизонтальных линий (по общему виду программы и дано
название языка программирования). Слева по линии располагаются
«коммутаторы электрического тока» (соответствуют входным переменным логического типа и дискретным входам). Справа – «потребители электрического тока» (соответствуют выходным переменным
логического типа и дискретным выходам). Предполагается, что «коммутаторы» можно соединять в любом порядке и последовательности,
определяя логику работы цепи, а потребители – только параллельно,
так как в реальном подобном устройстве они в любом случае замыкали бы цепь и включались бы одновременно [9]. Цепь из двух последовательно соединенных коммутаторов – логической операции И, а цепь
из двух параллельно соединенных коммутаторов – логической операции ИЛИ. Операции НЕ соответствует нормально замкнутая кнопка,
которая размыкает цепь (фактически, дает логический нуль) при
нажатии (подачи логической единицы) и наоборот.
Порядок обработки индивидуальных объектов в LD-секции
определяется потоком данных внутри секции. Ступени, подключенные к левой шине питания, обрабатываются сверху вниз. Ступени
внутри секции, которые не зависят друг от друга, обрабатываются
в порядке размещения.
29

Рис. 3.5. Фрагмент
программы в редакторе LD
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
