Как в EMC2 отобразить ход выполнения программы

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Как в EMC2 отобразить ход выполнения программы

Сообщение umerov »

Как в EMC2 сделать ход выполнения программы, чтоб при выполнении программы видна была строка состояния и видно было примерно прошедешее и оставшееся врямя окончания.
Мне кажется что это должно быть не сложно, можно сделать достаточно просто - считавать например раз в сек. номер текущей стороки и сравнивать с общим количеством строк в программе, и на основе этой информации менять текущее состояние выполнение программы.
А общее время расчитывать примерно можно по совсем простому алгоритму:
a - усредненнное время выполнения строки программы
s1 - текущая строка выполнения программы
s2 - общее количество строк в программе
t - оставщееся врямя, выполнения программы
a = время выполнения 50 строк программы / 50 (как пример)
t = (s2-s1)/a

У меня мало знаний по програмированию в linux и emc, но я так понимаю это надо править исходный код.
P.S. Очень удобно видеть прошедшее время, и примерно осташееся время при фрезеровке сложных деталей, где время фрезеровки может быть 12-18 часов.
У этого алгоритма конечно много недостатков, но в общем я думаю должен работать нормально.

У кого есть какие нибудь идеи как это можно реализовать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение aftaev »

Мач для этого при загрузке Gcode "пробегает" через весь код в холостую.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение Nick »

В axis есть возможность посмотреть общее время на выполнение кода. В принципе можно стартовать таймер совместно с ходом обработки, но постоянно рассчитывать необходимое время, да еще для программы на 12-18 часов это не хорошо - будет отнимать много ресурсов.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение Nick »

О, есть специальный компонент - timer, его можно заставить считать время обработки. Для этого делаем вот такую панельку pyvcp

Код: Выделить всё

<pyvcp>	
	<hbox>			
		<label>			
			<text>"Cycle Time"</text>			
			<font>("Helvetica",14)</font>			
		</label>			
		<u32>			
			<halpin>"time-hours"</halpin>			
			<font>("Helvetica",14)</font>			
			<format>"2d"</format>			
		</u32>			
		<label>			
			<text>":"</text>			
			<font>("Helvetica",14)</font>			
		</label>			
		<u32>			
			<halpin>"time-minutes"</halpin>			
			<font>("Helvetica",14)</font>			
			<format>"2d"</format>			
		</u32>			
		<label>			
			<text>":"</text>			
			<font>("Helvetica",14)</font>			
		</label>			
		<u32>			
			<halpin>"time-seconds"</halpin>			
			<font>("Helvetica",14)</font>			
			<format>"2d"</format>			
		</u32>			
	</hbox>
</pyvcp>
И в post_gui.hal добавляем вот такие строчки:

Код: Выделить всё

loadrt time 
addf time.0 servo-thread 
net cycle-timer time.0.start <= halui.program.is-running 
net cycle-seconds pyvcp.time-seconds <= time.0.seconds 
net cycle-minutes pyvcp.time-minutes <= time.0.minutes 
net cycle-hours pyvcp.time-hours <= time.0.hours
http://www.linuxcnc.org/docview/2.5/htm ... ime.9.html
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение Nick »

В главном меню, то ли в файл, то ли где-то там.
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение umerov »

Да, общее время там видно, но хотелось бы чтоб время менялось динамически по ходу фрезеровки.
А если делать расчеты спериодом раз в 1 сек. или 2 - мне кажется это не сильно дожно томозить.
axis - динамически отрисовывает траекторию - вроде нормально.

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


Вот примерно такая строка состояния чтоб была винзу.
Изображение
Последний раз редактировалось umerov 06 фев 2012, 15:00, всего редактировалось 1 раз.
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение roach »

Nick писал(а):О, есть специальный компонент - timer, его можно заставить считать время обработки. Для этого делаем вот такую панельку pyvcp
а в gladevcp label как такой тип (2d) присвоить? там только 0:S32, 1:float, 2:U32
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение Nick »

Pin-type нужно u32, формат настраивается в text_template
вообще с GladeVCP можно обойтись меньшим количеством label-ов.
Будет 3 label
1: "Time %2d"
2: ":%2d"
3: ":%2d"
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение roach »

Nick писал(а):Pin-type нужно u32, формат настраивается в text_template
вообще с GladeVCP можно обойтись меньшим количеством label-ов.
Будет 3 label
1: "Time %2d"
2: ":%2d"
3: ":%2d"
ща подцеплю. потом выложу всю панельку свою
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение roach »

работает но если нажать и отжать паузу - таймер сбрасывается
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение umerov »

Все расчеты можно делать не realtime.
Может как-то это можно сделать через свой компонент.
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение roach »

umerov писал(а):Все расчеты можно делать не realtime.
Может как-то это можно сделать через свой компонент.
файл свойства - там показывается расчетное время
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение umerov »

файл свойства - там показывается расчетное время
- Я знаю.... пользуюсь... но неудобно когда обработка долгая.
Время он показывает неправильно - иногда врет больше чем в 2 раза от фактического времени.
Это время не учитывает время разгона и торможения осей

Мне надо чтоб он динамически показывал оставщееся время, исли на какомто этапе ускорилась обработка (уменьшилось среднее време обработки одного кадра ) он сам менял оставщееся время.
Если по аналогии, то это как с копированием файлов, когда копириваешь много файлов - время динамически коректриуеться в зависимости от текущей скорости копирования. (Скорость копирования меняеться в зависимости от того или это много мелких файлов или несколько больших)
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение umerov »

Вот примерно фрезеровка, в некоторых местах большая в некоторых местах силно тормозится.
Время в свойствах файла врет гдето в 2,5-3 раза
https://www.youtube.com/watch?v=NTuyyouVorY
https://www.youtube.com/watch?v=4SsRAD_IP2U
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение Nick »

Понятно... Можно сделать и по твоему способу, правда будет врать нещадно.
Делаем так:
1. Качаешь файл распаковываешь в директорию с конфигами.
Загружаем скрипт в hal
loadusr -Wn time-estimator python time-estimator.py
В нем будут пины
h.newpin("out-hour", hal.HAL_U32, hal.HAL_OUT)
h.newpin("out-min", hal.HAL_U32, hal.HAL_OUT)
h.newpin("out-sec", hal.HAL_U32, hal.HAL_OUT)
h.newpin("out-est-hour", hal.HAL_U32, hal.HAL_OUT)
h.newpin("out-est-min", hal.HAL_U32, hal.HAL_OUT)
h.newpin("out-est-sec", hal.HAL_U32, hal.HAL_OUT)
h.newpin("enable", hal.HAL_BIT, hal.HAL_IN)
h.newpin("len", hal.HAL_U32, hal.HAL_IN)
h.newpin("str", hal.HAL_U32, hal.HAL_IN)
h.newpin("reset", hal.HAL_BIT, hal.HAL_IO)
Нужно создать панельку gladeVCP.
В ней сделать 6 label-ов к ним подключить пины time-estimaror.out- sec min hour - это будет время работы и такие же с -est- -расчетное время работы.
Также нужно подключить пин halui.program.is-running пину enable.
Потом нужно сделать окно ввода на панельке и к нему подключить пин len, в окно нужно будет вводить длинну программы, к сожалению не знаю, где найти адрес программы или ее длину.
Также может понадобится кнопочка сбросить таймер, но правда она будет сбрасывать все значения в 0.
И нужно настроить пин str, на него завести номер текущей строки: motion.program-line .

Фух, вроде все :)
Вложения
time-estimator.py.tar.gz
(1.12 КБ) 1439 скачиваний
umerov
Кандидат
Сообщения: 79
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение umerov »

Nick, спасибо. Вечером проверю
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение roach »

тоже попробую, а нагружать систему сильно будет?
roach писал(а):работает но если нажать и отжать паузу - таймер сбрасывается
Nick, а тут что нибудь можно придумать?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение Nick »

Боюсь, что нет... Хотя, можно сделать так завести пин time.out в ClassicLadder и туда же пин паузы, в общем что-то вроде этого:

Код: Выделить всё



        is-running            time.start
-----------|/\|-------------------(S)--------------------------------
 
                                ASSIGNMENT
        is-running            +--------------------+        time.start
-----------|\/|---------------+    %QW0=%QW0+%IW0  +-----------(R)----
                              +--------------------+  
                                                      
                                                      
                    
pkasy
Мастер
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Репутация: 45
Откуда: Владивосток

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение pkasy »

umerov писал(а):Вот примерно фрезеровка
а в какой программе файл подготовлен?
Ginz
Новичок
Сообщения: 3
Зарегистрирован: 10 дек 2013, 15:16
Репутация: 0
Контактная информация:

Re: Как в EMC2 отобразить ход выполнения программы

Сообщение Ginz »

Подскажите, во время работы G кода, есть возможность отобразить время между первым и последним движением станка, и возможно ли отобразить время выполнения выбраного диапазона G кода?
Ответить

Вернуться в «LinuxCNC»