Поговорим на темы от труда и труда, станков, автоматизации в java/groovy до прогнозов о будущем человечества.
Вы узнаете о личном автоматизированном производстве в домашней мастерской, о том, как идея создателя превращается в готовое изделие.
Рассмотрим подход к отправке инструкций G-кода из JVM и groovy/java на исполнение станком с ЧПУ для автоматизации того, чего нет в системе «из коробки».
Надеюсь, эта публикация будет познавательной для программистов, работающих с JVM, тех, кто интересуется темой IoT, кому не чужды мастерить, кто задумывается о покупке 3D-принтера, кто сделал прототип любой системы и запустил ее.
программное обеспечение на Raspberry PI/Beagleboard Black. То, о чем я вам говорю, можно повторить, используя программное обеспечение с открытым исходным кодом и открытое оборудование.
Содержание
- Предисловие
- станки с ЧПУ
- От модели к G-коду
- Программное управление
- Управляем машиной из java и groovy
- Красивое далеко.
- выводы
А также опыт работы как с аппаратным, так и с программным обеспечением.
Видеозапись доклада.
Огромное спасибо Стасу Фомину Белонесокс для профессиональной видеозаписи и быстрого монтажа!!! Предисловие Обращение к слушателям.
Доброе утро, дорогие слушатели.
Спасибо всем, что проснулись и пришли утром в выходные.
Я рада видеть вас в зале! Времени на доклад у нас мало, поэтому секции вопросов и ответов в зале не будет, но вы сможете подойти и задать вопросы после доклада.
На последнем слайде указан адрес электронной почты, на который я также отвечу.
Ваше мнение об отчете очень важно для меня.
В ближайшее время планирую провести встречу, где вы сможете практически попробовать сделать то, о чем я сейчас буду говорить теоретически, и управлять ЧПУ.
Это будет открытое/бесплатное мероприятие, и присоединиться к нему смогут все, кто находится в Москве.
Надеюсь в скором времени найти место проведения, подготовить примеры и разместить информацию о месте проведения на сайте meetup.com. Если кому-то интересно, можете написать на мой адрес электронной почты и я пришлю вам уведомление о мероприятии.
Примечание к статье: итоги этой встречи я, конечно, опубликую для читателей хабрахабра и вы сможете в ней поучаствовать.
Начнем доклад на тему «Как станку с ЧПУ в домашней мастерской не превратиться в героев мультфильма «двое из шкатулки».
Кто смотрел и помнит, о чем этот мультфильм? Голоса из зала: «Все смотрели» Отлично, тогда вы примерно знаете, о чем я буду говорить.
И в конце доклада мы попробуем программно управлять машиной на Java и Groovy. Еще вопрос к зрителям.
Кто постоянно пользуется станками с ЧПУ, кто работает инженером, конструктором или технологом производства? Слышу отрицательные ответы от зала.
Так мне будет намного проще и вас не будут троллить.
Людям, которые каждый день используют эти технологии в промышленности, возможно, покажется забавным стоимость инструментов, глубина погружения в тему и мой стиль изложения.
станки с ЧПУ Что мы с тобой знаем о работе? Труд и труд человека всегда происходили двояким образом.
Либо ты управляешь теми, кто работает, либо впрягаешься и делаешь работу вместе со всеми – вместе тянешь одно «плечо».
В этой картине не учтено, что благодаря изобретателям и инженерам появились более удобные инструменты.
Технологии, которые упрощают работу, делают жизнь намного приятнее и позволяют людям заниматься интеллектуальными делами, а работу оставляют машинам.
Все, наверное, помнят, как мальчик из мультфильма «Вовка в тридевятом царстве» хотел, чтобы его желания исполнились, но в то же время он не хотел ничего делать сам и не хотел ничему учиться.
В тридевятое царство из гроба пришли двое, одинаковые внешне.
Они были исполнительными и для него сделали все, но совсем не так, как ему нужно .
Вы также, вероятно, помните этих двоих.
Стервятник позвал страуса с собой туда, где было много вкусной еды.
Когда страус побежал, стервятник остановил его и произнес фразу «Лучше потерять день, чем улететь за пять минут».
Выполняя часто повторяющуюся работу, нужно задуматься, не проще ли потратить «день» на ее автоматизацию.
Технологии, о которых мы сейчас поговорим, родом из семидесятых годов 20 века.
Это машины, управление которыми осуществляется с помощью программ, хранящихся в памяти.
Раньше это были перфокарты, сейчас – флешки.
На производстве станки-автоматы бывают самых разных размеров, разных кинематических схем и могут быть оснащены различными инструментами, обрабатывающими материал.
В домашней мастерской все более прозаично.
В основном машины представляют собой ассортимент с AliExpress или наших импортеров, переименованных в «производителей» из Поднебесной.
Можно купить что угодно, а можно собрать самостоятельно, купив запчасти.
Если вам жалко времени и денег, нет опыта и нет доступа к станкам для изготовления каркасов и порталов, то проще купить уже готовый.
С другой стороны, собрать его самостоятельно – очень интересный опыт. Также есть проекты Shapeoko, MechMate CNC Router, Zenbot CNC и др.
Что можно сделать на станке с ЧПУ и зачем он может понадобиться в мастерской? Можно заняться деревообработкой и изготовить декоративные панно для ремонта.
Или у вас есть креативная идея и ее результат не продается в готовом виде.
Также можно изготовить деталь для ремонта любой бытовой техники.
Например, запчастей для чайника или пароварки из цветных металлов и запчастей для ремонта нет в продаже или в сервисных центрах.
На одном станке можно делать запчасти для другого ЧПУ, как и в случае с 3D-принтером, но не ограничиваясь пластиком как материалом для изготовления деталей.
С точки зрения программного обеспечения разницы между ЧПУ, 3D-принтером или плоттером практически нет. Рабочий инструмент другой, но многие 3D-принтеры управляются, как и большие промышленные машины, одним и тем же командным языком.
Вспоминаю мультик, где страус побежал и не смог взлететь.
Стервятник говорит, что крылья лучше, страус говорит, что ноги лучше.
В конце мультфильма появляется ящерица и говорит, что Главное - это хвост. Вначале ее хвост спас ей жизнь.
Прошу Вас при работе с ЧПУ помнить об опасности для жизни и здоровья и соблюдайте технику безопасности! ЧПУ содержат режущий инструмент, массивные движущиеся и вращающиеся детали.
Электропривод таит в себе опасность при контакте с корпусом при нарушении изоляции.
Даже не пытайтесь тушить работающий электропривод водой, не отключив к нему питание.
От модели к G-коду
Почти каждый станок с ЧПУ управляется с помощью G-кода.
Это текстовый формат команд и данных, принятый в качестве международного стандарта.
Но конкретные реализации для машин разных производителей содержат расширения, которые могут сделать программы управления непереносимыми на другую машину.
Управляющая программа на этом суппорте фрезерует треугольник на плоскости.
G21 говорит, что единицы измерения в программе будут в миллиметрах.В этом примере нет ничего сложного, но на практике G-код редко пишут вручную.М3 Включает шпиндель с заданной скоростью вращения S. G0 перемещает рабочий инструмент на холостом ходу с линейной интерполяцией от текущей координаты к заданным в команде.
G1 также использует линейную интерполяцию, но это режим обработки, где F указывает скорость подачи.
M5 останавливает шпиндель.
М2 завершает программу
Обычно в той или иной форме создается модель и на ее основе создается управляющая программа.
Вы можете создавать контуры в векторном редакторе, таком как Inkskape, и использовать программное обеспечение с открытым исходным кодом GCodeTools, чтобы превратить его в программу G-кода для машины.
Такой подход удобен для дизайнеров.
Для тех, кто привык работать в Blender, можно превратить 3D-модель в 2,5D-рельеф с помощью BlenderCAM с открытым исходным кодом.
Промышленные САПР стоимостью десятки и сотни тысяч долларов недоступны для хобби.
Но вы можете использовать программное обеспечение FreeCAD с открытым исходным кодом.
Хоть он и не сравним по удобству и функциональности с дорогими CAD/CAM-пакетами, но в простых задачах для проектирования его вполне может хватить.
Его форк HeeksCAD более развит с точки зрения CAM и позволяет создавать управляющие программы на основе модели/чертежа.
Программное управление
Что непосредственно управляет координатным столом, фрезой или другим станком?
Это специализированные DSP-контроллеры с ЧПУ, к которым можно подключить флешку и станок.
Или это платы расширения для одноплатного компьютера (Raspberry PI, BeagleBoard) для управления электроприводом и шпинделем.
Либо это обычный персональный компьютер с портом LPT, либо карта расширения PCI/PCIe для взаимодействия с электроникой машины.
Герой этого репортажа – персональный компьютер.
Потому что вы можете управлять машиной и интерпретировать g-код с помощью программы LinuxCNC с открытым исходным кодом.
Программное обеспечение работает на ядре Linux реального времени.
Для одноплатных компьютеров Raspberry PI, BeagleBoard Black используется его форк Machinekit для ARM в виде готового ISO-образа.
Существует сборка Machinekit для одноплатного чипа C.H.I.P. за 9 долларов.
LinuxCNC — это конструктор и на основе его конфигурации можно построить практически любую конфигурацию.
Эта программа управляет как любительскими станками, так и огромными производственными станками с ЧПУ.
Его используют как при модернизации промышленной электроники с ЧПУ, так и в новых станках.
Некоторые из его компонентов работают в режиме реального времени, тогда как менее критичная часть работает в среде с непредсказуемыми задержками.
Расширить внутреннюю логику реагирования на события в LinuxCNC можно с помощью LD-диаграмм и даже скриптов оболочки или консольных программ.
Управляем машиной из java и groovy Вместо его GUI-составляющей мы попробуем управлять ЧПУ и передавать команды интерпретатору через внешний API, используя привычные нам технологии разработки программного обеспечения.
Для всех, кого заинтересует эта идея, вы можете найти компонент PoC Apache Camel и библиотеку для JVM. верблюжий код на гитхабе.
Существует множество решений для Интернета вещей, основанных на Java, зачастую это серверы для IoT-шлюзов.
Теперь можно интегрировать управление станком на LinuxCNC в сложные «облачные» сценарии автоматизации с доступом в Интернет. С помощью Eclipse Kura, Apache Camel и с помощью этого конструктора собрать работающее решение из сотен готовых компонентов не составит труда.
Могут быть интегрированы библиотеки машинного зрения и добавлены компоненты распознавания, а также инструменты для захвата изображений с камеры или по сети.
Начнем с небольшого примера на языке Java, использующего API, позволяющий отправлять команды для управления машиной.
Под капотом библиотека будет отправлять команды telnet процессу linuxcncrsh из LinuxCNC/Machinekit.
В этом примере портал машины перемещается на максимальной скорости холостого хода сначала в координаты (3;4), а затем в (5;2).//maven dependency com.github.igor-suhorukov:camel-gcode:0.1 import com.github.igorsuhorukov.gcode.GCodeClient; public class Gcode { public static void main(String[] args) throws Exception { String hostname = "beaglebone.local"; int port = 5007; try (GCodeClient gCodeClient = new GCodeClient(hostname, port)) { System.out.println(gCodeClient.login("EMC", "JVM", "1.0")); gCodeClient.sendCommand("set mode manual"); gCodeClient.sendCommand("set estop off"); gCodeClient.sendCommand("set machine on"); for (int axis = 0; axis < 4; axis++) gCodeClient.sendCommand("set home " + axis); System.out.println(gCodeClient.sendCommand("get abs_act_pos")); gCodeClient.sendCommand("set mode mdi"); gCodeClient.sendCommand("set mdi g0 x3 y4"); gCodeClient.sendCommand("set mdi g0 x5 y2"); } } }
Следующий пример Groovy-программы на основе фреймворка Apache Camel и компонента для отправки команд на машину com.github.igor-suhorukov:camel-gcode @Grab('com.github. igor-suhorukov:camel-gcode:0.1 ')
@Grab('org.apache. camel:camel-groovy:2.18.0 ')
@Grab('org.apache. camel:camel-core:2.18.0 ')
@Grab('org.apache. camel:camel-jetty:2.18.0 ')
@Grab('org. slf4j:slf4j-simple:1.6.6 ')
import org.apache.camel.builder.RouteBuilder
import org.apache.camel.impl.DefaultCamelContext
import com.github.igorsuhorukov.smreed.dropship.MavenClassLoader
def camelContext = new DefaultCamelContext()
camelContext.setName("I'll be back")
camelContext.addRoutes(new RouteBuilder() {
def void configure() {
from(' jetty:http://0.0.0.0:9090/moveTo ').
routeId('CamelCNC') .
process{ it.in.body = ("set mdi g0 x${Math.round(Math.random()*10)} y${Math.round(Math.random()*10)} z1") } .
to('gcode:Эhost=beaglebone.local&port=5007&autoHomeAxisCount=4') } }) addShutdownHook{ camelContext.stop() } camelContext.start() def HawtIo = MavenClassLoader.usingCentralRepo() .
forMavenCoordinates('io. hawt:hawtio-app:2.0.0 ').
loadClass('io.hawt.app.App') Thread.currentThread().
setContextClassLoader(HawtIo.getClassLoader())
HawtIo.main('--port','10090')
Вы можете запустить пример, используя java -jar groovy-grape-aether-2.4.5.4.jar CamelCNC.groovy
В этом примере приложение Groovy соединяет компоненты Jetty и Gcode, генерирует маршрут в groovy DSL Camel, а также загружает и запускает веб-консоль для мониторинга HawtIo. При каждом запросе по http к HOST:9090/moveTo создается новая команда с перемещением в случайные координаты по осям X и Y и отправляется в LinuxCNC и станок на исполнение, а сгенерированная команда возвращается клиенту в виде HTTP-ответ. Веб-консоль прослушивает адрес ХОЗЯИН :10090/хаутио
Довольно сложные вещи можно легко сделать благодаря волшебству Apache Camel, Groovy и HawtIo.
Красивое далеко.
Мы можем погадать на будущее.
Существует тенденция, что все, что можно автоматизировать и экономически целесообразно это сделать, автоматизируется.
На днях появилась новость о Foxconn в Китае и о 40 000 станках на их производстве, что сократило рабочие места на предприятии.
Большую часть деталей машин они изготавливают сами, а также управляющую электронику.
Хоть я и не Нострадамус, сейчас становится ясно, что рабочие места в будущем исчезнут из-за автоматизации.
Также очевидно, что потребность в промышленной автоматизации со временем будет только возрастать.
И люди, разбирающиеся в этих технологиях, будут еще более востребованы на рынке труда, но до определенного момента.
А личное ЧПУ-производство проникнет в каждый цех.
Каким именно будет будущее?
Будут ли роботы порабощать или уничтожать людей?
Или люди тоже будут управлять роботами.
Все это зависит от нас сегодня!!!
выводы
Многие вещи мы делаем вручную, и такую повторяющуюся работу часто можно автоматизировать.
В этом случае начать нужно с создания модели.
Следующий шаг — превратить эту модель в программу управления машиной.
Эти команды будут выполняться определенным механизмом ЧПУ, и все в производственном процессе, что имеет смысл автоматизировать, необходимо автоматизировать.
Используя, среди прочего, технологии машинного зрения и датчики обратной связи.
Бегать с флешкой между компьютером и машиной точно не стоит; вам необходимо передавать команды по сети.
Пусть машина сделает всю работу.
Но для того, чтобы ЧПУ не превратилось в два ларца, все равно придется изучить технологию и разобраться в тонкостях процесса.
В противном случае вам придется делиться ресурсами с понимающим человеком и результат не всегда будет таким, каким вы хотели изначально.
Ссылки
- LinuxCNC
- Машинокомплект
- FreeCAD
- ХиксCAD
- GCodeИнструменты
- Протокол Telnet LinuxCNC
- G-код в LinuxCNC
- Camel-gcode на GitHub
- Апач Верблюд
- пример Camel-gcode в Groovy
-
Интересная Информация Об Авторынке Сша
19 Oct, 24 -
Api Last.fm
19 Oct, 24 -
Nintendo Wii Хороша Для Просмотра Порно
19 Oct, 24