Skip to content

Instantly share code, notes, and snippets.

Created August 29, 2017 23:19
Show Gist options
  • Save anonymous/1b3d065d64becf4df48c833ac3d84e3e to your computer and use it in GitHub Desktop.
Save anonymous/1b3d065d64becf4df48c833ac3d84e3e to your computer and use it in GitHub Desktop.
Описание языка lad

Описание языка lad


Описание языка lad



Ladder Diagram
Программирование ПЛК
3 основных недостатка программирования на языке LAD


























Только полноправные пользователи могут оставлять комментарии. TM Feed Хабрахабр Geektimes Тостер Мой круг Фрилансим. Хабрахабр Публикации Пользователи Хабы Компании Песочница. FLProg 23,67 Графическая среда программирования Arduino. Описание проекта Блог компании FLProg. В предыдущем посте я рассказал о предыстории появления проекта FLProg. Сейчас я хочу поподробнее рассказать о проекте и его состоянии на сегодняшний день. Основной целью проекта является включение в круг пользователей плат Arduino людей незнакомых с программированием. Это возможно благодаря опыту промышленного программирования, который накапливался годами производителями промышленных контроллеров. Проект состоит из двух частей. Первая часть это десктоп приложение FLProg представляющее собой графическую среду программирования плат Arduino. Во вторых, это сайт FLProg. Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров. Описание языка FBD FBD Function Block Diagram — графический язык программирования стандарта МЭК Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок элемент — это подпрограмма, функция или функциональный блок И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др. Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера. Описание языка LAD Ladder Diagram LD, LAD, РКС — язык релейной лестничной логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции истина — если ток течет; ложь — если ток не течет. Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях. Список функциональных блоков существующих на сегодняшний день в языке LAD Базовые блоки Контакт Катушка Защита от дребезга Выделение переднего фронта Специальные реле Двустабильное реле Реле времени Генератор Реле сравнения Алгебра SIN COS TAN ABS MAX MIN SQ SQRT POW RANDOM Аналоговые блоки Масштабирование Математика Счетчик Аналоговый переключатель Переключатель много к одному Переключатель один ко многим Аналоговый вход контроллера Аналоговый выход контроллера Вход аналогового соеденителя Выход аналогового соединителя Скоростной счетчик ComPort Передача в ComPort Передача переменной через ComPort Прием переменной через ComPort Моторы Сервомотор Шаговый двигатель Часы реального времени Получить данные Будильник Установка времени Дисплеи Дисплей на чипе HD Блок управления подсветкой дисплея на чипе HD I2C Блок декодирования семи сегментного индикатора Строки Сложение строк Датчики Ультразвуковой дальномер HC-SR04 Датчик температуры и влажности DHT11 DHT21, DHT22 Датчик температуры DS18x2x IR Ressive BMP SD карта Запись переменной на SD карту Выгрузка файла с SD карты Конвертирование типов Конвертация строк Преобразование Float в Integer Микросхемы расширений Расширитель выводов 74HC Операции с битами Шифратор Дешифратор Чтение бита Запись бита Разное Матричная клавиатура. Список оборудования применяемого в проекте на сегодняшний день. Часы реального времени DS DS DS Датчики Датчик температуры и влажности DHT11 Датчик температуры и влажности DHT21 Датчик температуры и влажности DHT22 Ультразвуковой дальномер HC-SR04 Датчики температуры DS18B20 Датчики температуры DS18S20 Датчики температуры DS Датчик давления BMP Датчик движения PIR Motion sensor HC-SR Датчик газа MQ2 углеводородные газы, дым. Моторы Шаговый двигатель Сервопривод Дисплеи Дисплей на чипе HD с параллельным управлением и управлением по шине I2C Семи сегментные индикаторы Разное SD картридер. Сдвиговые регистры 74HC Матричная клавиатура. Arduino , FBD , LAD , программирование микроконтроллеров. Добавить в закладки Метки лучше разделять запятой. Планируются, но не скоро. Я пока не разобрался с некоторыми тонкостями работы в Mac и Linux. Как разберусь, постараюсь перенести. Спасибо, сейчас немного разберусь с делами, и у меня будет к вам несколько технических вопросов. Кстати Scratch так же сделан на SmallTalk. Дата основания 10 июля Локация Новосибирск Россия Сайт flprog. Как я познакомился с программой FLProg 4,1k Сутки Неделя Месяц Почему нет русского Amazon, или где зарыта? Интересные публикации Хабрахабр Geektimes. Запуск Java классов и JAR-ов не по учебнику. Критическая уязвимость механизма аутентификации BIND позволяет похищать и изменять DNS-записи серверов. Во льдах Плавучего Континента: CSS и iOS Safari. Новый подход к кэшированию процессора GT. Линейное программирование в python силами библиотеки scipy. Стабильность нейтрона в атомном ядре GT. Разделы Публикации Хабы Компании Пользователи Песочница. Информация О сайте Правила Помощь Соглашение Конфиденциальность. Услуги Реклама Тарифы Контент Семинары.


Языки программирования Step7


Как и было описано, в первой статье, ПЛК осуществляет циклическое чтение входов, выполнение прикладной программы и запись выходов. Потому написание программы для ПЛК отличается от традиционного написания программы для микроконтроллеров и ПК. К программам для ПЛК предъявляются жесткие требования по надежности, одно дело зависает текстовый редактор, а другое дело программа, управляющая ядерным реактором. Другое не менее важное требование — это своевременное реагирование на событие. А что значит, во время не прореагировать на событие в промышленности? Это значит потерять контроль над технологическим процессом. Что в некоторых случаях, примером с реактором, приведет к непоправимым последствиям. Подозреваю, что все начинали знакомство с МК именно с этой задачи. По данному алгоритму программа на ПЛК работать не будет, она содержит бесконечный цикл. А в ПЛК вся прикладная программа выполняется от начала до конца в каждом рабочем цикле, и любая программа должна отдавать управление системной программе. Поэтому при такой организации алгоритма наш ПЛК зависнет. Даже если и убрать, переход по метке на начало, программа не будет работать, так как нам хочется. Порт всегда будет в состоянии лог. И поэтому промежуточные состояния это всего лишь программные переменные в памяти, и на аппаратной части она ни как не отображаются. С учетом выше сказанного, правильный алгоритм будет выглядеть следующим образом: Реализуем данный алгоритм на практике ниже, а теперь рассмотрим основные особенности LAD Ladder Diagram языка. Релейная схема представляет собой две вертикальные шины, между ними расположены горизонтальные цепи образованные контактами и обмотками реле. Любому контакту ставится в соответствие логическая переменная, определяющая его состояние. Если нормально замкнутый контакт замкнут, то ИСТИНА, если размокнут — Ложь, для инверсного наоборот, он замкнут когда переменная имеет значение ЛОЖЬ. Имя переменной пишется над контактом и служит его названием. Последовательно соединенные контакты равносильны логической операции И, а параллельно-монтажное ИЛИ. Инверсный контакт равносилен операции НЕ. Параллельное соединение обмоток допускается, а последовательное нет. Обмотка реле также может быть инверсной, тогда она копирует в соответствующую логическую переменную инверсное состояние цепи. Идея релейных схем, такова, что все цепи работают параллельно, то есть ток во все цепи подается одновременно. Но мы знаем, что программу процессор выполняет последовательно, и мы не можем это сделать одновременно. Так и в LAD программа выполняется последовательно слева направо, сверху вниз. Но цикл процессора мал, поэтому и получается эффект параллельности. Любая переменная в рамках одной цепи имеет одно и то же значение. Если даже реле в цепи изменит переменную, то новое значение поступит на контакты только в следующем цикле. Цепи расположенные выше получают новое значение переменной сразу, а цепи расположенные ниже — только в следующем цикле. Строгий порядок выполнения очень важен, и благодаря ним LAD- диаграмма сохраняет устойчивость при наличии обратных связей. Хоть это и противоречит аналогии LAD с релейными схемами, порядок выполнения LAD- программы можно нарушить с помощью меток и переходов. Это ухудшает читаемость программе, и в них бывает сложно разобраться, но как говориться если очень хочется, то можно. Для этого желательно разбить программу на модули, и делать переходы между модулями. Возможности LAD программы можно расширить, вставляя функциональные блоки. Вставлять можно все стандартные функциональные блоки, которые содержаться в МЭК. Описание для функциональных блоков можно найти в справке. Давайте составим нашу первую программу на LAD в среде CoDeSys. CoDeSys можно скачать в интернете , достаточно воспользоваться поисковиком. После установки, выбираем создать новый проект, и CoDeSys попросит выбрать целевую платформу для ПЛК. Указание целевой платформы необходимо, чтобы среда знала, для какого типа контроллера пишется программа. Выбираем 3S CodeSyS Sp PLCWinNT V2. Интерфейс программы на русском языке, и интуитивно понятен. При наведении на элемент всплывает имя. Советую рассмотреть все элементы, а также пункты главного меню. Для добавления элемента в программу необходимо левой кнопкой мыши кликнуть в рабочее поле программы и потом ЛКМ кликнуть на элемент, который вы хотите поместить в программу. Например, нормально разомкнутый контакт, у вас должно получиться следующее. Вместо вопросительных знаков пишем имя нашей переменной, например SB, и нажимаем Enter, выходит окно объявление переменной, выбираем Bool и нажимаем OК. Давайте, реализуем программы для мигания светодиодом, а если говорить в общем, то программа для генератора одиночных импульсов. Для реализации программы используем функциональные блок таймер TP. Таймер TP — этой таймер одиночного импульса с заданной по входу PT длительностью. При переходе IN в TRUE выход Q устанавливается в TRUE и таймер начинает отсчет времени на выходе ET до достижения длительности, заданной PT. Далее счетчик не увеличивается. Таким образом, выход Q генерирует импульс длительностью PT по фронту входа IN. После этого запускается T1, после переполнения скидывает X в False и все повторяется. Переменная X является выходом генератора. Таймер T2 устанавливает паузу, а T1 длительность импульса. В пункте онлайн выбираем Режим эмуляции , а затем Подключение и Старт. Также в области объявления переменных видим текущее значение переменных. Выход генератора можно поглядеть с помощью цифрового трассировщика, для этого переходим на вкладку Ресурсы в нижнем левом углу. Цикличность записи поставим Вручную , нажимаем на менеджер и выбираем переменные X Bool. Рассмотрим еще один пример управление двигателем с электронной коммутацией обмоток статора Саму программу представлять не буду, скачайте проект. А об алгоритме работы расскажу. Все таймеры запускаются по сигналу старт. Каждый таймер отмеряет момент окончания фазы. Переменные Y1-Y3 являются выводами соответствующей фазы управления. Каждый выход включается в том случае, если таймер еще не переполнен и выключен предыдущий выход. Последняя цепь, является цепью автоматического перезапуска. Для добавления Вашей сборки необходима регистрация. Сайт Паяльник существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений. Призовой фонд на июль г. Регулируемый паяльник 60 Вт. Паяльная станция Hakko Особенности языка LAD в CodeSys Как и было описано, в первой статье, ПЛК осуществляет циклическое чтение входов, выполнение прикладной программы и запись выходов. Временная задержка Записать в порт лог. Конец программы Реализуем данный алгоритм на практике ниже, а теперь рассмотрим основные особенности LAD Ladder Diagram языка. CoDeSys можно скачать в интернете , достаточно воспользоваться поисковиком После установки, выбираем создать новый проект, и CoDeSys попросит выбрать целевую платформу для ПЛК. Имя проекта оставляем по умолчанию, язык выбираем LD Интерфейс программы на русском языке, и интуитивно понятен. Рассмотрите, какие типы можно выбрать, а также какие классы переменных. Давайте, реализуем программы для мигания светодиодом, а если говорить в общем, то программа для генератора одиночных импульсов Для реализации программы используем функциональные блок таймер TP. Временная диаграмма работы TP: Для вставки TP, на панели элементов выбираем: И у нас всплывает ассистент выбора функционального блока. Скачайте файл проекта, и давайте рассмотрим как он работает. Вознаградить Я собрал 0 0 x. Зачем и замкнутый и разомкнутый контакты в примере маркировать Х? А это вообще тихий ужас новичка из-за Икса! Дружище, это не два разных контакта X , а один и тот же, вот почему по-одинаковому маркируются. Это не имеет смысла. Не должно ли быть как исправлено ниже? Где ВЫШЕ где НИЖЕ? Цепи расположенные выше получает новое значение переменной сразу, а цепи расположенные выше — только в следующем цикле. Вот вроде все понятно и просто. Но понятно, что у нас есть переменная, которая меняется, а как это переменная в порт попадает? Где связывает переменную с реальном портом или пин если это bool? В чем измеряется сила тока? Для выбора нескольких файлов использйте CTRL. Модуль измерения тока на ACS 30А.


Учить английский самостоятельно видео
Музыка для стихов свекрови
2 пентаклей значение
Шишкин рожь описание картины
За сколько перечисляют отпускные по закону
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment