Автономный контроллер своими руками.

    Рекомендованный
  • #241
Sany-sch STM32 код случаем не пишите?
 
Занимался оптимизацией и "причёсыванием" кода. по ходу этого, сделал возможным менять скорость и шаг быстрого и медленного перемещения и сюда же добавил возможность вносить ненужные команды перемещения чтоб уменьшить "накат" станка после отпускания кнопки перемещения. Правда вносить это можно только в прошивке.

Итак, теперь во время паузы посылаем $G и узнаём состояние станка в таком виде: [GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F300 S700] Выделяем нужное: G0 G54 G17 G21 G90 G94 M5 M9 T0 F300 S700 и записываем в файл на карту памяти. Поэтому получилось двигать осями а затем восстанавливать состояние станка. То есть, можно убрать шпиндель от рабочей области, рассмотреть, убрать ворс, стружку и по кнопке пуск станок перейдёт в нужную точку и восстановив все данные продолжит работу. НО!!! фрезу менять нельзя, так как нарушатся машинные координаты. Разве что, вы ставите фрезы по шаблону.

Итак, у нас на карте памяти уже имеются 4 "рабочих" файла.
1 стартовая позиция
2 имя файла
3 координаты паузы
4 состояние перед паузой

если мы создадим ещё один файл с номером строки Г-кода на паузе, то можно будет на паузе выключать станок полностью, а затем включать и по нажатию кнопок продолжать работу. Если это получится, то можно будет в эти же файлы писать контрольные точки, например каждую сотую строку кода, и после включения света восстанавливать работу нажатием той же кнопки.

Какие в этом минусы:
1 ресурс записи карты памяти ограничен и мы будем его уменьшать, хоть незначительно, но всё же.
2 Во время записи контрольных точек будет получаться небольшое замедление работы. Шпиндель будет приподниматься на 2 мм произойдёт запись опускание и продолжение работы. где то около секунды.

Вопрос такой: Нужно этим заниматься, или есть более важные и нужные функции на которые следует обратить внимание?
Ну запись состояния через каждые 100 строк, думаю вообще не нужно, полезно конечно, но не нужно. Отключение станка по паузе это желательно, полезно многим будет, особенно при многочасовых обработках. Только тупой вопрос, если можно, как станок понимать будет, что его по паузе остановили, или он сам остановился, в случае сбоя к примеру ? Или окончание программы, то есть нажав на пуск с новой программой наш шпиндель едет в место где должна была закончится старая программа, что бы этого не произошло, нужно обнулить память, в общем , извините, пока только вопросы, и чем дальше пытаюсь понять, что к чему, и как это будет работать, их почему то становится все больше.
 
Sany-sch STM32 код случаем не пишите?
Нет, даже в руках никогда не держал.

Отключение станка по паузе это желательно, полезно многим будет
Спасибо, принято.
как станок понимать будет, что его по паузе остановили, или он сам остановился,
Всё просто. Когда мы нажимаем кнопку пауза, происходят следующие действия:
1. автономник перестаёт посылать новые команды
2. мы ждём пока станок выполнит все команды которые находятся в буфере. То есть остановка происходит не сразу, но мы знаем, что все команды выполнены.
3. как только станок остановился, мы поднимаем шпиндель на 2мм (раньше делал на 5) и останавливаем его.
4. Мы запоминаем данную координату в машинных кодах записываем их на карту
5. запоминаем текущее состояние станка ( скорость перемещения, мощность, мм или дюймы и прочие мелочи) и тоже записываем на карту памяти

То есть, смотрите, для того чтоб просто вернуться к работе у нас всё есть. Но если выключить станок, то мы не будем знать на какой строке кода мы остановились. Если сохранить на карту и номер строки, то можно восстановить и после выключения станка.

Если же станок остановился аварийно, то всех этих данных у нас нет.
Или окончание программы, то есть нажав на пуск с новой программой наш шпиндель едет в место где должна была закончится старая программа,
Нет, ну что вы такого не будет.

Речь не идёт об автоматическом запуске после включения света. А о возможности оператору запустить возобновление комбинацией кнопок.
То есть, когда вы включили станок после паузы - станок просто ждёт ваших действий. вы можете:
1. Просто начать новую работу с любого выставленного места.
2. перейти в нулевую точку прошлой работы и запустить этот же файл с начала или другой с этой же точки. (например черновую сделали, и с этой же точки запускаем чистовую.
3. Восстановить работу после паузы (если выключили на паузе).

в общем , извините, пока только вопросы, и чем дальше пытаюсь понять, что к чем
Извинения ни к чему. Вопросы это хорошо. Плохо что на мои мало кто отвечает...
 
Нет, даже в руках никогда не держал.


Спасибо, принято.

Всё просто. Когда мы нажимаем кнопку пауза, происходят следующие действия:
1. автономник перестаёт посылать новые команды
2. мы ждём пока станок выполнит все команды которые находятся в буфере. То есть остановка происходит не сразу, но мы знаем, что все команды выполнены.
3. как только станок остановился, мы поднимаем шпиндель на 2мм (раньше делал на 5) и останавливаем его.
4. Мы запоминаем данную координату в машинных кодах записываем их на карту
5. запоминаем текущее состояние станка ( скорость перемещения, мощность, мм или дюймы и прочие мелочи) и тоже записываем на карту памяти

То есть, смотрите, для того чтоб просто вернуться к работе у нас всё есть. Но если выключить станок, то мы не будем знать на какой строке кода мы остановились. Если сохранить на карту и номер строки, то можно восстановить и после выключения станка.

Если же станок остановился аварийно, то всех этих данных у нас нет.

Нет, ну что вы такого не будет.

Речь не идёт об автоматическом запуске после включения света. А о возможности оператору запустить возобновление комбинацией кнопок.
То есть, когда вы включили станок после паузы - станок просто ждёт ваших действий. вы можете:
1. Просто начать новую работу с любого выставленного места.
2. перейти в нулевую точку прошлой работы и запустить этот же файл с начала или другой с этой же точки. (например черновую сделали, и с этой же точки запускаем чистовую.
3. Восстановить работу после паузы (если выключили на паузе).


Извинения ни к чему. Вопросы это хорошо. Плохо что на мои мало кто отвечает...
Для того что бы ответить вам, мне к примеру нужно понять что именно происходить будет, а так как в кодах я не силен, то помочь могу только задав вопрос. Нет примерно я представляю что должно происходить, но только очень приблизительно.
 
а так как в кодах я не силен,
Так я же не про коды спрашиваю. :)
Я работаю в основном на лазерных станках и в фрезерах не силён. Не в плане ГРБЛ и прошивки, а как оператор. Я просто не знаю какие функции более востребованные. Не хочется делать работу которая окажется никому не нужна.:cry:
С самого начала я сделал опрос что нужно, чувствовалась хоть какая то активность. Так же по автоматическому запуску после отключения света. Я считал что это самая нужная функция. Но слава богу, здесь меня отговорили, я её заблокировал.
То есть мне нужны советы и ответы не по программированию, а в основном по функционалу. ну и иногда по статистики станков. Вот вы знаете что ГРБЛ рекомендует ставить концевики в дальних позициях станка, то есть по Х справа, а по У спереди. чтоб станок остановился когда в них упрётся. А если посмотреть видео, то все ставят наоборот. А это путаница в координатах. вот так... А мне это нужно учесть.
 
  • Последнее редактирование:
Последнее редактирование:
Так я же не про коды спрашиваю. :)
Я работаю в основном на лазерных станках и в фрезерах не силён. Не в плане ГРБЛ и прошивки, а как оператор. Я просто не знаю какие функции более востребованные. Не хочется делать работу которая окажется никому не нужна.:cry:
С самого начала я сделал опрос что нужно, чувствовалась хоть какая то активность. Так же по автоматическому запуску после отключения света. Я считал что это самая нужная функция. Но слава богу, здесь меня отговорили, я её заблокировал.
То есть мне нужны советы и ответы не по программированию, а в основном по функционалу. ну и иногда по статистики станков. Вот вы знаете что ГРБЛ рекомендует ставить концевики в дальних позициях станка, то есть по Х справа, а по У спереди. чтоб станок остановился когда в них упрётся. А если посмотреть видео, то все ставят наоборот. А это путаница в координатах. вот так... А мне это нужно учесть.
Так я пытаюсь ответить на эти вопросы. Попробую обобщить что нужно:
1) обнуление рабочих координат, здесь у нас можно сделать как по отдельности каждую (предпочтительно) так и общую на XY и отдельную на Z.
2) перемещение каждой оси с выбором шага (это существенно ибо подгоняя к примеру ось Z по 0,1мм кнопку нажимать замучаешся, а по 10мм -легко и фрезу на пару мм загнать в заготовку
3) запуск и остановка программы
4) Z-щуп.с обнулением оси Z
5) Пауза , с остановкой и подъемом шпинделя и возможностью перемещений (для удаления ворса и т.д.)
6) принудительный запуск/остановка шпинделя (для работы станка не зависимо от программы)
7) регулировка оборотов двигателя
8) промер карты стола (это просто необходимо для тех кто платы делает ибо текстолит не однороден по высоте , и маску нужно делать при каждой новой заготовке)
9) самое главное: возможность запуска программы с внешних носителей, без этого вся возня с автономным пультом сводится на нет. Если будет возможность удаленной записи на носитель вставленный в пульт, то это расширит его возможности .
10) чуть было не забыл, сброс и разблокировка контроллера платы управления
11) поиск начальных машинных координат по концевикам/датчикам с обнулением их.

Вот вроде минимальный желательный набор функций пульта, остальное все уже по желанию, к примеру экран с индикацией, и т.д.
В принципе есть уже удаленный пульт с с последней прошивкой под cnc, это mks tft 24, да там есть недоделки в плане оси Z и сброса и разблокировки станка, и если со вторым проблемм нет, есть 4 свободные кнопки которые можно запрограммировать, то карту стола к примеру сделать не реально, но и плюс есть, при установке доп. блока wifi на cb карту можно записывать файл.
 
Так я пытаюсь ответить на эти вопросы. Попробую обобщить что нужно:
Ура, наконец то.
Отвечаю. по пунктам. У меня 8 кнопок (не считая стрелок перемещения) и одна отдельно назовём её "Ввод" При её нажатии у основных кнопок появляются "скрытые" функции. Либо которые нужно скрыть от нечаянного нажатия, либо не очень нужные. Первый пункт как раз покажет пример.
1) есть 2 кнопки XY и Z. при простом нажатии перемещаемся в 0 рабочих координат либо XY, либо Z . А если нажать Ввод и кнопку, то произойдёт обнуление XY, либо Z в зависимости от кнопки.
2) если нажимать стрелки то происходит перемещение осей с маленькой скоростью. Причём первые 3 импульса с паузами, потом непрерывно. Удобно для точного позиционирования. Если нажать кнопку ввод и стрелку, то идёт быстрое непрерывное перемещение. Скорости и шаги перемещений можно подобрать в самой прошивке. (увы, но пока так) останется место - сделаю через меню. Но по моему это не в приоритете.
3) есть запуск с выбором нужного файла на карте памяти. То есть можно на карту сразу записать и черновую и чистовую и запустить нужную. С остановкой не понял. Паузы есть 2 разные.
4) Щуп есть. И есть кнопка при нажатии которой можно ввести высоту вашего Щупа и она запомнится, пока не измените.
5) Паузы как я писал 2. При нажатии кнопки Ввод происходит резкая остановка движения. шпиндель продолжает вращаться. При повторном нажатии - продолжение работы. При нажатии Старт/пауза контроллер доделывает команды которые в буфере поднимает шпиндель и останавливает. Дальше можно перемещаться стрелками. при повторном нажатии работа возобновляется.
6) Есть кнопка запуск - остановка шпинделя на максимальных оборотах. Могу сделать предварительную установку S (оборотов).
7) Во время выполнения кода или когда?
8) Эта функция для автономника не под силу. Она должна делаться до построения Г-кода. А уже код делается под карту высот, либо вносятся коррективы.
9)Ну так для этого и делаем. (смотри пункт 3)
10 и 11) одна кнопка. при простом нажатии происходит поиск "дома" по концевикам и обнуление рабочих координат. При нажатии Ввод и этой кнопки идёт просто разблокирование.

Помимо этого у меня есть ещё одна функция. При запуске файла происходит запись машинных координат. И если у нас несколько файлов нужно начинать с одной точки, то это удобно. не нужно искать вручную.

То есть я так понимаю, что у меня полный набор функций :whistle:
 
Ура, наконец то.
Отвечаю. по пунктам. У меня 8 кнопок (не считая стрелок перемещения) и одна отдельно назовём её "Ввод" При её нажатии у основных кнопок появляются "скрытые" функции. Либо которые нужно скрыть от нечаянного нажатия, либо не очень нужные. Первый пункт как раз покажет пример.
1) есть 2 кнопки XY и Z. при простом нажатии перемещаемся в 0 рабочих координат либо XY, либо Z . А если нажать Ввод и кнопку, то произойдёт обнуление XY, либо Z в зависимости от кнопки.
2) если нажимать стрелки то происходит перемещение осей с маленькой скоростью. Причём первые 3 импульса с паузами, потом непрерывно. Удобно для точного позиционирования. Если нажать кнопку ввод и стрелку, то идёт быстрое непрерывное перемещение. Скорости и шаги перемещений можно подобрать в самой прошивке. (увы, но пока так) останется место - сделаю через меню. Но по моему это не в приоритете.
3) есть запуск с выбором нужного файла на карте памяти. То есть можно на карту сразу записать и черновую и чистовую и запустить нужную. С остановкой не понял. Паузы есть 2 разные.
4) Щуп есть. И есть кнопка при нажатии которой можно ввести высоту вашего Щупа и она запомнится, пока не измените.
5) Паузы как я писал 2. При нажатии кнопки Ввод происходит резкая остановка движения. шпиндель продолжает вращаться. При повторном нажатии - продолжение работы. При нажатии Старт/пауза контроллер доделывает команды которые в буфере поднимает шпиндель и останавливает. Дальше можно перемещаться стрелками. при повторном нажатии работа возобновляется.
6) Есть кнопка запуск - остановка шпинделя на максимальных оборотах. Могу сделать предварительную установку S (оборотов).
7) Во время выполнения кода или когда?
8) Эта функция для автономника не под силу. Она должна делаться до построения Г-кода. А уже код делается под карту высот, либо вносятся коррективы.
9)Ну так для этого и делаем. (смотри пункт 3)
10 и 11) одна кнопка. при простом нажатии происходит поиск "дома" по концевикам и обнуление рабочих координат. При нажатии Ввод и этой кнопки идёт просто разблокирование.

Помимо этого у меня есть ещё одна функция. При запуске файла происходит запись машинных координат. И если у нас несколько файлов нужно начинать с одной точки, то это удобно. не нужно искать вручную.

То есть я так понимаю, что у меня полный набор функций :whistle:
1) не всегда удобно обнулять х и у одновременно, особенно когда подгоняешь 0 (не критично но бывает гораздо удобнее обнулять именно каждую ось отдельно)
7) желательно и во время исполнения г кода (корректировка оборотов) и когда г код не исполняется, для возможности работы без г кода.
8) в марлине (для 3д принтеров и cnc) эта функция присутствует и исполняется до запуска программы, если мне не изменяет память прописывается каждый раз в еепром станка, но там мега как минимум используется , на нашем же Уно с его ограничениями, так что тут спорить не буду.
На счёт перемещения, тут сложно сказать что лучше, дергание при подаче не лучший вариант для фрезы при ручном управлении станком.
 
Вот вы знаете что ГРБЛ рекомендует ставить концевики в дальних позициях станка, то есть по Х справа, а по У спереди. чтоб станок остановился когда в них упрётся. А если посмотреть видео, то все ставят наоборот. А это путаница в координатах. вот так... А мне это нужно учесть.
А мы не просто отправляем команду "домой" ведомому контроллеру, а уже он, исходя из настроек записанных в нём двигает шпиндель в ту или иную сторону ? Или всё сложнее ? По поводу концевиков слева, кто то тут на форуме писал, что не удобно работать в отрицательных координатах, по этому концевики люди ставят слева. Я работаю на ЧПУ токарном, там всегда работа в отрицательных координатах, привык уже, поставил на своём станочке концевики справа. Вы не останавливайтесь, нужное дело делаете. Сейчас развожу плату под Ваш автономник, только без драйверов ШД, планирую делать несколько вариантов, под "голый" чип мега 328, под модуль Arduino Pro Mini, под разные виды кнопок и под кнопки "вторым этажем"(на отдельной плате, для кнопок с коротким толкателем). Если надо кому, скину сюда (только учитывайте, что плата "готовится" в дип трейсе и под смд монтаж). Да, и сделайте пожалуйста описание кнопок, какая за что отвечает, в Вашем видео подсмотрел немножко, но там Вы не про все кнопки говорите.

здесь у нас можно сделать как по отдельности каждую (предпочтительно)
А не подскажете, каким образом это сделать ? (в справочник не посылать, был там много раз...)
 
А мы не просто отправляем команду "домой" ведомому контроллеру, а уже он, исходя из настроек записанных в нём двигает шпиндель в ту или иную сторону ? Или всё сложнее ? По поводу концевиков слева, кто то тут на форуме писал, что не удобно работать в отрицательных координатах, по этому концевики люди ставят слева. Я работаю на ЧПУ токарном, там всегда работа в отрицательных координатах, привык уже, поставил на своём станочке концевики справа. Вы не останавливайтесь, нужное дело делаете. Сейчас развожу плату под Ваш автономник, только без драйверов ШД, планирую делать несколько вариантов, под "голый" чип мега 328, под модуль Arduino Pro Mini, под разные виды кнопок и под кнопки "вторым этажем"(на отдельной плате, для кнопок с коротким толкателем). Если надо кому, скину сюда (только учитывайте, что плата "готовится" в дип трейсе и под смд монтаж). Да, и сделайте пожалуйста описание кнопок, какая за что отвечает, в Вашем видео подсмотрел немножко, но там Вы не про все кнопки говорите.


А не подскажете, каким образом это сделать ? (в справочник не посылать, был там много раз...)
Не понял, как обнулять каждую ось отдельно? В программировании не силен, но как то же это реализованно в программе bCNC к примеру, где каждую отдельную ось можно обнулить не зависимо от остальных . Для чего это нужно: простой пример, заготовка у вас в виде ромба или окружности, если ноль у вас не в центре, то как обнулить координаты в габаритах заготовки в каком нибудь углу? А вот с раздельным обнулением это просто сделать , достаточно подвести инструмент до заготовки с одной стороны обнулить ось, потом подвести инструмент с перпендикулярной замеренной оси стороны и обнулить вторую ось в результате когда зададим x0y0 получим как раз переход фрезы в угол соответствующий габаритам стороны заготовки. Наверное понятно написал.
 
1) не всегда удобно обнулять х и у одновременно, особенно когда подгоняешь 0 (не критично но бывает гораздо удобнее обнулять именно каждую ось отдельно)
7) желательно и во время исполнения г кода (корректировка оборотов) и когда г код не исполняется, для возможности работы без г кода.
8) в марлине (для 3д принтеров и cnc) эта функция присутствует и исполняется до запуска программы, если мне не изменяет память прописывается каждый раз в еепром станка, но там мега как минимум используется , на нашем же Уно с его ограничениями, так что тут спорить не буду.
1. Вот видите как всё происходит. Сначала у меня обнуление было сразу трёх осей, мне сказали здесь что Z нужно отдельно. Теперь нужно что-то удалить, чтоб освободить ещё кнопку.
2. Можно попробовать. Вот здесь, внизу страницы есть, можно попробовать добавить. Например во время работы стрелки Z будут добавлять или уменьшать скорость. А когда код не исполняется будем задавать скорость нажатием кнопки ввод и вкл шпинделя.
8. Если кто знает как это реализовано подскажите.
На счёт перемещения, тут сложно сказать что лучше, дергание при подаче не лучший вариант для фрезы при ручном управлении станком.
Дерганье идёт только при медленной подаче 3 шага по 0,02мм(можно настроить) с интервалом 0,3 сек, думаю шпиндель и не заметит. Дальше идёт гладко.
 
Да.
Подумал, что это можно сделать параметрами $$, аннет это зависит от способностей управляющей программы.
Возможно, но есть же команда для обнуления оси Z, так скорее всего есть типовая команда для Х и для Y
 
А мы не просто отправляем команду "домой" ведомому контроллеру, а уже он, исходя из настроек записанных в нём двигает шпиндель в ту или иную сторону ? Или всё сложнее ?
Всё и сложнее и проще. я пару страниц назад просил у людей по этому поводу выборку. никто не дал. Так что чтоб не высказывать домыслы (статистики нет - нет выводов) помолчу с умным лицом ?
Да, и сделайте пожалуйста описание кнопок, какая за что отвечает, в Вашем видео подсмотрел немножко, но там Вы не про все кнопки говорите.
Сделаю, обязательно, но по завершению. Вдруг ещё менять придётся.
А не подскажете, каким образом это сделать ? (в справочник не посылать, был там много раз...)
Команда G92 x0 y0 z0 задаёт значение координат Можем написать G92 z0 и обнулим только Z . А можем G92 x2 y7 z-5 И присвоятся эти координаты.
 
1. Вот видите как всё происходит. Сначала у меня обнуление было сразу трёх осей, мне сказали здесь что Z нужно отдельно. Теперь нужно что-то удалить, чтоб освободить ещё кнопку.
2. Можно попробовать. Вот здесь, внизу страницы есть, можно попробовать добавить. Например во время работы стрелки Z будут добавлять или уменьшать скорость. А когда код не исполняется будем задавать скорость нажатием кнопки ввод и вкл шпинделя.
8. Если кто знает как это реализовано подскажите.

Дерганье идёт только при медленной подаче 3 шага по 0,02мм(можно настроить) с интервалом 0,3 сек, думаю шпиндель и не заметит. Дальше идёт гладко.
1) я не утверждаю что это прямо необходимо, я написал что не помешало бы, и чуть выше пример привел когда это может пригодится (на практике ,к примеру если нужно сделать гравировку на спиле дерева (сучка:), можно ли без этого обойтись, да легко, достаточно приложить к заготовке угольник, но это уже минус , вы же просили что бы откровенно, что хотелось бы получить в итоге... Я пытаюсь подробно описать чем именно мне понравилась та или иная программа, и если эти функции будут в контроллере пульта, то они будут востребованны. Так же я могу завтра вечером , точнее после завтра с утра, подключить mks tft 24 с прошивкой для cnc к станку, показать что там есть, и чего там не хватает, а не хватает там много чего, в принципе из за этого и был этот сенсорный экран отключен от станка.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать