ClassicLadder (CL)
Добавлено: 01 июл 2012, 12:15
Планируется маленький (или не очень) ликбез по ClassicLadder (далее CL).
ClassicLadder
ClassicLadder в Linuxcnc
Modbus
Grafcet
Ссылки
ClassicLadder - это интерпретатор языка программирования LD , наиболее распространённого языка для PLC .
А если упрощенно (совсем упрощенно) -то CL это набор виртуальных реле , контактов, таймеров, сетчиков,логических элементов и т.д.
Программирование на языке LD это соеденения этих элементов в цепочки , заключенные между двумя вертикальными линиями,которые можно рассматривать как электрические шины: В LD ток в цепях течет слева направо
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить. распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
====================================
Запуск CL в hal (самый простой) из терминала:
halrun
loadrt threads
loadrt classicladder_rt
loadusr classicladder
addf classicladder.0.refresh thread1
start запустив еще один терминал посмотрим список всех доступных пинов CL: [/color][/size]
Основные элементы -это контакты и обмотка реле. Контактов в одной цепи может быть несколько,а обмотка реле -только одна.
Реле может иметь несколько контактов (как нормально-замкнутых НЗ, так и нормально-разомкнутых НР)
На схеме их нужно обозначать одной переменной: Нарисуем схему показанную на скрине и включая ее посмотрим работу: Для отрисовки используем окно Editor , а для активации элементов окно Spy bools vars
http://www.youtube.com/watch?v=8b9X-XXM ... e=youtu.be
Несколько слов о терминах.Вся программа ладдера разделена на ступени(rung).
Отсюда и название ladder(лестница).Не путать с секциями(sections)-о них еще будет сказанно.
Каждая ступень может иметь метку,которую мы присваиваем сами.Как и в "обычных" языках программирования
мы можем ,используя метку, перейти к той или иной ступени (далее на примерах будет более наглядно)
Надо заметить ,что и исполнение всей программы происходит как бы последовательно.И если в электрической схеме,
на которую будет так похожа наша программа,эл.ток появляется(если упрощенно подойти к этому) сразу на всей шине ,а значит и на всех
элементах сразу - то ладдер "читает" по ступеням сверху вниз,и обновляет информацию о состоянии элементов за период,
значение которого мы можем посмотреть в окне Config: Зная это,мы можем избежать некоторых ошибок в будущем .
В Editor у нас есть 4 кнопки для
создания новой ступени(Add)
вставки новой ступени(Insert),будет вставлена перед активной ступенью
удаление ступени(Delete)
внесение измеений в ступень(Modify)
Ступень становится активной нажатием ЛКМ , и выделяется цветом. ------------------------------------------------------------------------------------------------------
Далее рассмотрим таймеры,их разновидности и некоторые примеры применения. Посмотрим ,как действуют эти элементы:
http://www.youtube.com/watch?v=XEBq5exN05Q&feature=plcp
То есть у нас есть три режима :
TON- задержка включения
TOF- задержка выключения
TP- включение на установленное время
Допустим,перед нами стоит задача составить схему , в которой катушка (пускатель,реле,датчик,сигн.лампа) будет включенной на время x ,и отключенной
на время y (все это в цикле): http://www.youtube.com/watch?v=611N_EtC ... e=youtu.be
время таймера ТМ0 определяет продолжительность выкл катушки, ТМ1 - продолжительность вкл
У нас еще есть дополнительно 3 переменных для каждого таймера:
%TMxx.Q - состояние выхода таймера (1 или 0 можем только читать)
%TMxx.V - текущее значение ( целое число, можем только читать)
%TMxx.P - значение уставки ( целое число, можем читать и писать)
попробуем использовать их в нашей схеме-добавим в условия задачи увеличение нерабочей паузы на 1с каждый цикл,а
по достижению уставки 10с - сброс в 0 : http://www.youtube.com/watch?v=7KC94TeT ... e=youtu.be
Здесь мы использовали два элемента,с помощью которых можно дополнять схемы логическими конструкциями.
Первый элемент - присваивание (ASSIGNMENT) .В нем мы присваиваем переменной какое либо значение. Действие выполняется если элемент становится активнным - в нашем случае он активен сразу после включения (подачи напряжения).
Здесь мы для наглядности присвоили внутренней переменной W0 текущее значение таймера TM0.V
Понаблюдать за изменением этой переменной можно в окне Spy tree vars: Второй элемент-это сравнение (COMPARE) .В него мы пишем наше условие.Можно использовать: Если условие становится верным -то и наш элемент становится True (можно рассматривать это как срабатывание контакта)
-------------------
Каждая линия должна заканчиваться либо катушкой (любой ее разновидностью) , либо элементом присваивания (ASSIGNMENT): Если мы попытаемся поместить
в конец линии другой элемент-у нас ничего не получится.Соответственно-все остальные элементы могут размещаться в правой части (то есть все рабочее поле,кроме
последней колонки.
-------------------------------------
Начиная с 0.9 Марк начал использовать другой формат файла (ну это еще ничего), и другое число линий в ступени.
Для полной совместимости с ЕМС пользуем 0.8.010: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Петров И.В. Программируемые контроллеры
И.Г.Минаев ПЛК
Руководство пользователя по программированию ПЛК в CoDeSys 2.3
ClassicLadder под Win
ClassicLadder
ClassicLadder в Linuxcnc
Modbus
Grafcet
Ссылки
ClassicLadder - это интерпретатор языка программирования LD , наиболее распространённого языка для PLC .
А если упрощенно (совсем упрощенно) -то CL это набор виртуальных реле , контактов, таймеров, сетчиков,логических элементов и т.д.
Программирование на языке LD это соеденения этих элементов в цепочки , заключенные между двумя вертикальными линиями,которые можно рассматривать как электрические шины: В LD ток в цепях течет слева направо
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить. распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
====================================
Запуск CL в hal (самый простой) из терминала:
halrun
loadrt threads
loadrt classicladder_rt
loadusr classicladder
addf classicladder.0.refresh thread1
start запустив еще один терминал посмотрим список всех доступных пинов CL: [/color][/size]
Основные элементы -это контакты и обмотка реле. Контактов в одной цепи может быть несколько,а обмотка реле -только одна.
Реле может иметь несколько контактов (как нормально-замкнутых НЗ, так и нормально-разомкнутых НР)
На схеме их нужно обозначать одной переменной: Нарисуем схему показанную на скрине и включая ее посмотрим работу: Для отрисовки используем окно Editor , а для активации элементов окно Spy bools vars
http://www.youtube.com/watch?v=8b9X-XXM ... e=youtu.be
Несколько слов о терминах.Вся программа ладдера разделена на ступени(rung).
Отсюда и название ladder(лестница).Не путать с секциями(sections)-о них еще будет сказанно.
Каждая ступень может иметь метку,которую мы присваиваем сами.Как и в "обычных" языках программирования
мы можем ,используя метку, перейти к той или иной ступени (далее на примерах будет более наглядно)
Надо заметить ,что и исполнение всей программы происходит как бы последовательно.И если в электрической схеме,
на которую будет так похожа наша программа,эл.ток появляется(если упрощенно подойти к этому) сразу на всей шине ,а значит и на всех
элементах сразу - то ладдер "читает" по ступеням сверху вниз,и обновляет информацию о состоянии элементов за период,
значение которого мы можем посмотреть в окне Config: Зная это,мы можем избежать некоторых ошибок в будущем .
В Editor у нас есть 4 кнопки для
создания новой ступени(Add)
вставки новой ступени(Insert),будет вставлена перед активной ступенью
удаление ступени(Delete)
внесение измеений в ступень(Modify)
Ступень становится активной нажатием ЛКМ , и выделяется цветом. ------------------------------------------------------------------------------------------------------
Далее рассмотрим таймеры,их разновидности и некоторые примеры применения. Посмотрим ,как действуют эти элементы:
http://www.youtube.com/watch?v=XEBq5exN05Q&feature=plcp
То есть у нас есть три режима :
TON- задержка включения
TOF- задержка выключения
TP- включение на установленное время
Допустим,перед нами стоит задача составить схему , в которой катушка (пускатель,реле,датчик,сигн.лампа) будет включенной на время x ,и отключенной
на время y (все это в цикле): http://www.youtube.com/watch?v=611N_EtC ... e=youtu.be
время таймера ТМ0 определяет продолжительность выкл катушки, ТМ1 - продолжительность вкл
У нас еще есть дополнительно 3 переменных для каждого таймера:
%TMxx.Q - состояние выхода таймера (1 или 0 можем только читать)
%TMxx.V - текущее значение ( целое число, можем только читать)
%TMxx.P - значение уставки ( целое число, можем читать и писать)
попробуем использовать их в нашей схеме-добавим в условия задачи увеличение нерабочей паузы на 1с каждый цикл,а
по достижению уставки 10с - сброс в 0 : http://www.youtube.com/watch?v=7KC94TeT ... e=youtu.be
Здесь мы использовали два элемента,с помощью которых можно дополнять схемы логическими конструкциями.
Первый элемент - присваивание (ASSIGNMENT) .В нем мы присваиваем переменной какое либо значение. Действие выполняется если элемент становится активнным - в нашем случае он активен сразу после включения (подачи напряжения).
Здесь мы для наглядности присвоили внутренней переменной W0 текущее значение таймера TM0.V
Понаблюдать за изменением этой переменной можно в окне Spy tree vars: Второй элемент-это сравнение (COMPARE) .В него мы пишем наше условие.Можно использовать: Если условие становится верным -то и наш элемент становится True (можно рассматривать это как срабатывание контакта)
-------------------
Каждая линия должна заканчиваться либо катушкой (любой ее разновидностью) , либо элементом присваивания (ASSIGNMENT): Если мы попытаемся поместить
в конец линии другой элемент-у нас ничего не получится.Соответственно-все остальные элементы могут размещаться в правой части (то есть все рабочее поле,кроме
последней колонки.
-------------------------------------
Начиная с 0.9 Марк начал использовать другой формат файла (ну это еще ничего), и другое число линий в ступени.
Для полной совместимости с ЕМС пользуем 0.8.010: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Петров И.В. Программируемые контроллеры
И.Г.Минаев ПЛК
Руководство пользователя по программированию ПЛК в CoDeSys 2.3
ClassicLadder под Win