Доброго времени суток! Напишу много текста, однако важного. Сам уже не новичок в станках и программировании, несколько разных стоек перебирал от механики до макропрограммирования, но Syntec решил мне по правому мизинцу левой ноги своей красивой угловатой стойкой въехать так, что аж в мозжечке отдает теперь. Собственно от бомбежки к делу:
Есть стойка Syntec EZ4. Станок подгоняем под Nesting систему. Программа, которой делаем УП для станка не умеет делать гравировки (конкретно - вензеля всякие сложные, простые углы на V120 или V45 делает) и поэтому, чтобы на деталях были те самые "вензеля" мы сделали ход лошадью и запустили подпрограммы. На стойке OSAI (Beaver 25avlt) работает как надо. Там все с кодом понятно, быстро разобрались. Если кому надо, то вот собственно:
;( установка позиции для нашей ПП X=205.000, Y=305.000)
Эти строчки счастья пишем в основной программе в любом удобном для нас месте и ВАЖНО, чтобы эти коды были в конце какой-либо обработки. Это чтобы фреза была в шпинделе.
Ну а сами подпрограммы - это обычные арткамовские уп для нужного нам станка, только с корректировками:
в начале УП мы удаляем все строки безопасности и замены фрезы так, чтобы она начиналась с кода G00 куда-то там идет по X Y Z, или еще как-то там у вас будет. В конце программы удаляем все остановки M кодов, подпрограмма в итоге кончается на подъеме безопасной высоты Z5.000, например. И последнее - эта подпрограмма должна быть без расширения в названии файла. То есть без всяких .cnc или .nc. Именно удалить, чтобы файл сам ничем не мог читаться (условно).
Тут-то все понятно. Шифр не долго догоняли, не то чтобы программировать в блокноте радиусные интерполяции, но и не линию нарисовать в арткаме.
А вот Syntec так просто не сдается.
Во первых:
У него есть 4 вида координат (не новость))):
Абсолютные: G90 и обычно работают они в паре с табличкой G54 (ноль по детали). Мы с вами в них и работаем по умолчанию.
Машинные: не заморачиваемся, нужны для калибровки инструмента и его смене. В ПП они не играют роли.
Distance To Go: тоже можно не смотреть на них, если только мы не наладчик станка, чтобы понимать куда станок помчится вот прям вот щас вот.
Релятивные/Относительные: а вот эти, как говорят все инструкции в глобальной паутине, как раз нам и надо использовать. Вот собственно как:
Переход на относительные координаты делается при помощи G91, как бы "хоба" и готово, но не тут-то было.
В деталях:
В основной программе должен быть код вызова подпрограммы:
G65 P0002 X267.1347 Y487.6575 (вызов пп - имя пп - координаты для работы пп)
ИЛИ
M98 P0002 (вызов пп - имя пп)
С этим разобрались, тут ошибок нет, ПП реально запускаются, можно работать.
Далее:
Имя подпрограмм, как и в случае с OSAI надо корректировать. Во первых все подпрограммы в Syntec надо обозвать O1111, то есть в начале буква "O" затем само имя программы. При этом при вызове подпрограммы мы это "O" не указываем. Видать так ПП в станке только обозначаются для внутреннего поиска нужной программы в памяти станка, так как мы эти ПП туда и кидаем - просто в память станка со всеми другими УП. И надо тоже удалить расширение файла, иначе не найдет программку. В самой ПП мы указываем концовку в виде:
И вот дошли до самой проблемы:
В начале нашей ПП мы должны указать код G91, чтобы перевести нашу ПП в режим работы относительных координат, таким образом ПП должна запускаться только там, где станок на эту секунду остановился и в этих координатах якобы новый 0 для ПП должен быть, только есть один нюанс...
Программа, которая у нас играет роль подпрограммы ломается, так как относительные координаты не для всей программы назначаются, а для каждой строчки в ней. То есть каждая строчка в нашей программе работает относительно каждой предыдущей строчки в этой же программе. И рисует при этом ту еще абракадабру.
Я пытался сделать вызов подпрограммы в конкретных координатах:
G65 P0002 X267.1347 Y487.6575
Без использования G91 и G54, чтобы вообще нолей не было. Итог - не верно. Подпрограммы подгружаются, но все равно в общий ноль уходят, а не на нужное место в детали.
Пробовал G91 прописывать перед вызовом подпрограммы:
G91 M98 P0002
В подпрограмме так же все удалено по принципу OSAI. Снова не то. Начало там где надо, а рисует так же рогалик какой-то километр на километр.
Пробовал присвоить координаты на вызов ПП через G92 - тот же результат как и простой вызов, все в общий 0 пришло.
Пытался найти способ, чтобы записать временное положение ноля для ПП - нет такого на Syntec (наверное)
Пробовал найти способ записи текущих координат (в момент вызова ПП) станка в G55/G56/G58/G59, чтобы потом в подпрограмме указать нужный 0 для работы - нет такой функции.
Пробовал не указывать вообще ничего и нигде (ну мало ли) - понятно что ничего не вышло.
Была попытка вручную прописать в подпрограмме G92 "использовать текущие координаты станка" (не то совсем что мне нужно, но разобраться то хочется) - оказывается не работает такое правило. Все рвано в абсолютный 0 все идет.
Пытался найти способ переделать УП подпрограммы под относительные координаты, чтобы корректно все рисовало, но эта тема нигде и никем не упоминается даже, оно и понятно, не в уп дело а работе G91.
Вот получается тупик пока у меня.
Ну а сама проблема - подпрограммы запускаются из основной программы. Они работают некорректно в относительных координатах.
Что делать - не знаю. Пятый день уже ищу ответы. Может кто здесь знает такое, как раз по теме подпрограмм не было еще ничего на форуме.
Сообщение отредактировал ViktorSwild: 28 Сентябрь 2021 - 16:23