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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
valik3210
Кандидат
Сообщения: 44
Зарегистрирован: 14 мар 2014, 22:52
Репутация: 8
Откуда: Беларусь
Контактная информация:

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

Сообщение valik3210 »

Здравствуйте. Можно как то просмотреть общую статистику наработки станка на linuxcnc?
Опыт приходит с опытом.
CO2 Home Made 1500x1000
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

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

https://www.youtube.com/watch?v=otWwoI1AaJU
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
valik3210
Кандидат
Сообщения: 44
Зарегистрирован: 14 мар 2014, 22:52
Репутация: 8
Откуда: Беларусь
Контактная информация:

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

Сообщение valik3210 »

UAVpilot писал(а):Ибо никто не мешает управлять станком ещё и какой-нибудь другой программой/компом.
Я думал что сама программа ведет статистику, было бы интересно посмотреть сколько там оси набегали километров)))
Опыт приходит с опытом.
CO2 Home Made 1500x1000
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

"Ведёт", но только для каждой УП:
Снимок экрана от 2020-04-19 00-44-37.png (2793 просмотра) <a class='original' href='./download/file.php?id=180143&sid=3549949274436b7f26285be3b10e2047&mode=view' target=_blank>Загрузить оригинал (109.64 КБ)</a>
Суммированиие придётся самостоятельно делать.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

подсчитать время можно компонентом
есть стандартный компонент 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
D.L.
Мастер
Сообщения: 473
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

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

Сообщение D.L. »

nkp писал(а):расстояние "пробега" осей
Это будет расстояние пробега инструмента, пробег осей будет больше.
Например G1 X50 Y50 Z50 перемещение осей = 150мм, перемещение по траектории = ~86мм.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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

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

Сообщение D.L. »

И ещё бы пробег для каждого инструмента считать, без учёта быстрых перемещений.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

D.L. писал(а):И ещё бы пробег для каждого инструмента считать, без учёта быстрых перемещений.
это несложно
номер инстра у нас есть
motion.type тоже есть
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

пробег ,как подсказали , пока кажет некорректно,но мото_часы вроде правильно...
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 (2657 просмотров) <a class='original' href='./download/file.php?id=180277&sid=3549949274436b7f26285be3b10e2047&mode=view' target=_blank>Загрузить оригинал (221.28 КБ)</a>
Ответить

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