Страница 1 из 2
Кнопка NC-START
Добавлено: 20 июн 2015, 23:02
Lexxa
Собственно задача состоит в том, чтобы на пульте оператора были две кнопки:
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 аналогично ентеру. Как?
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 01:01
Serg
Lexxa писал(а):Праильно сделать было бы так - оператор вводит несколько строк, маркером выделяется нужная и по нажатию NC START начинают отрабатываться команды подряд, начиная с выделенной маркером с учетом покадровости.
Кто мешает запустить любимый редактор, ввести несколько команд и исполнять их как обычную программу хоть покадрово, хоть целиком?
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 03:00
Lexxa
да никто не мешает, есть просто общепринятые стандарты, о которых я и написал
Просто в этой части linuxcnc напоминает cd-плеер - play, stop, pause, random
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 04:12
NightV
Lexxa в чем-то прав
нет жесткого разделениея между режимами
мало того, это никак не отоброжается
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 08:40
Serg
Lexxa писал(а):да никто не мешает, есть просто общепринятые стандарты, о которых я и написал
Вообще-то в промстойках это именно так и происходит - запускается редактор программ, где можно писать команды и выполнять их покадрово или все сразу...
Пользуя LinuxCNC нужно уяснить, что интерфейс axis - это не единственный интерфейс, который призван удовлетворить всех, а всего лишь один из многих, предлагаемых в качестве примера, их можно использовать или написать свой так, как больше нравится.
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 09:54
Lexxa
UAVpilot писал(а):запускается редактор программ
редактор или не редактор - это название, я обрисовал суть
axis тут непричем - в halui например те же пины run, pause,resume, stop, поэтому и интерфейсы вседо единого с этими кнопками, поэтому в nml командах те же команды.
откройте любой симулятор пром стойк и посмотрите как оно там сделано - оно везде сделано удобно.
UAVpilot, при всем уважении, незамечать проблему не равно ее решить
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 10:15
nkp
концептуально мы уже это обсуждали (в mygui) ...
я тогда пробовал решить это ладдером:
по некоторым причинам (не от меня зависящим))) это было недоделано (управляется "обычно - мышом и клавой))
так что можно "продолжить"
===============
только лишь двумя "главными" кнопками не обойтись - нужен переключатель режимов ,джог "разделить" на 3-4 подрежима(обычный,инкрем., mpg) и тд.
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 11:23
Lexxa
nkp писал(а):только лишь двумя "главными" кнопками не обойтись - нужен переключатель режимов ,джог "разделить" на 3-4 подрежима(обычный,инкрем., mpg) и тд.
Это я уже сделал. Остались две кнопки
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 11:51
Nick
Модно в axisrc сделать bind твоей кнопки на клавишу выполнить в режиме mdi.
А все остальное вроде и так должно работать.
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 12:56
Serg
Lexxa писал(а):откройте любой симулятор пром стойк и посмотрите как оно там сделано - оно везде сделано удобно.
UAVpilot, при всем уважении, незамечать проблему не равно ее решить
Fanuc подойдёт?
При переключении в MDI появляется пустое окно редактора программ, при вводе команды и нажатии кнопки Ввод введённая команда появляется в первой строчке редактора и чтоб её выполнить нужно нажать "Cycle Start".
Как можно увидеть проблему там, где её нет?
P.S. Кстати об удобствах: тут есть товарищ, который чуть больше года поработал на фрезере с LinuxCNC (AG-400), а сейчас ему приходится ещё работать и на ОЦ со стойкой Fanuc. Так вот он уже интересовался нельзя-ли Fanuc выкинуть, а LinuxCNC поставить...

Re: Кнопка NC-START
Добавлено: 21 июн 2015, 14:55
nkp
Lexxa писал(а):Это я уже сделал. Остались две кнопки
так в зависимости от того , как ты "уже сделал" переключение режимов , и решается задача "двух кнопок"...(и всего остального)
выкладывай свое решение по режимам , и тогда ясно будет - как помогать тебе с CYCLE START...
а иначе - пустая тема...(имхо)
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 17:46
Lexxa
UAVpilot писал(а):Fanuc подойдёт?
Подойдет. Подойдет и сименс и хайденхайн и фагор и митсубиши - одинаково у всех, кроме Lcnc
Мне мануалом не надо - я их пускаю по несколько штук в месяц и фанук и хайден и сименс, всего хватает.
В фануке открывается окно редактора (я его называл окном MDI, но название не важно), туда вводится
набор команд, который отрабатывается последовательно. Можно одну строку,можно несколько - сколько душе угодно. После отработки содержимое редактора удаляется (или не удаляется, если включен параметр не удалять). Удаляется и при нажатии ресета (или не удаляется, если включен соответствующий параметр).
В LCNC же вводишь команду и она тут же отработалась и ты исравить ее уже ты не можешь и это косяк, ибо фактор Ч никто не отменял.
В пром стойках - ввел, проверил, на крайняк передумал, исправил и удалил.
Это очень удобно при написании и отработке каких-то нюансов.
В LCNC есть маааааасса вкусностей, но недостатки в корректорах и кривой MDI очень существенны.
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 18:28
Lexxa
nkp писал(а):"уже сделал" переключение режимов
Ладдером.
Имеем два галетника, один энкодер, кнопки и gmoccapy
Галетники выбирают инкремент для режима джог или маховичек.
Если включен режим manual и галетник "1" в режиме jog (в gmoccapy это кнопка "continuous") то от хардовых (и софтовых) кнопок движение происходит пока они нажаты. Как только галетником "1" устанавливается инкрементный режим, то от хардовых кнопок (и софтовых) соответствующая ось начинает ездить инкрементно. Состояние галетника "2" в этот момент = положение OFF
Если галетником "2" переключить из OFF в X, Y, Z или 4, то соответствующая ось начнет перемещаться от маховичка с инкрементом равным инкременту галетника "1". если галетник "2" выбрал ось, а галетник "1" в JOG, то от маховичка ось не едет, но может двигаться от кнопок (надо ли это?)
1) Привязка к ладдеру
ladderlogic.hal (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
#Входы для штурвала
net jog-whell-continuous => classicladder.0.in-43 # (JWC) - безразмерные перемещения
net jog-whell-axis-x => classicladder.0.in-47 # (JW-AX) - выбрана ось X
net jog-whell-axis-y => classicladder.0.in-48 # (JW-AY) - выбрана ось Y
net jog-whell-axis-z => classicladder.0.in-49 # (JW-AZ) - выбрана ось Z
net jog-whell-axis-4 => classicladder.0.in-50 # (JW-A4) - выбрана ось 4
#Выходы для штурвала
net jog-whell-x => classicladder.0.out-18 # (JWX) - маховичек для X включен
net jog-whell-y => classicladder.0.out-19 # (JWY) - маховичек для Y включен
net jog-whell-z => classicladder.0.out-20 # (JWZ) - маховичек для Z включен
net jog-whell-4 => classicladder.0.out-21 # (JW4) - маховичек для 4 включен
net jog-mode => classicladder.0.out-22 # (JM) - jog vel mode
2) Привязка к пинам gmoccapy
pendant.hal (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
#Входы для штурвала
net jog-inc-0 <= pendant.jog-continuous # (JWC) - безразмерные перемещения
net jog-inc-1 <= pendant.inc-1 # (JW-100) - перемещение 0.1 мм
net jog-inc-2 <= pendant.inc-01 # (JW-10) - перемещение 0.01 мм
net jog-inc-3 <= pendant.inc-001 # (JW-1) - перемещение 0.001 мм
net jog-whell-axis-x <= pendant.jog-x # (JW-AX) - выбрана ось X
#net jog-whell-axis-y <= pendant.jog-y # (JW-AZ) - выбрана ось Y
net jog-whell-axis-z <= pendant.jog-z # (JW-AZ) - выбрана ось Z
#net jog-whell-axis-4 <= pendant.jog-4 # (JW-AZ) - выбрана ось 4
net jog-mode axis.0.jog-vel-mode
net jog-mode axis.1.jog-vel-mode
net jog-mode axis.2.jog-vel-mode
net scale gmoccapy.jog-increment
net scale axis.0.jog-scale
net scale axis.1.jog-scale
net scale axis.2.jog-scale
#Сигнал инкремента с энкодера для каждой оси
net jog-counts pendant.jog-wheel-counts
net jog-counts axis.0.jog-counts
net jog-counts axis.1.jog-counts
net jog-counts axis.2.jog-counts
net jog-inc-0 gmoccapy.jog-inc-0
net jog-inc-1 gmoccapy.jog-inc-1
net jog-inc-2 gmoccapy.jog-inc-2
net jog-inc-3 gmoccapy.jog-inc-3
#Активная ось
net jog-whell-x => axis.0.jog-enable gmoccapy.x-sel-led # (JWX) - маховичек для X включен
#net jog-whell-y => axis.1.jog-enable gmoccapy.y-sel-led # (JWY) - маховичек для Y включен
net jog-whell-z => axis.2.jog-enable gmoccapy.z-sel-led # (JWZ) - маховичек для Z включен
#net jog-whell-4 => axis.3.jog-enable gmoccapy.4-sel-led # (JW4) - маховичек для 4 включен
Ну и секция ладдера
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 18:46
Serg
Lexxa писал(а):Мне мануалом не надо
Ну извини, в Рязань к тебе его не повезу, поэтому придётся довольствоваться мануалом...
Lexxa писал(а):я их пускаю по несколько штук в месяц и фанук и хайден и сименс, всего хватает.
А я ещё и LinuxCNC хорошо знаю. Дальше что?..
Lexxa писал(а):В фануке открывается окно редактора ...
Зачем всё это?.. Я это уже тут писал:
Re: Кнопка NC-START #5
Да и в мануалах на Fanuc это всё написано, которыми тебе почему-то не надо...
Lexxa писал(а):В LCNC же вводишь команду и она тут же отработалась и ты исравить ее уже ты не можешь и это косяк

Ещё раз: Никто не запрещает в LinuxCNC нажать File -> Edit и спокойно ввести нужные команды, проверить, при желании можно даже красиво раскрасить, если твой любимый редактор это позволяет. Причем при желании делать это можно даже в то время, когда станок что-то пилит.
Не понятно в чём проблема? В том, что LinuxCNC предоставляет не один, а два варианта ручного ввода команд, свой собственный и как в промстойках?
Но если это таки считаешь проблемой, то никто не запрещает сделать так, как тебе нравится (в отличии от промстоек).
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 18:55
Lexxa
UAVpilot, ненее,я ругаться то не собираюсь
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 19:11
Serg
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 19:15
Lexxa
UAVpilot писал(а): File -> Edit и спокойно ввести нужные команды, проверить,
И это уже не режим MDI!!!
Еще раз. В мануале и на фанук и на любую другую стойку, но раз уж фанук, то так:
Там окно ввода есть, в него пишем T1 M6, жмем инпут. Текст появляется в редакторе и
не отрабатывается
Пишем T2 M6 жмем инпут, Текст встает второй строкой.
итд
Написали. Подводим курсор к нужной строке, жмем Cycle Start и начинают отрабатываться программы. Согласен?
В LCNC же все с точностью до наоборот. В строке ввода пишем текст жмем энтер и он отрабатывается и за каким то хреном появляется в истории. Зачем эта история вообще нужна? Ну да бог с ней, есть она и есть.
Подскажи, этот компонент окна MDI где лежит и как называется?
Мне кажется его исправить не особенно сложно.
К настоящему редактору добавить еще одно окно аля настоящему окну ввода команды.
С ентера снимаем команду на отработку и оставляем только на ввод в историю
Добавляем еще одно невидимое глазу окно ввода, в которое копируем перемещением курсора текст из истории/редактора. Сигналом на отработку текста из этого окна будет Cycle Start.
Как считаешь, насколько сложно переделат таким образом компонент MDI?
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 19:29
nkp
Lexxa писал(а):этот компонент окна MDI где лежит и как называется?
"компонент" MDI размазан по скрипту axis.py (если речь про Axis GUI) и в bin есть файл 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)
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 19:33
Lexxa
Задача прикрутить нормальный MDI в gmoccapy, который весь слеплен из glade
А я нашел другой: папка с исходниками/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...
Re: Кнопка NC-START
Добавлено: 21 июн 2015, 19:47
nkp
Lexxa писал(а):прикрутить нормальный MD
команды во всех интерфейсах передаются примерно так:
Код: Выделить всё
import linuxcnc
c = linuxcnc.command()
c.mode(linuxcnc.MODE_MDI)
mdi = 'G0 X5'
c.mdi(mdi)
это рыба...
остальное - импровизация: история , обработка ошибки,очистка,и все ,что ты придумаешь...
запусти емс - любой GUI...
в терминале введи код питона ,который выше ...