продолжение работы после отключения питания компьютера

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

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 » 22 ноя 2017, 14:18

fredy79 писал(а):Тое-сть станок должен во время работы запоминать исполненные кадры, после отключения питания и его возобновлении должен автоматически загрузить файл прерванной обработки, обнулиться и предложить продолжить работу с прерванного кадра.

я имею в виду что при возобновлении питания нажимаем кнопку "идти в дом" при этом должна быть загружена незавершенная программа, и должна быть кнопка "продолжить незавершенную работу"
fredy79
Кандидат
 
Сообщения: 73
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 22 ноя 2017, 15:07

fredy79 писал(а):я имею в виду что при возобновлении питания нажимаем кнопку "идти в дом" при этом должна быть загружена незавершенная программа, и должна быть кнопка "продолжить незавершенную работу"

Я ж только что привёл пример того, что опасно "продолжать незавершенную работу" из какой попало точки...
Предварительно выставив инструмент в некую безопасную точку и запустить обработку с повтора последнего исполненного кадра нет проблем.
Хотя всётаки есть: для полного счастья этот кадр должен содержать движение по всем задействованным осям, а т.к. такое довольно редко, то придётся перед продолжением выполнить некоторые операции вручную.

P.S. Вашу цитату я поправил, чтобы ваши слова не приписывались мне. :)
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15984
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3902
Медальки:
Настоящее имя: Сергей

Re: продолжение работы после отключения питания компьютера

Сообщение nkp » 22 ноя 2017, 15:07

запоминание места ,где остановила авария:
файл numstr.py
Код: Выделить всёРазвернуть
#!/usr/bin/python
import hal
h = hal.component("numstr")
h.newpin("in", hal.HAL_S32, hal.HAL_IN)
h.ready()
tmp = 0
flog = '/home/nkp/linuxcnc-reverse-run/configs/sim/axis/line-number.log'
f = open(flog,'w')
f.write('0')
f.close()
try:
    while 1:
       if h['in'] == 0:
          continue
       else:
         if h['in'] > tmp:
            f = open(flog,'w')
            f.write(str(int(h['in'])))
            f.close()
            tmp = h['in']
except KeyboardInterrupt:
    raise SystemExit


помещаем в папку конфига и делаем исполняемым

-------------------------
в хал файл допишем :
loadusr -Wn numstr python numstr.py
net line motion.program-line => numstr.in
---------------------------
редактируем наше "окошко" (файл restart.py)^
Код: Выделить всёРазвернуть
#!/usr/bin/env python
# --*-- coding:utf-8 --*--

import pygtk
pygtk.require('2.0')
import gtk
import re
import os,sys
import linuxcnc

class WRestart:
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
       
    def go(self):
        s = linuxcnc.stat()
        s.poll()
        filename = s.file
        f = open(filename, "r")
        lines = f.readlines()
        number_line = int(self.entry.get_text())
        string=''
        w=0
        while not re.search("M2\s*",lines[w], re.I):
            w+=1
            if (w <= number_line):
                try:
                    tool =  int(re.search("T\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                try:
                    speed = int(re.search("S\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                try:
                    feed =  int(re.search("F\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass                                       
            if (w >= number_line):
                string+=lines[w]
        string +='M2\n'
        print 'M6 T',tool
        print 'F',feed
        print 'M3 S',speed
        sys.stdout.write(string)
        gtk.main_quit()
             
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("restart")
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(20)

        self.vbox = gtk.VBox(True, 2)
        self.window.add(self.vbox)
       
        #self.entry = gtk.Label()
        #self.entry.set_text("№ line")
        #self.vbox.pack_start(self.entry, True, True, 2)
        #self.entry.show()
               
        fr = open('/home/nkp/linuxcnc-reverse-run/configs/sim/axis/line-number.log','r')
        ls = fr.readlines()
        l = re.sub("^\s+|\n|\r|\s+$", '',  ls[0] )
       
        self.entry = gtk.Entry()
        self.entry.set_max_length(10)
        self.entry.set_text(l)
        self.vbox.pack_start(self.entry, True, True, 2)
        self.entry.show()
       

                     
        self.button = gtk.Button("Open")
        self.button.connect("clicked", lambda x: self.go())
        self.vbox.pack_start(self.button, True, True, 2)
        self.button.show()
        self.vbox.show()
       
       
       
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.show()
       
def main():   
    gtk.main()
    return 0       
if __name__ == "__main__":
    WRestart()
    main()
   
   

теперь оно берет номер строки...
----------------
путь к файлам разумеется подправляем...
nkp
Мастер
 
Сообщения: 7286
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1198
Медальки:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 » 22 ноя 2017, 15:14

UAVpilot писал(а):опасно "продолжать незавершенную работу" из какой попало точки...

так для этого и делается кнопка, отвел на безопасную позицию и нажал))
fredy79
Кандидат
 
Сообщения: 73
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 22 ноя 2017, 15:27

fredy79 писал(а):так для этого и делается кнопка, отвел на безопасную позицию и нажал))

А есть понимание какая позиция безопасна для продолжения? :)
Например если пилим паз или делаем раскрой, то перед нажатием кнопки "продолжение" придётся сначала инструмент во включенном шпинделе завести точно в прорезанный паз - ибо только именно эта позиция будет безопасна всегда (ну почти всегда).
Я думаю пока не стоит заострять внимание, что электричество предпочитает пропадать не строго между кадрами, а где-то посередине выполняемого. :)

fredy79 писал(а):отвел на безопасную позицию и нажал

Т.е. про "функцию автоматического продолжения работы после отключения питания" всётаки уже не говорим? :)
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15984
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3902
Медальки:
Настоящее имя: Сергей

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 » 22 ноя 2017, 15:37

говорим, шпиндель естественно должен включиться до того момента как ось Z пойдет вниз, оси Х и У уже должны стоять в нужном месте и в этом случае фреза опускается вниз со включенным шпинделем при приближении шпинделя к заданной точке скорость оси должна уменьшиться.
UAVpilot писал(а):"функцию автоматического продолжения работы после отключения питания"
и подразумевает нажатие кнопки оператором без поиска нужной строки и позиции. То есть если нет никаких препятствий движению фрезы то нажал кнопку и станок поехал в нужную точку и продолжил, если есть, отвел оси в безопасное место, нажал кнопку и станок продолжил работу.
fredy79
Кандидат
 
Сообщения: 73
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 » 22 ноя 2017, 15:40

UAVpilot писал(а):Я думаю пока не стоит заострять внимание, что электричество предпочитает пропадать не строго между кадрами, а где-то посередине выполняемого.

я писал ранее что продолжение работы должно быть с номера кадра = номер последнего кадра -1
fredy79
Кандидат
 
Сообщения: 73
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 22 ноя 2017, 16:05

Допустим этот кадр выглядит так:
Код: Выделить всёРазвернуть
X100

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

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 » 22 ноя 2017, 16:28

система должна при этом знать позицию У и Z, скорость и направление шпинделя, скорость подачи осей , у строки Х100 есть номер, допустим 50 , продолжение должно быть со строки 50-1=49
fredy79
Кандидат
 
Сообщения: 73
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 22 ноя 2017, 16:39

fredy79 писал(а):и подразумевает нажатие кнопки оператором без поиска нужной строки и позиции.

Так с этим никаких проблем нет - решение не раз описывалось на этом форуме и в этой теме.

fredy79 писал(а):система должна при этом знать позицию У и Z, скорость и направление шпинделя, скорость подачи осей , у строки Х100 есть номер, допустим 50 , продолжение должно быть со строки 50-1=49

Код: Выделить всёРазвернуть
...
N49 X90
N50 X100
...

:)

Ах да, чуть не забыл:
Код: Выделить всёРазвернуть
...
N40 G90 G98 G81 X0 Y0 Z-10 R5
...

:)

P.S. LinuxCNC развивается с 2000-ого года. Вы правда считаете разработчиков LinuxCNC настолько глупыми, что они за 17 лет так и не смогли реализовать сию фичу?.. :)
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15984
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3902
Медальки:
Настоящее имя: Сергей

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 » 22 ноя 2017, 16:50

так я этой фичи не вижу, или я не туда смотрю?
fredy79
Кандидат
 
Сообщения: 73
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 22 ноя 2017, 17:09

автоматического продолжения нет и скорее всего не будет. Причины тут 100500 раз описывались, например в #110.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15984
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3902
Медальки:
Настоящее имя: Сергей

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 » 22 ноя 2017, 17:20

так она особо не нужна там, где время обработки небольшое и обрабатываемый материал не дорогой, эта функция нужна там, где коды из поста 110 не используются, как это реализовано в дешевой Nc-studio? как это реализовано в пультах RichAuto? я работаю с камнем и деревом, в основном гравировка надписей и 3D рельефы, да и многие кому интересна эта функция занимаются подобной работой, так если китайцы смогли это реализовать, неужели это невозможно сделать в Linuxcnc?
fredy79
Кандидат
 
Сообщения: 73
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 22 ноя 2017, 21:28

fredy79 писал(а):я работаю с камнем и деревом, в основном гравировка надписей и 3D рельефы, да и многие кому интересна эта функция занимаются подобной работой

Видимо все вы выбрали не ту систему ЧПУ, наверно надо было брать Nc-studio и RichAuto.

fredy79 писал(а):так если китайцы смогли это реализовать, неужели это невозможно сделать в Linuxcnc?

Сделать чтобы иногда работало, а иногда крушило фрезы, заготовки, оснастку можно - в этой теме описывалось несколько способов по несколько раз.
Китайцы без проблем сделают какую угодно фигню и назовут её как нравится покупателям, а когда эта фигня что-то у вас порушит, то просто не ответят на ваши претензии/вопросы или ответят с стиле "сам дурак", ибо ваши деньги уже давно у них.
Я, например, ни разу не встречал подобную фичу в стойках Fanuc - неужели не могут сделать?.. :)
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15984
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3902
Медальки:
Настоящее имя: Сергей

Re: продолжение работы после отключения питания компьютера

Сообщение nkp » 22 ноя 2017, 22:10

добавил сканирование "модальных" жкодов:
(т.н. строка безопасности и не только)
в массив
Код: Выделить всёРазвернуть
        self.gcodes = [
                      ['G90','G91'], ['G20','G21'], ['G17','G18','G19'],['G54','G55','G56'],
                      ['G41','G42','G40'],
                      ]

помещаем "модальные" группы, выводится активный (один из группы)
Код: Выделить всёРазвернуть
#!/usr/bin/env python
# --*-- coding:utf-8 --*--

import pygtk
pygtk.require('2.0')
import gtk
import re
import os,sys
import linuxcnc

class WRestart:
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
         
    def go(self):
        s = linuxcnc.stat()
        s.poll()
        filename = s.file
        f = open(filename, "r")
        lines = f.readlines()
        number_line = int(self.entry.get_text())
        string_f = ''
        string_s = ''
        str_code = ''
        w=0
        while not re.search("M2\s*",lines[w], re.I):
            w+=1
            if (w <= number_line):
           
                for i in range(len(self.gcodes)):
                    for n in range(len(self.gcodes[i])):
                        if (re.search(str(self.gcodes[i][n]),lines[w], re.I)):
                            self.G[i].append(str(self.gcodes[i][n]))
                           
                try:
                    tool = int(re.search("T\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass                                                         
                try:
                    speed = int(re.search("S\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                try:
                    feed =  int(re.search("F\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                                                           
            if (w >= number_line):
                string_s += lines[w]
               
        string_f += 'M6 T%d\n' % tool
        string_f += 'M3 S%d\n' % speed
        string_f +=' F%d\n'    % feed
       
        for i in self.G:
            try:
                str_code += i[-1] 
            except:
                pass           
        string =  str_code + '\n' + string_f + string_s           
        sys.stdout.write(string)
        gtk.main_quit()
             
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("restart")
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(20)

        self.vbox = gtk.VBox(True, 2)
        self.window.add(self.vbox)
       
        self.gcodes = [
                      ['G90','G91'], ['G20','G21'], ['G17','G18','G19'],['G54','G55','G56'],
                      ['G41','G42','G40'],
                      ]
        self.G = []
        for i in range(len(self.gcodes)):
            self.G.append([])     
        fr = open('line-number.log','r')
        ls = fr.readlines()
        l = re.sub("^\s+|\n|\r|\s+$", '',  ls[0] )
       
        self.entry = gtk.Entry()
        self.entry.set_max_length(10)
        self.entry.set_text(l)
        self.vbox.pack_start(self.entry, True, True, 2)
        self.entry.show()
                             
        self.button = gtk.Button("Open")
        self.button.connect("clicked", lambda x: self.go())
        self.vbox.pack_start(self.button, True, True, 2)
        self.button.show()
        self.vbox.show()
       
       
       
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.show()
       
def main():   
    gtk.main()
    return 0       
if __name__ == "__main__":
    WRestart()
    main()
   
   
nkp
Мастер
 
Сообщения: 7286
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1198
Медальки:

Re: продолжение работы после отключения питания компьютера

Сообщение nkp » 24 ноя 2017, 23:16

https://www.youtube.com/watch?v=fwC-rRY ... e=youtu.be
подумалось еще о таком варианте:
просто сканировать все коды подряд(кроме ж1,2,3) и вставлять их в таком же порядке в шапку "нового" файла
nkp
Мастер
 
Сообщения: 7286
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1198
Медальки:

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 25 ноя 2017, 02:16

Всякие M6 порушат всю автоматику. :)
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15984
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3902
Медальки:
Настоящее имя: Сергей

Re: продолжение работы после отключения питания компьютера

Сообщение nkp » 25 ноя 2017, 15:12

UAVpilot писал(а):Всякие M6 порушат всю автоматику. :)

не совсем понял даже кому это адресовано))
но на всякий случай,если мне - то я не пытаюсь сделать какую то "автоматику" :)
просто ,можно сказать:
1). проверяю выложенные "решения" (вот например в этой теме (наверно) никто так и не попробовал код Ника,
потому что он с ошибкой :) (ну или промолчал))
2). собираю "до кучи" эти мелкие фичи(загрузка последнего файла, запоминание номера строки, старт с этой строки)
пока так ;)
вот между делом убрал везде явные пути, прописываем только в ини файле:
Код: Выделить всёРазвернуть
#!/usr/bin/env python
# --*-- coding:utf-8 --*--

import pygtk
pygtk.require('2.0')
import gtk
import re
import os,sys
import linuxcnc

dir_ini = str(os.getcwd())
all_files = os.listdir(os.getcwd())
n_ini = filter(lambda x: x.endswith('.ini'),all_files)
if len(n_ini)>1 : print 'ini file > 1'
f_ini = os.path.join(dir_ini, n_ini[0])
inifile = linuxcnc.ini(f_ini)

main_file =  inifile.find("RESTART", "MAIN_NAME")
open_file  = inifile.find("DISPLAY", "OPEN_FILE")

class WRestart:
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
               
    def go(self):
        s = linuxcnc.stat()
        s.poll()
        filename = s.file
        if (os.path.basename(filename) == main_file):
            filename = open_file
        f = open(filename, "r")
        lines = f.readlines()
        f.close()
        self.number_line = int(self.entry.get_text())-2

        string_f = ''       
        string_s = ''
        str_code = ''
        s=-1
        while not re.search("M2\s*",lines[s], re.I):
            s+=1
            if (s <= self.number_line):
           
                for i in range(len(self.gcodes)):
                    for n in range(len(self.gcodes[i])):
                        if (re.search(str(self.gcodes[i][n]),lines[s], re.I)):
                            self.G[i].append(str(self.gcodes[i][n]))
                           
                try:
                    tool = int(re.search("T\s*([0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass                                                         
                try:
                    speed = int(re.search("S\s*([0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass
                try:
                    feed =  int(re.search("F\s*([0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass
                try:
                    pos_Z = float(re.search("Z\s*([-0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass                   
                if (s == self.number_line):
                    try:
                        pos_X = float(re.search("X\s*([-0-9.]+)",lines[s], re.I).group(1))
                    except:
                        pass 
                    try:
                        pos_Y = float(re.search("Y\s*([-0-9.]+)",lines[s], re.I).group(1))
                    except:
                        pass                                                                 
            if (s > self.number_line):
                    string_s += lines[s]                   
        try:
            string_f += 'M3 S%d \n' % speed       
            string_f += 'M6 T%d \n' % tool
            string_f += 'F%d \n\n'   % feed
           
            #self.string_add(string_f,'G0 X%f\n',pos_X)
            #self.string_add(string_f,'G0 Y%f\n',pos_Y)
           
            string_f += 'G0 X%f\n'  % pos_X             
            string_f += 'G0 Y%f\n'  % pos_Y
           
            string_f += 'G0 Z%f \n\n'  % (pos_Z + 5)
            string_f += 'F%d \n'   % (feed * 0.1)
            string_f += 'G1 Z%f \n'  % pos_Z
            string_f += 'F%d \n\n'   % feed
        except:
            pass
           
        for i in self.G:
            try:
                str_code += str(i[-1] + ' ')
            except:
                pass
                           
        string =  str_code + '\n' + string_f + string_s + '\n'
        try:
            sys.stdout.write(string)
        finally:
           
            filename = open_file
            f = open(filename, "w")
            f.write(string)
            f.close()
        gtk.main_quit()
       
    def chang(self):
        if self.check.get_active():
            self.go()
        else:
            self.go()     
    def string_add(self,s,reg,v):
        try:
            s += 'reg' % v
        except:
            pass                 
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("restart")
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(20)

        self.vbox = gtk.VBox(True, 2)
        self.window.add(self.vbox)
       
        self.gcodes = [
                      ['G90','G91'], ['G20','G21'], ['G17','G18','G19'],['G54','G55','G56'],
                      ['G41','G42','G40'],['G49'],
                      ]
        self.G = []
        for i in range(len(self.gcodes)):
            self.G.append([])     
        fr = open('line-number.log','r')
        ls = fr.readlines()

        l = re.sub("^\s+|\n|\r|\s+$", '',  ls[0] )
               
        self.entry = gtk.Entry()
        self.entry.set_max_length(10)
        self.entry.set_text(l)
        self.vbox.pack_start(self.entry, True, True, 2)
        self.entry.show()
                             
        self.button = gtk.Button("Open")       

        self.button.connect("clicked", lambda x: self.chang())
           
        self.vbox.pack_start(self.button, True, True, 2)
        self.button.show()
        self.vbox.show()

        self.hbox = gtk.HBox(False, 0)
        self.vbox.add(self.hbox)
        self.hbox.show()
                                 
        self.check = gtk.CheckButton("All codes")
        self.hbox.pack_start(self.check, True, True, 0)
        self.check.set_active(0)
        self.check.show()       
       
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.show()
       
def main():   
    gtk.main()
    return 0       
if __name__ == "__main__":
    WRestart()
    main()
   
   
nkp
Мастер
 
Сообщения: 7286
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1198
Медальки:

Re: продолжение работы после отключения питания компьютера

Сообщение UAVpilot » 25 ноя 2017, 16:36

nkp писал(а):не совсем понял даже кому это адресовано))
но на всякий случай,если мне - то я не пытаюсь сделать какую то "автоматику" :)

Ну эта тема про автоматическое возобновление... :)
Если забыть про это, то всё решается просто - отдельный компонент, который мониторит состояние LinuxCNC (координаты, активные G-коды, номер строки и т.п.) и периодически пишет его в файл. При необходимости продолжения восстанавливает записанное состояние.
Правда всё равно будут нюансы со всякими локальными нестандартными кодами и пинами.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15984
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3902
Медальки:
Настоящее имя: Сергей

Re: продолжение работы после отключения питания компьютера

Сообщение nkp » 25 ноя 2017, 16:42

UAVpilot писал(а):Ну эта тема про автоматическое возобновление..

если ТС посчитает,что мои потуги здесь неуместны - я открою отдельныю тему))
UAVpilot писал(а):Если забыть про это, то всё решается просто - отдельный компонент, который мониторит состояние LinuxCNC (координаты, активные G-коды, номер строки и т.п.) и периодически пишет его в файл. При необходимости продолжения восстанавливает записанное состояние.

так я и выкладываю УЖЕ это решение :)
а "просто" - видать не всем,потому в теме одна вода ))
nkp
Мастер
 
Сообщения: 7286
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1198
Медальки:

Пред.След.

Вернуться в LinuxCNC

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

Зарегистрированные пользователи: aegis, aftaev, Alexandr_, Andy52280, Bing [Bot], borodaagvali, CactusMan, Сергей Саныч, digitcat, Dim11, Dimka_almighty, eastwind, Enot_1, frezeryga, Google [Bot], inFamous, MihaSar, mikehv, Mohawk, new_bember, nickoass, nva-tuning, Олег., Portos, R6MF49T2, Redmn, selenur, Shah, shalek, sima8520, Smlua, stiks, Taganrog, Udjin, usok, vershininv, Yandex [bot], Yarrr

Поделиться

Reputation System ©'