Журнал учета работы на станке
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Журнал учета работы на станке
Добрый день.
Есть такая идея - вести журнал учета работы на станке под управлением LinuxCNC. Какая программа, в какое время, сколько раз исполнялась (это минимум). Складывать можно хоть в csv. Реально ли это все реализовать или я много хочу? И если да, то какими компонентами/модулями и пр. Дайте пинок в нужном направлении ) Или охладите мой пыл
Есть такая идея - вести журнал учета работы на станке под управлением LinuxCNC. Какая программа, в какое время, сколько раз исполнялась (это минимум). Складывать можно хоть в csv. Реально ли это все реализовать или я много хочу? И если да, то какими компонентами/модулями и пр. Дайте пинок в нужном направлении ) Или охладите мой пыл
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Журнал учета работы на станке
Можно, придётся написать свою программку или компонент.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Ну уже хорошо. Разницы нет, на чем писать? Есть где-нибудь склад программ и компонентов на посмотреть, как это вообще выглядит (взаимодействие, апилки)?UAVpilot писал(а):Можно, придётся написать свою программку или компонент.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Журнал учета работы на станке
Проще на python - API и примеры можно в исходниках LinuxCNC можно найти.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Ну, по сути, мне нужно отлавливать активные M-коды (M03-M30), что можно сделать через linuxcnc там есть mcodes и писать их время в файл с указанием имени файла, которое есть в axis.py (loaded_file), но хз как его отттуда выковырять...
И это как-то [DISPLAY] - зависимо получается.. а хотелось бы универсально, конечно.
И это как-то [DISPLAY] - зависимо получается.. а хотелось бы универсально, конечно.
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3101
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Вот в этой теме я делал отчёт, который состоял из имени текущей УП, текущей строки и времени - http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=16099. Думаю, прикрутить слежение за шпинделем не так сложно. Немного изучить python interface и вперёд.
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Во, точно, оказывается, есть там file. А я сильно быстро скроллил список и не заметил. Ну уже упрощается все в разы. Завтра попробую. Правда, я уже мочканул штук 100 программ, не пойдет в зачет )MX_Master писал(а):Вот в этой теме я делал отчёт, который состоял из имени текущей УП, текущей строки и времени - http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=16099. Думаю, прикрутить слежение за шпинделем не так сложно. Немного изучить python interface и вперёд.
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
С м-кодами какая-то засада, не получилось. Сделал просто по контролю за шпинделем: запустился - засекаем время старта, остановился - засекаем стоп и пишем все это + имя файла в лог.
Поправить путь out_filepath к папке на свой.
Файл сохранить как exec_log.py, сделать исполняемым, положить в /usr/local/bin
В сustom.hal вписать
loadusr exec_log.py
Код: Выделить всё
#!/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)
Файл сохранить как exec_log.py, сделать исполняемым, положить в /usr/local/bin
В сustom.hal вписать
loadusr exec_log.py
-
- Опытный
- Сообщения: 102
- Зарегистрирован: 13 окт 2017, 12:26
- Репутация: 5
- Настоящее имя: Андрей
- Контактная информация:
Re: Журнал учета работы на станке
Скрипт пишет время начала и время окончания и название файла? А время (разницу между началом работы и окончанием не записывает?)
И что произойдёт если например выключат свет? Ничего не сохранится?
И что произойдёт если например выключат свет? Ничего не сохранится?
-
- Мастер
- Сообщения: 6135
- Зарегистрирован: 19 дек 2012, 15:49
- Репутация: 884
- Откуда: Москва
- Контактная информация:
Re: Журнал учета работы на станке
С какого рожна ? Там вроде естьjkwe45 писал(а): Ничего не сохранится?
atomichammer писал(а):f.close()
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Разницу посчитать же можно. Юникстайм, все дела.jkwe45 писал(а):Скрипт пишет время начала и время окончания и название файла? А время (разницу между началом работы и окончанием не записывает?)
И что произойдёт если например выключат свет? Ничего не сохранится?
Если выключат свет - последняя работа не запишется, что, в принципе, правильно.
К этому делу я ещё прогу пилю, для просмотра и фильтрации по датам, например, или по имени. Можно было бы поднять мускул и апач и генерить хтмлки, но не хочу станочный комп нагружать.
я только третий день на LINUXCNC и первый на пайтоне
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Журнал учета работы на станке
наверно отслеживать по моменту запуска уп (завершение - по окончанию уп) - это будет "по фен-шую"...
как вариант - следить за состоянием интерпретатора
как вариант - следить за состоянием интерпретатора
-
- Опытный
- Сообщения: 102
- Зарегистрирован: 13 окт 2017, 12:26
- Репутация: 5
- Настоящее имя: Андрей
- Контактная информация:
Re: Журнал учета работы на станке
А как тогда будет, если у меня в УП несколько раз запускается и выключается шпиндель? Или например у меня автосмена, где то есть несколько включений и выключений?atomichammer писал(а):Сделал просто по контролю за шпинделем:
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3101
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Очень просто (: берём и дописываем нужный функционал
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Ну я так и хотел, но чет не срослось. Там есть s.mcodes, но я не смог оттуда полезное вытащить. Наверное, надо через halnkp писал(а):наверно отслеживать по моменту запуска уп (завершение - по окончанию уп) - это будет "по фен-шую"...
как вариант - следить за состоянием интерпретатора
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Журнал учета работы на станке
всё упирается в "универсальность")atomichammer писал(а):Наверное, надо через hal
через hal просто ,но появляются пины в конфиге...
по шпинделю тоже не на 100% универсально - не все станки имеют его
(но большинство))
может стоит добавить что то навроде:
if s.spindle_enabled > 0 and s.task_mode==2:
чтоб работало только в режиме auto
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Накропал программку-вьюер ExecLog. Минимально рабочий продукт. Потом, может быть, допилю всякие сортировки и выборки.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Журнал учета работы на станке
Забей-те вы на шпиндель - помнится там есть признак, что УП выполняется...nkp писал(а):может стоит добавить что то навроде:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Опытный
- Сообщения: 136
- Зарегистрирован: 20 янв 2017, 13:10
- Репутация: 7
- Настоящее имя: Anton
- Откуда: Алматы
- Контактная информация:
Re: Журнал учета работы на станке
Ну там было шота вроде режима: AUTO, MANUAL, MDI как-то так. Но серавно надо отлавливать еще выход с этого режима: аварийный, или по завершению УП.UAVpilot писал(а): Забей-те вы на шпиндель - помнится там есть признак, что УП выполняется...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Журнал учета работы на станке
Всё гораздо проще:
Код: Выделить всё
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
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...