Журнал учета работы на станке

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Журнал учета работы на станке

Сообщение atomichammer » 30 янв 2019, 16:43

Добрый день.
Есть такая идея - вести журнал учета работы на станке под управлением LinuxCNC. Какая программа, в какое время, сколько раз исполнялась (это минимум). Складывать можно хоть в csv. Реально ли это все реализовать или я много хочу? И если да, то какими компонентами/модулями и пр. Дайте пинок в нужном направлении ) Или охладите мой пыл :oops:
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение UAVpilot » 30 янв 2019, 16:54

Можно, придётся написать свою программку или компонент.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17497
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4341
Медальки:
Настоящее имя: Сергей

Re: Журнал учета работы на станке

Сообщение atomichammer » 30 янв 2019, 17:07

UAVpilot писал(а):Можно, придётся написать свою программку или компонент.

Ну уже хорошо. Разницы нет, на чем писать? Есть где-нибудь склад программ и компонентов на посмотреть, как это вообще выглядит (взаимодействие, апилки)?
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение UAVpilot » 30 янв 2019, 17:42

Проще на python - API и примеры можно в исходниках LinuxCNC можно найти.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17497
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4341
Медальки:
Настоящее имя: Сергей

Re: Журнал учета работы на станке

Сообщение atomichammer » 30 янв 2019, 20:04

Ну, по сути, мне нужно отлавливать активные M-коды (M03-M30), что можно сделать через linuxcnc там есть mcodes и писать их время в файл с указанием имени файла, которое есть в axis.py (loaded_file), но хз как его отттуда выковырять...

И это как-то [DISPLAY] - зависимо получается.. а хотелось бы универсально, конечно.
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение MX_Master » 30 янв 2019, 20:14

Вот в этой теме я делал отчёт, который состоял из имени текущей УП, текущей строки и времени - http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=16099. Думаю, прикрутить слежение за шпинделем не так сложно. Немного изучить python interface и вперёд.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 3824
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 1967
Медальки:
Настоящее имя: Михаил

Re: Журнал учета работы на станке

Сообщение atomichammer » 30 янв 2019, 20:30

MX_Master писал(а):Вот в этой теме я делал отчёт, который состоял из имени текущей УП, текущей строки и времени - http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=16099. Думаю, прикрутить слежение за шпинделем не так сложно. Немного изучить python interface и вперёд.

Во, точно, оказывается, есть там file. А я сильно быстро скроллил список и не заметил. Ну уже упрощается все в разы. Завтра попробую. Правда, я уже мочканул штук 100 программ, не пойдет в зачет )
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение atomichammer » 31 янв 2019, 12:45

С м-кодами какая-то засада, не получилось. Сделал просто по контролю за шпинделем: запустился - засекаем время старта, остановился - засекаем стоп и пишем все это + имя файла в лог.
Код: Выделить всёРазвернуть
#!/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
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение jkwe45 » 31 янв 2019, 16:40

Скрипт пишет время начала и время окончания и название файла? А время (разницу между началом работы и окончанием не записывает?)
И что произойдёт если например выключат свет? Ничего не сохранится?
jkwe45
Кандидат
 
Сообщения: 77
Зарегистрирован: 13 окт 2017, 12:26
Репутация: 5
Настоящее имя: Андрей

Re: Журнал учета работы на станке

Сообщение SVP » 31 янв 2019, 16:41

jkwe45 писал(а): Ничего не сохранится?

С какого рожна ? Там вроде есть

atomichammer писал(а):f.close()
SVP
Мастер
 
Сообщения: 4550
Зарегистрирован: 19 дек 2012, 15:49
Откуда: Москва
Репутация: 696

Re: Журнал учета работы на станке

Сообщение atomichammer » 31 янв 2019, 18:17

jkwe45 писал(а):Скрипт пишет время начала и время окончания и название файла? А время (разницу между началом работы и окончанием не записывает?)
И что произойдёт если например выключат свет? Ничего не сохранится?

Разницу посчитать же можно. Юникстайм, все дела.
Если выключат свет - последняя работа не запишется, что, в принципе, правильно.

К этому делу я ещё прогу пилю, для просмотра и фильтрации по датам, например, или по имени. Можно было бы поднять мускул и апач и генерить хтмлки, но не хочу станочный комп нагружать.

я только третий день на LINUXCNC и первый на пайтоне :roll:
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение nkp » 31 янв 2019, 19:41

наверно отслеживать по моменту запуска уп (завершение - по окончанию уп) - это будет "по фен-шую"...
как вариант - следить за состоянием интерпретатора
nkp
Мастер
 
Сообщения: 7574
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1327
Медальки:

Re: Журнал учета работы на станке

Сообщение jkwe45 » 31 янв 2019, 20:01

atomichammer писал(а):Сделал просто по контролю за шпинделем:

А как тогда будет, если у меня в УП несколько раз запускается и выключается шпиндель? Или например у меня автосмена, где то есть несколько включений и выключений?
jkwe45
Кандидат
 
Сообщения: 77
Зарегистрирован: 13 окт 2017, 12:26
Репутация: 5
Настоящее имя: Андрей

Re: Журнал учета работы на станке

Сообщение MX_Master » 31 янв 2019, 20:08

Очень просто (: берём и дописываем нужный функционал
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 3824
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 1967
Медальки:
Настоящее имя: Михаил

Re: Журнал учета работы на станке

Сообщение atomichammer » 31 янв 2019, 20:30

nkp писал(а):наверно отслеживать по моменту запуска уп (завершение - по окончанию уп) - это будет "по фен-шую"...
как вариант - следить за состоянием интерпретатора

Ну я так и хотел, но чет не срослось. Там есть s.mcodes, но я не смог оттуда полезное вытащить. Наверное, надо через hal
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение nkp » 31 янв 2019, 21:32

atomichammer писал(а):Наверное, надо через hal

всё упирается в "универсальность")
через hal просто ,но появляются пины в конфиге...
по шпинделю тоже не на 100% универсально - не все станки имеют его ;)
(но большинство))
может стоит добавить что то навроде:
if s.spindle_enabled > 0 and s.task_mode==2:
чтоб работало только в режиме auto
nkp
Мастер
 
Сообщения: 7574
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1327
Медальки:

Re: Журнал учета работы на станке

Сообщение atomichammer » 01 фев 2019, 15:40

Накропал программку-вьюер ExecLog. Минимально рабочий продукт. Потом, может быть, допилю всякие сортировки и выборки.
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение UAVpilot » 01 фев 2019, 17:34

nkp писал(а):может стоит добавить что то навроде:

Забей-те вы на шпиндель - помнится там есть признак, что УП выполняется...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17497
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4341
Медальки:
Настоящее имя: Сергей

Re: Журнал учета работы на станке

Сообщение atomichammer » 03 фев 2019, 20:37

UAVpilot писал(а):Забей-те вы на шпиндель - помнится там есть признак, что УП выполняется...

Ну там было шота вроде режима: AUTO, MANUAL, MDI как-то так. Но серавно надо отлавливать еще выход с этого режима: аварийный, или по завершению УП.
atomichammer
Опытный
 
Сообщения: 109
Зарегистрирован: 20 янв 2017, 13:10
Откуда: Алматы
Репутация: 5
Настоящее имя: Anton

Re: Журнал учета работы на станке

Сообщение UAVpilot » 03 фев 2019, 20:44

Всё гораздо проще:
Код: Выделить всёРазвернуть
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
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17497
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4341
Медальки:
Настоящее имя: Сергей

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: Александр Лит, Bing [Bot], Duhas, Евжений, Google [Bot], inFamous, Mamont, Maxekb77, NKS, Rom327, Rustysand, Samodelkin 88, Sashalex24, Skydiving, titanik71, Yandex [bot]

Reputation System ©'