Страница 1 из 1

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

Добавлено: 18 апр 2020, 23:48
valik3210
Здравствуйте. Можно как то просмотреть общую статистику наработки станка на linuxcnc?

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

Добавлено: 18 апр 2020, 23:55
Serg
Никак. Ибо никто не мешает управлять станком ещё и какой-нибудь другой программой/компом.

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

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

https://www.youtube.com/watch?v=otWwoI1AaJU

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

Добавлено: 19 апр 2020, 00:36
valik3210
UAVpilot писал(а):Ибо никто не мешает управлять станком ещё и какой-нибудь другой программой/компом.
Я думал что сама программа ведет статистику, было бы интересно посмотреть сколько там оси набегали километров)))

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

Добавлено: 19 апр 2020, 00:46
Serg
"Ведёт", но только для каждой УП:
Снимок экрана от 2020-04-19 00-44-37.png (2794 просмотра) <a class='original' href='./download/file.php?id=180143&sid=b40f196854c9fa19645e2e5d48134f94&mode=view' target=_blank>Загрузить оригинал (109.64 КБ)</a>
Суммированиие придётся самостоятельно делать.

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

Добавлено: 20 апр 2020, 12:31
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

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

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

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

Добавлено: 20 апр 2020, 15:34
nkp
D.L. писал(а):Это будет расстояние пробега инструмента, пробег осей будет больше.
Например G1 X50 Y50 Z50 перемещение осей = 150мм, перемещение по траектории = ~86мм.
да,скорей всего ты прав
честно говоря это всё "на коленке" написал(проверил правда чтоб как то работало :) )
надо подпилить))

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

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

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

Добавлено: 20 апр 2020, 16:07
nkp
D.L. писал(а):И ещё бы пробег для каждого инструмента считать, без учёта быстрых перемещений.
это несложно
номер инстра у нас есть
motion.type тоже есть

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

Добавлено: 20 апр 2020, 16:13
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 (2658 просмотров) <a class='original' href='./download/file.php?id=180277&sid=b40f196854c9fa19645e2e5d48134f94&mode=view' target=_blank>Загрузить оригинал (221.28 КБ)</a>