LINUX.ORG.RU

Вышел NoRT CNC Control

 


7

2

Сегодня, после длительной разработки, вышла первая стабильная версия системы управления фрезерным станком с ЧПУ.

Ключевой особенностью, отличающей его от многих других систем, является разделение исполняемого кода на 2 части - часть, требующая realtime, и часть, не требующая realtime. Причем часть, работающая в realtime, исполняется на отдельном микроконтроллере. Это позволяет, с одной стороны, отказаться от необходимости установки realtime ядра на компьютер, а с другой - позволяет обойти ограничения памяти, которые возникают, если весь код находится в микроконтроллере.

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

Текущие возможности

На вход система принимает G-Code в соответствии с ISO 6983

Поддерживаются:

  • 3-х координатные перемещения, обработку концвых датчиков по всем осям, а также работу с щупом по оси Z для определения длины инструмента или положения заготовки.
  • 7 координатных систем, выбираемых по командам G53-G59.
  • Управление частотным приводом шпинделя, поддерживается Hyundai N700E через modbus.
  • Линейные перемещения и перемещения по окружности
  • Экстренная остановка перемещений и шпинделя

Планы

  • Добавить web-интерфейс (спасибо @dunmaksim за помощь!)
  • Добавить возможность конфигурировать параметры оборудования из интерфейса, а не через редактирование конфига.
  • Пауза перемещений, с дальнейшим продолжением работы
  • Добавить винтовое перемещение
  • Работа с щупом по осям X и Y
  • Добавить возможность поворачивать и масштабировать системы координат, выбираемые по G54-G59
  • Поддержка Jinja2 шаблонов в g-code

Лицензия

GNU GPL v3, или более новая

Репозиторий

Часть, запускаемая на linux: https://github.com/vladtcvs/nortcnccontrol/releases/tag/0.3

Часть, запускаемая на микроконтроллере: https://github.com/vladtcvs/cnccontrol_rt/releases/tag/0.3

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 6)

Ответ на: комментарий от Deleted

Как минимум, должен быть надёжный интерфейс для прерывания работы.

Ну так у него веб морда не единственная, а бонусом. Большую красную кнопку никто не отменял.

Ей богу, ОП-пост не читай, сразу поучай!

Поддерживаются:

    ...
    Экстренная остановка перемещений и шпинделя

Планы:

    Добавить web-интерфейс
    ...
pihter ★★★★★
()

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

Тоже RT-часть вынес на МК (atmega8 хватало), а управляющий код генерировал на компьютере. Но когда стало тесно в рамках меги, захреначил сразу Orange Pi, а связь с компьютером сделал по сети. Код по-прежнему генерирую на ПК и в готовом виде (шаги, направления, команды переферии) отправляю по сетке контроллер станка.

Писать обычное приложение на си под линукс намного приятнее, чем прошивку МК. GPIO у него там такой резкий, что мега и рядом не стояла + есть возможность пользоваться плюшками ОС — потоки, файловая система, таймеры — красота.

Не нужно хлопотать с прошивкой (есть git pull), отладка по ssh, веб-морду реализовать — вечер делов, переносимость кода — превосходная, а цена orange pi one — 500 руб и все уже на борту, никаких UART-адаптеров не надо и прочего. У меня решение на апельсинке вышло дешевле, чем на atmeg-е

Не думал в этом направлении? Покритикуй!

pihter ★★★★★
()
Ответ на: комментарий от pihter

uh, ну вот щас бы в 2k17 при зависании браузера начинать искать, где там окошко с резервной «красной кнопкой» болтается, или бежать к станку, чтобы аппаратную жать.

Deleted
()
Ответ на: комментарий от pihter

Линь - не ОС реального времени ни разу, а в существовании рабочего RT ядра для оранжей у меня есть некоторые сомнения.

Deleted
()
Ответ на: комментарий от Deleted

Линь - не ОС реального времени ни разу

патчится же

а в существовании рабочего RT ядра для оранжей у меня есть некоторые сомнения

а почему бы ему не быть? все ползуются и не знают что такого не бывает

оно, наверное, не строго-научное RT, но на практике — хватает с головой. я ж говорю — скорость реакции атмеге и не снилась

pihter ★★★★★
()
Ответ на: комментарий от pihter

Писать обычное приложение на си под линукс намного приятнее, чем прошивку МК

Просто привык работать на всяком говне. Купи себе профессиональный инструмент, там все намного проще и приятнее.

Deleted
()
Ответ на: комментарий от pihter

Контроллер тебе дает гарантию детерминированного поведения.

Deleted
()

Вы не боитесь, что компилятор соптимизирует вам циклы задержек в функции hard_fault_handler из файла stm32f103.c? Может стоит переменную цикла объявить как volatile? Ну и использование while(1) вместо for(;;) это на мой взгляд дикость.

A-234 ★★★★★
()
Ответ на: комментарий от pihter

Мега норм, хоть и говнецо. Делать «на коленке» реалтайм на линухе - не норм. Я ловил пропуски на софтовом энкодере на распи с WiringPi, это отбило всякое желание делать на сабже что-то серьёзное.

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

Deleted
()
Ответ на: комментарий от Deleted

IAR Embedded Workbench

Ой, всё.

Алсо, так и не понял, в чём профит перед GCC + рандомной сишной IDE, кроме генерации проектов.

Deleted
()
Ответ на: комментарий от Deleted

в чём профит перед GCC + рандомной сишной IDE, кроме генерации проектов

А в них можно работать с embedded trace macrocell?

Deleted
()
Ответ на: комментарий от Deleted

Ну, OpenOCD сабж поддерживает. Как прикрутить его к интерфейсу IDE - вопрос хороший, но за неимением аналога у AVR'ок ничего интересного рассказать не могу.

Deleted
()
Ответ на: комментарий от Deleted

Делать «на коленке» реалтайм на линухе - не норм

то-то никто и не делает. У Orange Pi GPIO спокойно работает на 25 МГц, а мега у меня только тактовалась 4-мя. Разница на порядок (а то — два) на практике все успевает, тем более что скорости у меня далекие от предельных.

Я ловил пропуски на софтовом энкодере на распи с WiringPi, это отбило всякое желание делать на сабже что-то серьёзное.

Во-первых, энкодер и шаговый двигатель — не одно и то же. Во-вторых, wiringpi тормозной.

это отбило всякое желание делать на сабже что-то серьёзное.

так руки в плечи вставь ) это не малина плохая — это ты неправильно ее готовишь

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

на практике работает как часики. но истина в твоих словах, несомненно, есть. Поэтому, существует план БЭ: скрафтить на той же меге контроллер двигателей, а она уже пусть управляется микрокомпьютером. Контроллер получится тупой-надежный.

Ну-ка погавкай покритикуй! )

pihter ★★★★★
()
Ответ на: комментарий от Deleted

Как прикрутить его к интерфейсу IDE - вопрос хороший

Значит пока с этим никак. Вот тебе и ответ на вопрос «в чем профит».

Deleted
()
Ответ на: комментарий от pihter

Под винду, платное

Не пойму такого подхода, разве что тебе мамка деньги на карманные расходы дает.

Deleted
()
Ответ на: комментарий от pihter

Ну-ка погавкай покритикуй! )

А смысл, если у тебя все аргументы из разряда «ололо, умвр, а вы все рукожопы»?

Deleted
()
Ответ на: комментарий от Deleted

мамка деньги на карманные расходы дает.

Он же стоит как самосвал. Литерально.

Впрочем, кажется, у uVision есть бесплатная урезанная версия.

Deleted
()
Ответ на: комментарий от Deleted

Дело не в цене, а в грамотном инженерном подходе и товарищу было указано на его ошибку. IAR я просто как пример проф. инструмента привел. Никого не удивляет, что простой токарный станок, даже без чпу стоит > 1 млн. И оснастка с расходниками еще столько же.

Deleted
()
Ответ на: комментарий от Deleted

Никого не удивляет, что простой токарный станок, даже без чпу стоит > 1 млн

16к20, даже с ЧПУ, можно взять за куда меньшие деньги

cvs-255 ★★★★★
() автор топика

Один раз, на практике, казус случился. Вроде ТБ соблюдал, но что-то пошло не так. Резец врезался в болванку, её вырвало из станка, она пролетела в миллиметре от моего уха, и захерачила в окно на втором этаже, где мастер сидел. Огромное стекло разбило. Спускается мастер, спрашивает: ты чё, бл.. вытворяешь, пионер? Я говорю, хз, что-то не так пошло. Проверили, станок не исправный оказался. Потом пошли, отпраздновали день рожденья.

yvv ★★☆
()
Ответ на: комментарий от cvs-255

Народ в гаражах токарники ставит

Так это и есть цех.

yvv ★★☆
()
Ответ на: комментарий от Deleted

С чего вдруг ему не соответствовать? Станок это не айфон, который через 2 года уже устарел и можно выкидывать

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Из-за износа. Или ты думаешь, что тебе за 50% цены нормальный станок продадут? А самое главное восстановить ты его не сможешь, для этого завод нужен, а не гараж.

Deleted
()
Ответ на: комментарий от Deleted

Тем не менее, их покупают и используют

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

восстановить ты его не сможешь, для этого завод нужен, а не гараж.

ви таки удивитесь, но для восстановления станка достаточно гаража. В тяжелых случаях - отдать критичные части (скажем, станину перешлифовать) на сторону.

arkhnchul ★★
()
Ответ на: комментарий от pihter

GPIO у него там такой резкий, что мега и рядом не стояла

На сколько резкий? Там есть подобие counter output compare?

redixin ★★★★
()
Ответ на: комментарий от redixin

На сколько резкий?

http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

это для малины. При правильном подходе может в меандр 22 МГц

counter output compare

А хз: я толком не углублялся. Написал код — он с первого раза заработал как надо, я и пошел дальше :)

pihter ★★★★★
()
Ответ на: комментарий от arkhnchul

но для восстановления станка достаточно гаража

Перешлифовка каретки, конуса шпинделя, конуса посадки патрона, конуса пиноли? В гараже? Шабрение и финишное строгание направляющих? Опять в гараже?

Deleted
()
Ответ на: комментарий от Deleted

Перешлифовка ... конуса шпинделя, конуса посадки патрона, конуса пиноли? В гараже?

конусы обычно нормальные. В (относительно редком) случае, когда попался убитый шпиндель - в гаражных условиях он меняется на несколько более целый.

Шабрение и финишное строгание направляющих? Опять в гараже?

да

arkhnchul ★★
()
Ответ на: комментарий от pihter

я толком не углублялся. Написал код — он с первого раза заработал как надо, я и пошел дальше :)

Возвращайся когда захочешь выпиливать че нибудь быстрее чем за сутки и чтобы без брака.

redixin ★★★★
()
Ответ на: комментарий от arkhnchul

Уточняем.

16к20 - станок нормальной точности. Читаем требования (ГОСТ 18097-93). Или ты про колхозные станки, где 5 соток поймать - уже предел мечты?

Deleted
()
Ответ на: комментарий от pihter

странное высшее образование.

Скорее всего, заочное. Язык заочно выучить сложно. И дают его в вузах часто поверхностно.

Английский на уровне чтения мануалов к станкам дают в сельской школе. Как можно управляться со станками не читая мануалов я решительно не понимаю.

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

Bagrov ★★★★★
()
Ответ на: комментарий от Bagrov

а их больше всего в математике и иностранных языках

Ну тут кому как. Некоторым математика и языки легко, а тяжело что нибудь другое

cvs-255 ★★★★★
() автор топика

А где описание программы то куда тыкать и какие микрофон роллеры использовать?

anonymous
()

Ну? Кто-нибудь уже прикрутил это к Синумерику? :)

ChekPuk ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.