ClassicLadder (CL)

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

ClassicLadder (CL)

Сообщение nkp »

Планируется маленький (или не очень) ликбез по ClassicLadder (далее CL).
ClassicLadder
ClassicLadder в Linuxcnc
Modbus
Grafcet
Ссылки


ClassicLadder - это интерпретатор языка программирования LD , наиболее распространённого языка для PLC .
А если упрощенно (совсем упрощенно) -то CL это набор виртуальных реле , контактов, таймеров, сетчиков,логических элементов и т.д.
Программирование на языке LD это соеденения этих элементов в цепочки , заключенные между двумя вертикальными линиями,которые можно рассматривать как электрические шины:
(для просмотра содержимого нажмите на ссылку)
Выделение(026).png
Выделение(026).png (3.79 КБ) 12433 просмотра
В LD ток в цепях течет слева направо
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить.
cl.rar
(346.21 КБ) 1173 скачивания
распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
====================================
Запуск CL в hal (самый простой) из терминала:
halrun
loadrt threads
loadrt classicladder_rt
loadusr classicladder
addf classicladder.0.refresh thread1
start
запустив еще один терминал посмотрим список всех доступных пинов CL: [/color][/size]
Основные элементы -это контакты и обмотка реле. Контактов в одной цепи может быть несколько,а обмотка реле -только одна.
Реле может иметь несколько контактов (как нормально-замкнутых НЗ, так и нормально-разомкнутых НР)
На схеме их нужно обозначать одной переменной:
(для просмотра содержимого нажмите на ссылку)
Выделение(028).png
Выделение(028).png (9.09 КБ) 12421 просмотр
Нарисуем схему показанную на скрине и включая ее посмотрим работу:
11.clprj.tar
реле %Q0 и два его контакта
(10 КБ) 886 скачиваний
Для отрисовки используем окно 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 (все это в цикле):
(для просмотра содержимого нажмите на ссылку)
Выделение(038).png
Выделение(038).png (3.6 КБ) 12370 просмотров
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 :
1.clp.tar
(10 КБ) 897 скачиваний
http://www.youtube.com/watch?v=7KC94TeT ... e=youtu.be
Здесь мы использовали два элемента,с помощью которых можно дополнять схемы логическими конструкциями.
Первый элемент - присваивание (ASSIGNMENT) .В нем мы присваиваем переменной какое либо значение. Действие выполняется если элемент становится активнным - в нашем случае он активен сразу после включения (подачи напряжения).
Здесь мы для наглядности присвоили внутренней переменной W0 текущее значение таймера TM0.V
Понаблюдать за изменением этой переменной можно в окне Spy tree vars: Второй элемент-это сравнение (COMPARE) .В него мы пишем наше условие.Можно использовать:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

+, -, *, /, = (Стандартные математические символы)


<(меньше),   > (больше),   <= (меньше или равно),  > = (больше или равно),  <> (не равно) 


(,) группировка


 ^ (степень),% (модуль),& (and),| (or)  
Если условие становится верным -то и наш элемент становится True (можно рассматривать это как срабатывание контакта)
-------------------
Каждая линия должна заканчиваться либо катушкой (любой ее разновидностью) , либо элементом присваивания (ASSIGNMENT): Если мы попытаемся поместить
в конец линии другой элемент-у нас ничего не получится.Соответственно-все остальные элементы могут размещаться в правой части (то есть все рабочее поле,кроме
последней колонки.
-------------------------------------
Начиная с 0.9 Марк начал использовать другой формат файла (ну это еще ничего), и другое число линий в ступени.
Для полной совместимости с ЕМС пользуем 0.8.010:
classicladder-0.8.010.zip
(472.51 КБ) 1234 скачивания
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Петров И.В. Программируемые контроллеры
И.Г.Минаев ПЛК
Руководство пользователя по программированию ПЛК в CoDeSys 2.3
ClassicLadder под Win
Последний раз редактировалось nkp 10 сен 2013, 20:51, всего редактировалось 34 раза.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: ClassicLadder (CL)

Сообщение nkp »

Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить.
cl.rar
(346.21 КБ) 844 скачивания
распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: ClassicLadder (CL)

Сообщение aftaev »

nkp писал(а):Для начала рассмотрим примеры работы CL без EMC.
мож для начало что это такое :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: ClassicLadder (CL)

Сообщение nkp »

aftaev писал(а):мож для начало что это такое
да -так и будет
тоже недавно сам по кусочкам собирал инфу (делал смену инстр на токарник)
вот и решил (ну как бывает:чайник для чайников :) )
Сейчас просто "застолбил" 2 первых поста-потом попрошу Ника возможность их редактировать
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Nick »

Чтобы 100 раз не объяснять, что такое Classic Ladder или Ladder logic: http://ru.wikipedia.org/wiki/Ladder_Diagram или более подробно, но на английском: http://en.wikipedia.org/wiki/Ladder_logic .

За начало темы респект, ждем продолжения :good: !
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Тима »

LD- очень удобный и понятный язык для программирования ПЛК. Программировал на нем ПЛК Delta, Logo и DirectLogic.
Мне дали одно тех.задание, замутить 24 ПИД-регулятора температуры для термопласт-автомата. Планирую реализовать на ПЛК Delta+ сенсорная панель.
Правда с ПИД-регуляторами еще не сталкивался, но думаю разберусь.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
galexey
Опытный
Сообщения: 104
Зарегистрирован: 01 апр 2012, 21:35
Репутация: 9
Контактная информация:

Re: ClassicLadder (CL)

Сообщение galexey »

Не совсем понимаю, как свзываются пины месы и ладдера. Т.е. в программе я задаю скорость шпинделя s100, откуда мне взять это значение в ладдере? Или, к примеру, как подключить концевики к ладдеру?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Nick »

Пины подсоединяем в hal, например для шпинделя:
net spin-to-cl <= motion.spindle-speed-out => classicladder.0.in-00
по идее после этого на входе %IW0 в classic ladder будет значение скорости шпинделя.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: ClassicLadder (CL)

Сообщение nkp »

Nick писал(а):net spin-to-cl <= motion.spindle-speed-out => classicladder.0.in-00 по идее после этого на входе %IW0
так с наскоку не получится- motion.spindle-speed-out у нас float ,а мы можем использовать только s32 (classicladder.0.s32in)
значит только через конвертацию:

Код: Выделить всё

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)

Сообщение Lexxa »

не догнал, что надо в CL нажать, чтоб переменную типа float на схеме разместиь
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: ClassicLadder (CL)

Сообщение nkp »

Lexxa писал(а):что надо в CL нажать, чтоб переменную типа float на схеме разместиь
нажать VARIABLE ASSIGNMENT
прописать переменную %QF0 (например %QF0=2.22)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Lexxa »

Да, разобрался, глючил редактор, линия не соединялась с VARIABLE ASSIGNMENT
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Lexxa »

nkp, как в отдельном от емс ладдере умолчательное кол-во входов увеличить?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: ClassicLadder (CL)

Сообщение nkp »

Выделение(016).jpg (11964 просмотра) <a class='original' href='./download/file.php?id=9816&sid=ee06bcb4a0ea64a087ab5d96eea1c4bf&mode=view' target=_blank>Загрузить оригинал (96.76 КБ)</a>
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Lexxa »

поставил 35, но чет они не появились в менюшке Symbols names и Spy bools vars где их галочками можно отмечать

upd:
В этом меню Spy bools vars есть поле Offsets for vars displayed bellow.
Короче отображается начиная с этой цифры по 15 штук
Последний раз редактировалось Lexxa 30 ноя 2012, 21:35, всего редактировалось 1 раз.
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: ClassicLadder (CL)

Сообщение nkp »

Выделение(017).jpg (11961 просмотр) <a class='original' href='./download/file.php?id=9817&sid=ee06bcb4a0ea64a087ab5d96eea1c4bf&mode=view' target=_blank>Загрузить оригинал (42.61 КБ)</a>
то есть сюда прописал допустим 15 и ничего не изменилось?
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Lexxa »

разобрался уже)) все равно спасиб)
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Lexxa »

кстати, емс после этой редактора нормально кушает clp файл?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: ClassicLadder (CL)

Сообщение nkp »

Lexxa писал(а):кстати, емс после этой редактора нормально кушает clp файл?
пробовал - не получилось, но и не разбирался....
рисовать здесь намного удобней - есть копипаст
отрабатывать сказка - все что надо включаем
надо бы с совместимостью файлов разобраться действительно
зы не знаю ,почему в емс "несвежую" версию пользуют(наверно устраивает)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: ClassicLadder (CL)

Сообщение Lexxa »

да, по удобству он реально впереди планеты той)))
:bender:
Ответить

Вернуться в «LinuxCNC»