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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

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

Сообщение umerov » 06 фев 2012, 12:24

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

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

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

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

Сообщение aftaev » 06 фев 2012, 14:32

Мач для этого при загрузке Gcode "пробегает" через весь код в холостую.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 27762
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 4565
Медальки:

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

Сообщение Nick » 06 фев 2012, 14:33

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

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

Сообщение Nick » 06 фев 2012, 14:43

О, есть специальный компонент - 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
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22332
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1349
Заслуга: Developer
Медальки:

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

Сообщение Nick » 06 фев 2012, 14:45

В главном меню, то ли в файл, то ли где-то там.
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22332
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1349
Заслуга: Developer
Медальки:

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

Сообщение umerov » 06 фев 2012, 14:56

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

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


Вот примерно такая строка состояния чтоб была винзу.
Изображение
Последний раз редактировалось umerov 06 фев 2012, 15:00, всего редактировалось 1 раз.
umerov
Кандидат
 
Сообщения: 76
Зарегистрирован: 18 янв 2012, 21:22
Откуда: Украина
Репутация: 17

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

Сообщение roach » 06 фев 2012, 14:57

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

а в gladevcp label как такой тип (2d) присвоить? там только 0:S32, 1:float, 2:U32
Аватара пользователя
roach
Мастер
 
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Медальки:

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

Сообщение Nick » 06 фев 2012, 15:11

Pin-type нужно u32, формат настраивается в text_template
вообще с GladeVCP можно обойтись меньшим количеством label-ов.
Будет 3 label
1: "Time %2d"
2: ":%2d"
3: ":%2d"
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22332
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1349
Заслуга: Developer
Медальки:

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

Сообщение roach » 06 фев 2012, 15:14

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 » 06 фев 2012, 15:25

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

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

Сообщение umerov » 06 фев 2012, 15:29

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

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

Сообщение roach » 06 фев 2012, 15:32

umerov писал(а):Все расчеты можно делать не realtime.
Может как-то это можно сделать через свой компонент.

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

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

Сообщение umerov » 06 фев 2012, 15:51

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

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

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

Сообщение umerov » 06 фев 2012, 15:58

Вот примерно фрезеровка, в некоторых местах большая в некоторых местах силно тормозится.
Время в свойствах файла врет гдето в 2,5-3 раза

umerov
Кандидат
 
Сообщения: 76
Зарегистрирован: 18 янв 2012, 21:22
Откуда: Украина
Репутация: 17

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

Сообщение Nick » 06 фев 2012, 17:23

Понятно... Можно сделать и по твоему способу, правда будет врать нещадно.
Делаем так:
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 Кб) Скачиваний: 347
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22332
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1349
Заслуга: Developer
Медальки:

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

Сообщение umerov » 06 фев 2012, 17:34

Nick, спасибо. Вечером проверю
umerov
Кандидат
 
Сообщения: 76
Зарегистрирован: 18 янв 2012, 21:22
Откуда: Украина
Репутация: 17

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

Сообщение roach » 06 фев 2012, 19:51

тоже попробую, а нагружать систему сильно будет?
roach писал(а):работает но если нажать и отжать паузу - таймер сбрасывается

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

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

Сообщение Nick » 06 фев 2012, 20:40

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


        is-running            time.start
-----------|/\|-------------------(S)--------------------------------

                                ASSIGNMENT
        is-running            +--------------------+        time.start
-----------|\/|---------------+    %QW0=%QW0+%IW0  +-----------(R)----
                              +--------------------+ 
                                                     
                                                     
                   
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22332
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1349
Заслуга: Developer
Медальки:

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

Сообщение pkasy » 11 май 2013, 06:11

umerov писал(а):Вот примерно фрезеровка

а в какой программе файл подготовлен?
pkasy
Мастер
 
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Откуда: Владивосток
Репутация: 45

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

Сообщение Ginz » 10 дек 2013, 15:21

Подскажите, во время работы G кода, есть возможность отобразить время между первым и последним движением станка, и возможно ли отобразить время выполнения выбраного диапазона G кода?
Ginz
Новичок
 
Сообщения: 3
Зарегистрирован: 10 дек 2013, 15:16
Репутация: 0

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: 19bvn58, aftaev, at90, Bing [Bot], Сергей72, Erch_84, FL@gMan, frezeryga, Google [Bot], Kachik, maagalex, nemo-light, PKM, ScrewDriver, sima8520, stav7, trafbite, UAVpilot, Umnik, Yandex [bot]

Поделиться

Reputation System ©'