Общая статистика работы
Добавлено: 18 апр 2020, 23:48
Здравствуйте. Можно как то просмотреть общую статистику наработки станка на linuxcnc?
Статьи, обзоры, цены на станки и комплектующие.
https://www.cnc-club.ru/forum/
Я думал что сама программа ведет статистику, было бы интересно посмотреть сколько там оси набегали километров)))UAVpilot писал(а):Ибо никто не мешает управлять станком ещё и какой-нибудь другой программой/компом.
Код: Выделить всё
// . ./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
Код: Выделить всё
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 писал(а):расстояние "пробега" осей
да,скорей всего ты правD.L. писал(а):Это будет расстояние пробега инструмента, пробег осей будет больше.
Например G1 X50 Y50 Z50 перемещение осей = 150мм, перемещение по траектории = ~86мм.
это несложноD.L. писал(а):И ещё бы пробег для каждого инструмента считать, без учёта быстрых перемещений.
Код: Выделить всё
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']))
Код: Выделить всё
net gui:ttime axisui.user.ttime pystat.totalhours