ClassicLadder (CL)
- 
				nkp
 - Мастер
 - Сообщения: 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 раза.
									
			
									
						- 
				nkp
 - Мастер
 - Сообщения: 8340
 - Зарегистрирован: 28 ноя 2011, 00:25
 - Репутация: 1589
 - Контактная информация:
 
Re: ClassicLadder (CL)
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить. распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
			
			
									
									
						Так проще-быстрее составить схему, запустить, отладить. распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить : На скрине основное окно программы и 4 дополнительных.
- 
				aftaev
 - Зачётный участник

 - Сообщения: 34042
 - Зарегистрирован: 04 апр 2010, 19:22
 - Репутация: 6194
 - Откуда: Казахстан.
 - Контактная информация:
 
Re: ClassicLadder (CL)
мож для начало что это такоеnkp писал(а):Для начала рассмотрим примеры работы CL без EMC.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
						Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- 
				nkp
 - Мастер
 - Сообщения: 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+ сенсорная панель.
Правда с ПИД-регуляторами еще не сталкивался, но думаю разберусь.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
						Я все пойму, Вы только дайте денег!!!
- 
				galexey
 - Опытный
 - Сообщения: 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 будет значение скорости шпинделя.
- 
				nkp
 - Мастер
 - Сообщения: 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 на схеме разместиь
			
			
									
									- 
				nkp
 - Мастер
 - Сообщения: 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)
поставил 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 раз.
									
			
									- 
				nkp
 - Мастер
 - Сообщения: 8340
 - Зарегистрирован: 28 ноя 2011, 00:25
 - Репутация: 1589
 - Контактная информация:
 
Re: ClassicLadder (CL)
то есть сюда прописал допустим 15 и ничего не изменилось?
			
			
									
									
						- 
				nkp
 - Мастер
 - Сообщения: 8340
 - Зарегистрирован: 28 ноя 2011, 00:25
 - Репутация: 1589
 - Контактная информация:
 
Re: ClassicLadder (CL)
пробовал - не получилось, но и не разбирался....Lexxa писал(а):кстати, емс после этой редактора нормально кушает clp файл?
рисовать здесь намного удобней - есть копипаст
отрабатывать сказка - все что надо включаем
надо бы с совместимостью файлов разобраться действительно
зы не знаю ,почему в емс "несвежую" версию пользуют(наверно устраивает)
