Страница 1 из 5

ClassicLadder (CL)

Добавлено: 01 июл 2012, 12:15
nkp
Планируется маленький (или не очень) ликбез по ClassicLadder (далее CL).
ClassicLadder
ClassicLadder в Linuxcnc
Modbus
Grafcet
Ссылки


ClassicLadder - это интерпретатор языка программирования LD , наиболее распространённого языка для PLC .
А если упрощенно (совсем упрощенно) -то CL это набор виртуальных реле , контактов, таймеров, сетчиков,логических элементов и т.д.
Программирование на языке LD это соеденения этих элементов в цепочки , заключенные между двумя вертикальными линиями,которые можно рассматривать как электрические шины:
(для просмотра содержимого нажмите на ссылку)
Выделение(026).png
Выделение(026).png (3.79 КБ) 13289 просмотров
В LD ток в цепях течет слева направо
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить.
cl.rar
(346.21 КБ) 1226 скачиваний
распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить :
(для просмотра содержимого нажмите на ссылку)
Выделение(024).png (13274 просмотра) <a class='original' href='./download/file.php?id=6225&mode=view' target=_blank>Загрузить оригинал (126.21 КБ)</a>
На скрине основное окно программы и 4 дополнительных.
====================================
Запуск CL в hal (самый простой) из терминала:
halrun
loadrt threads
loadrt classicladder_rt
loadusr classicladder
addf classicladder.0.refresh thread1
start
(для просмотра содержимого нажмите на ссылку)
Выделение(037).jpg (12277 просмотров) <a class='original' href='./download/file.php?id=18496&mode=view' target=_blank>Загрузить оригинал (171.86 КБ)</a>
запустив еще один терминал посмотрим список всех доступных пинов CL:
(для просмотра содержимого нажмите на ссылку)
Выделение(038).jpg (12277 просмотров) <a class='original' href='./download/file.php?id=18497&mode=view' target=_blank>Загрузить оригинал (462.89 КБ)</a>
[/color][/size]
Основные элементы -это контакты и обмотка реле.
(для просмотра содержимого нажмите на ссылку)
Выделение(025).png (13277 просмотров) <a class='original' href='./download/file.php?id=6221&mode=view' target=_blank>Загрузить оригинал (72.21 КБ)</a>
Контактов в одной цепи может быть несколько,а обмотка реле -только одна.
Реле может иметь несколько контактов (как нормально-замкнутых НЗ, так и нормально-разомкнутых НР)
На схеме их нужно обозначать одной переменной:
(для просмотра содержимого нажмите на ссылку)
Выделение(028).png
Выделение(028).png (9.09 КБ) 13277 просмотров
Нарисуем схему показанную на скрине и включая ее посмотрим работу:
11.clprj.tar
реле %Q0 и два его контакта
(10 КБ) 923 скачивания
Для отрисовки используем окно Editor , а для активации элементов окно Spy bools vars
http://www.youtube.com/watch?v=8b9X-XXM ... e=youtu.be

Несколько слов о терминах.Вся программа ладдера разделена на ступени(rung).
Отсюда и название ladder(лестница).Не путать с секциями(sections)-о них еще будет сказанно.
Каждая ступень может иметь метку,которую мы присваиваем сами.Как и в "обычных" языках программирования
мы можем ,используя метку, перейти к той или иной ступени (далее на примерах будет более наглядно)
Надо заметить ,что и исполнение всей программы происходит как бы последовательно.И если в электрической схеме,
на которую будет так похожа наша программа,эл.ток появляется(если упрощенно подойти к этому) сразу на всей шине ,а значит и на всех
элементах сразу - то ладдер "читает" по ступеням сверху вниз,и обновляет информацию о состоянии элементов за период,
значение которого мы можем посмотреть в окне Config:
(для просмотра содержимого нажмите на ссылку)
Выделение(033).png (13242 просмотра) <a class='original' href='./download/file.php?id=6258&mode=view' target=_blank>Загрузить оригинал (82.74 КБ)</a>
Зная это,мы можем избежать некоторых ошибок в будущем .
В Editor у нас есть 4 кнопки для
создания новой ступени(Add)
вставки новой ступени(Insert),будет вставлена перед активной ступенью
удаление ступени(Delete)
внесение измеений в ступень(Modify)
Ступень становится активной нажатием ЛКМ , и выделяется цветом.
(для просмотра содержимого нажмите на ссылку)
Выделение(034).png (13242 просмотра) <a class='original' href='./download/file.php?id=6259&mode=view' target=_blank>Загрузить оригинал (47.96 КБ)</a>
------------------------------------------------------------------------------------------------------
Далее рассмотрим таймеры,их разновидности и некоторые примеры применения.
(для просмотра содержимого нажмите на ссылку)
Выделение(037).png (13229 просмотров) <a class='original' href='./download/file.php?id=6330&mode=view' target=_blank>Загрузить оригинал (27.9 КБ)</a>
Посмотрим ,как действуют эти элементы:
http://www.youtube.com/watch?v=XEBq5exN05Q&feature=plcp
То есть у нас есть три режима :
TON- задержка включения
TOF- задержка выключения
TP- включение на установленное время
Допустим,перед нами стоит задача составить схему , в которой катушка (пускатель,реле,датчик,сигн.лампа) будет включенной на время x ,и отключенной
на время y (все это в цикле):
(для просмотра содержимого нажмите на ссылку)
Выделение(038).png
Выделение(038).png (3.6 КБ) 13226 просмотров
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 :
(для просмотра содержимого нажмите на ссылку)
Выделение(039).png (13226 просмотров) <a class='original' href='./download/file.php?id=6336&mode=view' target=_blank>Загрузить оригинал (14.11 КБ)</a>
1.clp.tar
(10 КБ) 936 скачиваний
http://www.youtube.com/watch?v=7KC94TeT ... e=youtu.be
Здесь мы использовали два элемента,с помощью которых можно дополнять схемы логическими конструкциями.
Первый элемент - присваивание (ASSIGNMENT) .В нем мы присваиваем переменной какое либо значение.
(для просмотра содержимого нажмите на ссылку)
Рабочий стол 1(021).png (13226 просмотров) <a class='original' href='./download/file.php?id=6338&mode=view' target=_blank>Загрузить оригинал (46.43 КБ)</a>
Действие выполняется если элемент становится активнным - в нашем случае он активен сразу после включения (подачи напряжения).
Здесь мы для наглядности присвоили внутренней переменной W0 текущее значение таймера TM0.V
Понаблюдать за изменением этой переменной можно в окне Spy tree vars:
(для просмотра содержимого нажмите на ссылку)
Выделение(041).png (13225 просмотров) <a class='original' href='./download/file.php?id=6341&mode=view' target=_blank>Загрузить оригинал (36.28 КБ)</a>
Второй элемент-это сравнение (COMPARE) .В него мы пишем наше условие.Можно использовать:
(для просмотра содержимого нажмите на ссылку)

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

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


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


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


 ^ (степень),% (модуль),& (and),| (or)  
Если условие становится верным -то и наш элемент становится True (можно рассматривать это как срабатывание контакта)
-------------------
Каждая линия должна заканчиваться либо катушкой (любой ее разновидностью) , либо элементом присваивания (ASSIGNMENT):
(для просмотра содержимого нажмите на ссылку)
Выделение(001).png (13206 просмотров) <a class='original' href='./download/file.php?id=6356&mode=view' target=_blank>Загрузить оригинал (28.43 КБ)</a>
Если мы попытаемся поместить
в конец линии другой элемент-у нас ничего не получится.Соответственно-все остальные элементы могут размещаться в правой части (то есть все рабочее поле,кроме
последней колонки.
-------------------------------------
Начиная с 0.9 Марк начал использовать другой формат файла (ну это еще ничего), и другое число линий в ступени.
Для полной совместимости с ЕМС пользуем 0.8.010:
classicladder-0.8.010.zip
(472.51 КБ) 1274 скачивания
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Петров И.В. Программируемые контроллеры
И.Г.Минаев ПЛК
Руководство пользователя по программированию ПЛК в CoDeSys 2.3
ClassicLadder под Win

Re: ClassicLadder (CL)

Добавлено: 01 июл 2012, 12:19
nkp
Для начала рассмотрим примеры работы CL без EMC.
Так проще-быстрее составить схему, запустить, отладить.
cl.rar
(346.21 КБ) 873 скачивания
распаковать,запускаем файл "classicladder" (можно сделать ссылку на рабочий стол)
Должны получить :
(для просмотра содержимого нажмите на ссылку)
Выделение(024).png (13312 просмотров) <a class='original' href='./download/file.php?id=6208&mode=view' target=_blank>Загрузить оригинал (126.21 КБ)</a>
На скрине основное окно программы и 4 дополнительных.

Re: ClassicLadder (CL)

Добавлено: 01 июл 2012, 13:54
aftaev
nkp писал(а):Для начала рассмотрим примеры работы CL без EMC.
мож для начало что это такое :)

Re: ClassicLadder (CL)

Добавлено: 01 июл 2012, 14:01
nkp
aftaev писал(а):мож для начало что это такое
да -так и будет
тоже недавно сам по кусочкам собирал инфу (делал смену инстр на токарник)
вот и решил (ну как бывает:чайник для чайников :) )
Сейчас просто "застолбил" 2 первых поста-потом попрошу Ника возможность их редактировать

Re: ClassicLadder (CL)

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

За начало темы респект, ждем продолжения :good: !

Re: ClassicLadder (CL)

Добавлено: 02 июл 2012, 01:07
Тима
LD- очень удобный и понятный язык для программирования ПЛК. Программировал на нем ПЛК Delta, Logo и DirectLogic.
Мне дали одно тех.задание, замутить 24 ПИД-регулятора температуры для термопласт-автомата. Планирую реализовать на ПЛК Delta+ сенсорная панель.
Правда с ПИД-регуляторами еще не сталкивался, но думаю разберусь.

Re: ClassicLadder (CL)

Добавлено: 16 июл 2012, 19:44
galexey
Не совсем понимаю, как свзываются пины месы и ладдера. Т.е. в программе я задаю скорость шпинделя s100, откуда мне взять это значение в ладдере? Или, к примеру, как подключить концевики к ладдеру?

Re: ClassicLadder (CL)

Добавлено: 16 июл 2012, 19:53
Nick
Пины подсоединяем в hal, например для шпинделя:
net spin-to-cl <= motion.spindle-speed-out => classicladder.0.in-00
по идее после этого на входе %IW0 в classic ladder будет значение скорости шпинделя.

Re: ClassicLadder (CL)

Добавлено: 17 июл 2012, 14:20
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
(для просмотра содержимого нажмите на ссылку)
Выделение(015).png (13161 просмотр) <a class='original' href='./download/file.php?id=6529&mode=view' target=_blank>Загрузить оригинал (77.86 КБ)</a>

Re: ClassicLadder (CL)

Добавлено: 04 авг 2012, 22:36
Lexxa
не догнал, что надо в CL нажать, чтоб переменную типа float на схеме разместиь

Re: ClassicLadder (CL)

Добавлено: 04 авг 2012, 23:08
nkp
Lexxa писал(а):что надо в CL нажать, чтоб переменную типа float на схеме разместиь
нажать VARIABLE ASSIGNMENT
прописать переменную %QF0 (например %QF0=2.22)

Re: ClassicLadder (CL)

Добавлено: 05 авг 2012, 11:03
Lexxa
Да, разобрался, глючил редактор, линия не соединялась с VARIABLE ASSIGNMENT

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:09
Lexxa
nkp, как в отдельном от емс ладдере умолчательное кол-во входов увеличить?

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:16
nkp
Выделение(016).jpg (12820 просмотров) <a class='original' href='./download/file.php?id=9816&mode=view' target=_blank>Загрузить оригинал (96.76 КБ)</a>

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:25
Lexxa
поставил 35, но чет они не появились в менюшке Symbols names и Spy bools vars где их галочками можно отмечать

upd:
В этом меню Spy bools vars есть поле Offsets for vars displayed bellow.
Короче отображается начиная с этой цифры по 15 штук

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:33
nkp
Выделение(017).jpg (12817 просмотров) <a class='original' href='./download/file.php?id=9817&mode=view' target=_blank>Загрузить оригинал (42.61 КБ)</a>
то есть сюда прописал допустим 15 и ничего не изменилось?

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:36
Lexxa
разобрался уже)) все равно спасиб)

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:38
Lexxa
кстати, емс после этой редактора нормально кушает clp файл?

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:46
nkp
Lexxa писал(а):кстати, емс после этой редактора нормально кушает clp файл?
пробовал - не получилось, но и не разбирался....
рисовать здесь намного удобней - есть копипаст
отрабатывать сказка - все что надо включаем
надо бы с совместимостью файлов разобраться действительно
зы не знаю ,почему в емс "несвежую" версию пользуют(наверно устраивает)

Re: ClassicLadder (CL)

Добавлено: 30 ноя 2012, 21:52
Lexxa
да, по удобству он реально впереди планеты той)))