ClassicLadder (CL)

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

ClassicLadder (CL)

Сообщение nkp » 01 июл 2012, 12:15

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


ClassicLadder - это интерпретатор языка программирования LD , наиболее распространённого языка для PLC .
А если упрощенно (совсем упрощенно) -то CL это набор виртуальных реле , контактов, таймеров, сетчиков,логических элементов и т.д.
Программирование на языке LD это соеденения этих элементов в цепочки , заключенные между двумя вертикальными линиями,которые можно рассматривать как электрические шины:
(для просмотра содержимого нажмите на ссылку)
Выделение(026).png
Выделение(026).png (3.79 Кб) Просмотров: 4835

В LD ток в цепях течет слева направо
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить.
cl.rar
(346.21 Кб) Скачиваний: 544

распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить :

На скрине основное окно программы и 4 дополнительных.
====================================
Запуск CL в hal (самый простой) из терминала:
halrun
loadrt threads
loadrt classicladder_rt
loadusr classicladder
addf classicladder.0.refresh thread1
start


запустив еще один терминал посмотрим список всех доступных пинов CL:


Основные элементы -это контакты и обмотка реле.

Контактов в одной цепи может быть несколько,а обмотка реле -только одна.
Реле может иметь несколько контактов (как нормально-замкнутых НЗ, так и нормально-разомкнутых НР)
На схеме их нужно обозначать одной переменной:
(для просмотра содержимого нажмите на ссылку)
Выделение(028).png
Выделение(028).png (9.09 Кб) Просмотров: 4823

Нарисуем схему показанную на скрине и включая ее посмотрим работу:
11.clprj.tar
реле %Q0 и два его контакта
(10 Кб) Скачиваний: 429

Для отрисовки используем окно Editor , а для активации элементов окно Spy bools vars
http://www.youtube.com/watch?v=8b9X-XXMME0&feature=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 Кб) Просмотров: 4772

http://www.youtube.com/watch?v=611N_EtCgBw&feature=youtu.be
время таймера ТМ0 определяет продолжительность выкл катушки, ТМ1 - продолжительность вкл
У нас еще есть дополнительно 3 переменных для каждого таймера:
%TMxx.Q - состояние выхода таймера (1 или 0 можем только читать)
%TMxx.V - текущее значение ( целое число, можем только читать)
%TMxx.P - значение уставки ( целое число, можем читать и писать)
попробуем использовать их в нашей схеме-добавим в условия задачи увеличение нерабочей паузы на 1с каждый цикл,а
по достижению уставки 10с - сброс в 0 :

1.clp.tar
(10 Кб) Скачиваний: 402

http://www.youtube.com/watch?v=7KC94TeT7EA&feature=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 Кб) Скачиваний: 734

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

Re: ClassicLadder (CL)

Сообщение nkp » 01 июл 2012, 12:19

Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить.
cl.rar
(346.21 Кб) Скачиваний: 381

распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить :

На скрине основное окно программы и 4 дополнительных.
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: ClassicLadder (CL)

Сообщение aftaev » 01 июл 2012, 13:54

nkp писал(а):Для начала рассмотрим примеры работы CL без EMC.

мож для начало что это такое :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 26527
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 4161
Медальки:

Re: ClassicLadder (CL)

Сообщение nkp » 01 июл 2012, 14:01

aftaev писал(а):мож для начало что это такое

да -так и будет
тоже недавно сам по кусочкам собирал инфу (делал смену инстр на токарник)
вот и решил (ну как бывает:чайник для чайников :) )
Сейчас просто "застолбил" 2 первых поста-потом попрошу Ника возможность их редактировать
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: ClassicLadder (CL)

Сообщение Nick » 01 июл 2012, 21:14

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

За начало темы респект, ждем продолжения :good: !
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1332
Заслуга: Developer
Медальки:

Re: ClassicLadder (CL)

Сообщение Тима » 02 июл 2012, 01:07

LD- очень удобный и понятный язык для программирования ПЛК. Программировал на нем ПЛК Delta, Logo и DirectLogic.
Мне дали одно тех.задание, замутить 24 ПИД-регулятора температуры для термопласт-автомата. Планирую реализовать на ПЛК Delta+ сенсорная панель.
Правда с ПИД-регуляторами еще не сталкивался, но думаю разберусь.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
 
Сообщения: 3116
Зарегистрирован: 01 мар 2012, 20:47
Откуда: КБР
Репутация: 1036
Медальки:
Настоящее имя: Тимур

Re: ClassicLadder (CL)

Сообщение galexey » 16 июл 2012, 19:44

Не совсем понимаю, как свзываются пины месы и ладдера. Т.е. в программе я задаю скорость шпинделя s100, откуда мне взять это значение в ладдере? Или, к примеру, как подключить концевики к ладдеру?
galexey
Кандидат
 
Сообщения: 81
Зарегистрирован: 01 апр 2012, 21:35
Репутация: 5

Re: ClassicLadder (CL)

Сообщение Nick » 16 июл 2012, 19:53

Пины подсоединяем в hal, например для шпинделя:
net spin-to-cl <= motion.spindle-speed-out => classicladder.0.in-00
по идее после этого на входе %IW0 в classic ladder будет значение скорости шпинделя.
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1332
Заслуга: Developer
Медальки:

Re: ClassicLadder (CL)

Сообщение nkp » 17 июл 2012, 14:20

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

nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: ClassicLadder (CL)

Сообщение Lexxa » 04 авг 2012, 22:36

не догнал, что надо в CL нажать, чтоб переменную типа float на схеме разместиь
Комната залита кровью, я занимаюсь любовью!
Аватара пользователя
Lexxa
Мастер
 
Сообщения: 2310
Зарегистрирован: 16 дек 2011, 16:48
Откуда: ryazan
Репутация: 226
Медальки:
Настоящее имя: Алексей

Re: ClassicLadder (CL)

Сообщение nkp » 04 авг 2012, 23:08

Lexxa писал(а):что надо в CL нажать, чтоб переменную типа float на схеме разместиь

нажать VARIABLE ASSIGNMENT
прописать переменную %QF0 (например %QF0=2.22)
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: ClassicLadder (CL)

Сообщение Lexxa » 05 авг 2012, 11:03

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

Re: ClassicLadder (CL)

Сообщение Lexxa » 30 ноя 2012, 21:09

nkp, как в отдельном от емс ладдере умолчательное кол-во входов увеличить?
Комната залита кровью, я занимаюсь любовью!
Аватара пользователя
Lexxa
Мастер
 
Сообщения: 2310
Зарегистрирован: 16 дек 2011, 16:48
Откуда: ryazan
Репутация: 226
Медальки:
Настоящее имя: Алексей

Re: ClassicLadder (CL)

Сообщение nkp » 30 ноя 2012, 21:16

ClassicLadder (CL) Выделение(016).jpg
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: ClassicLadder (CL)

Сообщение Lexxa » 30 ноя 2012, 21:25

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

upd:
В этом меню Spy bools vars есть поле Offsets for vars displayed bellow.
Короче отображается начиная с этой цифры по 15 штук
Последний раз редактировалось Lexxa 30 ноя 2012, 21:35, всего редактировалось 1 раз.
Комната залита кровью, я занимаюсь любовью!
Аватара пользователя
Lexxa
Мастер
 
Сообщения: 2310
Зарегистрирован: 16 дек 2011, 16:48
Откуда: ryazan
Репутация: 226
Медальки:
Настоящее имя: Алексей

Re: ClassicLadder (CL)

Сообщение nkp » 30 ноя 2012, 21:33

ClassicLadder (CL) Выделение(017).jpg

то есть сюда прописал допустим 15 и ничего не изменилось?
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: ClassicLadder (CL)

Сообщение Lexxa » 30 ноя 2012, 21:36

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

Re: ClassicLadder (CL)

Сообщение Lexxa » 30 ноя 2012, 21:38

кстати, емс после этой редактора нормально кушает clp файл?
Комната залита кровью, я занимаюсь любовью!
Аватара пользователя
Lexxa
Мастер
 
Сообщения: 2310
Зарегистрирован: 16 дек 2011, 16:48
Откуда: ryazan
Репутация: 226
Медальки:
Настоящее имя: Алексей

Re: ClassicLadder (CL)

Сообщение nkp » 30 ноя 2012, 21:46

Lexxa писал(а):кстати, емс после этой редактора нормально кушает clp файл?

пробовал - не получилось, но и не разбирался....
рисовать здесь намного удобней - есть копипаст
отрабатывать сказка - все что надо включаем
надо бы с совместимостью файлов разобраться действительно
зы не знаю ,почему в емс "несвежую" версию пользуют(наверно устраивает)
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: ClassicLadder (CL)

Сообщение Lexxa » 30 ноя 2012, 21:52

да, по удобству он реально впереди планеты той)))
Комната залита кровью, я занимаюсь любовью!
Аватара пользователя
Lexxa
Мастер
 
Сообщения: 2310
Зарегистрирован: 16 дек 2011, 16:48
Откуда: ryazan
Репутация: 226
Медальки:
Настоящее имя: Алексей

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: Alex lamaka, alex998, amikhailov, artclonic, Bing [Bot], Chili, Cvazist, Dimka_almighty, DrDWoo, fara8018, foto-boss, frezeryga, Google [Bot], Ifish, jo_key, key, Lafayette, Leonid Vs, leprud, Lunatic, Majestic-12 [Bot], McNikolson, MGG, michael-yurov, nik1, NKS, nva-tuning, Рамиль, peratron, Quark, Rion, Rom327, savo, scroober, Smlua, sorter, SVP, toxakorzh, tsurika, verser, viael, Vlad_Z, wenji, Yahoo [Bot], Yandex [bot], Yarrr, Карпуха, ЧПУ-шник, шпиндель

Поделиться

Reputation System ©'