mach3 что такое dro в
cnc-club.ru
Статьи, обзоры, цены на станки и комплектующие.
Подключение KFLOP + DRO + scale( линейки) + Mach3
Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 20:13
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение ukr-sasha » 20 ноя 2012, 20:55
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 21:12
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение ukr-sasha » 20 ноя 2012, 21:29
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 21:30
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение Impartial » 20 ноя 2012, 21:42
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 21:46
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение Impartial » 20 ноя 2012, 21:48
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 21:51
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 21:53
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение Impartial » 20 ноя 2012, 22:01
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение Nick » 20 ноя 2012, 22:05
Use the Console, Luke.
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 22:06
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 22:09
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение aftaev » 20 ноя 2012, 22:11
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение Nick » 20 ноя 2012, 22:11
The 7I37 provides 8 Isolated 48VDC 1A output drivers and 16 Opto-isolated inputs.
Use the Console, Luke.
Re: Подключение KFLOP + DRO + scale( линейки) + Mach3
Сообщение Impartial » 20 ноя 2012, 22:18
cnc-club.ru
Статьи, обзоры, цены на станки и комплектующие.
OEM коды
OEM коды
Сообщение pam » 13 дек 2014, 19:42
Уважаемые форумчане! Опытные пользователи и акулы ЧПУ профиля!
Наверное я не эффективно искал, но не нашел.
Ну не понимаю я английский язык на интуитивном уровне, хотя и понимаю, что такое Run или Jog.
Может быть уже есть подобная информация на русском языке подробно разъясняющая функции, тогда пожалуйста направьте меня туда.
А если нет, может быть, кто то из Вас выполнит титанический труд и напишет подобное, думаю это будет полезно для очень многих.
Для эффективного пользования программ по созданию или редактированию Скринов для Mach3, такими программами как Screen4 или Mach3Screen, требуется полностью понимать и знать не только все команты G и M кодов, но и знать (а лучше глубоко понимать какое будет действие или реакция) OEM кодов как Buttons, так и Leds и DRO. Может я еще чего не предусмотрел. пока не знаю. Нет достаточного опыта.
Функция G00 используется для выполнения ускоренного перемещения режущего инструмента к позиции обработки или к безопасной позиции. Ускоренное перемещение никогда не используется для выполнения обработки, так как скорость движения исполнительного органа станка очень высока. Код G00 отменяется кодами: G01, G02, G03.
Функция G01 используется для выполнения прямолинейных перемещений с заданной скоростью (F). При программировании задаются координаты конечной точки в абсолютных значениях (G90) или приращениях (G91) с соответственными адресами перемещений (например X, Y, Z). Код G01 отменяется кодами: G00, G02, G03.
Функция G02 предназначена для выполнения перемещения инструмента по дуге (окружности) в направлении часовой стрелки с заданной скоростью (F). При программировании задаются координаты конечной точки в абсолютных значениях (G90) или приращениях (G91) с соответственными адресами перемещений (например X, Y, Z).
и так далее с пояснениями каждой команды, где применяется, что будет происходить если ее применить, с чем контактирует и реагирует.
Есть ли подобная информация на русском языке? Кто то сможет такое выполнить если еще этого в инете нет?
ЧПУ в хоббийной мастерской (часть 3)
Изначально, планировал ограничиться двумя постами (раз, два) про мои ЧПУшные эксперименты. Но, тема оказалась многим интересной, поэтому, немного ее еще пораскрываю. В этом посте пойдет речь про написание самодельного софта для управления любительским ЧПУ.
Предисловие
Не знаю, удалось ли кого-то мотивировать первыми постами, но некоторые комментарии мне самому дали хорошую пищу для размышлений. Отдельная благодарность @evilruff за фото его лаборатории и за видео с классным корейцем. После просмотра того и другого мой бардачёк в подвале перестал казаться таким уж уютным.
Собравшись с силами, на выходных навел что-то отдаленно напоминающее порядок и сделал, наконец, 2 вещи которые собирался сделать еще пол-года назад.
Во-первых, заменил кусок фанеры который выполнял роль жертвенного стола. Этой фанерой я пользовался с момента покупки станка, прикручивая саморезами к ней заготовки и сооружая всякие безумные конструкции из палок и клиньев. Все для того, чтобы деталь не отправилась в непредсказуемый полет при фрезеровке.
Может кому пригодится лайфхак: новый стол сделал из пластиковой террасной доски (продается в Кастораме):
Доски болтами прикрутил прямо к алюминиевому родному столу. Бонусом получились удобные пазы для фиксаторов заготовки и быстрого монтажа присадочного стола. На все про все ушло пара часов и
И во-вторых, наконец, написал более-менее юзабильный софт для управления нестандартными функциями ЧПУ. Про это и будет основной рассказ.
Постановка задачи
G-code для операций, которые описаны во второй части простейший. Тем не менее, сам процесс наладки нельзя назвать быстрым.
Как это происходило
Например, для присадки нужно было: зная ширину панели посчитать сколько должно быть отверстий, рассчитать точное расстояние между ними, создать файл, написать g-code, загрузить его в Mach3. Все это занимает, в лучшем случае, минут 15 — 20. В этом свете, преимущества цифрового станка значительно меркнут по сравнению с ручным инструментом, которым за это же время можно навертеть целую кучу дырок.
Что хотелось получить
В случае той-же присадки, хотелось получить программу, где в очень простом интерфейсе я бы вводил ширину и толщину панели и нажав кнопку запускал процесс сверления нужного количества присадочных отверстий на одинаковом расстоянии друг от друга.
Поиск решения
Первое что пришло в голову было написание автономной программы, которая напрямую бы взаимодействовала с параллельным портом. Беглый гуглинг показал, что задача записи в lpt вполне решаемая, но черт, как известно, прячется в деталях. При дальнейшем изучении вопроса я понял, что застрять тут можно всерьез и надолго. К тому же, такое решение было бы не гибким: для другого станка, например с USB, оно не работало бы.
Оставался вариант разобраться с SDK Mach3. В процессе сбора информации про создание mach-плагинов я натолкнулся на интересное решение. В нем описывалось как используя OLE-механизмы можно дергать Mach3 из стороннего приложения. Я не эксперт в технологиях Microsoft, но после просмотра по диагонали мануала по SDK Mach3, если я правильно уловил основную идею, никакой серебренной пули не существует, плагины используют те же публичные методы COM-объектов Mach3. Перекраивать интерфейс Mach3 я не собирался, таким образом, разница для пользователя между плагином и standalon приложением получалась только в том, что плагин доступен из меню Mach3, а приложение — через иконку на рабочем столе XP.
Отдельное приложение мне показалось предпочтительней. В этом случае, теоретически, я мог сразу после загрузки компьютера запускать свою программу, которая паровозом загружала бы Mach3 (вместо того, чтобы сначала грузить Mach3 и потом копаться в его меню для запуска плагина).
Берем в руки шашку
Последний раз нативное десктопное приложение для Windows мне приходилось писать году, эдак, в 2006 и было оно на Delphi. С тех пор веб-технологии с их Линуксом окончательно поглотили меня. Поэтому, сейчас особых предпочтений на каком языке ваять windows-программу у меня не было. Найденный простенький пример был написан на C#, этот язык и был выбран в качестве подопытного кролика.
Я не буду здесь выкладывать весь код получившегося приложения (при желании можете его найти на github по ссылке внизу поста). Поясню основные вещи. Все эксперименты я проделывал на виртуалке с WinXP SP3, VS 2003 и Mach3 Version R3.043.062. Для тех кто считает, что лучше один раз увидеть ссылка на ролик в Youtube по которому разбирался я. Ниже расшифровка основных моментов.
Подготовка
Взаимодействие с Mach3
Подключаем нужные библиотеки, объявляем переменные (Form1.cs)
Коды кнопок и значений параметров можно посмотреть в вики: OEM_DROs и OEM_Buttons (Wiki у них подглючивает, значения параметров в таблице не выводится, я смотрел на вкладке «View source»).
Первая версия программы работала так: по установленным параметрам генерировался g-code который покадрово (т.е. построчно) выполнялся методом _mInst.Code. И это было моей ошибкой. В отладочной среде на виртуалке все прекрасно работало. В Mach3 бежали правильные цифры в координатах. Но при переносе на станочный компьютер возникли проблемы. Каретка перемещалась правильно, но шпиндель не включался.
Похоже, что управление роутером и шпинделем в Mach работает в разных потоках. Получалась ситуация, что команды перемещений (G. ) выполнялись последовательно как они поступали в метод _mInst.Code в одном потоке, а команды управления шпинделем (M3, M5), не зависимо от первых, выполнялись в другом потоке. В результате, шпиндель включался (M3) и тут же выключался (M5), при этом перемещение каретки шло своим чередом.
Я пробовал разные варианты, подключал задержки, пробовал загнать весь управляющий g-code в одну строку и отправлять одним куском в _mInst.Code. В результате, остановился на решении «в лоб»: просто загоняю сгенерированный код в файл, этот файл программно открываю в Mach3 и там же программно нажимаю кнопку «Старт». Фрагмент работающего кода:
Пауза между загрузкой файла и нажатием кнопки нужна для того, что бы Mach успел открыть файл. Возможно, есть какой-то более изящный способ. Если кто знает, напишите в комментариях.
Дополнительным бонусом такого решения получилось то, что теперь можно в интерфейсе Mach наблюдать визуализацию процесса обработки.
Что в итоге получилось
Далее, в двух словах о получившемся приложении. Отдельно расскажу о UI для каждой операции.
Раскрой
Тут все достаточно прозрачно. Параметр S нужен для компенсации размера L если заготовка закреплена не в нулевой точке по Х (или по Y при распиле вдоль).
Присадка
Для присадки возможны 2 конфигурации оснастки. Первая с болгаркой для сверления торцевых отверстий. И вторая с обычным шпинделем для сверления в плоскости щита (почему-то я назвал ее «Присадка фронтальная»).
Присадка торцевая
При торцевой присадке важно точно выставить ноль в правом нижнем углу заготовки (у меня там находится угол бокового упора и стола). Со сверлом по дереву это сделать не сложно — там есть острый наконечник которым и надо попасть в этот угол. Закрепляя заготовку на столе я просто упираю ее в сверло.
Не меняя оснастку тем же способом я делаю ответные отверстия закрепляя заготовку вертикально:
Параметр X нужен для того, чтобы соединять панели разной ширины (например, когда нижняя и верхняя панели шкафа шире боковых на толщину дверей).
Присадка фронтальная
Оснастка для фронтальной — это обычный шпиндель. Этот вид присадки используется когда нужно насверлить отверстий в горизонтальной поверхности не только по краям но и где-то посередине. Например, если в шкафе несколько отделений и кроме боковых стенок есть внутренние. Если длина панели больше длины станка, присадку можно сделать в 2 подхода с разворотом детали на 180 градусов. В этом случае, так же пригодится параметр X.
Токарная обработка
Для меня основной сложностью при подготовке g-code с токарной траекторией было не переборщить с максимальной глубиной погружения диска. Дело в том, что на выходе из Inkscape получается одна линия и точение происходит в один проход. Из-за этого, мне приходилось делать отдельный код для цилиндрования заготовки и только после этого запускался основной проход создающий форму. И были некоторые ограничения на эту форму. В частности, нужно было следить, чтобы траектория не уходила слишком глубоко. Я старался не выходить за рамки 10 — 15мм от уровня первоначального цилиндра.
Все перечисленные проблемы удалось решить в новой программе. Работает это так: загружаем «сырой» g-code полученный из Inkscape, задаем размер стороны бруска заготовки и указываем максимальную глубину обработки за 1 проход (чем тверже деревяшка, тем меньше эта глубина). На базе исходного g-code и параметров программка посчитает безопасную траекторию и отправит ее в ЧПУ.
Планы на будущее
Программа здорово упростила рутину, но до совершенства еще далеко. Во-первых, нужно будет оптимизировать алгоритм сверления глубоких отверстий (сверло забивается стружкой и перегревается, нужно сделать качание вперед-назад). В-вторых, появилась идея сделать библиотеку токарных форм. Т.е. несколько типовых форм (типа цилиндра, конуса, скалки и т.п.) с возможностью настройки размеров без необходимости создавать траектории в сторонних программах.
Mach3 что такое dro в
Здесь будет рассказано о подключении и настройке в Mach3 датчиков для станка с ЧПУ. Наличие датчиков на станке позволяет:
Направления осей
Расположение осей отличается от общепринятого. Ноль оси Z расположен вверху, рабочие координаты — отрицательные.
Элемены
В качестве концевиков используются микропереключатели MSW-13 или аналогичные:
В качестве кнопки аварийной остановки «E-Stop» используется ANE-22 «Грибок» с фиксацией в корпусе поста КП101 для кнопок управления, 1 место, белый, IEK:
В качестве датчика нуля по оси Z – «Z Probe» используется закаленный диск из нержавеющей стали диаматром 40 и толщиной 6,85 мм. Второй провод с крокодилом устанавливается на фрезу.
Функциональная схема подключений
Датчики HOME («дом») устанавливаются на все оси. Датчики LIMIT («концевик») устанавливаются на оси X и Y. При принятии баз датчики HOME работают как дома; в рабочем режиме они работают как концевики. Вверху оси Z устанавливается датчик HOME, датчик LIMIT с противоположного конца (внизу) отсутствует.
Электрическую схему можно скачать внизу страницы.
Все датчики, кроме «Z Probe» работают на размыкание. Датчики HOMES и LIMITS объединяются в один логический сигнал по схеме «ИЛИ», т.е. соединяются в последовательную нормальнозамкнутую цепь.
Все соединения датчиков HOMES и LIMITS выполняются витыми парами. Раскладка проводников датчиков HOMES и LIMITS:
Настройка Mach3
1. Настройка Debonce Interval
В Mach3 программное подавление дребезга контактов датчиков настраивается в диалоге «General Logic Configuration», вызываемом из пункта «General Config» меню «Config». Здесь необходимо настроить количество тактов ядра Mach3, в течение которых неизменное состояние датчика принимается за его срабатывание.
Для частоты ядра Mach3 = 25 кГц, период = 40 мкс.
Таким образом, устанавливаем значение «Debonce Interval» не более минимального из вычисленных:
2. Автонастройка входных пинов
Настроить пины входов датчиков можно вручную; автонастройка упрощает это процесс. Рассмотрим на примере пина для датчика «Z Probe». Выбираем пункт «Ports and Pins» меню «Config». В появившемся диалоге «Engine Configuration. Ports & Pins» выбираем вкладку «Input Signals».
Нажимаем кнопку «Auto Setup of Inputs»:
Из выпадающего списка выбираем нужный сигнал, в данном случае «Probe Switch», нажимаем кнопку «AutoSet», и после этого замыкаем датчик «Z Probe» – в сером поле видим сообщение об успешном определении пина датчика и приглашение к определению следующих пинов. Таким образом определяем остальные пины. Для завершения нажимаем кнопку «OK» и возвращаемся в диалог «Engine Configuration. Ports & Pins», где можно наблюдать за произошедшими изменениями в колонках «Enabled», «Port #», «Pin Number» и «Active Low» (вверху показано для «E-Stop» и «Z Probe», ниже для HOMES и LIMITS).
3. Скрипт для «Z Probe»
Рабочий скрипт с комментариями:
4. Настройка скринсета для «Z Probe»
В рабочий скринсет необходимо добавить кнопку и поле для ввода толщины пластины датчика, аналогично как показано ниже:
Скачиваем со страницы дизайнер «Klaus’ MachScreen», устанавливаем, запускаем и открываем рабочий скринсет (например, «1024.set»). Сохраняем скринсет в папку Mach3 под новым именем. В главном окне дизайнера нажимаем кнопку «Toggle multiple / single selection», чтобы выбрать режим одиночного выделения . В выпадающем списке группы «Control» окна «MachScreen properties» выбираем «Button», нажимаем кнопку «Add» и щелаем ЛКМ примерно на том месте скринсета, где должна находится кнопка авто поиска нуля по оси Z: создается новая кнопка, которая сразу веделяется и отображаются ее свойства.
Размеры и положение созданной кнопки можно изменить в группе «Position». В строке «Text on ctrl» таблицы «Button» меняем «Text» на, например, «Auto Tool Zero». Щелкаем ЛКМ на строке «Execute Code», в появившемся диалоге выбираем «Basic Script»:
В открывшемся диалоге «MachScreen Editor» вводим или открываем/вставляем ранее созданный текст скрипта:
Далее, выбираем пункт «use data and close» из меню «File» – окно закрывается и таблица «Button» в окне «MachScreen properties» принимает вид:
Теперь аналогичным образом добавляем поле для ввода толщины датчика – в выпадающем списке группы «Control» окна «MachScreen properties» выбираем «DRO», нажимаем кнопку «Add» и щелаем ЛКМ примерно на том месте скринсета, где должно находиться поле. В таблице «DRO» выбираем строку «Standart Code» и меняем значение на любое из диапазона 1000–2254, например 1151. В строке «Format» корректируем формат числа. Результат:
Сохраняем скринсет, закрываем редактор. Запускаем Mach3. Выбираем пункт «Load Screens» из меню «View» и загружаем отредактированный скринсет.
5. Настройка скриптов для кнопок в Mach3
При создании скринсета мы ввели требуемый скрипт для кнопки «Auto Tool Zero». Однако, скрипт может быть изменен без редактора скринсета следующим образом. Выбираем пункт «Edit Button Script» из меню «Operator». После этого, кнопки, скрипты которых возможно корректировать начнут мигать. Указываем кнопку «Auto Tool Zero» – появится редактор скрипта «Hidden Script.m1s». По завершению редактирования, закрываем редактор (сохранять скрипт в отдельный файл не требуется).
6. Настройка скрипта для кнопки «Ref All Home»
Проделаем вышеуказанные действия для кнопки «Ref All Home». Рабочий скрипт:
7. Дополнительные настройки
Выбираем пункт «Homing/Limits» из меню «Config»:
Значение в колонках «Soft Max» и «Soft Min» определяют программные ограничения перемещений осей. Устанавливаем в них значения примерно на 0,5-1 мм уже, чем при срабатывании концевиков. Значения «Slow Zone» определяют расстояние от программных ограничений, не доезжая которых сбрасывается скорость. Значение, указанное в колонке «Home Off» будет присвоено координате оси при операции поиска дома, если включено значение «Auto Zero». Значение «Home Neg» определет направление поиска дома: если при поиске дома ось едет в противоположном направлении – меняем значение «Home Neg». И, наконец, поле «Speed %» определяет скорость, с которой осуществляется подъезд к домам и в «Slow Zone».
Проверка датчиков
Первичная проверка на примере «Z Probe». Переходим на вкладку «Diagnostics», замыкаем/размыкаем датчик «Z Probe» и наблюдаем за сменой сигналов:
Проверка кнопки «E-Stop»:
Проверка датчика «Z Probe»:
Проверка датчиков домов и концевиков:
К статье прилагаются файлы:
Внимание! Запрещается воспроизведение данной статьи или ее части без согласования с автором. Если вы желаете разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.
Автор статьи: Вершинин И.В.
Регулировка скорости исполнения программы в PLCM
Стандартная функция MACH3 Feed rate override (или сокращенно FRO) работает с определенной задержкой в случае использования контроллера PLCM. Это обусловлено тем, что во время изменения значения FRO пользователем, MACH3 уже имеет предварительно рассчитанные данные, частично хранящиеся в его оперативной памяти, а частично уже переданные в PLCM, но еще не выполненные. Все дальнейшие расчеты MACH3 будет производить с учетом нового значения FRO, но уже рассчитанные данные должны быть исполнены как есть. Следовательно, задержка реакции системы на изменение FRO будет равна сумме времени исполнения буферов траекторий MACH3 и PLCM. Их величина настраивается в окне конфигурации PLCM.
Очевидно, что чем больше размер буфера PLCM, тем стабильнее будет работать система, т.к. в случае задержки при передаче очередной порции данных в PLCM выполнение работы не будет прервано — PLCM будет продолжать выполнять имеющиеся инструкции, ожидая новых данных. Но большой буфер негативно сказывается на времени реакции системы на изменение скорости выполнения.
Для решения проблемы в свежих версиях контроллеров имеется собственный алгоритм регулировки FRO. Он применяется к уже имеющимся в буфере PLCM данным, поэтому реагирует на запросы почти мгновенно. Следует понимать, что этот механизм не имеет никакого отношения к штатной регулировке FRO. Более того, этот механизм даже «не знает» о существовании штатной регулировки. Он лишь корректирует те данные, которые к нему приходят из MACH3. Так как обе регулировки FRO работают независимо друг от друга и каждая корректирует скорость выполнения УП самостоятельно, результирующая скорость выполнения является произведением двух регулировок.
Например, если в MACH3 значение FRO установлено в 200%, а в PLCM — 75%, то эффективное значение FRO будет равно 2 * 0,75 = 150%.
Изменять значение FRO для PLCM очень просто. Для этого Вы должны выбрать любое пользовательское DRO, которое не используется другими плагинами (по умолчанию предлагается DRO с номером 1075), и доработать свой скринсет так, чтобы Вы могли изменять значение, хранящееся в этом DRO. Необходимо также указать плагину PLCM выбранный Вами номер DRO (должен быть больше 1000):
В отличие от реализованного FRO в MACH3, PLCM позволяет установить нулевое значение для FRO, полностью приостанавливая выполнение УП.