Страница 1 из 3
вопрос по Look ahead
Добавлено: 17 мар 2015, 10:05
_ardilla_
Доброе утро! Может кто подскажет, ищу по интернету алгоритм опережающего просмотра Look ahead контурной подачи для просмотра всей управляющей программы, второй день ничего найти не могу. Хоть кое где и встречается упоминания, что некоторые разработчики используют просмотр вперед не ограниченного набора кадров, а всей программы целиком, не нашла ни одного конкретного разработчика, ни одной статьи. Может кто знает такие конкретные реализации киньте ссылку пожалуйста
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 10:19
aftaev
_ardilla_ писал(а):Может кто подскажет, ищу по интернету алгоритм опережающего просмотра Look ahead контурной подачи для просмотра всей управляющей программы, второй день ничего найти не могу.
а для чего вам это?
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 10:46
verser
Когда я экспериментировал с "печатью" паяльной маски на pcb, была необходимость заблаговременно включать диспенсер, для чего надо было просмотреть вперед g-code и рассчитать длину траектории до нужной точки. Делал на pyton и подключал в .hal
Такой функцией парсил g-code из mask.ngc
Код: Выделить всё
self.stat = linuxcnc.stat()
self.coords = []
def parse_ngc_file(self) :
self.stat.poll()
f = open("mask.ngc","r")
f_lines = f.readlines()
for line in f_lines :
coords = [str(s) for s in line.split()]
self.coords.append(coords)
А вот так делал анализ длины
Код: Выделить всё
def all_other_segments_length(self, line_num) : # distance from now to Z lift-up point (self.dtg_curr+ all next segment lengths)
# print "line_num:", line_num, self.coords[line_num-1], self.dtg_curr,self.dtg_prev
position = self.stat.actual_position
offset = self.stat.g5x_offset
self.x0 = position[0]-offset[0]
self.y0 = position[1]-offset[1]
# self.z0 = position[2]-offset[2] #actual positions
if self.coords[line_num-1][0] == "G0" :
return 0
dist=float( self.stat.distance_to_go ) # include current segment length
for parsed_coord in self.coords[line_num-1] : # Positions in G1 command
if parsed_coord[0:1] == "X" :
self.x0=float(parsed_coord[1:])
continue
if parsed_coord[0:1] == "Y" :
self.y0=float(parsed_coord[1:])
continue
# if parsed_coord[0:1] == "Z" :
# self.z0=float(parsed_coord[1:])
# continue
xi = self.x0
yi = self.y0
print "x0 y0 :", xi,yi
# zi = self.z0
i=1
while self.coords[line_num-1+i][0] not in ( "G0", "M02", "%") : # iteration for all next points and dist calculation
if self.coords[line_num-1+i][0] not in ( "M64", "M65","G4") :
for parsed_coord in self.coords[line_num-1+i] :
if parsed_coord[0:1] == "X" :
xi=float(parsed_coord[1:])
continue
if parsed_coord[0:1] == "Y" :
yi=float(parsed_coord[1:])
continue
# if parsed_coord[0:1] == "Z" :
# zi=float(parsed_coord[1:])
# continue
dist=dist+math.sqrt((xi-self.x0)**2 + (yi-self.y0)**2) # + (zi-self.z0)**2) # dist calculation
print "xi yi :", xi,yi
self.x0=xi
self.y0=yi
# self.z0=zi
i=i+1
return dist
Идея не дошлифована, поскольку появилась нереально дешевая возможность заказывать pcb мелкими тиражами,
но вдруг окажется полезной
Вот целиком мои потуги, правда, под gmoccapy(есть небольшие отличия, чем для от axis) и сырые, не пиняйте:
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 10:50
michael-yurov
Нужен сам алгоритм, или система чпу, способная просматривать весь код УП?
А если УП будет на 27 ГБ - ее тоже всю просматривать?
В принципе, нет никаких проблем установить просмотр на большое количество строк УП. Проблема будет только с запуском больших УП при такой настройке.
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 10:55
Serg
_ardilla_ писал(а):Может кто знает такие конкретные реализации киньте ссылку пожалуйста
Там всё просто: читаете G-код и рассчитываете нужные вам параметры (например скорость и вектор) и складываете в табличку, длина таблицы = глубина просмотра.
При выполнении кода при необходимости заглядываете в табличку на желаемое количество кадров.
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 12:19
_ardilla_
спасибо огромное за ответы и примеры! Объясню зачем мне это надо, я пишу обзорную статью на тему предварительного просмотра управляющей программы Look ahead. Конечно, никто из разработчиков свои алгоритмы раскрывать не будет, это один из наиболее закрытых алгоритмов в системах ЧПУ. В основном вкратце пишут, что в системе есть такая функциональность и производительность становится лучше.
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 14:38
aftaev
_ardilla_ писал(а):я пишу обзорную статью на тему предварительного просмотра управляющей программы Look ahead.
А для кого или чего статья пишется?
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 14:44
_ardilla_
aftaev, аспирантура
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 15:24
ukr-sasha
Тут еще инемного информации, от производителя контроллера:
http://dynomotion.com/Help/KMotionCNC/T ... reenTP.htm
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 15:37
SVP
_ardilla_ писал(а): это один из наиболее закрытых алгоритмов в системах ЧПУ.
Честно говоря слабо себе представляю какая тут вообще может быть закрытость и вариативность.
Ноу-хау могут и будут в области "что делать в углах" "как обрабатывать круги" итп, но сам
предпросмотр он предпросмотр и есть.
Можете ли привести пример двух разных алгоритмов предпросмотра ?
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 15:47
Сергей Саныч
SVP писал(а):Честно говоря слабо себе представляю какая тут вообще может быть закрытость и вариативность.
Да сколько угодно. Не в самом предпросмотре, а в алгоритме действий по его результатам, то есть в планировании траектории с учетом допустимых отклонений, скоростей, ускорений и т.п.
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 15:50
Serg
Сергей Саныч писал(а):а в алгоритме действий по его результатам
Это уже не алгоритм предпросмотра, алгоритм действий по его результатам.

Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 16:22
_ardilla_
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 16:36
_ardilla_
в этой статье пишут, что некоторые системы могут просматривать всю управляющую программу
http://woodstanki.ru/info/lookahead/
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 17:36
SVP
Какая-то чудовищная статья... с таким не защититься.
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 18:38
_ardilla_
svp, это не моя статья, это в интернете нашла
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 20:31
aftaev
_ardilla_ писал(а):aftaev, аспирантура
как называется будущая профессия?
Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 20:32
NightV
О, вот так порядок! теперь и
_ardilla_ порозовела

Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 20:49
Predator
NightV писал(а):О, вот так порядок! теперь и
_ardilla_ порозовела

Тут ведь вот в чём нюанс - главное, чтобы ты не порозовел снова!

Re: вопрос по Look ahead
Добавлено: 17 мар 2015, 21:01
michael-yurov
Тут небольшая путаница слов получилась.
В статье сказано, что есть системы, которые не имеют ограничения на количество просматриваемых кадров. Это не значит, что они просматривают всю программу. Это значит, что они могут просмотреть любое необходимое количество кадров (если это потребуется).
В некоторых случаях, если в этом есть необходимость, может получиться так, что система просмотрит всю программу управления до конца.
Но не значит, что существуют системы, которые всегда будут просматривать всю программу.