Перейти к публикации

Вопрос по постпроцессору


Pingvin man

Рекомендованные сообщения

Есть пост, который выводит вот так:

G90

G18 G21 G18 G80 G90 M49 G40 G49

G50

G64

T2M6

G51 X0.1 Y0.1

G0Z60.

G1X100.A0

S1500M3

G1F3000

G1X0

G1Z55.

G1Z50.F500

G1A.56F1000

G1A1.13

G1A1.7

G1A2.28

G1A2.86

G1A3.44

G1A4.03

G1A4.62

.........

.........

.........

G1A357.77

G1A358.33

G1A358.89

G1A359.45

G1A360.

G1X.5

G1X1.

G1X1.5

G1X2.

G1X2.5

G1X3.

G1X3.5

G1X4.

G1X4.5

G1X5.

G1X5.5

G1X6.

G1X6.5

G1X7.

Как выкинуть из программы лишние кадры?

Это только скриптом можно сделать?

В данном случае, если изменилась только одна координата, и в предыдущем кадре тоже только одна и эта же ось, то предыдущий кадр не выводить.

Где в дактпосте описание процесса написания скриптов? Если можно, то ссылку такого вида:

file://localhost/C:/Program%20Files%20(x86)/Delcam/DuctPost1510/file/help/block.html#TOP

Если этого нет в хелпе (я не нашёл), то кто-нидь, опишите на пальцах, как писать такие скрипты. Желательно, с простым примером.

Ссылка на сообщение
Поделиться на других сайтах


В данном случае, если изменилась только одна координата, и в предыдущем кадре тоже только одна и эта же ось, то предыдущий кадр не выводить.

Жывтоне чочо упячка?)) А, понял. Хошь упаковать несколько кадров в 1? Это непрооосто... насклько я знаю, блок может запросить только перемещение в текущем кадре, предыдущем и последующем. Тут, имхо, перспективнее побороться с Миллом, чтобы сливал мелкие ходы в 1 и со стойкой чтобы не парила.

Где в дактпосте описание процесса написания скриптов? Если можно, то ссылку такого вида:

Путевого хелпа не видел, бери мой скриптик из ответа в твою прошлую тему и работай с переменными, которые можно найти вот тут:

file:///C:/Program%20Files%20(x86)/Delcam/DuctPost1510/file/help/variables.html#TOP

====================================================

Уже запостил, придумал. Берешь параметр NextAngle (или просто Angle) - это угол между текущим кадром и следующим. Если он = 0, то имеем прямолинейное движение и текущий кадр вроде бы как можно не выводить....вроде бы....

Выстрелит - с тя пиво. Ну и харнир к ему)).

Ссылка на сообщение
Поделиться на других сайтах

Да , со скриптами разобрался.

Что-то даже стало работать, но не идеально.

Запросил совета у Бельковича. Он ответил, что советы платные, но смотри сюда:

workplane angles = apparent Relates to RTCP control

## Eular Angles, Three angles of rotation

WorkplaneA, WorkplaneB, WorkplaneC

= machine tool Machine controls that only work with two angular rotations WorkplaneAZ, WorkplaneEl

= none NO workplane orientation available

multiaxis coordinate transform = false RTCP ENABLED = true RTCP DISABLED

Правильно будет использовать эти переменные.

Что такое режим RTCP знаю.

Простое подставление других, отличных от none значений результата не дало.

Что означает workplane angles , в чём суть (на пальцах) и как использовать?

Ссылка на сообщение
Поделиться на других сайтах

Это описание вывода новой плоскости при 3+2 обработке.

Apparent - пространственные углы (выводятся все три параметра A, B, C)

Machine - станочные (машинные), две угловых координаты, реально существующие у станка

None - специальный вывод плоскости обработки не поддерживается, управление передается блоку описания пятиосевого перемещения.

Ссылка на сообщение
Поделиться на других сайтах

Что означает workplane angles , в чём суть (на пальцах) и как использовать?

1. Ты полез не туда. Тебе нужен параметр угла между текущим кадром и следующим. Это Angle называется, емнип.

2. workplane angles это угол между СК в которой создана программа и той, в которой она оттранслирована. 3+2.

Ссылка на сообщение
Поделиться на других сайтах

вот часть переписки:

______________________________________________

И последнее.

Вы написали в предыдущем письме, что можно создать такой

постпроцессор (чтобы не выводил лишние кадры). Я уже начал писать его,

и он даже заработал частично.

Логика такая:

Если в текущем кадре движение по любой другой оси, чем в предыдущем

кадре, то сначала вывести предыдущий кадр, а затем проводить анализ

выводить ли текущий.

Если в текущем кадре движение только по одной оси, то не выводить.

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

Так вот: я в правильном направлении думаю, или есть более простые

варианты описания?

___________________________________________

ответ:

___________________________________________

Это не правильно!

Для этого есть параметры:

workplane angles = apparent Relates to RTCP control

## Eular Angles, Three angles of rotation

WorkplaneA, WorkplaneB, WorkplaneC

= machine tool Machine controls that only work with two angular rotations

WorkplaneAZ, WorkplaneEl

= none NO workplane orientation available

multiaxis coordinate transform = false RTCP ENABLED = true RTCP DISABLED

___________________________________________

Поэтому и спрашиваю, каким боком это применять.

А это переменные, которые использовал для написания поста по своей логике, с ними всё понятно:

Azimuth The Azimuth angle

Azpos The current value of the azimuth angle.

Elmove The difference between the current and previous elevation angle.

Elpos The current elevation angle position

NextAngle The next angle defined

Word[ n ] The "value" of the [n] word in the list of defined words. ( e.g.Word[2] is the current value of the N word )

Word{ N } This is new to DP1361 and serves the same function as above but uses the Word itself. ( NOTE: curly brackets are used )

Xcoord

Ycoord The current X, Y, Z co-ordinates

Zcoord

OldX

OldY

OldZ The last positional axis move

OldAz

OldEl

Xmove

Ymove The distance moved between current and last position of X ,Y, Z

Zmove

Elmove

Ссылка на сообщение
Поделиться на других сайтах

Логика такая:

Если в текущем кадре движение по любой другой оси, чем в предыдущем

кадре, то сначала вывести предыдущий кадр, а затем проводить анализ

выводить ли текущий.

Если в текущем кадре движение только по одной оси, то не выводить.

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

Так вот: я в правильном направлении думаю, или есть более простые

варианты описания?

Блин, на каком языке это написано.. Если я правильно понял, то вам нужно следующее. Если направление вектора текущего кадра, совпадает с направлением вектора последующего, то текущее перемещение не выводить...

Поскольку у вас программа работает в Абсолютах (G90), при этих условиях, всё получится само собой.

Изменено пользователем CyberPunk
Ссылка на сообщение
Поделиться на других сайтах

А это переменные, которые использовал для написания поста по своей логике, с ними всё понятно:

Azimuth The Azimuth angle

Azpos The current value of the azimuth angle.

Elmove The difference between the current and previous elevation angle.

Elpos The current elevation angle position

NextAngle The next angle defined

Word[ n ] The "value" of the [n] word in the list of defined words. ( e.g.Word[2] is the current value of the N word )

Word{ N } This is new to DP1361 and serves the same function as above but uses the Word itself. ( NOTE: curly brackets are used

Мне вот нихрена непонятна ни твоя логика, ни логика ААБ. Повороты осей тут вообще ни при чем.
Ссылка на сообщение
Поделиться на других сайтах

Хотя, пардон, не увидел, что у тебя и угол выводится подряд. Тогда да, надо отслеживать и изменение элеваций-азимутов.

Но никак не через WorkplaneB.

Ссылка на сообщение
Поделиться на других сайтах

Что выводит пост - в начале поста, первое сообщение.

Мне нужно выкинуть лишние кадры.

Сейчас реализовал это так:

создал переменные MoveA MoveX MoveZ, они используются в качестве флага. 1 - было перемещение, 0 - не было.

define block move linear

if ( Xmove == 0 and Zmove == 0 and ElMove > 0 ) # если в текущем кадре только поворот, то

if ( Word{MoveA} > 0 and Word{MoveZ} == 0 and Word{MoveX} == 0 ) # Если в прошлом кадре только поворот,то

# ничего не выводим

end if

MoveX 0

MoveZ 0

MoveA 1

else

if ( Word{MoveA} > 0 and Word{MoveZ} == 0 and Word{MoveX} == 0 ) # Если в прошлом кадре только поворот,то

G1 1 ; A OldEl ; F # вывели прошлый угол поворота

end if

G1 1 ; X ; Z ; A ; F # вывели текущее приращение.

end if

end define

Это всё работает.

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

Имеется ввиду, workplane angles и multiaxis coordinate transform.

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

Мишка, в 1003 раз прошу, поменяй картинку в подписи. У меня нет прав доступа.

Ссылка на сообщение
Поделиться на других сайтах

Но, Белькович сказал, что это не правильный путь.

А кто это? Вы с ним согласны?

Поэтому я здесь и спрашиваю, что это за опции, и просил на пальцах объяснить что к чему.

Имеется ввиду, workplane angles и multiaxis coordinate transform.

Про workplane angles уже объяснил. Добавлю, что при изменении этого параметра не было изменений в программе потому, что у вас идет непрерывная четырехосевая обработка, при которой не используются переменные WorkplaneA, WorkplaneB, WorkplaneC (для опции apparent), WorkplaneAZ, WorkplaneEl (для опции machine).

multiaxis coordinate transform - собственно, как в справке написано, так оно и есть. True - нет функции RTCP, постпроцессор пересчитывает координаты в систему координат, связанную со станком с учетом его кинематики. False - есть функция RTCP, вывод в системе координат детали. У вас должно быть True.

Ссылка на сообщение
Поделиться на других сайтах

Это всё работает. Но, Белькович сказал, что это не правильный путь. Поэтому я здесь и спрашиваю, что это за опции, и просил на пальцах все объяснить что к чему.

Имеется ввиду, workplane angles и multiaxis coordinate transform.

Ни при чем они здесь, Визард правильно объяснил. У тебя вполне все правильно описано, имхо.
Ссылка на сообщение
Поделиться на других сайтах

А кто это?

Технический директор Делкам СПб.

Авторитет, поэтому прислушиваюсь и пытаюсь разобраться.

Ссылка на сообщение
Поделиться на других сайтах

чуть голову не сломал.

имеем такую строчку:

if ( Xmove == 0 and Zmove == 0 and ElMove > 0 )

Долго не мог понять, почему эта строчка пропускает условия, которые в ней содержатся. Догнал. Программа посчитана с точностью 0,001 , а вывод в пост с точностью 0,01 . И пост числа не выводил, которые меньше 0,01 , а условие не пропускало.

Думал, что так правильно:

if ( Xmove <= 0.01 and Zmove <= 0.01 and ElMove > 0.01 )

Оказалось, что нужно сравнивать с модулем числа.

т.е. так:

if ( |Xmove| <= 0.01 and |Zmove| <= 0.01 and |ElMove| > 0.01 )

Вопрос:

как правильно в этом случае выглядит синтаксис? Как модуль числа представляется в дактпосте? Или нужно вместо трёх условий шесть писать?

Ссылка на сообщение
Поделиться на других сайтах

Так тоже ругается:

if ( ( Xmove <= 0.01 or Xmove >= -0.01 ) and ( Zmove <= 0.01 or Zmove >= -0.01 ) and ( ElMove > 0.01 or ElMove < -0.01 ) )

А есть в хелпе описание синтаксиса? Не нашёл.

Ссылка на сообщение
Поделиться на других сайтах

В итоге, доделал, всё заработало.

Ниже приведёный скрипт удаляет лишние кадры поворота токарной оси, если они идут друг за другом.

Пример: имеем следующий код УП:

G1A.56F1000

G1A1.13

G1A1.7

G1A2.28

G1A2.86

G1A3.44

G1A4.03

G1A4.62

.........

.........

.........

G1A357.77

G1A358.33

G1A358.89

G1A359.45

G1A360.

G1X.5

Этот скрипт преобразует его в следующий вид:

G1A.56F1000

G1A360.

G1X.5

Рабочий скрипт:

define word MoveZ

address letter ="MoveZ"

end define

define word MoveA

address letter ="MoveA"

end define

define word MoveX

address letter ="MoveX"

end define

define format ( MoveX MoveA MoveZ )

address width = 5

field width = 8

exponent width = 0

scale factor = 1

tape position = 1

print position = 1

sign = if negative

not permanent

not modal

metric formats

leading zeros = false

trailing zeros = true

decimal point = false

decimal places = 0

end define

________________________________________________

define block move linear

if ( Xmove <= 0.001 and Xmove >= -0.001 and Zmove <= 0.001 and Zmove >= -0.001 and ElMove > 0.001 )

MoveX 0

MoveZ 0

MoveA 1

else

if ( Xmove <= 0.001 and Xmove >= -0.001 and Zmove <= 0.001 and Zmove >= -0.001 and ElMove < -0.001 )

MoveX 0

MoveZ 0

MoveA 1

else

if ( Word{MoveA} == 1 and Word{MoveZ} == 0 and Word{MoveX} == 0 )

A OldEl

end if

if ( Xmove > 0 or Xmove < 0)

MoveX 1

else

MoveX 0

end if

if ( Zmove > 0 or Zmove < 0)

MoveZ 1

else

MoveZ 0

end if

if ( ElMove >= 0.001 and ElMove <= -0.001)

MoveA 1

else

MoveA 0

end if

G1 1 ; X xcoord ; Z ; A Elpos ; F

end if

end if

end define

____________________________________

Вместо MoveA, MoveZ, MoveX можно использовать переключатели swa, swb, swc.

Но, когда начал писать скрипт, не знал как ими пользоваться. А сейчас уже лень переписывать ))).

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

Ну, если понадобится, то в будущем допишу.

Ссылка на сообщение
Поделиться на других сайтах

Вах, какие гирлянды условий) но все работает и это прекрасно. И безо всяких там

Имеется ввиду, workplane angles и multiaxis coordinate transform

).
Ссылка на сообщение
Поделиться на других сайтах
  • 6 месяцев спустя...

Pingvin man - Вы Гений! :clap_1::clap_1::clap_1:

Всё проще: необходимость + изучение документации = работающий скрипт.

Это, кстати, не самый сложный скрипт. Поэтому и выложен.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...