Общая статистика работы

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

Общая статистика работы

Сообщение valik3210 » 18 апр 2020, 23:48

Здравствуйте. Можно как то просмотреть общую статистику наработки станка на linuxcnc?
Опыт приходит с опытом.
CO2 Home Made 1500x1000
valik3210
Кандидат
 
Сообщения: 44
Зарегистрирован: 14 мар 2014, 22:52
Откуда: Беларусь
Репутация: 8

Re: Общая статистика работы

Сообщение UAVpilot » 18 апр 2020, 23:55

Никак. Ибо никто не мешает управлять станком ещё и какой-нибудь другой программой/компом.

Учёт времени работы программы с каким-нибудь станком сделать можно.

В станок можно встроить что-нибудь такое:

https://www.youtube.com/watch?v=otWwoI1AaJU
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20312
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4859
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

Re: Общая статистика работы

Сообщение valik3210 » 19 апр 2020, 00:36

UAVpilot писал(а):Ибо никто не мешает управлять станком ещё и какой-нибудь другой программой/компом.

Я думал что сама программа ведет статистику, было бы интересно посмотреть сколько там оси набегали километров)))
Опыт приходит с опытом.
CO2 Home Made 1500x1000
valik3210
Кандидат
 
Сообщения: 44
Зарегистрирован: 14 мар 2014, 22:52
Откуда: Беларусь
Репутация: 8

Re: Общая статистика работы

Сообщение UAVpilot » 19 апр 2020, 00:46

"Ведёт", но только для каждой УП:

Общая статистика работы Снимок экрана от 2020-04-19 00-44-37.png


Суммированиие придётся самостоятельно делать.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20312
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4859
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

Re: Общая статистика работы

Сообщение nkp » 20 апр 2020, 12:31

подсчитать время можно компонентом
есть стандартный компонент time,
но он считает только время обработки по программе
немного изменив его получаем время при любом движении любой оси ...
заодно подсчитываем пробег
Код: Выделить всёРазвернуть
// . ./scripts/rip-environment
// halcompile --install statistics.comp
component statistics "total time on in seconds";

description """net start:calculate   statistics.velxy <= motion.current-vel""";

license "GPL";
option singleton yes;

pin in float velxy "current velocity";
pin out u32 ts "totalseconds";

pin out float pathxy "total path";

variable double totalnsec;

function _;
;;
#include "rtapi_math.h"
FUNCTION(_) {
    rtapi_u32 totalseconds;
    if(velxy){
    totalnsec =    totalnsec + period;
    totalseconds = totalnsec * 0.000000001;
    ts = totalseconds;
   }
    pathxy = pathxy + velxy * fperiod;       
}

между сессиями сохраняем наше значение в файле,
и в пин выводим время в часах(думаю наработка с точностью до секунд не нужна :) )
и расстояние "пробега" осей в метрах
Код: Выделить всёРазвернуть
#!/usr/bin/python
import hal, time
h = hal.component('pystat')
h.newpin('pathmm', hal.HAL_FLOAT, hal.HAL_IN)
h.newpin('totalseconds', hal.HAL_U32, hal.HAL_IN)

h.newpin('pathmeter', hal.HAL_FLOAT, hal.HAL_OUT)
h.newpin('totalhours', hal.HAL_U32, hal.HAL_OUT)

h.ready()

filename = '.statistics'
f = open(filename, 'r')
lines = f.readlines()   

sec_add  = int(lines[0])
path_add = float(lines[1])

try:
    while 1:
        w = open(filename, 'w')
        ts = h['totalseconds']
        p =  h['pathmm']
        w.write(str(sec_add + ts)+'\n'+str(path_add + p))
        h['pathmeter']  = round((path_add + p) / 1000 ,1)
        h['totalhours'] = (sec_add + ts) / 3600
         
        time.sleep(20)          
except KeyboardInterrupt:
    raise SystemExit

в Hal :
Код: Выделить всёРазвернуть
loadusr -Wn pystat python pystat.py

loadrt statistics
addf   statistics        servo-thread
net    start:calculate   statistics.velxy <= motion.current-vel

net pathmm          pystat.pathmm         <=   statistics.pathxy
net totalseconds    pystat.totalseconds   <=   statistics.ts

осталось как то поудобней выводить информацию...
то есть - читать пины:
Код: Выделить всёРазвернуть
(debug, #<_hal[pystat.totalhours]>)
(debug, #<_hal[pystat.pathmeter]>)
m2
nkp
Мастер
 
Сообщения: 8261
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1540
Медальки:

Re: Общая статистика работы

Сообщение D.L. » 20 апр 2020, 15:24

nkp писал(а):расстояние "пробега" осей

Это будет расстояние пробега инструмента, пробег осей будет больше.
Например G1 X50 Y50 Z50 перемещение осей = 150мм, перемещение по траектории = ~86мм.
D.L.
Мастер
 
Сообщения: 238
Зарегистрирован: 25 авг 2018, 10:11
Откуда: Киров
Репутация: 58
Настоящее имя: Дмитрий

Re: Общая статистика работы

Сообщение nkp » 20 апр 2020, 15:34

D.L. писал(а):Это будет расстояние пробега инструмента, пробег осей будет больше.
Например G1 X50 Y50 Z50 перемещение осей = 150мм, перемещение по траектории = ~86мм.

да,скорей всего ты прав
честно говоря это всё "на коленке" написал(проверил правда чтоб как то работало :) )
надо подпилить))
nkp
Мастер
 
Сообщения: 8261
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1540
Медальки:

Re: Общая статистика работы

Сообщение D.L. » 20 апр 2020, 16:03

И ещё бы пробег для каждого инструмента считать, без учёта быстрых перемещений.
D.L.
Мастер
 
Сообщения: 238
Зарегистрирован: 25 авг 2018, 10:11
Откуда: Киров
Репутация: 58
Настоящее имя: Дмитрий

Re: Общая статистика работы

Сообщение nkp » 20 апр 2020, 16:07

D.L. писал(а):И ещё бы пробег для каждого инструмента считать, без учёта быстрых перемещений.

это несложно
номер инстра у нас есть
motion.type тоже есть
nkp
Мастер
 
Сообщения: 8261
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1540
Медальки:

Re: Общая статистика работы

Сообщение nkp » 20 апр 2020, 16:13

пробег ,как подсказали , пока кажет некорректно,но мото_часы вроде правильно...
Axis как бы устаревший ,но многие пользуют его на станках
вот как можно выводить какую нибудь доп_инфу (с любого пина):
в .axisrc прописываем
Код: Выделить всёРазвернуть
if hal_present == 1 :
    ucomp = hal.component("axisui.user")
    ucomp.newpin('ttime', hal.HAL_U32, hal.HAL_IN)           
    ucomp.ready()

W = root_window.tk.call
W('label','.pane.top.tabs.fmanual.jogf.zerohome.ttime','-text','ttime')
W('grid','.pane.top.tabs.fmanual.jogf.zerohome.ttime','-column','0','-row','2','-sticky','w')

def user_live_update():
   W('.pane.top.tabs.fmanual.jogf.zerohome.ttime','configure','-text','TTime:  %s' % str(ucomp['ttime']))


в postgui.hal:
Код: Выделить всёРазвернуть
net gui:ttime axisui.user.ttime   pystat.totalhours


будет примерно так:
Общая статистика работы Выделение_178.png
nkp
Мастер
 
Сообщения: 8261
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1540
Медальки:


Вернуться в LinuxCNC

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

Зарегистрированные пользователи: Bing [Bot], den_sibirskiy, Duhas, gess05, Google [Bot], JanessaB, Majestic-12 [Bot], raziel, serge.1976, vasilevs, vbif, Yandex [bot]

Reputation System ©'