ЧПУ для начинающих. Параметрическое программирование.

Не все задачи можно решить с помощью 3D моделирование или специализированного софта. Иногда приходится встряхнуть опилки в голове.

По этому поводу задачка (с подсказкой) для начинающих.  Здесь же, кто не знает, можно глянуть, как отрабатывать подпрограммы в CimkoEdit и как настроить симку под свой станок.


Итак, задачка:

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

ЧПУ для начинающих. Параметрическое программирование. ЧПУ, Фрезеровка, Программирование, Логическая задача, Задача, Длиннопост

Вот настройки Симки для приведенного ниже решения:

ЧПУ для начинающих. Параметрическое программирование. ЧПУ, Фрезеровка, Программирование, Логическая задача, Задача, Длиннопост

Собственно прорисовка для линейно расположенных отверстий:

ЧПУ для начинающих. Параметрическое программирование. ЧПУ, Фрезеровка, Программирование, Логическая задача, Задача, Длиннопост

Ну и код решения для линейного расположения. В нём легко понять, как подцеплена подпрограмма:


G90G54G0 G43H1 Z100

X0 Y0 A0

Z24

M3S1200

G0Z10

WHILE [#130LT359.992]DO1

A#130

G0Z10

N10 G1X#100 Y0 F4000

Z3

Z-1.5 F100

Z3 F4000

#100=#100+7

IF[#100GE75.5]GOTO20

GOTO10

N20 G0G40Z10M9

#100=5.5

#130=#130+21.176

END1

G0G40Z300M9

M98P0002

G91G28Y0

M30

%

O0002

(CENTROBKA 2)

#100=9(Z 0)

#130=10.588

G90G54G0 G43H1 Z100

X0 Y0 A0

Z24

M3S1200

G0Z10

WHILE [#130LT370.58]DO1

A#130

G0Z10

N10 G1X#100 Y0 F4000

Z3

Z-1.5 F100

Z3 F4000

#100=#100+7

IF[#100GE72]GOTO20

GOTO10

N20 G0G40Z10M9

#100=9

#130=#130+21.176

END1

G0G40Z300M9

G91G28Y0

M99

Не то что бы я хочу, чтобы у Вас кукуха слетела))) Хороший наладчик - это наладчик с развитым мышлением. Это задачка на развитие мышления.

Вы смотрите срез комментариев. Показать все
25
Автор поста оценил этот комментарий

ТС, вы очень весёлый человек. Какой на этом ресурсе процент людей знающих что такое G-код? Если вас не затруднит, сделайте пожалуйста расшифровку кодов. Какой и за что отвечает (вкратце).

раскрыть ветку (44)
12
Автор поста оценил этот комментарий

Уже +1 как минимум знающий - Я)). ТС молодец.

раскрыть ветку (34)
5
Автор поста оценил этот комментарий

+1 Но у меня мало опыта. Работал некоторое время в рекламной компании на простеньком ЧПУ фрезере.

раскрыть ветку (33)
2
Автор поста оценил этот комментарий

Код же ооочень простой. Наличие опытного наставника и время и ты ты профи. Я думаю желание и 1-2 мес экспериментов. Тут же не ООП ))

раскрыть ветку (28)
1
Автор поста оценил этот комментарий

Код и вправду простой. Я работал только с 3d принтерами и то особо в gcode не лез, но тут все понятно и без справочника. Основные команды знаю, остальное можно догадаться исходя из задачи

1
Автор поста оценил этот комментарий

ООП легче (Пробовал в качестве хобби освоить С#, но, без учителя это сложно). И немного писал скрипты для игры Skyrim - там тоже используются принципы ООП. И это куда легче.


А с G-кодом сложнее. Все станки разные и стандартизации никакой - так что значения команд надо учить для каждого отдельно. И код используется не только на фрезере. Что на фрезере может запускать вращение шпинделя, то на 3D принтере может запускать подогрев стола - пойди разбери, что эти китайцы наворотили в прошивке.

раскрыть ветку (26)
3
Автор поста оценил этот комментарий

Вы просто ООП плохо знаете.

Передо мной сейчас реальный продающийся код на С#, сможете сказать что он значит?


[Serializable]
public class ASFCCalculationModuleOPROXR<CHL, CHN, CHP> : ASFCCalculationModuleBase, IASFCCalculationModule, IASFCCommonChargesParamsNames
where CHL : ASMPropertiesCommonChargesLinkBase, IASMPropertiesCommonChargesLink, new()
where CHN : NomTreeItemProperties, IASMPropertiesCommonChargeBase, new()
where CHP : ASMPropertiesCommonChargesPayCommon, new()
или такое:


var grouping = calc_points.GroupBy(cp => new Tuple<long, long, long>(cp.ID_GROUP, cp.ID_WORK, cp.ID_DEPARTMENT));


А с G кодом относительно просто - меняешь позицию, "головки" + простые циклы, вот и весь код. Надо хорошо знать только геометрию и предметную область.

раскрыть ветку (19)
4
Автор поста оценил этот комментарий

Но так этот код ничего не делает, кроме как описывает класс какими-то функциями в первом случае и присваевает какую-то ерунду переменной во второй. Не пугайте новичков страшными длинными названиями функций)

раскрыть ветку (10)
1
DELETED
Автор поста оценил этот комментарий
Не пугайте новичков страшными длинными названиями функций)

Это первое чему надо учить :) А то приходят с универов и давай от а до я именовать, а потом цифровые приписывать. И всему этому 0,0 комментариев.Это все чтоб быстрее код писать, через год по итогу 2 недели убить на оптимизацию этого говна т.к. уже не помнить что к чему написал.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

Какие-то говенные у вас универы

раскрыть ветку (3)
1
DELETED
Автор поста оценил этот комментарий

дело не в универах ни разу.

раскрыть ветку (2)
Автор поста оценил этот комментарий

А в чем?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну я тоже понял, что это "имена собственные". А уж узнать, что делает код, глядя лишь на имена - я не ясновидящий.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Я спросил что означает код, а не что делает.

Вот человек кратко и точно описал.

#comment_153927960

1
Автор поста оценил этот комментарий

На 10% правильно рассказал )). Из правильного class - это да, объявление класса и "=" это оператор присваивания, остальное неверно.

Функция во всём коде только одна "GroupBy"

раскрыть ветку (2)
3
Автор поста оценил этот комментарий

Сдается вы и сами не совсем понимаете что он делает. По факту здесь только слово class и = имеют отношение с C#, остальное выдумки ваших погромистов. Даром представлять функционал объектов по способу их вызова я не обладаю)))

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не туда ответил: #comment_153924810

2
DELETED
Автор поста оценил этот комментарий

Комбо из сериализуемого дженерика с указанием ограничений по используемым классам которые можно скормить сабжу, а далее тема сисек не раскрыта.

Последнее группировка значений calc_points через Linq по 3 типам, эдакий аналог ДБшной GROUP BY.

Это вы ещё в крестах не видели шаблона шаблона шаблона :)

раскрыть ветку (3)
3
Автор поста оценил этот комментарий

Смотрю минусов у тебя в постах много. Часто осмеливаешься адекватную точку зрения на Пикабу высказывать?

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Интернет - единственное где пока так можно делать, не опасаясь :)

Если у меня есть мнение, то я его высказываю, рейтинг побоку в большинстве случаев.


Чаще всего тут эффект толпы.

3
Автор поста оценил этот комментарий

Сразу видно специалиста, а не @WirelessMan и @FeyfolkenKM у которых всё просто ))

На С++ я тоже пишу, видел и даже создавал. Делал указатель на указатель на указатель шаблона шаблона )) Весело конечно ))

1
Автор поста оценил этот комментарий

А я и не говорил, что хорошо знаю.

Что по примеру - вообще не знаю. Даже не знаю, какой это язык. Как писал выше - я только c# поверхностно смотрел.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
ООП легче (Пробовал в качестве хобби освоить С#

Это C#, и он не легче, вы же утверждаете, что легче. Это ровно наоборот.  Также и с ассемблером - сам язык предельно простой..., сложности в предметной области и наличии опыта.

раскрыть ветку (2)
1
DELETED
Автор поста оценил этот комментарий

Собственно тут ничего нового. Надо как отче наш знать основною таблицу G-кодов с привязкой к внутренней кодовой базе конкретного процессора (макросы например готовые) + доп. коды конкретного оборудования, если таковые процессор предоставляет.

1
Автор поста оценил этот комментарий

Я тимлид этого коммерческого проекта (откуда код)

1я часть кода - это объявление Дженерика (класса обобщения). Т.е. класса который работает с заранее неизвестными типами данных.

В данном случае таких типов 3: CHL, CHN, CHP, к каждому из этих типов мы предъявили требования, например:

where CHL : ASMPropertiesCommonChargesLinkBase, IASMPropertiesCommonChargesLink, new()

Тип CHL должен быть наследником от ASMPropertiesCommonChargesLinkBase, реализовывать интерфейс IASMPropertiesCommonChargesLink и иметь конструктор без параметров.


2я часть кода просто делит список объектов по значениям свойств ID_GROUP, ID_WORK, ID_DEPARTMENT или другими словами осуществляется группировка, которая попадает в переменную grouping.

Автор поста оценил этот комментарий

В памяти (той, в которую ты ешь)) нужно держать примерно 20 строчек текста. Этого хватит на подавляющее большинство станков. 20 строчек сможешь наизусть выучить?  :)

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

Ну, повсеместно распространенные всякие go и home можно и выучить. А вот, допустим, щуп для стола 3D принтера - что с ним делать? Вешать на какую-нибудь свободную команду? Или же пилить в прошивке новую? Вот я как раз про это.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

Ну, на всех чпушках, которые мне попадались, программки для щупов уже были. Даже если щупов не было. В прошивке ничего пилить не надо. Это такая же программка в g-кодах, только с использованием параметров.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Ладно, другая ситуация - на YouTube видел обзор необычного на сегодняшний день 3D принтера, он печатает двумя видами пластика. Но у него два не неподвижных экструдера, а закреплены они на поворотном блоке, который вращается сервоприводом. Вот куда прикажете всю это лабуду цеплять - сам сервопривод и два шаговых двигателя в экструдере?

И как заставить это работать? Это я про то, что прога, которая готовит G-код из модели, должна знать что и за какую команду отвечает. Так-то да - повезло, что производитель там довольно крупный и адекватный, поэтому наладил контакт с разработчиками популярных слайсеров, дал им документацию и теперь этот принтер есть по умолчанию в списке слайсеров.

А если какой-нибудь китайский no-name?

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Я не силён в 3Д принтерах. Как-то больше по металлообработке. А там всё более менее стандартизировано. Хотя попадаются китайские уёбища, сделанные не пойми как. На последний две недели ушло, чтобы запустить. Причем сам производитель помочь ни как не мог.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вот я как раз и говорю - что не везде всё стандартизировано.

1
Автор поста оценил этот комментарий

А я на ГФе работал, с перфолентой...

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Было дело много лет назад)))
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

90-92-й)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Я в 2008 .
3
Автор поста оценил этот комментарий

Процент, я думаю, большой. По крайней мере, продвинутые владельцы тридэпринтеров должны знать G-код. А с учетом того ,что принтеры все китайские, в основном, то эти владельцы еще и конструкторы-наладчики :)

раскрыть ветку (4)
2
Автор поста оценил этот комментарий

Ну вот я свой принтер собрал с нуля, но в G-коде знаю только холостой/рабочий ход и автонастройку PID с сохранением в EEPROM. Принтерам он особо не нужен (при исправной машине от вас требуется выбрать файл и он сам прекрасно сделает заебись), а в те полотна на сотню тысяч строчек, которые выдает слайсер, имеет смысл лезть только для проверки целостности, или при задании кастомных кодов. Но кастомники можно задать и в слайсере, он их сам в код вставит. И нет, ручное программирование не катит вообще - могу потом показать схему ходов из слайсера для какой-нибудь лодочки.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Да это понятно, что простыни никто руками писать не будет. Там же координаты отрезков, в основном, которые слайсер пишет гораздо быстрее и точнее :) Но есть нюансы, как говорится :) Например, любимая кура стала косячить в последнее время. Устанавливает температуры другие. Мне надо 195, а там 230 и не знаю, почему. Выяснять особо некогда, поэтому просто правлю код. Или нужно разрешить принтеру использовать данные сетки калибровки при старте печати. Это тоже только вручную. Ладно хоть можно сразу задать в стартовом коде слайсера. Или вот нашел я такую штуку интересную - прикручиваешь карандаш к каретке и оно рисует G-код на бумажке. Там вообще без контроля кода никак. Кривой плагин к инкскейп+мои кривые руки = все стекло исцарапано :)

Я не говорю ,что все команды надо знать, как отче наш. Но вот взять и проверить, если что-то идет не так, бывает очень полезно.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Может, профиль материала или машины не тот выбран? Кстати, и Кура, и марлин прекрасно знают, что такое кривые, и при слайсинге КАД-файлов кривыми и пишут. Размер простыни уменьшается на порядки. Ну а плоттер - ставьте прижимающий пружинный зажим, чтобы гасить такие косяки, и будет вам щщастье.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, я тоже думаю про профиль. Но я же ручками прописываю в настройках все, то есть, по идее ручные установки должны быть главнее. А вот про кривые можно подробнее? У меня что-то не получается куру заставить слайсить кривыми. Ткните, где почитать ,если не трудно

2
Автор поста оценил этот комментарий

а зачем вообще писать со стойки? почти любой софт умеет (не уверен что компас умеет в 3+1)

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Как я уже объяснял бесчисленному количеству людей - а если компа нет?

У меня два случая было. Когда компа не было вообще (пришлось покупать ноут), и когда монитор был шопездец (тоже рабочий ноут принёс).

Второе: на стойке у меня вбито море самодельных циклов, описывающих почти все задачи. Остаётся только вбить траекторию. Это для сдельщика это огромная экономия времени.

Да и само умение эффективно програмить это плюсик в карму. У меня сын в 14лет програмил Хайденхайн со стойки. Сейчас работает в Simens NX. Но мелкие простые детали делает со стойки (так быстрее).

В предыдющих постах я приводил примеры.

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