Страница 1 из 2
Журнал учета работы на станке
Добавлено: 30 янв 2019, 16:43
atomichammer
Добрый день.
Есть такая идея - вести журнал учета работы на станке под управлением LinuxCNC. Какая программа, в какое время, сколько раз исполнялась (это минимум). Складывать можно хоть в csv. Реально ли это все реализовать или я много хочу? И если да, то какими компонентами/модулями и пр. Дайте пинок в нужном направлении ) Или охладите мой пыл

Re: Журнал учета работы на станке
Добавлено: 30 янв 2019, 16:54
Serg
Можно, придётся написать свою программку или компонент.
Re: Журнал учета работы на станке
Добавлено: 30 янв 2019, 17:07
atomichammer
UAVpilot писал(а):Можно, придётся написать свою программку или компонент.
Ну уже хорошо. Разницы нет, на чем писать? Есть где-нибудь склад программ и компонентов на посмотреть, как это вообще выглядит (взаимодействие, апилки)?
Re: Журнал учета работы на станке
Добавлено: 30 янв 2019, 17:42
Serg
Проще на python - API и примеры можно в исходниках LinuxCNC можно найти.
Re: Журнал учета работы на станке
Добавлено: 30 янв 2019, 20:04
atomichammer
Ну, по сути, мне нужно отлавливать активные M-коды (M03-M30), что можно сделать через linuxcnc там есть mcodes и писать их время в файл с указанием имени файла, которое есть в axis.py (loaded_file), но хз как его отттуда выковырять...
И это как-то [DISPLAY] - зависимо получается.. а хотелось бы универсально, конечно.
Re: Журнал учета работы на станке
Добавлено: 30 янв 2019, 20:14
MX_Master
Вот в этой теме я делал отчёт, который состоял из имени текущей УП, текущей строки и времени -
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=16099. Думаю, прикрутить слежение за шпинделем не так сложно. Немного изучить
python interface и вперёд.
Re: Журнал учета работы на станке
Добавлено: 30 янв 2019, 20:30
atomichammer
Во, точно, оказывается, есть там file. А я сильно быстро скроллил список и не заметил. Ну уже упрощается все в разы. Завтра попробую. Правда, я уже мочканул штук 100 программ, не пойдет в зачет )
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 12:45
atomichammer
С м-кодами какая-то засада, не получилось. Сделал просто по контролю за шпинделем: запустился - засекаем время старта, остановился - засекаем стоп и пишем все это + имя файла в лог.
Код: Выделить всё
#!/usr/bin/python
from sys import exit
import subprocess
import time
import linuxcnc
s = linuxcnc.stat()
out_filepath = '/home/oper/linuxcnc/configs/Big/exec_log.csv'
state = 0
start_time = 0
finish_time = 0
# main cycle
while 1:
# check program data every 5 seconds
time.sleep(5)
# check for the linuxcnc process state
if 1 > subprocess.Popen(['ps','-C','linuxcnc'], stdout=subprocess.PIPE).communicate()[0].count('linuxcnc'):
# exit if no linuxcnc process found
exit(1)
try:
# update lcnc state data
s.poll()
except linuxcnc.error, detail:
# exit if any lcnc error
exit(1)
else:
if state == 0:
if s.spindle_enabled > 0:
start_time = time.time()
state = 1
elif state == 1:
if s.spindle_enabled == 0:
stop_time = time.time()
# write new data to the output file
f = open(out_filepath, 'a')
f.write(str(s.file) + ',' + str(start_time) + ',' + str(stop_time) + '\n')
f.flush()
f.close()
state = 0
else:
state = 0
exit(0)
Поправить путь
out_filepath к папке на свой.
Файл сохранить как
exec_log.py, сделать исполняемым, положить в
/usr/local/bin
В сustom.hal вписать
loadusr exec_log.py
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 16:40
jkwe45
Скрипт пишет время начала и время окончания и название файла? А время (разницу между началом работы и окончанием не записывает?)
И что произойдёт если например выключат свет? Ничего не сохранится?
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 16:41
SVP
jkwe45 писал(а): Ничего не сохранится?
С какого рожна ? Там вроде есть
atomichammer писал(а):f.close()
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 18:17
atomichammer
jkwe45 писал(а):Скрипт пишет время начала и время окончания и название файла? А время (разницу между началом работы и окончанием не записывает?)
И что произойдёт если например выключат свет? Ничего не сохранится?
Разницу посчитать же можно. Юникстайм, все дела.
Если выключат свет - последняя работа не запишется, что, в принципе, правильно.
К этому делу я ещё прогу пилю, для просмотра и фильтрации по датам, например, или по имени. Можно было бы поднять мускул и апач и генерить хтмлки, но не хочу станочный комп нагружать.
я только третий день на LINUXCNC и первый на пайтоне

Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 19:41
nkp
наверно отслеживать по моменту запуска уп (завершение - по окончанию уп) - это будет "по фен-шую"...
как вариант - следить за состоянием интерпретатора
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 20:01
jkwe45
atomichammer писал(а):Сделал просто по контролю за шпинделем:
А как тогда будет, если у меня в УП несколько раз запускается и выключается шпиндель? Или например у меня автосмена, где то есть несколько включений и выключений?
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 20:08
MX_Master
Очень просто (: берём и дописываем нужный функционал
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 20:30
atomichammer
nkp писал(а):наверно отслеживать по моменту запуска уп (завершение - по окончанию уп) - это будет "по фен-шую"...
как вариант - следить за состоянием интерпретатора
Ну я так и хотел, но чет не срослось. Там есть s.mcodes, но я не смог оттуда полезное вытащить. Наверное, надо через hal
Re: Журнал учета работы на станке
Добавлено: 31 янв 2019, 21:32
nkp
atomichammer писал(а):Наверное, надо через hal
всё упирается в "универсальность")
через hal просто ,но появляются пины в конфиге...
по шпинделю тоже не на 100% универсально - не все станки имеют его
(но большинство))
может стоит добавить что то навроде:
if s.spindle_enabled > 0 and s.task_mode==2:
чтоб работало только в режиме auto
Re: Журнал учета работы на станке
Добавлено: 01 фев 2019, 15:40
atomichammer
Накропал программку-вьюер
ExecLog. Минимально рабочий продукт. Потом, может быть, допилю всякие сортировки и выборки.
Re: Журнал учета работы на станке
Добавлено: 01 фев 2019, 17:34
Serg
nkp писал(а):может стоит добавить что то навроде:
Забей-те вы на шпиндель - помнится там есть признак, что УП выполняется...
Re: Журнал учета работы на станке
Добавлено: 03 фев 2019, 20:37
atomichammer
UAVpilot писал(а):
Забей-те вы на шпиндель - помнится там есть признак, что УП выполняется...
Ну там было шота вроде режима: AUTO, MANUAL, MDI как-то так. Но серавно надо отлавливать еще выход с этого режима: аварийный, или по завершению УП.
Re: Журнал учета работы на станке
Добавлено: 03 фев 2019, 20:44
Serg
Всё гораздо проще:
Код: Выделить всё
halui.program.is−idle bit out
status pin telling that no program is running
halui.program.is−paused bit out
status pin telling that a program is paused
halui.program.is−running bit out
status pin telling that a program is running
halui.program.optional−stop.is−on bit out
status pin telling that the optional stop is on