Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование промышленных контроллеров. Учебное пособие

.pdf
Скачиваний:
2
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]