Страница 5 из 6
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 29 ноя 2012, 23:54
Dmitriy
Стойка зачем?
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:04
Dmitriy
nkp писал(а):дело обстоит так:
примерно по вашему принципу (проигрывателя) соответствующему ж-коду будет формироваться массив данных,отображающий ПРЯМОЙ ход
а чтоб отойти в некий момент времени нужно сформировать траекторию от точки в которой находимся и далее на заданное расстояние
(то есть мы "едем" не по записанной траектории непосредственно,а по сформированной(каждые раз индивидуально)
-----------------------
вот так и в приведенном примере:
в нужный момент времени нажимается кнопочка(здесь конечно все в упрощенном виде -поэтому надо пока нажать 4 раза ) и
едем по сформированному Ж-коду в соответствии с первоначальным
никто по хордам отходить не собирается

Это уже не исходный, это другой G код.
Слишком сложно, подпрограммы не перевернуть и в итоге не по любому G коду можно сформировать массив...
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:04
Impartial
Это вопрос к заказчику.
А как его раскрутить на покупку новой электроники это отдельная тема.
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:12
nkp
Dmitriy писал(а):Это уже не исходный, это другой G код.
какая разница - главное задача выполнена
Dmitriy писал(а):Слишком сложно
не руками же пишем
Dmitriy писал(а):подпрограммы не перевернуть и в итоге не по любому G коду можно сформировать массив..
полностью согласен
но "любые " стойки не работают с "любыми " программами(G-коды) -
и ничего - готовим специально в постпроцессорах...
(все это только к тому ,чтоб сказать ,что по ж-коду вернуться можно
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:16
Impartial
nkp писал(а):(все это только к тому ,чтоб сказать ,что по ж-коду вернуться можно
Забыв про ускорения на траектории?
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:23
nkp
Impartial писал(а):Забыв про ускорения на траектории?
почему ?
мы в парсер можем забить что нам нужно
а еще исходя из технологической необходимости отходов некоторые параметры не так критичны
да и в случае применения сервосистем все должно работать безукоризнено
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:28
Dmitriy
Из Петербурга в Москву можно поездом напрямую, и конечно через Америку пешком.
Главное знать зачем, почему пешком через Америку.
Просто непонятно.
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:33
Impartial
nkp писал(а):мы в парсер можем забить что нам нужно
Парсер обратного Г кода ? Такого еще не видел. Отход в Г коде это другая программа. И откуда ее писать известно только всевышнему.
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 00:52
nkp
Impartial,
насколько я знаю Вы с программированием "на ты"
что мне ,узнавшим недавно что такое питон рассказывать про парсеры
тс(у):
чтоб закрыть эту тему подведу итог:
некогда задался задачей написать к емс компонент с помощью которого
можно "вернуться" по траектории
тут вверху есть ссылка на соответствующую тему
потратив пару часов получился такой вот черновичок
он ни на что не претендует, для отходов в эрозии не подходит по ряду обсуждавшихся причин
но и причин для колкостей не вижу абсолютно
всегда стараюсь задавать вопросы по теме - и отвечаю в силу своих скромных знаний
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 01:00
Impartial
nkp писал(а):но и причин для колкостей не вижу абсолютно
Если это в мой адрес, то извиняюсь.
Я рассказал как делаю сам. И мне интересны любые идеи на эту тему. Отход по Г коду, на мой взгляд, не получится.
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 01:07
nkp
Impartial писал(а):Если это в мой адрес,
нет
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 01:17
Dmitriy
nkp
Это не колкости.
Я пытаюсь понять - почему предложенный мной вариант, как мне кажется простой, вообще никак не обсуждается.
Критики в этом направлении нет, почему это не подходит? что не нравится? согласия то-же нет.
Почему, зачем надо любым способом делать это в ЕМС, которая для этого не подходит - Gкод для этого убогий.
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 22:53
vladimir74
Nick писал(а):Я в том плане, что можно накатать компопнет buffer, в котором будем хранить последовательность выданных шагов на ШД, для реверса, тупо проигрываем ее назад, до потери КЗ. С траектории 100% никуда не сойдем.
Главный вопрос, какой длинны буфер хранить? Сколько шагов ШД всех осей надо хранить?
Зачем буфер? Есть же окно окно с кадрами, наверняка есть возможность к нему обратиться и определить текущий кадр, потом выполнять все в обратном порядке пока КЗ присутствует.
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 30 ноя 2012, 23:58
vmarkiv
,я думаю , отработка программы типа G01 x10y10 x0 y0 x-5y-5 x-10 y-15 не составляет труда ни в прямых перемещениях , ни в реверсе , без нумерации номера кадра можно сделать . А вот с круговыми не так просто
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 01 дек 2012, 08:22
nkp
vmarkiv писал(а):А вот с круговыми не так просто
так же просто
вот пример алгоритма:
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
from subprocess import Popen, PIPE
a= Popen('halcmd getp minmax.0.max ', shell=True, stdout=PIPE).stdout.read()
x=int(a)-1
f = open(r'/home/nkp/emc2/nc_files/15.ngc')
lines = f.readlines()
f.close()
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
f.write("F60 G20 G61 G17\n")
f.close()
while x>0 :
if lines[x].find('G2')!=-1 and lines[x-1].find('G1')==-1 : # если текущая строка содержит G2 а предыдущая не содержит G1
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
r=lines[x]
a=r.split('R')
w=a[1]
z=lines[x-1].replace('G2','G3')
a=z.split('R')
ww=a[0]
f.write(ww+'R'+w)
x=x-1
f.close()
elif lines[x].find('G3')!=-1 and lines[x-1].find('G1')==-1 :# если текущая строка содержит G3 а предыдущая не содержит G1
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
r=lines[x]
a=r.split('R')
w=a[1]
z=lines[x-1].replace('G3','G2')
a=z.split('R')
ww=a[0]
f.write(ww+'R'+w)
x=x-1
f.close()
elif lines[x].find('G2')!=-1 and lines[x-1].find('G1')!=-1 : # если текущая строка содержит G2 а предыдущая содержит G1
f = open('/home/nkp/emc2/nc_files/12.ngc','a')
a=lines[x].split('R')
w=a[1]
print w
r=lines[x-1].replace('G1','G3')
ww=r.replace ('\n', '')
print ww
f.write(ww+'R'+w)
x=x-1
f.close()
elif lines[x].find('G3')!=-1 and lines[x-1].find('G1')!=-1 : # если текущая строка содержит G3 а предыдущая содержит G1
f = open('/home/nkp/emc2/nc_files/12.ngc','a') # открываем файл на добавление
a=lines[x].split('R') # разделяем строку lines[x] по символу 'R' в список
w=a[1] # берем из разделения второй элемент [1] (нумерация с нуля)
r=lines[x-1].replace('G1','G2') # меняем G1 на G2 в строке lines[x-1]
ww=r.replace ('\n', '') # убираем в конце перенос строки
f.write(ww+'R'+w) # пишем в файл
x=x-1
f.close()
elif lines[x].find('G1')!=-1 : # если текущая строка содержит G1
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
f.write(lines[x])
x=x-1
f.close()
else :
print x # проверка отработки условиями всех строк
x=x-1
f.close()
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
f.write("M2")
f.close()
d=Popen('halcmd setp minmax.0.reset 1 ', shell=True, stdout=PIPE).stdout.read()
time.sleep(2)
d=Popen('halcmd setp minmax.0.reset 0 ', shell=True, stdout=PIPE).stdout.read()
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 03 дек 2012, 17:29
Dmitriy
Итоги 5 страниц.
Nick писал(а):Читать обратную связь можно разными способами в зависимости от требований:
1. через LPT читать ЧИМ, не очень точно, но просто со стороны компа + realtime (1000Гц)
2. через COM/usb от любого ацп, +просто -нет realtime (в среднем 100-200Гц).
3. через ацп или serial в MESA +reailtime
Сигналы надо передавать дискретно(да,нет), т.к. регулировка зависит от процесса (резка, прошивка) и вида генератора, т.е. сигналы должен выдавать используемый генератор. Это либо компаратор среднего напряжения, либо по %КЗ и %ХХ.
Всего надо 4 сигнала - ускорить подачу до нормы, замедлить подачу до нормы, назад(реверс) с максимальной скоростью, стоп(обрыв или неустранимое КЗ).
vmarkiv писал(а): Цикл реверса для искрового может повторятся 5-10 раз за секунду
Может и больше -
http://www.sodick.ru/video/linear_flash.swf
Nick писал(а):Но это не очень просто и может не получится так делать постоянно. раз в 10-15 минут еще куда не шло, но не 100 раз в секунду.
nkp писал(а):мне кажеться всеми нужными качествами этого проигрывателя обладает емс - кроме одного (надеюсь пока) - реверса ,даже я бы сказал быстрого реверса.
Это говорит о том что нужны более быстрые, чем манипуляции с G кодом, решения.
Думал перед этим очень долго и пришел к выводу что промстанки имеют буфер-контроллер который именно это и делает. Но его возможности ограничены памятью, по этому некоторые генераторы могут откатиться только на 0.5мм. Маловато и сложновато.
Nick писал(а):Я в том плане, что можно накатать компопнет buffer, в котором будем хранить последовательность выданных шагов на ШД, для реверса, тупо проигрываем ее назад, до потери КЗ. С траектории 100% никуда не сойдем.
Главный вопрос, какой длинны буфер хранить?
Второй вариант, записывать не координаты, а положения осей раз в серво цикл, и отъезжать по ним, точно так же с траектории не уйдем, но реализация немного другая будет.
200*16*4 бита на ось =12800бит... ну может и смодем такой буфер сделать...
Impartial писал(а): Ж код проигрывать нельзя. Не понятно как переместился инструмент за кадр. Нужно работу планировщика траектории записывать.
Наиболее просто (программно не связываясь с железом) в ЕМС это можно сделать всунув в "base thread" кусок кода, который записывает состояние степ/дир-ов и временной промежуток между ними . А если универсально - то нужно цеплять внешний контроллер, который делал бы то же самое.
Т.е. сжать сигналы прямых участков, для уменьшения буфера.
Impartial писал(а):Я говорю из опыта. Делаю именно так.
Это внешнее устройство на STM32. Проект коммерческий, извините.
Человек знает тему!
nkp писал(а):здесь наверное более уместны внешние устройства
Или внешние программы.
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 03 дек 2012, 21:45
vmarkiv
Или использовать сервопривод для осей X и Y с управлением степ-дир , в привод встроить функцию тригера направления , и при КЗ менять значение тригера на противоположное . Будет ( ВОЗМОЖНО ) маленький отскок назад до исчезновения КЗ
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 05 дек 2012, 20:26
Nick
nkp писал(а):тут вопрос именно по емс - как при работающем интерпритаторе (режим авто) быстро (сравнительно) передавать управление(кому?) для работы из буфера????
Это не вопрос, тупо делаем feedhold и выдаем новое задание для stepgen или pid.
Dmitriy писал(а):Слишком сложно, подпрограммы не перевернуть и в итоге не по любому G коду можно сформировать массив...
С подпрограммами в любом случае отъезда не получится. Их в общем случае не перевернуть никак. Тот же mach умеет ездить назад только по ломанной даже без G02 G03.
Эх... времени сейчас нет, может на новогодних каникулах появится - попробую написать.
В принципе все просто нам нужен компонент, с массивом на n*8 бит (step/dir), или float (pos-cmd), float даже лучше - так универсальнее.
Дальше раз в servo-thread проверяем, если текущие значения изменились, то записываем новые значения по адресу pointer, и смещаем pointer на len(float)*4 % n*len(float)*4.
Потом как только появилось КЗ:
0. сохраняем текущий pointer
1. делаем feed hold (это просто пин BIT в нашем компоненте подключается потом как обычно в hal)
2. начинаем раз в servo-thread проигрывать буфер назад и меняем значение pointer.
3. как только пропало КЗ проигрываем буфер вперед до сохраненного pointer. И если нет кз врубаем подачу.
3.а если дошли до сохраненного pointer, а кз не пропало встаем на ESTOP.
еще надо придумать штуку, чтобы при старте заполнять буфер текущей координатой, чтобы в случае случайного КЗ в самом начале станок не ломанулся хрен знает куда.
Вроде все

Re: Электроэрозионная обработка на ЕМС2
Добавлено: 05 дек 2012, 21:24
vmarkiv
Nick , А может по сигналу КЗ менять значение , к примеру net Xvel-cmd pid.0.output на противоположное , типа net Xvel + cmd pid.0.output ?
Re: Электроэрозионная обработка на ЕМС2
Добавлено: 06 дек 2012, 11:28
Dmitriy
Nick писал(а):
С подпрограммами в любом случае отъезда не получится. Их в общем случае не перевернуть никак.
Так если буфер(траектории), то какая разница что было до КЗ. Что программа, что подпрограмма, все равно отъезд по записанной в буфер траектории?
В принципе все просто нам нужен компонент, с массивом на n*8 бит (step/dir), или float (pos-cmd), float даже лучше - так универсальнее.
Не понял, что значит универсальнее, на шаговых двигателях работать будет?
3. как только пропало КЗ проигрываем буфер вперед до сохраненного pointer. И если нет кз врубаем подачу.
3.а если дошли до сохраненного pointer, а кз не пропало встаем на ESTOP.
Наверное так - как только пропало КЗ проигрываем буфер вперед до сохраненного pointer. И если нет КЗ врубаем подачу, а если снова КЗ, то снова проигрываем буфер назад.
А если при проигрывании буфера назад, дошли до ПОСЛЕДНЕГО сохраненного в буфере pointer и КЗ не пропало, встаем на STOP.