Полноценная стойка на стол плазменного раскроя на базе ЕМС2
- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Посмотри, что происходит на пинах:
sum2.thc.in0
sum2.thc.out
			
			
									
									
						sum2.thc.in0
sum2.thc.out
- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
а на sum2.thc.in1?
			
			
									
									
						- lobzik
 - Кандидат
 - Сообщения: 53
 - Зарегистрирован: 22 ноя 2012, 14:33
 - Репутация: 32
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Есть какое-то значение, изменяется в зависимости от положения оси Z, но не равняется ему.
			
			
									
									
						- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
странно  sum2.thc.in1 не 0 и  sum2.thc.out =0.... 
а sum2.thc.gain1 чему равен?
----------
а понял в чем дело, мы sum2 не обновляем.
напиши
после
			
			
									
									
						а sum2.thc.gain1 чему равен?
----------
а понял в чем дело, мы sum2 не обновляем.
напиши
Код: Выделить всё
addf sum2.thc  servo-threadКод: Выделить всё
# загружаем sum2
loadrt sum2 names=sum2.thc- lobzik
 - Кандидат
 - Сообщения: 53
 - Зарегистрирован: 22 ноя 2012, 14:33
 - Репутация: 32
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Все равно не работает, на sum2.thc.in0 ноль, updown.thc.count изменяется при замыкании соответствующих пинов LPT
			
			
									
									
						- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Как так? 
Ведь есть net updownd sum2.thc.in0 updown.thc.count
А если поменять setp sum2.thc.gain0 0.001 на другое значение? Хотя на in0 оно влиять не должно, только на общую сумму...
			
			
									
									
						Ведь есть 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: Полноценная стойка на стол плазменного раскроя на базе Е
Может им еще надо  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: Полноценная стойка на стол плазменного раскроя на базе Е
Ура, заработало!!! Спасибо за помощь! Теперь бы еще modbus подключить, чтоб задавать и читать напряжение. Я так понял нужно ClassicLadder осваивать?
			
			
									
									
						- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Угу его самого... 
Вот эту тему почитай: LinuxCNC и modbus #1
			
			
									
									
						Вот эту тему почитай: LinuxCNC и modbus #1
- lobzik
 - Кандидат
 - Сообщения: 53
 - Зарегистрирован: 22 ноя 2012, 14:33
 - Репутация: 32
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
С модбасом разобрался, работает, только напрягает, что появились лишние окна. Но все так же остается вопрос: как зделать, чтоб числа в полях ввода сохранялись, и при следующей загрузке не нужно было бы их вводить? А вообще не плохо было бы зделать выпадающую таблицу с толщинами металла, напряжением, высотой подпрыжки, и только выбирать нужную строку, такое возможно?
			
			
									
									
						- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Создаешь файл my-glade.pylobzik писал(а): Но все так же остается вопрос: как зделать, чтоб числа в полях ввода сохранялись, и при следующей загрузке не нужно было бы их вводить?
В строчку загрузки 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
В разделе HAL Python есть виджет Combobox - это как раз выпадающий список.lobzik писал(а):А вообще не плохо было бы зделать выпадающую таблицу с толщинами металла, напряжением, высотой подпрыжки, и только выбирать нужную строку, такое возможно?
- lobzik
 - Кандидат
 - Сообщения: 53
 - Зарегистрирован: 22 ноя 2012, 14:33
 - Репутация: 32
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Это вообще не понял как делаетсяNick писал(а):Плюс нужно какому-нибудь объекту на форме привязать сигнал destroy к функции on_destroy
- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Выделяешь какой-нибудь объект, например главный контейнер и вот сюда пишешь on_destroy
			
							
			
									
									
						- lobzik
 - Кандидат
 - Сообщения: 53
 - Зарегистрирован: 22 ноя 2012, 14:33
 - Репутация: 32
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Че-то не работает, появился в пвпке моего станка файл my-glade.pyc и все, значения не сохраняются
			
			
									
									
						- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Скинь свои glade, hal, ini и py файлы.
			
			
									
									
						- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Поколдовал над my-glade.py, вроде работает:
Стырил практически все отсюда: http://psha.org.ru/cgit/psha/emc2.git/p ... complex.py
и отсюда: http://linuxcnc.org/docs/html/gui/glade ... n_gladevcp
			
			
									
									
						Код: Выделить всё
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://linuxcnc.org/docs/html/gui/glade ... n_gladevcp
- lobzik
 - Кандидат
 - Сообщения: 53
 - Зарегистрирован: 22 ноя 2012, 14:33
 - Репутация: 32
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
Все прекрасно работает, спасибо за помощь, но вот возникла еще небольшая проблемка, у меня электрод поиска метала должен отключаться при зажигании плазмы. Как в О-коде зделать выход, который будет включать и выключать реле контрольного електрода?
			
			
									
									
						- 
				nkp
 - Мастер
 - Сообщения: 8340
 - Зарегистрирован: 28 ноя 2011, 00:25
 - Репутация: 1589
 - Контактная информация:
 
Re: Полноценная стойка на стол плазменного раскроя на базе Е
M64 P0 - включит motion.digital-out-00  (этот пин соеденяем в хал с выходом месы или парпорта)
M65 P0 - включит motion.digital-out-00
http://www.linuxcnc.org/docs/2.5/html/g ... _m62_m65_a
			
			
									
									
						M65 P0 - включит motion.digital-out-00
http://www.linuxcnc.org/docs/2.5/html/g ... _m62_m65_a
