ClassicLadder (CL)
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
ClassicLadder (CL)
Планируется маленький (или не очень) ликбез по 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
Последний раз редактировалось nkp 10 сен 2013, 20:51, всего редактировалось 34 раза.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: ClassicLadder (CL)
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить. распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
Так проще-быстрее составить схему, запустить, отладить. распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: ClassicLadder (CL)
мож для начало что это такоеnkp писал(а):Для начала рассмотрим примеры работы CL без EMC.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: ClassicLadder (CL)
да -так и будетaftaev писал(а):мож для начало что это такое
тоже недавно сам по кусочкам собирал инфу (делал смену инстр на токарник)
вот и решил (ну как бывает:чайник для чайников )
Сейчас просто "застолбил" 2 первых поста-потом попрошу Ника возможность их редактировать
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ClassicLadder (CL)
Чтобы 100 раз не объяснять, что такое Classic Ladder или Ladder logic: http://ru.wikipedia.org/wiki/Ladder_Diagram или более подробно, но на английском: http://en.wikipedia.org/wiki/Ladder_logic .
За начало темы респект, ждем продолжения !
За начало темы респект, ждем продолжения !
- Тима
- Почётный участник
- Сообщения: 3162
- Зарегистрирован: 01 мар 2012, 20:47
- Репутация: 1089
- Настоящее имя: Тимур
- Откуда: КБР
- Контактная информация:
Re: ClassicLadder (CL)
LD- очень удобный и понятный язык для программирования ПЛК. Программировал на нем ПЛК Delta, Logo и DirectLogic.
Мне дали одно тех.задание, замутить 24 ПИД-регулятора температуры для термопласт-автомата. Планирую реализовать на ПЛК Delta+ сенсорная панель.
Правда с ПИД-регуляторами еще не сталкивался, но думаю разберусь.
Мне дали одно тех.задание, замутить 24 ПИД-регулятора температуры для термопласт-автомата. Планирую реализовать на ПЛК Delta+ сенсорная панель.
Правда с ПИД-регуляторами еще не сталкивался, но думаю разберусь.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Я все пойму, Вы только дайте денег!!!
-
- Опытный
- Сообщения: 104
- Зарегистрирован: 01 апр 2012, 21:35
- Репутация: 9
- Контактная информация:
Re: ClassicLadder (CL)
Не совсем понимаю, как свзываются пины месы и ладдера. Т.е. в программе я задаю скорость шпинделя s100, откуда мне взять это значение в ладдере? Или, к примеру, как подключить концевики к ладдеру?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ClassicLadder (CL)
Пины подсоединяем в hal, например для шпинделя:
net spin-to-cl <= motion.spindle-speed-out => classicladder.0.in-00
по идее после этого на входе %IW0 в classic ladder будет значение скорости шпинделя.
net spin-to-cl <= motion.spindle-speed-out => classicladder.0.in-00
по идее после этого на входе %IW0 в classic ladder будет значение скорости шпинделя.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: ClassicLadder (CL)
так с наскоку не получится- motion.spindle-speed-out у нас float ,а мы можем использовать только s32 (classicladder.0.s32in)Nick писал(а):net spin-to-cl <= motion.spindle-speed-out => classicladder.0.in-00 по идее после этого на входе %IW0
значит только через конвертацию:
Код: Выделить всё
loadrt conv_float_s32 count=1
addf conv-float-s32.0 servo-thread
net spin-to-cl motion.spindle-speed-out conv-float-s32.0.in
net spin-to-cl1 conv-float-s32.0.out classicladder.0.s32in-00
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ClassicLadder (CL)
не догнал, что надо в CL нажать, чтоб переменную типа float на схеме разместиь
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: ClassicLadder (CL)
нажать VARIABLE ASSIGNMENTLexxa писал(а):что надо в CL нажать, чтоб переменную типа float на схеме разместиь
прописать переменную %QF0 (например %QF0=2.22)
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ClassicLadder (CL)
Да, разобрался, глючил редактор, линия не соединялась с VARIABLE ASSIGNMENT
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ClassicLadder (CL)
nkp, как в отдельном от емс ладдере умолчательное кол-во входов увеличить?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ClassicLadder (CL)
поставил 35, но чет они не появились в менюшке Symbols names и Spy bools vars где их галочками можно отмечать
upd:
В этом меню Spy bools vars есть поле Offsets for vars displayed bellow.
Короче отображается начиная с этой цифры по 15 штук
upd:
В этом меню Spy bools vars есть поле Offsets for vars displayed bellow.
Короче отображается начиная с этой цифры по 15 штук
Последний раз редактировалось Lexxa 30 ноя 2012, 21:35, всего редактировалось 1 раз.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: ClassicLadder (CL)
то есть сюда прописал допустим 15 и ничего не изменилось?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ClassicLadder (CL)
разобрался уже)) все равно спасиб)
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ClassicLadder (CL)
кстати, емс после этой редактора нормально кушает clp файл?
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: ClassicLadder (CL)
пробовал - не получилось, но и не разбирался....Lexxa писал(а):кстати, емс после этой редактора нормально кушает clp файл?
рисовать здесь намного удобней - есть копипаст
отрабатывать сказка - все что надо включаем
надо бы с совместимостью файлов разобраться действительно
зы не знаю ,почему в емс "несвежую" версию пользуют(наверно устраивает)
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ClassicLadder (CL)
да, по удобству он реально впереди планеты той)))