Примеры программ на языке LAD для программируемых логических контроллеров
Одним из базовых и достаточно распространенных языков программирования промышленных логических контроллеров (ПЛК) является язык релейной (лестничной) логики — Ladder Diagram (англ. LD, англ. LAD, рус. РКС).
Этот графический язык программирования основан на представлении коммутационных схем и удобен для специалистов по электротехнике, так как нормально замкнутые и нормально разомкнутые контактные элементы языка LAD можно сопоставить с нормально замкнутыми и нормально разомкнутыми переключателями в электрических цепях.
С середины XX века в промышленности широко использовались релейные системы автоматики. В начале 1970-х гг. релейные автоматы начали постепенно вытесняться программируемыми контроллерами. Некоторое время те и другие работали одновременно и обслуживались одними и теми же людьми. Так появилась задача «переноса» релейных схем в ПЛК.
Различные варианты программной реализации релейных схем создавались практически всеми ведущими производителями ПЛК. Благодаря простоте представления LAD обрел заслуженную популярность, что и стало основной причиной включения его в стандарт МЭК.
1.Создаем проект и реализуем в нём первую программу на языке LD
Синтаксис команд языка LAD очень похож на синтаксис языка описания релейно-контактных схем. Такое представление позволяет проследить «поток энергии» между шинами при его прохождении через различные контакты, составные элементы и выходные элементы (катушки).
Элементы коммутационной схемы, такие как нормально разомкнутые контакты и нормально замкнутые контакты, группируют в сегменты. Один или несколько сегментов образуют раздел кодов логического блока.
Интерфейс программы, написанной на языке LAD, понятен и прост, так как управляющая LAD-программа является циклической и состоит из строк-ступенек, соединенных слева с вертикальной шиной, а протекание или отсутствие тока в цепи соответствует результату логической операции (истина — ток течет; ложь — ток отсутствует).
Простые примеры программ для ПЛК на языке LAD
На рисунках 1 и 2 представлены сегменты программы, описывающей два действия по управлению двигателем конвейера на языке LAD:
- нажатие любой кнопки «Пуск» включает двигатель;
- нажатие любой кнопки «Стоп» или срабатывание датчика отключают двигатель.
Рис. 1. Включение двигателя после нажатия любой кнопки «Пуск»
Рис. 2. Отключение двигателя после нажатия любой кнопки «Стоп» или срабатывания датчика
Вторая задача состоит в определении направления движения ленты транспортера. Пусть на ленте установлены два фотоэлектрических датчика (РЕВ 1 и РЕВ 2) для определения направления движения предмета. Оба работают как нормально открытые контакты.
Программирование ПЛК. Как понять язык LADDER за 5 минут!
На рис. 3 — 4 представлены сегменты программ на языке LAD для трех действий:
- если на входе 10.0 сигнал изменяется с «0» на «1» (нарастающий фронт), и при этом состояние сигнала на входе I0.1 равно «0», то предмет на ленте транспортера движется влево;
- если на входе 10.1 сигнал изменяется с «0» на «1» (нарастающий фронт), и при этом состояние сигнала на входе I0.0 равно «0», то предмет на ленте транспортера движется вправо;
- если оба фотодатчика перекрыты, то это значит, что предмет находится между датчиками.
Рис. 3. Движение предмета влево, если вход I0.0 меняет состояние с «0» на «1», и при этом вход I0.1 равен «0»
Рис. 4. Движение предмета вправо, если вход I0.1 изменяется с «0» на «1», и при этом вход I0.0 равен «0»
Рис. 5. Нахождение предмета между датчиками
На рис. 3 — 4 приняты обозначения:
- вход 1.0 (РЕВ 1) — фотодатчик №1;
- вход 10.1 (РЕВ 2) — фотодатчик №2;
- М0.0 (РМВ 1) — тактовый меркер № 1;
- М0.1 (РМВ 2) — тактовый меркер №2;
- выход Q4.0 (LEFT) — индикатор движения налево;
- выход Q4.1 (RIGHT) — индикатор движения направо.
На рис. 6 — 9 представлены простейшие программы с таймером для четырех действий:
- если с т атус таймера Т1 равен «0», за г ружается значение времени 250 мс в Т1 и Т1 запускается как таймер с удлиненным импульсом;
- состояние таймера временно сохраняется во вспомогательном меркере;
- если статус таймера Т1 равен «1», переход на метку М001;
- когда время таймера Т1 истекает, меркерное слово 100 увеличивается на «1».
Рис. 6. Запуск таймера с удлиненным импульсом
Рис. 7 . Временное сохранение состояния таймера во вспомогательном маркере
Рис. 8 . Переход на метку
Рис. 9 . Увеличение меркерного слова на «1», когда время таймера Т1 истекает
Пример программы на языке LAD для контроллера LOGO
Универсальный логический модуль LOGO! является компактным функционально законченным изделием, предназначенным для решения наиболее простых задач автоматизации с логической обработкой информации.
Рис. 10. Модуль LOGO
С помощью модуля LОGO! решена задача управлени я системой отопления в душевых помещениях административно-производственного корпуса .
Состав системы отопления включает следующие компоненты:
- три отопительных котла, используемых для отопления помещений;
- три насоса, обеспечивающих циркуляцию теплоносителя;
- трубопровод и регистры отопления.
Система управления должна контролировать температуру в душевых помещениях, давление (первый уровень — низкий, при котором возможна дальнейшая эксплуатация при условии включения системы заполнения, и второй уровень критический, при котором дальнейшая эксплуатация запрещена), а также контролировать температуру теплоносителя в системе отопления, отсутствие энергоресурсов (электроэнергия, газ).
Кроме этого в системе отопления могут быть предусмотрены дополнительные источники обогрева, например, электрокалориферы. Пусть включение электрокалориферов осуществляется три раза в сутки: с 6 00 до 8 00 ; с 15 00 до 17 00 ; с 23 00 до 01 00 . Если по каким-то причинам в момент посещения рабочим персоналом душевых помещений температура будет ниже нормы, то дополнительно включаются электрокалориферы.
В качестве входов и выходов используются:
- AI1 — входной сигнал с датчика измерения давления о критическом уровне давления теплоносителя;
- AI2 — входной сигнал с датчика измерения давления о низком уровне давления теплоносителя, позволяющего дальнейшую работу;
- AI3 — входной сигнал с датчика измерения температуры о повышении рабочей температуры теплоносителя;
- вход 13 — входной сигнал об отсутствии электроэнергии;
- вход 14 — входной сигнал об отсутствии природного газа;
- выход Q1 — выходной сигнал, осуществляющий включение системы отопления (циркуляционный насос №1);
- выход Q2 — выходной сигнал, осуществляющий включение системы заполнения;
- выход Q3 выходной сигнал, осуществляющий отключение котлов системы отопления (котел отопления №1);
- выход Q4 выходной сигнал, осуществляющий отключение подачи газа к котлам;
- выход Q5 — выходной сигнал, осуществляющий включение системы отопления (циркуляционный насос №2);
- выход Q6 — выходной сигнал, осуществляющий включение системы отопления (циркуляционный насос №3);
- выход Q7 выходной сигнал, осуществляющий отключение котлов системы отопления (котел отопления №2);
- выход Q8 выходной сигнал, осуществляющий отключение котлов системы отопления (котел отопления №3);
- С2 — кнопка пуска.
- В001 — трехрежимный семидневный таймер.
- AI1 — входной сигнал с датчика измерения температуры о температуре в душевых помещениях;
- выход Q1 — выходной сигнал, осуществляющий включение электрокалориферов (электрокалорифер №1);
- выход Q2 — выходной сигнал, осуществляющий включение электрокалориферов (электрокалорифер №3);
- выход Q3 выходной сигнал, осуществляющий включение электрокалориферов (электрокалорифер №3).
Программа для автоматизированной системы управления отоплением, написанная на языке программирования в виде релейно-контактных символов (LAD) в программном пакете » LOGO! Soft comfort » показана на рис. 1 1 и 1 2.
Рис. 11 . Первый фра г мент программы на языке LAD
Рис. 1 2 . Второй фрагмент программы на языке LAD
Телеграмм канал для тех, кто каждый день хочет узнавать новое и интересное: Школа для электрика
Если Вам понравилась эта статья, поделитесь ссылкой на неё в социальных сетях. Это сильно поможет развитию нашего сайта!
Не пропустите обновления, подпишитесь на наши соцсети:
Источник: electricalschool.info
Технология автоматного программирования для ПЛК на языке LD
В предыдущих статьях мы фрагментарно описали практику автоматного программирования для ПЛК. Здесь мы сведем все в одном месте и кое-что добавим. Ответы на вопросы, которые все же могут возникнуть после прочтения данного материала, можно найти в ранее написанных статьях автора. Перечень базовых статей следующий:
- Автоматное программирование: определение, модель, реализация.
- Вот, как просто! Автоматы в деле. Для ПЛК фирмы DELTA.
- Автоматы в деле. Штабелер. Засады ПЛК.
Задание на проектирование программы
В предшествующей статье мы уже рассматривали штабелер. Здесь будет более сложный его вариант. Это узкое «крыло», которое, находясь в исходном состоянии, с паузой после старта проката подхватывает лист металла и поддерживает его в процессе движения.
После останова проката и отсечения листа оно выполняет «отскок» вперед, освобождая конец листа, который падает на приемное устройство — гидростол. После этого «крыло» возвращается в исходное состояние. Во время этих движений прокат должен быть остановлен.
После исполнения задания (формирования нужного числа листов заданной длины) «крыло» перемещается в заключительную позицию за пределы гидростола. Возврат в исходное состояние происходит после нажатия кнопки «Штабелер». Выполнение самого задания начинается с нажатия кнопки «Прокат», а длина отдельного листа и общее их количество указывается на панели оператора.
После нажатия кнопки «Сброс» (прокат останавливается, переходя в режим паузы) штабелер должен войти в режим паузы. Повторное нажатие кнопки выполняет реальный сброс системы управления. Продолжить прокат, находясь в ситуации паузы, можно с помощью кнопки «Прокат». Штабелер, находясь в режиме «Автомат», может входить в тот же режим паузы, но после формирования текущего листа.
Работа штабелера в режиме системы «Полуавтомат» несколько отличается от работы в режиме «Автомат». В первом случае он останавливается после выполнения проката и ожидает срабатывания гильотины (в режиме «Полуавтомат» она запускается вручную). Дождавшись, он сбрасывает лист и перемещается в заключительную позицию. Из нее нажатием кнопки Штабелер «крыло» возвращается в исходное состояние. В режиме «Автомат» перемещение в заключительную позицию происходит только после выполнения задания.
Алгоритм управления штабелером в форме двух взаимодействующих конечных автоматов (КА) представлен на рис. 1. Более простой автомат представляет алгоритм работы с датчиками, другой — алгоритм управления штабелером. Реакцию на сигнал паузы, на кнопку «Штабелер», а также на сигнал запуска реализуется обычными средствами языка LD и вынесено за рамки нашего обсуждения.
Процесс создания модели программы
Программирование начинается с модели программы. В нашем случае это будет модель в форме конечного автомата. Ее (модель) можно «держать в голове», рисовать на листе бумаги, но настоятельный совет – используйте графический редактор. У нас это редактор Microsoft Office Visio. Он обладает всем, что помогает нарисовать граф, подобный графу автомата на рис.
1. Причем, чем сложнее автомат, тем больше выгоды будет от его применения. Далее, например, путем обычного копирования элементов имеющегося графа можно создавать графы уже любой сложности.
В нашем случае от графического редактора нужно не так уж много. Рисовать, во-первых, состояния в форме кружков с пометками внутри – именами состояний (у нас это будут только номера). Во-вторых, соединять состояния направленными дугами и помечать их условиями переходов и выдаваемых сигналов. Кроме этого, Visio позволяет легко изменять вид графа, перемещая вершины, что ведет к автоматическим изменениям соединяющих их дуг.
Вершинам графа можно поставить в соответствие то или иное действие, ассоциировать с ним некую предысторию работы алгоритма и т.д. и т.п. Например (см. рис.1), вершина 0 – это начальное состояние алгоритма. Вершина с номером 33 – состояние ошибки. В состоянии 1 выдаются сигналы управления движением крыла. В состоянии 4 – лист сброшен и выполняется «отскок», при котором крыло попадает в состояние 2. Из него модель может продолжить работу или, выполнив задание, перейти в состояние 44 и т.д. и т.п.
Фактически каждое состояние алгоритма имеет тот или ной смысл, а потому, наблюдая за ними (а мы такую уникальную возможность имеем!), можно понять, что происходит с алгоритмом в любой момент времени. Возможность наблюдения за состояниями превращает тестируемый алгоритм из «черного ящика» в «белый ящик».
Автоматная модель позволяет объективно оценить сложность будущей программы. Она зависит от числа состояний автомата, количества входных/выходных каналов, связности графа, т.е. множества и разнообразия переходов, и сложности предикатов и действий. Предикаты и действия в случае ПЛК достаточно просты. Обычно это: прочитать вход ПЛК в случае предиката и/или установить выходной сигнал в случае действия. А вот логика алгоритма, особенно при взаимодействии с другими функциональными блоками, способна доставить массу хлопот.
Так что программирование для ПЛК не столь уж простое, как это может показаться на первый взгляд.
Процесс кодирования
Создав модель, мы переходим к ее реализации. Перейдя в дерево проекта, в папке функциональных блоков (ФБ), создаем заготовку — функциональный блок. Он должна иметь элементы, соответствующие конструкции автомата на языке LD. Как минимум, это два входа и один выход. Входные каналы – это канал сигнала сброса и канал с присвоенным автомату элементом массива текущих состояний автомата.
Выходной канал – элемент массива теневых состояний с индексом равным индексу текущих состояний.
Код вызова ФБ для штабелера представлен на рис. 2. Данный функциональный блок имеет описанные выше каналы. Остальные каналы задаются локальными переменными соответствующего типа. Так, переменные типа VAR_INPUT создают входные каналы, VAR_OUTPUT – выходные, VAR_IN_OUT – совмещенные входные/выходные каналы, а тип VAR – это обычные локальные переменные.
Рис.3 дает полное представление о локальных переменных. Переменные с именами bClear, inState, outState соответствуют упомянутым выше каналам. На рис. 4 приведен код инициализации ФБ и код работы с таймерами. Инициализация при включении ПЛК и/или получении сигнала сброса устанавливает автомат в начальное состояние.
Создав заготовку, можно приступить к кодированию автомата. Код каждого перехода автомата имеет единый вид: сначала идет проверка текущего состояния автомата и входных условий, затем, если это необходимо (для автоматов Мили), — выполнение действий и в завершение изменение текущего состояния. Если текущее состояние не изменяется, то последнюю операцию можно опустить. Образец кодирования переходов, исходящих из начального состояния 0 (см. рис.1) дан на рис. 5.
Реверс-инжиниринг
Не секрет, что программисты не любят документировать программы. От этого часто страдают они же сами, т.к. часто спустя уже какое-то время даже сам автор программы с трудом может разобраться в своем творении. Но, даже понимая это, рисование блок-схем, графов, детальное описание алгоритма и т.п. – это не про программистов. Достаточно кратко, весьма ярко и доходчиво процесс документирования программ описан в статье [1]. Полемизируя с ней, можно утверждать, что в рамках технологии автоматного программирования программы все же обладают свойством самодокументирования и это совсем не чушь.
Безусловно, разобраться с алгоритмом программы по ее коду весьма проблематично. На рис. 6 приведен код программы, созданный для модели на рис.1, в режиме просмотра для последующей распечатки. Это восемь убористо заполненных листов на языке LD. Сравните его с графом автомата.
Что из них нагляднее и понятнее, думаю, вопрос риторический.
Но, с другой стороны, зная принцип кодирования автоматной программы, вы можете по коду программы легко восстановить граф автомата. Так, во-первых, сразу ясно, сколько состояний имеет программа. Во-вторых, легко восстановить переходы между состояниями, т.к. каждой цепи соответствует, как правило, ровно один переход, а действия программы привязаны или к состояниям программы, или представлены на соответствующих переходах. Останется только добавить смысловую интерпретацию условий и действий, в чем может помочь уже комментарий. Конечно, если их нет (совсем уж, видимо, «гениальный» программист создавал программу или комментарии просто не доступны), то придется все интерпретировать самому.
Тестирование программы
Тестирование, наверное, самый важный этап во всем процессе разработки программы. Программа, работающая с ошибками, ни кому не нужна, будь она трижды автоматной или какой-то там еще. Но автоматы и здесь предоставляют возможность, которой нет у программ, спроектированных обычным способом. Только автоматная программа позволяет автоматически отслеживать текущее состояние программы. А это может сказать о многом, т.к. отражает поведение программы в динамике.
Конечно, в программу можно ввести флаги, отражающие ее поведение. Но, во-первых, флаги нужно придумать, правильно расставить и предусмотреть код для их установки и сброса. Т.е. то, что на уровне автомата формируется естественным образом, в случае использования флагов требует определенных усилий и сосредоточенности. В конце концов, использование флагов просто ненадежно, за что их не критиковал разве что только ленивый.
Но у ПЛК есть одна неприятная особенность – отсутствие пошаговой отладки. Присуще ли это только ПЛК фирмы DELTA или и другим – не знаю, но в данном случае, как говорится, что есть, то есть. Для программистов, привыкших к возможностям современных отладчиков, это будет, скорее всего, если не шоком, то определенной «новостью» (как это было для автора). Но и здесь состояния автомата более чем кстати.
Рис. 7 демонстрирует процесс отладки. Из него следует: штабелер находится в состоянии 1 и идет процесс проката, т.к. флаг проката bЕслиПрокат = true. «Крыло» находится в движении, о чем говорят установленные сигналы управления двигателем – Y20 и Y22. При этом оно явно сошло с исходной позиции, т.к. awState[47] = 2 (см. автомат датчиков на рис.1).
Режим работы выбран автоматический – bM10M11 = true, т.е. это режим «Полуавтомат» или «Автомат». Нам остается только крутить энкодер и отслеживать состояние проката на панели оператора, где отображается текущая длина листа в поле «Исполнено» (см. рис.8).
Существует просто огромный пласт информации, обсуждающий этапы проектирования программ (см., например, [2]). Но среди этой информации мало такой, которая бы за базу брала модель программы. А от нее зависит многое, если не все. В основе технологии автоматного программирования лежит сетевая конечно-автоматная алгоритмическая модель.
Это позволяет охватить и параллельные процессы, без которых современное проектирование просто немыслимо. И если обычное программирование только-только осваивает параллелизм, то в ПЛК в той или иной мере его используют давно. Здесь он может быть представлен модулями POU, которые содержать разнообразные функциональные блоки, работающие параллельно.
Но параллельно работающие ФБ, взаимодействуя друг с другом, порождают достаточно сложные процессы, поведение которых необходимо анализировать. Анализ этого — весьма сложная и трудоемкая задача. Для модели штабелера это еще выполнимо и сводится к построению для сети из двух автоматов эквивалентного однокомпонентного автомата. Это будет автомат, имеющий 27 состояний. Уже одно их количество (а, ведь, нужно еще найти все переходы между состояниями) способно подавить любое желание строить подобные планы.
Поэтому дальнейший анализ на уровне параллельных процессов, как правило, делается на основании интуитивных предположений. Например, если нет сомнений в правильности созданных автоматов, то не так уж много причин беспокоиться и по поводу их совместной работы. Хотя в этом случае только полноценное тестирование способно рассеять все сомнения на этот счет.
И все же основной вывод, к которому пришел лично я, как программист, уже довольно давно: только следование технологии — необходимая основа качественного программирования. Нынешнее программирование, если и является, как принято считать, искусством, то искусством кустарным. Все в нем сделано как-то — «на коленке». Чтобы искусство превратилось в мастерство, нужна технология, опирающаяся на теорию. Я выбрал и выбираю автоматную технологию, которую описал в своих статьях.
Если бы была технология, которой бы я доверял больше, чем своим автоматам, то я бы использовал ее. И, казалось бы, есть из чего выбирать. Тот же UML или Simulink, на память приходят автоматы в Qt, SWITCH- технология, в конце концов, и т.д. и т.п. Но на поверку оказывается, что это или вовсе не автоматы, а только их названия, или весьма ограниченные версии автоматов.
Поэтому я выбираю те автоматы, где . правильно работает модель RS-триггера. Почему он? Потому что объективные доказательства правильности его работы доказывают корректность параллельных свойств среды исполнения параллельных процессов. Ведь, все так просто!
Ну, вы понимаете о чем я. Лично у меня-то выбора уже нет, а у вас . на одну испытанную технологию больше. Везет же! Но только кому.
Источник: habr.com
LD Photo Editor
Редактор фотографий на основе слоев для создания кинематографических изображений.
Lens Distortions® – это бренд, известный тем, что использует культовые визуальные приемы из рекламной и киноиндустрии и делает их доступными для создателей на этапе постпродакшна. Приложение LD Photo Editor предлагает то же самое для создателей мобильных изображений.
Используйте силу красивого света, природных элементов и элегантных наложений для редактирования действительно ярких изображений. Благодаря нашему многослойному подходу к цвету и эффектам вы можете точно настроить детали каждого элемента и превратить свои фотографии в иммерсивные ключевые художественные композиции.
Получите полный контроль над своим изображением с помощью LD Unlimited, нашего премиального предложения цветовых слоев, инструмента Erase/Mask и более 400 фотоэффектов, включая полный набор эффектов Light Volume. Цветовые слои предлагают безграничные настройки, такие как маски, градиенты и пустые корректирующие слои.
«Лучшие эффекты — это те, о которых никто не знает, что вы их добавили».
Эффекты Lens Distortions® прячутся у всех на виду в работах самых влиятельных современных создателей. Узнайте, что делает фоторедактор LD самым сокровенным секретом среди профессионалов, и получите доступ к тем инструментам, которые они используют для создания изображений мирового уровня.
БИБЛИОТЕКА ULTIMATE EFFECTS
• Light Volume™ — настраиваемые световые лучи с динамическими источниками света и атмосферными текстурами.
• Light Hits™ — самые красивые и простые в использовании блики.
• Природные элементы — органические эффекты дождя, снега и тумана для улучшения пасмурных сцен.
• Фирменные наложения — культовые стеклянные текстуры и уникальные элементы переднего плана, которые помогут вам элегантно обрамить снимок.
ВОЗМОЖНОСТИ НЕОГРАНИЧЕННОГО ЧЛЕНСТВА LD
Присоединяйтесь к LD Unlimited, чтобы получить мгновенный доступ ко всем премиальным функциям и эффектам в фоторедакторе.
• Цветовые слои — добавьте несколько слоев цвета, каждый со своими мощными настройками.
• Корректирующие слои: создавайте пользовательские градиенты, маски и настройки тона.
• Инструмент «Стереть/маскировать» — закрашивайте часть эффекта одним движением пальца.
• Все фотоэффекты: расширьте свои творческие возможности с помощью более чем 400 наложений премиум-класса.
LD Unlimited — это подписка, предлагаемая на годовой или ежемесячной основе. Эта подписка автоматически продлевается в конце расчетного периода, если ее не отменить за 24 часа. Плата за подписку взимается с вашей учетной записи Google Play при подтверждении покупки. Вы можете управлять своей подпиской и отключить автоматическое продление, перейдя в настройки своей учетной записи после покупки.
Источник: play.google.com
8 Язык лестничной диаграммы ld
Язык LD (Ladder Diagram) – графический язык, основанный на принципах релейно-контактных схем (элементами релейно-контактной логики являются: контакты, обмотки реле, вертикальные и горизонтальные перемычки и др.) с возможностью использования большого количества различных функциональных блоков. Язык релейных схем существует со времен Т. Эдисона и адаптирован к ПЛК в начале 70-х годов прошлого века. Символика этого языка была заимствована из проектирования в области электротехники.
Достоинствами языка LD являются: представление программы в виде электрического потока (близок специалистам по электротехнике), наличие простых правил, использование только булевых выражений. Он имеет большой круг пользователей, рационален для ручной оптимизации специфических критических мест кода.
Структура LD-секции соответствует ступеням для действий переключателей реле.
Объекты языка программирования LD обеспечивают средства для структурирования организационной единицы ПЛК (секции) в некоторое количество контактов, катушек и FFB. Эти объекты взаимосвязаны через фактические параметры или связи.
Порядок обработки индивидуальных объектов в LD-секции определяется потоком данных внутри секции. Ступени, подключенные к левой шине питания, обрабатываются сверху вниз (соединение к левой шине питания). Ступени внутри секции, которые не зависят друг от друга, обрабатываются в порядке размещения.
Теоретически каждая секция может содержать любое число объектов, которые означают любое число входов и выходов. Однако желательно подразделить всю программу на ряд логически модулей, т. е. на различные секции.
Секции LD могут быть преобразованы в FBD-секции с помощью команды меню File → Export… → Program: IEC-Text для экспорта в языки ST или IL, затем они могут быть импортированы командой меню File → Import… → Program: IEC-Text. Преобразование FBD-секций в LD-секции невозможно.
На рисунке 8.1 приведен общий вид секции в редакторе LD.
Рисунок 8.1 – Изображение секции LD
Элементы языка LD
Контакты. Контактом является LD-элемент, который передает состояние горизонтальной связи левой стороны горизонтальной связи на правой стороне. Это состояние – результат булевой AND-операции состояния горизонтальной связи с левой стороны с состоянием ассоциированной переменной или прямого адреса. Контакт не изменяет значение связанной переменной или прямого адреса.
Для нормально разомкнутых контактов (рисунок 8.2) состояние левой связи передается в правую связь, если состояние связанного логического фактического параметра ON. Иначе, состояние правой связи OFF.
Рисунок 8.2 – Нормально разомкнутый контакт
Для нормально замкнутых контактов (рисунок 8.3) состояние левой связи передается в правую связь, если состояние связанного логического фактического параметра OFF. Иначе, состояние правой связи ON.
Рисунок 8.3 – Нормально замкнутый контакт
В контактах для определения положительных переходов (рисунок 8.4) правая связь устанавливается в состояние ON, если переход связанного фактического параметра происходит из OFF в ON, и в то же время состояние левой связи ON. Иначе, состояние правой связи OFF.
Рисунок 8.4 – Контакт для определения положительных переходов
В контактах для определения отрицательных переходов (рисунок 8.5) правая связь устанавливается в состояние ON, если переход связанного фактического параметра происходит из ON в OFF, и состояние левой связи ON в то же время. Иначе, состояние правой связи OFF.
Рисунок 8.5 – Контакт для определения отрицательных переходов
Катушки. Катушка является LD-элементом, который передает состояние горизонтальной связи на левой стороне неизменяемым горизонтальной связи на правой стороне. В этом процессе состояние связанной переменной или прямого адреса будет сохранено.
В катушках (рисунок 8.6) состояние левой связи передается в связанный логический фактический параметр и в правую связь.
Катушки обычно следуют за контактами или блоками EFB, но они могут также сопровождаться контактами.
Рисунок 8.6 – Катушка
В инвертирующей катушке (рисунок 8.7) состояние левой связи копируется в правую связь. Инвертированное состояние левой связи копируется в связанный логический фактический параметр. Если связь находится в состоянии OFF, тогда правая связь тоже будет находиться в состоянии OFF и связанный логический фактический параметр будет находиться в состоянии ON.
Рисунок 8.7 – Инвертирующая катушка
В катушке установки (рисунок 8.8) состояние левой связи копируется в правую связь. Связанный логический фактический параметр устанавливается в состояние ON, если левая связь имеет состояние ON, иначе он не изменяется. Связанный логический фактический параметр может сбрасываться только катушкой сброса.
Рисунок 8.8 – Катушка установки
В катушке сброса (рисунок 8.9) состояние левой связи копируется в правую связь. Связанный логический фактический параметр устанавливается в состояние OFF, если левая связь имеет состояние ON, иначе он не изменяется. Связанный логический фактический параметр может устанавливаться только катушкой установки.
Рисунок 8.9 – Катушка сброса
В катушке для определения положительных переходов (рисунок 8.10) состояние левой связи копируется в правую связь. Связанный фактический параметр типа данных BOOL будет установлен в состояние ON для цикла программы, если произошел переход левой связи из OFF в ON.
Рисунок 7810 – Катушка обнаружения передних фронтов
В катушке для определения отрицательных переходов (рисунок 8.11) состояние левой связи копируется в правую связь. Связанный фактический параметр типа данных BOOL будет установлен в состояние ON для цикла программы, если произошел переход левой связи из ON в OFF.
Рисунок 8.11 – Катушка обнаружения задних фронтов
Использование блоков FFB в языке LD.
FFB будут редактироваться, только если, по крайней мере, один булев вход соединен с левой шиной питания. Если FFB не имеет булева входа, должен использоваться EN вход FFB. Если FFB должен быть выполнен по условию, булев вход может быть предварительно соединен через контакты или другие FFB.
Каждый FFB без булевой связи с левой шиной питания вызовет сообщение об ошибках при загрузке в ПЛК. На рисунке 8.12 приведен пример использования FFB в языке LD.
Рисунок 8.12 – Использование блоков FFB в редакторе LD
Если при вызове FFB значение EN равно ”0”, алгоритмы, определенные FFB не будут выполняться. В этом случае, значение ENO автоматически устанавливается в ”0”.
Если при вызове FFB значение EN равно ”1”, алгоритмы, определенные FFB, будут выполнены. После того, как эти алгоритмы выполнились без ошибки, значение ENO автоматически устанавливается в ”1”. Если происходит ошибка во время выполнения этих алгоритмов, ENO будет установлен в ”0”.
Поведение выхода FFB не зависит от FFB, вызываемого без EN/ENO или с EN=1.
EFB AND_BOOL, NOT_BOOL, OR_BOOL, R_TRIG и F_TRIG недоступны в LD. Их функциональные возможности реализуются с помощью контактов. EFB MOVE не может использоваться с типом данных BOOL.
Фактические параметры. Когда программа выполняется, через фактические параметры пересылаются значения из процесса или от других фактических параметров до контакта или на вход FFB. После обработки эти значения перемещаются к фактическим параметрам катушек и выходов FFB. В контактах и катушках фактические параметры могут быть прямыми адресами, локализованными (размещенными) переменными или нелокализованными (неразмещенными) переменными. На входах/выходах FFB фактические параметры могут быть прямыми адресами, размещенными переменными, неразмещенными переменными, константами или литералами.
Для контактов и катушек типом данных фактического параметра должен быть тип данных BOOL. На входах/выходах FFB типы данных фактических параметров должны соответствовать типу данных ввода/вывода. Единственным исключением являются обобщенные входы/выходы FFB, где тип данных определяется формальным параметром.
Связь. Связями являются соединения между контактами, катушками и блоками FFB. Несколько связей могут быть соединены с контактом, катушкой или выходом FFB. Пункты любого такого соединения отмечаются жирной точкой.
Типы данных соединенных входов/выходов должны совпадать.
Связи могут быть отредактированы в режиме Select. Разрешается перекрытие другими объектами.
При размещении контактов и катушек горизонтальные связи автоматически связываются со смежными, несвязанными контактами или катушками, если контакты или катушки и входы/выходы FFB находятся на той же самой вертикали. Связь с шиной питания будет установлена, только если контакт помещен поблизости.
Если катушка или контакт помещены на уже существующую горизонтальную связь, она будет автоматически разорвана, и контакт или катушка вставлены (это не применимо к команде Move). При размещении фактических параметров они могут накладываться на другой объект, но не нарушать рамки фрейма секции. Если соединение с другим объектом установлено через одну связь, эта связь будет проверена. Если соединение не разрешено, то появляется сообщение и связь не будет сгенерирована.
При удалении контактов или катушек любые присоединенные контакты или катушки будут также удалены. Те же самые условия используются здесь при их размещении.
Связи не могут использоваться для конфигурации контуров, потому что невозможно однозначно определите порядок обработки в секции. Контуры должны быть созданы с помощью фактических параметров.
Горизонтальные связи автоматически устанавливаются после размещения.
Частным случаем связи является вертикальная связь. Вертикальная связь используется как логическое ИЛИ. Эта форма связывания по ИЛИ позволяет связать 32 входа (контакта) и 64 выхода (катушек, связей).
Интерактивные функции. Редактор LD предлагает два режима анимации:
- анимация двоичных переменных и связей;
- анимация выбранных объектов.
Эти режимы также доступны при отображении DFB-блока. Режим анимации выбранных объектов отображает текущее сигнальное состояние выбранных контактов, катушек, связей, переменных, многоэлементных переменных и литералов в окне редактора и активизируется командой меню Online → Animate selected. Если левая шина питания, контакт, катушка, связь красного цвета, то левая шина питания, контакт, катушка, связь (двоичная) соответственно имеют значение 0. Если левая шина питания, контакт, катушка, связь зеленого цвета, то левая шина питания, контакт, катушка, связь (двоичная) соответственно имеют значение 1. Связь желтого цвета передает многоэлементную переменную (отображение значений вызывается двойным щелчком: мыши по связи). Переменная с желтым фоном – многоэлементная переменная (отображение значений с двойным щелчком на переменной). Числовое значение на входе/выходе FFB (желтый фон) – текущее значение переменных. Числовое значение на связи (желтый фон) – значение, в настоящее время передаваемое связью. При выборе числового значения на входе/выходе FFB будут отображаться имя переменной, ее прямой адрес (если он имеется) и комментарий. Выбранные объекты остаются выбранными даже после подачи другой команды Animate selected, чтобы поддержать эти объекты для будущего чтения или для простого изменения объектной распечатки. Сигнальные состояния двоичных связей могут также отображаться с помощью команды Online → Animate booleans. Пример 8.1. Решить задачу примера 7.1 на языке LD. Решение на языке LD представлено на рисунке 8.13, на рисунке 8.14 представлено окно редактора переменных. Рисунок 8.13 – Решение на языке LD
Рисунок 8.14 – Окно редактора переменных
Источник: studfile.net