Думаю, что с такими тяжелыми программами лучше в Axis работать.plotik писал(а):Обнаружил баг. Если файл большой,у меня 10Мб,то он как-бы прогружается,картинку показывает,а вот g-code не отоброжает. После нажатия плэй Zет тупо едет вниз--на кнопку стоп не реагирует--еле успел на грибок шлёпнуть--так бы гравёру
[WIKI] Интерфейс Gmoccapy с нуля.
- verser
- Мастер
- Сообщения: 1903
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
С такими программами лучше без визуализации работать.
Не знаю как gmocappy, но в axis есть (AXIS,hide), если его написать в Gкоде - то после него отрисовка остановится..
Не знаю как gmocappy, но в axis есть (AXIS,hide), если его написать в Gкоде - то после него отрисовка остановится..
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Лучше сделать так:Lexxa писал(а):Когда активен G95 (подача в мм/об), gmoccapy некорректно отображает значение подачи в окне G-code.
Например, делаем
s500 m3
g1 x10 f0.1
Значение подачи остается нулем, при том что в окне регулировки подачи показывается верно.
Обошел это неудобство заменив в строке feed_str на " %.2f" % real_feed
Было
self.widgets.lbl_active_feed.set_label(feed_str)
стало
self.widgets.lbl_active_feed.set_label( " %.2f" % real_feed )
в функции def _update_vel
оригинал:
Код: Выделить всё
def _update_vel( self ):
# self.stat.program_units will return 1 for inch, 2 for mm and 3 for cm
real_feed = float( self.stat.settings[1] * self.stat.feedrate )
if self.stat.program_units != 1:
self.widgets.lbl_current_vel.set_text( "%d" % ( self.stat.current_vel * 60.0 * self.faktor ) )
if "G95" in self.active_gcodes:
feed_str = "%d" % self.stat.settings[1]
real_feed_str = "F %.2f" % real_feed
else:
feed_str = "%d" % self.stat.settings[1]
real_feed_str = "F %.d" % real_feed
else:
self.widgets.lbl_current_vel.set_text( "%.3f" % ( self.stat.current_vel * 60.0 * self.faktor ) )
if "G95" in self.active_gcodes:
feed_str = "%d" % self.stat.settings[1]
real_feed_str = "F %.4f" % real_feed
else:
feed_str = "%.3f" % self.stat.settings[1]
real_feed_str = "F %.3f" % real_feed
# converting 0.0 to string brings nothing, so the string is empty
# happens only on start up
if not real_feed:
feed_str = "0"
self.widgets.lbl_active_feed.set_label( feed_str )
self.widgets.lbl_feed_act.set_text( real_feed_str )Код: Выделить всё
def _update_vel( self ):
# self.stat.program_units will return 1 for inch, 2 for mm and 3 for cm
real_feed = float( self.stat.settings[1] * self.stat.feedrate )
if self.stat.program_units != 1:
self.widgets.lbl_current_vel.set_text( "%d" % ( self.stat.current_vel * 60.0 * self.faktor ) )
if "G95" in self.active_gcodes:
feed_str = "%s" % self.stat.settings[1]
real_feed_str = "F %s" % real_feed
else:
feed_str = "%d" % self.stat.settings[1]
real_feed_str = "F %.d" % real_feed
else:
self.widgets.lbl_current_vel.set_text( "%.3f" % ( self.stat.current_vel * 60.0 * self.faktor ) )
if "G95" in self.active_gcodes:
feed_str = "%s" % self.stat.settings[1]
real_feed_str = "F %s" % real_feed
else:
feed_str = "%.3f" % self.stat.settings[1]
real_feed_str = "F %.3f" % real_feed
# converting 0.0 to string brings nothing, so the string is empty
# happens only on start up
if not real_feed:
feed_str = "0"
real_feed_str = "F 0"
self.widgets.lbl_active_feed.set_label( feed_str )
self.widgets.lbl_feed_act.set_text( real_feed_str )feed_str = "%d" % self.stat.settings[1] меняем на feed_str = "%s" % self.stat.settings[1]
real_feed_str = "F %.2f" % real_feed меняем на real_feed_str = "F %s" % real_feed
real_feed_str = "F %.4f" % real_feed меняем на real_feed_str = "F %s" % real_feed
и подписать feed_str = "0" в условие if not real_feed
В результате
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Заметил такой баг:
при записи в postgui_halfile.hal
где hw_button_x - кнопки, подсоединенные через 7i70
Пуск, стоп и реверс шпинделя от hw кнопок работает криво:
если нажали fwd - запускает шпиндель, после нажатия rev должен произойти резкий реверс. шпиндель же просто дергается и останавливается. при этом заданная скорость шпинделя = 0, кнопка реверс в gmocappy нажата, стоп отпущена. нажатие стоп срабатывает при этом через раз-два.
если те же действия выполнять из GUI, все работает корректно.
Думаю, если в gmocappy для кнопок fwd, stop и rev сделать hal пины и hw_button завести на нее, то проблема решится.
Сложность (для меня) в том, что эти кнопки в gmoccapy сделаны на radiobutton и как к ним прикрутить hal пины я не знаю.
Какие мысли, коллеги?
p.s. если файл настроек .pref gmoccapy удалить, то первое время глючит меньше...
при записи в postgui_halfile.hal
Код: Выделить всё
net halui.spindle.stop <= hw_button_stop
net halui.spindle.forward <= hw_button_fwd
net net halui.spindle.reverse <= hw_button_revПуск, стоп и реверс шпинделя от hw кнопок работает криво:
если нажали fwd - запускает шпиндель, после нажатия rev должен произойти резкий реверс. шпиндель же просто дергается и останавливается. при этом заданная скорость шпинделя = 0, кнопка реверс в gmocappy нажата, стоп отпущена. нажатие стоп срабатывает при этом через раз-два.
если те же действия выполнять из GUI, все работает корректно.
Думаю, если в gmocappy для кнопок fwd, stop и rev сделать hal пины и hw_button завести на нее, то проблема решится.
Сложность (для меня) в том, что эти кнопки в gmoccapy сделаны на radiobutton и как к ним прикрутить hal пины я не знаю.
Какие мысли, коллеги?
p.s. если файл настроек .pref gmoccapy удалить, то первое время глючит меньше...
-
_SERGEY_
- Новичок
- Сообщения: 14
- Зарегистрирован: 21 сен 2016, 12:01
- Репутация: -1
- Настоящее имя: Сергей
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Всем привет! Помогите разобраться, почему не хочет отображать реальные обороты? Оси бегают, шпиндель включается, а программа не видит оборотов. Датчик на холле висит на шпинделе с 4-ю метками на 15пине LPT. Конфигурацию проводил через stepconfig wiz. Пробовал шпиндель индекс, энкодер-фаза-А. Результат - не видит оборотов. В хал скопе сигнал виден. Или с одним датчиком "индекса" это невозможно?
- verser
- Мастер
- Сообщения: 1903
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Дело не в mesa 7i76. Предварительное сканирование было проведено в прямоугольнике c X=1 по X=49, с Y=1 по Y=49, а программа фрезеровки работает совсем в стороне, в другой зоне по X: X=-36 по X=-2, (с Y всё нормально). Зона фрезеровки должна геометрически вписываться в зону сканирования. Скорее всего Вам перед началом следует отменить все отступы по G92 и проч. Ну а мне подумать, как в будущем добавить возможность работать с отступамиplotik писал(а):Прогнал УП. Z никак не меняется в процессе обработки. Всё делал по инструкции.![]()
PS у меня mesa 7i76--может с ней как-то связано.
Уп прилагаю.
-
plotik
- Мастер
- Сообщения: 428
- Зарегистрирован: 10 май 2012, 15:30
- Репутация: 33
- Настоящее имя: Евгений
- Откуда: Rostov-on-Don
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Перемещал я в MDI по g92. Загружал другую УП которая с разу попадает в зону гравировки--та же история.compensation_z.hal у меня другой немного т.к. hostmot и в двух местах изменено
может питоновский скрипт не видит чтот-то?
Код: Выделить всё
unlinkp hm2_5i25.0.stepgen.02.position-cmd
net zpos-cmd-res sum2.1.out => hm2_5i25.0.stepgen.02.position-cmd
"Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
- verser
- Мастер
- Сообщения: 1903
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Можно для начала проверить в HAL Show есть ли реакция на zpos-cmd-res при проезде через отсканированную площадь. Возможно переподключение stepgen не произошло (пока не знаю как правильно, может, кто подскажет), неплохо бы глянуть исправленный compensation_z.halplotik писал(а):compensation_z.hal у меня другой немного т.к. hostmot и в двух местах изменено
-
plotik
- Мастер
- Сообщения: 428
- Зарегистрирован: 10 май 2012, 15:30
- Репутация: 33
- Настоящее имя: Евгений
- Откуда: Rostov-on-Don
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Реакции на zpos-cmd-res при проезде через отсканированную площадь нет.
- Вложения
-
- compensation_z.hal
- (3.11 КБ) 1035 скачиваний
"Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
- verser
- Мастер
- Сообщения: 1903
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
А должен реагировать, независимо от того mesa у вас или встроенный stepgen. Сейчас немного некогда разбираться дальше, готовлю анонс обновлений центроискателей
. Просмотрите реакцию на проезд через отсканированную площадь всех соединений-участников из этого места
Код: Выделить всё
# New Z = (Manual compensation Z) + (Auto compensation Z from filename) + (Z abs)
net sum-adj compensation_z.adj_comp_scale => sum2.0.in0
net sum-comp compensation_z_math.out => sum2.0.in1
net zpos-cmd-comp sum2.0.out => sum2.1.in0
net zpos-cmd => sum2.1.in1
net zpos-cmd-res sum2.1.out => hm2_5i25.0.stepgen.02.position-cmd
-
plotik
- Мастер
- Сообщения: 428
- Зарегистрирован: 10 май 2012, 15:30
- Репутация: 33
- Настоящее имя: Евгений
- Откуда: Rostov-on-Don
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Как сделать 0 в дельте и откуда берутся эти значения никак не пойму--всё время разные. Ноль по Z у меня уже есть.
"Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Доброго времени суток! Подскажите пожалуйста как облегчить gmoccapy правильно. Дело в том, что взял старенькую машину (пентиум 2ггц, 1гб озу, 20гб диск) но управление выведу на отдельную механическую клавиатуру, таким образом некоторые виджеты станут просто ненужны. А насколько я понял чем больше их, тем больше все тормозит. Вопрос в чем, достаточно ли их скрыть в glade или надо удалять и вычищать все упоминания? И еще вопрос есть, вывел веб-камеру (mplayer) на вкладку, по светодиоду на камере вижу, что камера работает постоянно. Можно ли активировать содержимое вкладки только когда она активна?
#RussiaIsATerroristState
- verser
- Мастер
- Сообщения: 1903
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
В файле gmoccapy.py можно подсмотреть что обновляется каждые 100мс и попробовать ненужное отключить
Код: Выделить всё
# every 100 milli seconds this gets called
# check linuxcnc for status, error and then update the readout
def _periodic( self ):
self.stat.poll()
error = self.error_channel.poll()
if error:
self._show_error( error )
if self.gcodes != self.stat.gcodes:
self._update_active_gcodes()
if self.mcodes != self.stat.mcodes:
self._update_active_mcodes()
if self.lathe_mode:
if "G8" in self.active_gcodes and self.diameter_mode:
self._switch_to_g7( False )
elif "G7" in self.active_gcodes and not self.diameter_mode:
self._switch_to_g7( True )
self._update_vel()
self._update_coolant()
self._update_spindle()
self._update_halui_pin()
self.widgets.lbl_time.set_label( strftime( "%H:%M:%S" ) + "\n" + strftime( "%d.%m.%Y" ) )
# keep the timer running
return True
-
Фрост
- Мастер
- Сообщения: 393
- Зарегистрирован: 28 окт 2013, 00:18
- Репутация: 23
- Настоящее имя: Сергей
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Помогите подключить внешний резистор к ползункам скорости.
Что имею на данный момент - scale out значения в диапазоне от 0 до 1, а дальше перепробовал разные найденные здесь варианты, или ошибка, или нет никакой реакции.
На какой пин gmoccapy должны поступать значения со scale?
Что имею на данный момент - scale out значения в диапазоне от 0 до 1, а дальше перепробовал разные найденные здесь варианты, или ошибка, или нет никакой реакции.
На какой пин gmoccapy должны поступать значения со scale?
- verser
- Мастер
- Сообщения: 1903
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Gmoccapy - это лишь интерфейс с пользователем, подключение внешних устройств здесь идет по общим для linuxcnc правилам. У Вас подготовлен scale.N.out - аналоговый программный выход. У параллельного порта, к примеру, цифровые выходы, поэтому можно, например, использовать ШИМ модуляцию для управления переменным резистором, например, компонент pwmgen, в этом случае предполагается, что резистор понимает управление ШИМ сигналом. Далее scale.N.out на аналоговый вход pwmgen, а цифровой ШИМ выход pwmgen на пин параллельного порта и далее к ножке ШИМ управления резистора.
-
Фрост
- Мастер
- Сообщения: 393
- Зарегистрирован: 28 окт 2013, 00:18
- Репутация: 23
- Настоящее имя: Сергей
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Наверно немного не так объяснил - у меня собрана схема через сом-порт такого типа http://www.cnc-club.ru/forum/viewtopic. ... 55#p172855
Вращая резистор я уже получаю изменение значений в scale.N.out в халметре. Мне нужно связать эти изменения с ползунком, вот тут я и застопорился
Вращая резистор я уже получаю изменение значений в scale.N.out в халметре. Мне нужно связать эти изменения с ползунком, вот тут я и застопорился
-
Фрост
- Мастер
- Сообщения: 393
- Зарегистрирован: 28 окт 2013, 00:18
- Репутация: 23
- Настоящее имя: Сергей
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Накидал такое
и в postgui
но все равно при запуске не определяет положение резистора, включает почти на максимум, хотя в халметре значения counts соответствуют положению. Если повернуть от упора до упора, до перезапуска все хорошо. Если раскомментировать, тогда ставит на 100% независимо от положения.
В чем косяк?
Код: Выделить всё
loadrt serport io=0x3f8
addf serport.0.read base-thread
addf serport.0.write base-thread
loadrt encoder num_chan=2
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.counter-mode 1
setp encoder.1.counter-mode 1
loadrt lowpass count=2
addf lowpass.0 servo-thread
addf lowpass.1 servo-thread
setp lowpass.0.gain 0.005
setp lowpass.1.gain 0.005
loadrt conv_float_s32 count=2
addf conv-float-s32.0 servo-thread
addf conv-float-s32.1 servo-thread
setp halui.feed-override.count-enable 0
# setp halui.feed-override.counts 705
setp halui.feed-override.scale 0.0029
net f-vfc serport.0.pin-1-in => encoder.0.phase-A
net f-freq encoder.0.velocity => lowpass.0.in
net f-lpf lowpass.0.out => conv-float-s32.0.in
net f-count halui.feed-override.counts <= conv-float-s32.0.out
setp halui.spindle-override.count-enable 0
# setp halui.spindle-override.counts 664
setp halui.spindle-override.scale 0.0014
net s-vfc serport.0.pin-6-in => encoder.1.phase-A
net s-freq encoder.1.velocity => lowpass.1.in
net s-lpf lowpass.1.out => conv-float-s32.1.in
net s-count halui.spindle-override.counts <= conv-float-s32.1.out Код: Выделить всё
setp halui.feed-override.count-enable 1
setp halui.spindle-override.count-enable 1В чем косяк?
-
Фрост
- Мастер
- Сообщения: 393
- Зарегистрирован: 28 окт 2013, 00:18
- Репутация: 23
- Настоящее имя: Сергей
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Вопрос решил через
ну и соответственно убрал преобразование в s32, scale.x.out выставлены в диапазон от 0 до 1
Теперь как оставил, на том же значении и запускается.
Код: Выделить всё
# Ползунки скорости
gmoccapy.feed-override.analog-enable = 1
net feed2 scale.0.out gmoccapy.feed-override.direct-value
gmoccapy.spindle-override.analog-enable = 1
net spin2 scale.1.out gmoccapy.spindle-override.direct-valueТеперь как оставил, на том же значении и запускается.
- Cross
- Опытный
- Сообщения: 166
- Зарегистрирован: 21 июл 2015, 18:29
- Репутация: 4
- Настоящее имя: Артем
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Скажите, что я не так делаю? Не хочет вызывать подпрограмму Auto Tool Measurement, ругается...
- verser
- Мастер
- Сообщения: 1903
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: [WIKI] Интерфейс Gmoccapy с нуля.
Хорошо бы глянуть ваши файлы конфигурации (архив папки sim.gmoccapy)
