- LinuxCNC (http://www.linuxcnc.org)
- LinuxCNC для чайников
- Содержание
- НАЧАЛО. ОПИСАНИЕ EMC2 или EMC2 Integrators Manual
- Глава 1. Важные определения
- Глава 2. Аппаратное обеспечение (Hardware)
- Глава 3. Конфигурационные файлы
- Глава 4. Файл INI
- Глава 5. EMC2 и HAL
- Глава 6. КОМАНДЫ
- BIT или не BIT? Вот в чём вопрос!
- Нужно ли изобретать велосипед или Компоненты реального времени. Часть 1.
- Компоненты реального времени. Часть 2.
- Своя панель. Первые шаги.
- Как «прикрутить» свою панель к «стандартной»?
- Как «связать» кнопки своей панели с CNC?
- Как не запутаться в сложной схеме CNC?
LinuxCNC (http://www.linuxcnc.org)
Стоимость | Бесплатно |
Русификация | Отсутствует |
Сложность | Высокая |
Удобство | Средняя |
Визуализация | Есть |
Возможность модификации | Имеется |
Надежность | Высокая |
Требования к компьютеру | Средние и Высокие |
Очень перспективная и устойчивая разработка. Данная система разрабатывается группой энтузиастов. Среди их спонсоров выступает различные крупные организации включая правительство США. Программа позволяет управлять шаговыми и серводвигателями через LPT порт. Поддерживается до 6ти осей. Существует 2 версии программы EMC и EMC2. В данной статье рассматривается вторая версия программы.
Сама система состоит из специально оптимизированной Linux системы, которая поддерживает RTI (процессы реального времени). Именно эта особенность дает высокую надежность генерации управляющий частоты для драйверов двигателей. Второй компонент это непосредственно программа EMC которая позволяет управлять драйвером двигателей.
Хочу сразу отметить, если у вас нет хотя бы начальных знаний UNIX подобных операционных систем и команда «chmod 666» вызывает у вас ассоциации только с числом зверя, то я скорее всего вы не сможете настроить и запустить LinixCNC.
Существует несколько дистрибутивов для инсталляции программы. Важно отметить, что не каждая инсталляция Linux подойдет для установки. И если вы являетесь простым пользователем, то стоит использовать один из специально подготовленных дистрибутивов, которые можно взять по адресу http://linuxcnc.org/index.php?option=com_c. temid=4&lang=en.
Рассмотрим 2 из предложенных дистрибутива.
1. Официальный дистрибутив основанный на Ubuntu Linux
http://linuxcnc.org/iso/emc2-ubuntu6.06-de. esktop-i386.iso
2. Дистрибутив поддерживаемый пользователями EMC на базе Puppy Linux
http://www.cncgear.com/EMC/coolcncb05.iso
Оба дистрибутива имеют LiveCD, то есть с данного CD можно запустить компьютер непосредственно в нужную OS и при необходимости инсталлировать ее на жесткий диск.
UBUNTU
Н сегодняшний день один из самых успешных реализаций Linux для настольных систем. При инсталляции система автоматически находит большинство устройств и обладает интерфейсом который превосходит по качеству Windows XP. К сожалению, за эти прелести проходиться платить быстрым компьютером и местом на жестком диске. Требуется компьютер с минимум 512 Мб оперативной памяти и около 4Gb дискового пространства. Не рекомендую использовать процессор с частотой менее 1500 Мгц.
Скачайте ISO образ диска и создайте загружаемый диск.
Подготовьте (если собираетесь инсталлировать систему на жесткий диск) раздел диска размером не менее 4 Гб.
Вставьте диск в CDROM и укажите его как стартовое устройство.
Продолжение следует …
COOLCNC
Этот Linux позволяет запускаться на компьютерах с минимальными требованиями к «железу». Мне удалось инсталлировать на систему с процессором 600 Мг, памятью 512 Мб и флэшдрайвом 128 Мб. Никаких проблем с быстродействием обнаружено не было. Расплатой за такие минимальные требования стал простенький интерфейс без поддержки русского языка. Для людей привыкших работать в Linux это не вызовет проблем но для тех кто всегда работал в Windows это будет не совсем удобно.
Скачайте ISO образ диска и создайте загружаемый диск.
Подготовьте (если собираетесь инсталлировать систему на жесткий диск) раздел диска размером не менее 128 Мб. Кстати в качестве носителя для данной операционной системы можно использовать различные Флэшьдрайвы включая USB.
Вставьте диск в CDROM и укажите его как стартовое устройство.
Я опишу тот метод установки который понравился мне больше всего.
Возможно использовать и другие пути
При появлении стартового экрана у вас есть 10 секунд чтобы выбрать метод запуска с диска. Выбирайте 4, запуск целиком в памяти.
[img]http://www.cnczone.ru/img/linuxcnc.coolcnc.livestart.gif[/img]
Следующий шагом будет выбор раскладки клавиатуры. Выбирайте US — QWERTY
[img]http://www.cnczone.ru/img/linuxcnc.coolcnc.keyboard.gif[/img]
Далее укажите тип вашей мыши и наличии у нее колеса скролинга.
[img]http://www.cnczone.ru/img/linuxcnc.coolcnc.mouse.gif[/img]
[img]http://www.cnczone.ru/img/linuxcnc.coolcnc.mscroll.gif[/img]
В следующем окне укажите тип графического адаптера Xvesa
[img]http://www.cnczone.ru/img/linuxcnc.coolcnc.vesa.gif[/img]
Теперь система загрузит графическую оболочку и поросит определить графический режим. Рекомендую использовать разрешение не менее 1024×768 так как программа EMC2 оптимизирована под такое или большее разрешение.
[img]http://www.cnczone.ru/img/linuxcnc.coolcnc.res.gif[/img]
И так мы произвели запуск в память с диска. Уже сейчас вы можите посмотреть программу EMC2 (ее ярлык лежит на рабочем столе), но не будем забегать вперед и следующим шагом установим систему на жесткий диск.
Нажмите START->SETUP->INSTALL PUPPY HARD DISK
[img]http://www.cnczone.ru/img/linuxcnc.coolcnc.install1.gif[/img]
Собственно говоря начинается процесс установки.
для начала выбирается файловая система для установки. Я предпочитаю второй вариант, тем более что в нем возможна установка на компьютер который не имет встроенного Флоппи диска. Нажмите цифру 2 и Enter.
STEP1
Укажите системе что у вас новая установка просто нажав Enter
STEP2
Укажите системе тот раздел который вы выделили под COOLCNC.
Для жестких дисков это будет /dev/hdXY
Где X номер физического диска a — первый b — второй и т.д.
Y номер логического раздела на физическом диске 1,2 и т.д.
В моем случае это /dev/hda1
Система так же выдаст дополнительный запрос для подтверждения правильности выбора, введите y
STEP3
Если вы не вынимали CD диск то просто нажмите ENTER
STEP4
Система хочет создать флоппик, я отказываюсь, введя nofloppy (или что угодно но не пробел)
STEP5
STEP6
Должны завершиться самостоятельно
STEP7
По сути дела система установлена, теперь нужно сделать ее стартовой для компьютера. Для этого используется загрузчик GRUB
Введите grub (или любую другую последовательность)
Появиться мастер установки загрузчика
По ходу будут появляться разные информационные сообщения с кнопкой «ОК» смело жмите ее.
Выберете метод Simple
Не меняйте разрешение для текстового окна
Укажите ваш раздел как стартовый
Укажите MBR как метод загрузки
Бывает что с первого раза загрузчик не устанавливается (об этом вы узнаете когда попытаетесь перезапустить систему и она не загрузиться) тогда запуститесь с CD и повторите установку GRUB используя прямое обращение через меню
Итак, операционная система установлена, извлеките CD и перезапускайте компьютер. Если вы все сделали правильно то у вас появиться приглашение загрузчика GRUB
Смело выбирайте первый пункт и система запуститься
Бывает что графический адаптер не запоминает настроек и система не запускает графическую среду и остается в текстовом режиме, в этом случае введите команду startx и укажите графический режим как мы делали при установке.
Тепер приступим к запуску и конфигурированию самой программы EMC2
Продолжение следует .
Источник
LinuxCNC для чайников
Содержание
НАЧАЛО. ОПИСАНИЕ EMC2 или EMC2 Integrators Manual
И почему электронщики не понимают программистов? А ведь учились в соседних группах.
Начнём разборку тоже с этого описания.
Глава 1. Важные определения
Никаких проблем. Всё понятно. Идём дальше.
Глава 2. Аппаратное обеспечение (Hardware)
2.1 Latency Test
И опять всё понятно. Тест несложный. Данные записаны.
Глава 3. Конфигурационные файлы
И тут всё в порядке.
Дальше стал конфигурить систему, используя Stepconf. Столкнулся с проблемой, что Stepconf не дал мне возможности сконфигурировать систему такой, которая мне нужна. Испробовав несколько вариантов понял — нужно будет прописывать конфигурацию «ручками».
Вот и подошел я к INI-файлу.
Глава 4. Файл INI
Вопросы начали появляться, но житейское правило: Не трогай того, что не понимаешь — помогло прописать бОльшую часть ini-файла. Больше того, прописал четвертую ось (она у меня должна качать гель: шаговик-насос). Даже подвигал насос. Но КАК его запустить программой? Да еще в нужное время, с нужной скоростью!
Тут без понимания HAL-файла не обойтись.
Глава 5. EMC2 и HAL
И вот первая строка:
Motion загружается при помощи команды motmod. Родственные программы должны быть запущены до motion.
Перечитал пару раз. Непонятно. Пропустил и полез дальше. Ещё более непонятно. Открыл HAL у себя и стал читать, взирая на реальный текст реального HAL-а. Стал понимать структуру самого файла. Но что там написано.
После двух недель стало ясно следующее:
1. Система EMC2 или LinuxCNC — это огромный набор маленьких программок, которые определенным образом сконфигурированы в систему. Потому, чтобы начать самому прописывать свою систему своего станка — необходимо понять логику этой конфигурации. А она оказалась довольно простой. Только написана на ином языке, на языке программистов.
Итак, эти маленькие программки называют КОМПОНЕНТАМИ. У каждого компонента есть своё ИМЯ.
2. У каждого компонента есть контакты (клеммы, разъемы) входов и выходов. Их называют ПИНы. У каждого компонента пинов может быть различное количество. У каждого пина есть своё имя. Пины бывают входные и выходные. А записывать это имя пина договорились так:
(имя компонента).(имя пина)
, где motion- имя компонента, analog-out-00 — имя пина, этот пин выходной и его номер 00.
ВАЖНО! Не стоит верить имени пина в части входной он или выходной. Есть случаи, когда в названии пина есть «in» или «out@? а на самом деле всё обстоит совсем не так. Так где же узнать входной это пин или выходной?
Вариант 1. Почитать мануал (описание) EMC2. Там это выглядит как-то так:
— как мы уже разобрались, эта запись означает, что это выходной пин coolant-flood компонента iocontrol.0
Вариант 2. (мной пока слабо используемый) Смотреть на свойства пина можно и в емс — любой пин открываем в Halshow и смотрим.
Также компонент может иметь один или несколько параметров (это такие коэффициенты, которые используются при работе компонента). Тут нет проблем — такое есть в любой схеме (номиналы резисторов, например).
Компоненты могут «соединяться» между собой посредством связей (проводки между входами и выходами). Тут есть тоже свои правила: 1. Чтобы не путаться, договорились каждую связь обзывать своим именем.
В этом случае, запись «коммутации» двух компонентов будет выглядеть так:
, что означает создаём (команда net) связь (vel) между пином current-vel компонента motion и пином vel компонента stepgen.3 (тут 3 — это номер компонента с таким именем — ведь один компонент может использоваться одновременно несколько раз, но под разными порядковыми номерами). Стрелочки писать необязательно. С ними на начальном этапе овладения системой проще — понятно ОТКУДА и куда передается «сигнал».
Возможно эту запись сделать так:
— как вам будет удобнее и понятнее. Кстати, эти две строчки могут быть записаны в разных местах HAL-файла.
Есть и второе правило при записи связи:
2. К одному выходному пину можно подсоединить несколько входных пинов. Но один входной пин можно подсоединить только к одному выходному пину.
Глава 6. КОМАНДЫ
Вот приходите вы домой (вошли в систему), подошли к телевизору, нажимаете на пульте 5 канал (обращаетесь к компоненту) и. А экран-то тёмный! Оказывается телевизор-то не включили.
Так же происходит и с компонентами Линукса. В HAL-е нужно первым делом «включить» нужные компоненты — «загрузить компонент HAL реального времени»!
Так мы подошли к понятию КОМАНДЫ.
1. loadrt — загружает компонент HAL реального времени. Например,
, что означает: загружаем (loadrt) компонет stepgen с некоторыми установками (step_type=0,0,0,0), о которых поговорим позже.
2. addf — добавляет компонент реального времени в поток. А по-русски, эта команда определяет, где будет находиться компонент: в высокоскоростном потоке (base-thread) или в низкоскоростном потоке (servo-thread). А если ещё точнее, то определяет, где будет находится ФУНКЦИЯ компонента, так как один компонент может исполнять несколько функций, которые могут быть высокоскоростными и низкоскоростными. Это видно на примере:
ВАЖНО! Эти команды должны быть обязательно! Именно они определяют: какими компонентами мы собираемся пользоваться и какие требования к этим компонентам мы предъявляем по скорости.
ВАЖНО 2! Перед тем, как прописывать функции компонента в потоки — посмотрите описание компонента! Возможно у него есть НЕСКОЛЬКО ФУНКЦИЙ и у этих функций могут быть имена ОТЛИЧНЫЕ ОТ ИМЕНИ КОМПОНЕНТА. Эти функции нужно прописывать отдельно.
3. С этой командой мы уже встречались — net — создает связь между сигналом и одним или несколькими пинами. Очень удобно, что если этой связи ещё не было (а ведь мы помним, что в Линуксе каждая связь имеет своё имя), то эта связь автоматически создаётся.
Например, нам нужно подать высчитанный программой сигнал Step на два контакта LPT-порта (мы пожелали управлять через отдельные драйвера двумя шаговиками по координате X). Для этого мы должны написать:
Т.е. главное в этой команде:
на первом месте — команда (net), затем название связи (xstep), а уже потом источник сигнала (выходной пин компонента — stepgen.0.step) и приёмник (приёмники) сигнала (входной или входные пины компонентов parport.0.pin-02-out и parport.0.pin-03-out).
Стрелочки => и Ура Линуксу или ошибки, ошибки и ошибки.
Что бы мы делали, если бы LinuxCNC не проверял ошибки ДО начала работы? А ведь проверяет!
Изменили мы ini- и hal-файлы, запустили EMC2 и. Получили сообщение об ошибке. Что с ним делать? И ведь понаписано много! Разберёмся последовательно:
Понятно — тут всё важное о самой системе.
А вот тут уже поинтереснее. Например вот эта строка у меня не понравилась EMC2:
Расшифровка: в файле 333.hal в строке 105 прописан пин axis.3.amp-enable-out, которого просто нет. Забыл я подчистить остатки от четвертой оси, которую изничтожил на корню. Удалил и всё заработало!
Также система отслеживает ошибки с применением типа переменных и параметров (BIT или FLOAT), ошибки при применении связей между пинами компонентов и многое другое. И самое важное — указывает конкретное место, где эту ошибку нашла!
«И это меня радует!» («Килаграмм»)
BIT или не BIT? Вот в чём вопрос!
Захотели, например, мы включать и выключать внешний двигатель, управляемый stepgen.2, командой из g-кода.
Выбрали motion.analog-out-00 (команда M68 E0 Q1 и M68 E0 Q0) , а управлять решили через stepgen.2.enable
Прописываем связь этих пинов в hal:
(это означает: создаём связь upr для соединения выходного пина analog-out-00 компонента motion со входным пином enable компонента stepgen.2)
А причина проста — несоответствие типа выходного и входного пинов:
Выход из ситуации может быть таким — использовать motion.digital-out-00 (команды M64 P0 и M65 P0) — формат сигнала BIT
И самое главное — НЕ ЗАБЫВАЙТЕ ПРОВЕРЯТЬ ФОРМАТЫ пинов и параметров, а также переменных. Это несложно, но позволит избежать многих ошибок.
Нужно ли изобретать велосипед или Компоненты реального времени. Часть 1.
Мы уже вполне осознанно начали лазить по файлам настройки и конфигурации CNC — самое время начать усовершенствовать работу нашего станка, придумать всякие удобства, «вкусности» и т.п.
Например, не запускать станок, пока точно не будет ясно, что оператор нажал две кнопки безопасности, разнесенные подальше друг от друга 😉
Пропишем эти две кнопки:
а дальше нужно включать станок только если эти «кнопочки» (start1 и start2) нажаты (= 0). Сделаем это через пины
всех трех координат. Т.е. пока отрабатывается программа — держи руки на кнопках!
Т.е. условием включения станка должно быть:
Мы, как электронщики, прекрасно знаем, что это легко реализовать через двух-входовый элемент ИЛИ-НЕ и двух-входовый И
(start1 или start2), затем инвертируем и на первый вход элемента И, а на второй вход того же И — axis.0.amp-enable-out
Тогда на выходе, при start1 = 0 и start2 = 0, получим тот же уровень, что и axis.0.amp-enable-out и передаём его на stepgen.0.enable
И так по всем трем осям.
А, если хотя бы один start (хотя бы одна кнопка) равен 1 (отжата), то stepgen.0.enable равен 0 (False) и движение по осям прекращается.
Что нам может предложить CNC из стандартного набора компонентов?
Пропишем всё в логике CNC (только одну координату для краткости):
Вроде всё. НЕТ! Опять забыли для начала «включить» компоненты и определить их в нужном потоке. Мы используем один компонент or2, один компонент not и один компонент and2 (для одной оси) или три компонента and2 (для трёх осей). Получается всё вместе:
Здесь loadrt and2 count=3 говорит о том, что мы будем использовать компонент 2-И трижды.
Это пример использования готовых компонентов для реализации «цифровой схемы». Но это далеко не все возможности компонентов реального времени.
Компоненты реального времени. Часть 2.
Аналогично «цифровым» прототипам в LinuxCNC есть и «аналоговые» компоненты:
limit[N] — ограничитель сигнала между min и max
lowpass — низкочастотный фильтр
mux2, mux4, mux8 — коммутаторы сигналов на 2, 4, 8 коммутируемых входов
Своя панель. Первые шаги.
В процессе отладки своего станка часто возникает потребность визуального контроля процесса или оперативного изменения параметров работы станка. Как это реализовать, если на стандартной панели таких элементов нет? Конечно, сделать эти элементы самостоятельно!
Начнём с простого примера. Нужно контролировать состояние сигналов stepgen.0.enable, stepgen.1.enable и stepgen.2.enable.
Светодиоды! Вот что нам понадобится. Но не настоящие из кремния и пластика, а «нарисованные». 😉
1. Создаём файл с именем ledall.xml
Делаем его в обычном текстовом редакторе.
halpin — это процедура задания имени «светодиода» в .hal
Сохраняем файл как ledall.xml в папку с файлом нашего .ini файла!
2. Прописываем в .ini в разделе [DISPLAY]:
а в разделе [HAL]:
3. Создаём файл ledall.hal и прописываем в нём:
Как вы уже поняли, мы использовали СИГНАЛЫ xenable, yenable и zenable из нашего файла .hal:
, т.е. эти сигналы обязательно должны быть уже созданы в файле .hal
Теперь мы можем видеть состояние наших двигателей во время работы станка.
По умолчанию КРАСНЫЙ — это FALSE или 0, а ЗЕЛЕНЫЙ — это TRUE или 1.
Как «прикрутить» свою панель к «стандартной»?
Сразу оговорюсь, что «стандартной» панелью назвал панель AXIS — это самая распространенная панель у новичков.
Для начала: Файл, в котором будем прописывать связи пинов панели с пинами CNC называется posgui.hal и лежит он в папке конфигурации (в папке с настройками — там, где лежат файлы .ini и .hal)
Свою панель вырисовываем в Glade (это такая программа для создания визуальной панели) и сохраняем в папке конфигурации под именем mygui.ui При прорисовывании в Glade брать «кнопки» и «индикаторы», по возможности, из меню HAL_PYTHON
В .ini прописываем:
Теперь при запуске CNC mygui.ui мы увидим стандартную панель с прикрученной к ней справа нашей панелью. Если открыть в CNC Станок-Установки HAL — PINS — gladevcp, то можно посмотреть весь список пинов нашей панели.
Когда дополнительных кнопок и индикаторов много — лучше для себя сделать табличку соответствий: пин панели — пин компонента — действие (так будет всё понятно и запутаться будет труднее).
Как «связать» кнопки своей панели с CNC?
Для связи нашей панели с CNC используем пины различных компонентов.
ВНИМАНИЕ! Особо обратите внимание на компонент halui — в нём есть множество полезных пинов!
1. Прописываем в .ini , что мы будем использовать компонент halui:
2. В описании EMC2 внимательно читаем о пинах компонента halui Например, Мы хотим на своей панели поставить индикатор «E-STOP». Берем в Glade в разделе «HAL_PYTHON» индикатор LED (он, например, прописал свой пин как hal_led1 Ищем соответствующий пин в halui:
Прописываем в postgui.hal (связываем эти два пина):
Теперь у нас индикатор на панели показывает состояние E-STOP.
Как не запутаться в сложной схеме CNC?
Как только мы начинаем понимать основы LCNC, то начинаем творить!
И натыкаемся на вопрос: как не запутаться в множестве связей? А ведь каждая связь должна иметь своё имя!
Я поступаю так: Даю каждой связи имя по имени выхода компонента (ведь выходы компонентов в LCNC объединять нельзя!). Например:
Источник