Полноценная стойка на стол плазменного раскроя на базе ЕМС2

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

Посмотри, что происходит на пинах:
sum2.thc.in0
sum2.thc.out
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

а на sum2.thc.in1?
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

Есть какое-то значение, изменяется в зависимости от положения оси Z, но не равняется ему.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

странно sum2.thc.in1 не 0 и sum2.thc.out =0....
а sum2.thc.gain1 чему равен?

----------
а понял в чем дело, мы sum2 не обновляем.
напиши

Код: Выделить всё

addf sum2.thc  servo-thread
после

Код: Выделить всё

# загружаем sum2
loadrt sum2 names=sum2.thc
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

Все равно не работает, на sum2.thc.in0 ноль, updown.thc.count изменяется при замыкании соответствующих пинов LPT
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

Как так?
Ведь есть net updownd sum2.thc.in0 updown.thc.count
А если поменять setp sum2.thc.gain0 0.001 на другое значение? Хотя на in0 оно влиять не должно, только на общую сумму...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

Может им еще надо conv_s32_float добавить... sum2.thc.in0 должен быть float, а updown.thc.count это целое число.

Код: Выделить всё

	
loadrt conv_s32_float names = conv_s32_float.updown
addf conv_s32_float.updown servo-thread

net conv-in => conv_s32_float.updown.in <= updown.thc.count
net conv-out => conv_s32_float.updown.out <= sum2.thc.in0
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

Ура, заработало!!! Спасибо за помощь! Теперь бы еще modbus подключить, чтоб задавать и читать напряжение. Я так понял нужно ClassicLadder осваивать?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

Угу его самого...
Вот эту тему почитай: LinuxCNC и modbus #1
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

С модбасом разобрался, работает, только напрягает, что появились лишние окна. Но все так же остается вопрос: как зделать, чтоб числа в полях ввода сохранялись, и при следующей загрузке не нужно было бы их вводить? А вообще не плохо было бы зделать выпадающую таблицу с толщинами металла, напряжением, высотой подпрыжки, и только выбирать нужную строку, такое возможно?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

lobzik писал(а): Но все так же остается вопрос: как зделать, чтоб числа в полях ввода сохранялись, и при следующей загрузке не нужно было бы их вводить?
Создаешь файл my-glade.py
В строчку загрузки gladevcp добавляешь -u my-glade.py
В этом файле пишем как написано тут , т.е. что-то вроде:

Код: Выделить всё

def __init__(self, halcomp,builder,useropts):
    self.halcomp = halcomp
    self.builder = builder
    self.useropts = useropts
    self.defaults = {
        # the following names will be saved/restored as method attributes
        # the save/restore mechanism is strongly typed - the variables type will be derived from the type of the
        # initialization value. Currently supported types are: int, float, bool, string
        IniFile.vars : { 'nhits' : 0, 'a': 1.67, 'd': True ,'c' : "a string"},
        # to save/restore all widget's state which might remotely make sense, add this:
        IniFile.widgets : widget_defaults(builder.get_objects())
        # a sensible alternative might be to retain only all HAL output widgets' state:
        # IniFile.widgets: widget_defaults(select_widgets(self.builder.get_objects(), hal_only=True,output_only = True)),
    }

    self.ini_filename = __name__ + '.ini'
    self.ini = IniFile(self.ini_filename,self.defaults,self.builder)
    self.ini.restore_state(self)


import gtk
def on_destroy(self,obj,data=None):
    self.ini.save_state(self)


Плюс нужно какому-нибудь объекту на форме привязать сигнал destroy к функции on_destroy
lobzik писал(а):А вообще не плохо было бы зделать выпадающую таблицу с толщинами металла, напряжением, высотой подпрыжки, и только выбирать нужную строку, такое возможно?
В разделе HAL Python есть виджет Combobox - это как раз выпадающий список.
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

Nick писал(а):Плюс нужно какому-нибудь объекту на форме привязать сигнал destroy к функции on_destroy
Это вообще не понял как делается :(
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

Выделяешь какой-нибудь объект, например главный контейнер и вот сюда пишешь on_destroy
Вложения
Снимок-7.png (1953 просмотра) <a class='original' href='./download/file.php?id=10896&sid=6cc3a2d94432d6639f9c831bf6c2d45f&mode=view' target=_blank>Загрузить оригинал (171.51 КБ)</a>
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

Че-то не работает, появился в пвпке моего станка файл my-glade.pyc и все, значения не сохраняются
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

Скинь свои glade, hal, ini и py файлы.
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

мой-станок.tar.gz
Мои настройки
(7.17 КБ) 1116 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение Nick »

Поколдовал над my-glade.py, вроде работает:

Код: Выделить всё

import hal
import glib
import time
import gtk
from gladevcp.persistence import IniFile,widget_defaults,set_debug,select_widgets
import os,sys


class HandlerClass: 
	def __init__(self, halcomp,builder,useropts):
		self.halcomp = halcomp
		self.builder = builder
		self.useropts = useropts
		self.defaults = {
		    # the following names will be saved/restored as method attributes
		    # the save/restore mechanism is strongly typed - the variables type will be derived from the type of the
		    # initialization value. Currently supported types are: int, float, bool, string
		    IniFile.vars : { 'nhits' : 0, 'a': 1.67, 'd': True ,'c' : "a string"},
		    # to save/restore all widget's state which might remotely make sense, add this:
		    
		 	IniFile.widgets: widget_defaults(select_widgets(self.builder.get_objects(), hal_only=True,output_only = True)),
		   # a sensible alternative might be to retain only all HAL output widgets' state:
		   # IniFile.widgets: widget_defaults(select_widgets(self.builder.get_objects(), hal_only=True,output_only = True)),
		}

		(directory,filename) = os.path.split(__file__)
		(basename,extension) = os.path.splitext(filename)
		self.ini_filename = os.path.join(directory,basename + '.ini')
		self.ini = IniFile(self.ini_filename,self.defaults,self.builder)
		self.ini.restore_state(self)

	def on_destroy(self,obj,data=None):
		self.ini.save_state(self)
		
def get_handlers(halcomp,builder,useropts):
	'''
	this function is called by gladevcp at import time (when this module is passed with '-u <modname>.py')

	return a list of object instances whose methods should be connected as callback handlers
	any method whose name does not begin with an underscore ('_') is a  callback candidate

	the 'get_handlers' name is reserved - gladevcp expects it, so do not change
	'''
	return [HandlerClass(halcomp,builder,useropts)]
Стырил практически все отсюда: http://psha.org.ru/cgit/psha/emc2.git/p ... complex.py
и отсюда: http://linuxcnc.org/docs/html/gui/glade ... n_gladevcp
Аватара пользователя
lobzik
Кандидат
Сообщения: 53
Зарегистрирован: 22 ноя 2012, 14:33
Репутация: 32
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение lobzik »

Все прекрасно работает, спасибо за помощь, но вот возникла еще небольшая проблемка, у меня электрод поиска метала должен отключаться при зажигании плазмы. Как в О-коде зделать выход, который будет включать и выключать реле контрольного електрода?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Сообщение nkp »

M64 P0 - включит motion.digital-out-00 (этот пин соеденяем в хал с выходом месы или парпорта)
M65 P0 - включит motion.digital-out-00
http://www.linuxcnc.org/docs/2.5/html/g ... _m62_m65_a
Ответить

Вернуться в «LinuxCNC»