Кнопка NC-START
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Кнопка NC-START
Собственно задача состоит в том, чтобы на пульте оператора были две кнопки:
1) NC START (CYCLE START)
2) FEED HOLD
с фид холд проблем нет, проблемы с кнопкой NC START.
Казалось бы нет ничего проще, чем завести ее на пин halui.program.run, но нет, не все так просто.
На всех промышленных ЧПУ эта кнопка работает одинаково, это стандарт и так должно быть, и все, что не так это ересь.
Работать она должна несколько по-разному в зависимости от выбранного режима работы
1) Автомат. В Авоматическом режиме и незапущенной программы кнопка запускает программу.
В автоматическом покадровом режиме с незапущенной программой кнопка запускает программу.
В автоматическом покадровом режиме с запущенной программой кнопка выполняет следующий кадр программы.
В автоматическом, покадровом авоматическом, с программным остановом продолжает выполнение в зависимости от состояния покдровости.
2) MDI. В режиме MDI должна выполняться строка, записанная в поле MDI, т.е. аналогично нажатию Enter.
Вообще режим MDI какой-то кривой. Праильно сделать было бы так - оператор вводит несколько строк, маркером выделяется нужная и по нажатию NC START начинают отрабатываться команды подряд, начиная с выделенной маркером с учетом покадровости.
Если работа NC START в автомате реализуется без проблем ладдером, то вот режим MDI ниразу непонятно. Хотя бы заставить работать NC START аналогично ентеру. Как?
1) NC START (CYCLE START)
2) FEED HOLD
с фид холд проблем нет, проблемы с кнопкой NC START.
Казалось бы нет ничего проще, чем завести ее на пин halui.program.run, но нет, не все так просто.
На всех промышленных ЧПУ эта кнопка работает одинаково, это стандарт и так должно быть, и все, что не так это ересь.
Работать она должна несколько по-разному в зависимости от выбранного режима работы
1) Автомат. В Авоматическом режиме и незапущенной программы кнопка запускает программу.
В автоматическом покадровом режиме с незапущенной программой кнопка запускает программу.
В автоматическом покадровом режиме с запущенной программой кнопка выполняет следующий кадр программы.
В автоматическом, покадровом авоматическом, с программным остановом продолжает выполнение в зависимости от состояния покдровости.
2) MDI. В режиме MDI должна выполняться строка, записанная в поле MDI, т.е. аналогично нажатию Enter.
Вообще режим MDI какой-то кривой. Праильно сделать было бы так - оператор вводит несколько строк, маркером выделяется нужная и по нажатию NC START начинают отрабатываться команды подряд, начиная с выделенной маркером с учетом покадровости.
Если работа NC START в автомате реализуется без проблем ладдером, то вот режим MDI ниразу непонятно. Хотя бы заставить работать NC START аналогично ентеру. Как?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Кнопка NC-START
Кто мешает запустить любимый редактор, ввести несколько команд и исполнять их как обычную программу хоть покадрово, хоть целиком?Lexxa писал(а):Праильно сделать было бы так - оператор вводит несколько строк, маркером выделяется нужная и по нажатию NC START начинают отрабатываться команды подряд, начиная с выделенной маркером с учетом покадровости.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Кнопка NC-START
да никто не мешает, есть просто общепринятые стандарты, о которых я и написал
Просто в этой части linuxcnc напоминает cd-плеер - play, stop, pause, random
Просто в этой части linuxcnc напоминает cd-плеер - play, stop, pause, random
- NightV
- Почётный участник

- Сообщения: 6610
- Зарегистрирован: 30 дек 2011, 09:14
- Репутация: 2279
- Настоящее имя: Владимир Айрапетян
- Откуда: Israel
- Контактная информация:
Re: Кнопка NC-START
Lexxa в чем-то прав
нет жесткого разделениея между режимами
мало того, это никак не отоброжается
нет жесткого разделениея между режимами
мало того, это никак не отоброжается
Всё просто! если знаешь КАК!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Кнопка NC-START
Вообще-то в промстойках это именно так и происходит - запускается редактор программ, где можно писать команды и выполнять их покадрово или все сразу...Lexxa писал(а):да никто не мешает, есть просто общепринятые стандарты, о которых я и написал
Пользуя LinuxCNC нужно уяснить, что интерфейс axis - это не единственный интерфейс, который призван удовлетворить всех, а всего лишь один из многих, предлагаемых в качестве примера, их можно использовать или написать свой так, как больше нравится.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Кнопка NC-START
редактор или не редактор - это название, я обрисовал сутьUAVpilot писал(а):запускается редактор программ
axis тут непричем - в halui например те же пины run, pause,resume, stop, поэтому и интерфейсы вседо единого с этими кнопками, поэтому в nml командах те же команды.
откройте любой симулятор пром стойк и посмотрите как оно там сделано - оно везде сделано удобно.
UAVpilot, при всем уважении, незамечать проблему не равно ее решить
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Кнопка NC-START
концептуально мы уже это обсуждали (в mygui) ...
я тогда пробовал решить это ладдером: по некоторым причинам (не от меня зависящим))) это было недоделано (управляется "обычно - мышом и клавой))
так что можно "продолжить"
===============
только лишь двумя "главными" кнопками не обойтись - нужен переключатель режимов ,джог "разделить" на 3-4 подрежима(обычный,инкрем., mpg) и тд.
я тогда пробовал решить это ладдером: по некоторым причинам (не от меня зависящим))) это было недоделано (управляется "обычно - мышом и клавой))
так что можно "продолжить"
===============
только лишь двумя "главными" кнопками не обойтись - нужен переключатель режимов ,джог "разделить" на 3-4 подрежима(обычный,инкрем., mpg) и тд.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Кнопка NC-START
Это я уже сделал. Остались две кнопкиnkp писал(а):только лишь двумя "главными" кнопками не обойтись - нужен переключатель режимов ,джог "разделить" на 3-4 подрежима(обычный,инкрем., mpg) и тд.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Кнопка NC-START
Модно в axisrc сделать bind твоей кнопки на клавишу выполнить в режиме mdi.
А все остальное вроде и так должно работать.
А все остальное вроде и так должно работать.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Кнопка NC-START
Fanuc подойдёт?Lexxa писал(а):откройте любой симулятор пром стойк и посмотрите как оно там сделано - оно везде сделано удобно.
UAVpilot, при всем уважении, незамечать проблему не равно ее решить
При переключении в MDI появляется пустое окно редактора программ, при вводе команды и нажатии кнопки Ввод введённая команда появляется в первой строчке редактора и чтоб её выполнить нужно нажать "Cycle Start".
Как можно увидеть проблему там, где её нет?
P.S. Кстати об удобствах: тут есть товарищ, который чуть больше года поработал на фрезере с LinuxCNC (AG-400), а сейчас ему приходится ещё работать и на ОЦ со стойкой Fanuc. Так вот он уже интересовался нельзя-ли Fanuc выкинуть, а LinuxCNC поставить...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Кнопка NC-START
так в зависимости от того , как ты "уже сделал" переключение режимов , и решается задача "двух кнопок"...(и всего остального)Lexxa писал(а):Это я уже сделал. Остались две кнопки
выкладывай свое решение по режимам , и тогда ясно будет - как помогать тебе с CYCLE START...
а иначе - пустая тема...(имхо)
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Кнопка NC-START
Подойдет. Подойдет и сименс и хайденхайн и фагор и митсубиши - одинаково у всех, кроме LcncUAVpilot писал(а):Fanuc подойдёт?
Мне мануалом не надо - я их пускаю по несколько штук в месяц и фанук и хайден и сименс, всего хватает.
В фануке открывается окно редактора (я его называл окном MDI, но название не важно), туда вводится набор команд, который отрабатывается последовательно. Можно одну строку,можно несколько - сколько душе угодно. После отработки содержимое редактора удаляется (или не удаляется, если включен параметр не удалять). Удаляется и при нажатии ресета (или не удаляется, если включен соответствующий параметр).
В LCNC же вводишь команду и она тут же отработалась и ты исравить ее уже ты не можешь и это косяк, ибо фактор Ч никто не отменял.
В пром стойках - ввел, проверил, на крайняк передумал, исправил и удалил.
Это очень удобно при написании и отработке каких-то нюансов.
В LCNC есть маааааасса вкусностей, но недостатки в корректорах и кривой MDI очень существенны.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Кнопка NC-START
Ладдером.nkp писал(а):"уже сделал" переключение режимов
Имеем два галетника, один энкодер, кнопки и gmoccapy
Галетники выбирают инкремент для режима джог или маховичек.
Если включен режим manual и галетник "1" в режиме jog (в gmoccapy это кнопка "continuous") то от хардовых (и софтовых) кнопок движение происходит пока они нажаты. Как только галетником "1" устанавливается инкрементный режим, то от хардовых кнопок (и софтовых) соответствующая ось начинает ездить инкрементно. Состояние галетника "2" в этот момент = положение OFF
Если галетником "2" переключить из OFF в X, Y, Z или 4, то соответствующая ось начнет перемещаться от маховичка с инкрементом равным инкременту галетника "1". если галетник "2" выбрал ось, а галетник "1" в JOG, то от маховичка ось не едет, но может двигаться от кнопок (надо ли это?)
1) Привязка к ладдеру 2) Привязка к пинам gmoccapy Ну и секция ладдера
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Кнопка NC-START
Ну извини, в Рязань к тебе его не повезу, поэтому придётся довольствоваться мануалом...Lexxa писал(а):Мне мануалом не надо
А я ещё и LinuxCNC хорошо знаю. Дальше что?..Lexxa писал(а):я их пускаю по несколько штук в месяц и фанук и хайден и сименс, всего хватает.
Зачем всё это?.. Я это уже тут писал: Re: Кнопка NC-START #5Lexxa писал(а):В фануке открывается окно редактора ...
Да и в мануалах на Fanuc это всё написано, которыми тебе почему-то не надо...
Lexxa писал(а):В LCNC же вводишь команду и она тут же отработалась и ты исравить ее уже ты не можешь и это косяк
Ещё раз: Никто не запрещает в LinuxCNC нажать File -> Edit и спокойно ввести нужные команды, проверить, при желании можно даже красиво раскрасить, если твой любимый редактор это позволяет. Причем при желании делать это можно даже в то время, когда станок что-то пилит.
Не понятно в чём проблема? В том, что LinuxCNC предоставляет не один, а два варианта ручного ввода команд, свой собственный и как в промстойках?
Но если это таки считаешь проблемой, то никто не запрещает сделать так, как тебе нравится (в отличии от промстоек).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Кнопка NC-START
И это уже не режим MDI!!!UAVpilot писал(а): File -> Edit и спокойно ввести нужные команды, проверить,
Еще раз. В мануале и на фанук и на любую другую стойку, но раз уж фанук, то так:
Там окно ввода есть, в него пишем T1 M6, жмем инпут. Текст появляется в редакторе и не отрабатывается
Пишем T2 M6 жмем инпут, Текст встает второй строкой.
итд
Написали. Подводим курсор к нужной строке, жмем Cycle Start и начинают отрабатываться программы. Согласен?
В LCNC же все с точностью до наоборот. В строке ввода пишем текст жмем энтер и он отрабатывается и за каким то хреном появляется в истории. Зачем эта история вообще нужна? Ну да бог с ней, есть она и есть.
Подскажи, этот компонент окна MDI где лежит и как называется?
Мне кажется его исправить не особенно сложно.
К настоящему редактору добавить еще одно окно аля настоящему окну ввода команды.
С ентера снимаем команду на отработку и оставляем только на ввод в историю
Добавляем еще одно невидимое глазу окно ввода, в которое копируем перемещением курсора текст из истории/редактора. Сигналом на отработку текста из этого окна будет Cycle Start.
Как считаешь, насколько сложно переделат таким образом компонент MDI?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Кнопка NC-START
"компонент" MDI размазан по скрипту axis.py (если речь про Axis GUI) и в bin есть файл mdi , но онLexxa писал(а):этот компонент окна MDI где лежит и как называется?
очень "простой":
Код: Выделить всё
import sys, os
import linuxcnc
if len(sys.argv) > 1:
linuxcnc.nmlfile = sys.argv[1]
del sys.argv[1]
c = linuxcnc.command()
s = linuxcnc.stat()
if len(sys.argv) > 1:
c.mode(linuxcnc.MODE_MDI)
c.mdi(" ".join(sys.argv[1:]))
else:
try:
while 1:
mdi = raw_input("MDI> ")
if mdi == '':
s.poll()
print s.position
else:
c.mode(linuxcnc.MODE_MDI)
c.mdi(mdi)- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Кнопка NC-START
Задача прикрутить нормальный MDI в gmoccapy, который весь слеплен из glade
А я нашел другой: папка с исходниками/lib/python/gladevcp/hal_mdihistory.py
Кроме того что он компонуется из кусков, что там еще делается?
Действия в нем назначаются?
Как я понимаю - нет, просто назначаются свойства в зависимости от режима -machine_on, homed...
А я нашел другой: папка с исходниками/lib/python/gladevcp/hal_mdihistory.py
Код: Выделить всё
#!/usr/bin/env python
# vim: sts=4 sw=4 et
# GladeVcp MDI history widget
#
# Copyright (c) 2011 Pavel Shramov <shramov@mexmat.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
import os, time, string
import gobject, gtk
from hal_widgets import _HalWidgetBase
import linuxcnc
from hal_glib import GStat
from hal_actions import _EMC_ActionBase, ensure_mode
class EMC_MDIHistory(gtk.VBox, _EMC_ActionBase):
__gtype_name__ = 'EMC_MDIHistory'
def __init__(self, *a, **kw):
gtk.VBox.__init__(self, *a, **kw)
self.gstat = GStat()
# if 'NO_FORCE_HOMING' is true, MDI commands are allowed before homing.
inifile = os.environ.get('INI_FILE_NAME', '/dev/null')
self.ini = linuxcnc.ini(inifile)
no_home_required = int(self.ini.find("TRAJ", "NO_FORCE_HOMING") or 0)
path = self.ini.find('DISPLAY', 'MDI_HISTORY_FILE') or '~/.axis_mdi_history'
self.filename = os.path.expanduser(path)
self.model = gtk.ListStore(str)
self.tv = gtk.TreeView()
self.tv.set_model(self.model)
self.cell = gtk.CellRendererText()
self.col = gtk.TreeViewColumn("Command")
self.col.pack_start(self.cell, True)
self.col.add_attribute(self.cell, 'text', 0)
self.tv.append_column(self.col)
self.tv.set_search_column(0)
self.tv.set_reorderable(False)
self.tv.set_headers_visible(True)
scroll = gtk.ScrolledWindow()
scroll.add(self.tv)
scroll.props.hscrollbar_policy = gtk.POLICY_AUTOMATIC
scroll.props.vscrollbar_policy = gtk.POLICY_AUTOMATIC
self.entry = gtk.Entry()
self.entry.set_icon_from_stock(gtk.ENTRY_ICON_SECONDARY, 'gtk-ok')
self.entry.connect('activate', self.submit)
self.entry.connect('icon-press', self.submit)
self.tv.connect('cursor-changed', self.select)
self.pack_start(scroll, True)
self.pack_start(self.entry, False)
self.gstat.connect('state-off', lambda w: self.set_sensitive(False))
self.gstat.connect('state-estop', lambda w: self.set_sensitive(False))
self.gstat.connect('interp-idle', lambda w: self.set_sensitive(self.machine_on() and ( self.is_all_homed() or no_home_required ) ))
self.gstat.connect('interp-run', lambda w: self.set_sensitive(not self.is_auto_mode()))
self.gstat.connect('all-homed', lambda w: self.set_sensitive(self.machine_on()))
self.reload()
self.show_all()
def reload(self):
self.model.clear()
try:
fp = open(self.filename)
except:
return
lines = map(str.strip, fp.readlines())
fp.close()
lines = filter(bool, lines)
for l in lines:
self.model.append((l,))
path = (len(lines)-1,)
self.tv.scroll_to_cell(path)
self.tv.set_cursor(path)
self.entry.set_text('')
def submit(self, *a):
cmd = self.entry.get_text()
if not cmd:
return
ensure_mode(self.stat, self.linuxcnc, linuxcnc.MODE_MDI)
try:
fp = open(self.filename, 'a')
fp.write(cmd + "\n")
fp.close()
except:
pass
self.linuxcnc.mdi(cmd)
last = self.model.append((cmd,))
path = self.model.get_path(last)
self.tv.scroll_to_cell(path)
self.tv.set_cursor(path)
self.entry.set_text('')
self.entry.grab_focus()
def select(self, w):
idx = w.get_cursor()[0]
if idx is None:
return
self.entry.set_text(self.model[idx][0])Действия в нем назначаются?
Как я понимаю - нет, просто назначаются свойства в зависимости от режима -machine_on, homed...
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Кнопка NC-START
команды во всех интерфейсах передаются примерно так:Lexxa писал(а):прикрутить нормальный MD
Код: Выделить всё
import linuxcnc
c = linuxcnc.command()
c.mode(linuxcnc.MODE_MDI)
mdi = 'G0 X5'
c.mdi(mdi)
остальное - импровизация: история , обработка ошибки,очистка,и все ,что ты придумаешь...
запусти емс - любой GUI...
в терминале введи код питона ,который выше ...
