Страница 13 из 14

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

Добавлено: 11 янв 2013, 14:20
Nick
Посмотри, что происходит на пинах:
sum2.thc.in0
sum2.thc.out

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

Добавлено: 11 янв 2013, 14:28
lobzik
нули там

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

Добавлено: 11 янв 2013, 14:41
Nick
а на sum2.thc.in1?

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

Добавлено: 11 янв 2013, 15:02
lobzik
Есть какое-то значение, изменяется в зависимости от положения оси Z, но не равняется ему.

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

Добавлено: 11 янв 2013, 15:26
Nick
странно sum2.thc.in1 не 0 и sum2.thc.out =0....
а sum2.thc.gain1 чему равен?

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

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

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

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

# загружаем sum2
loadrt sum2 names=sum2.thc

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

Добавлено: 11 янв 2013, 16:30
lobzik
Все равно не работает, на sum2.thc.in0 ноль, updown.thc.count изменяется при замыкании соответствующих пинов LPT

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

Добавлено: 11 янв 2013, 16:40
Nick
Как так?
Ведь есть net updownd sum2.thc.in0 updown.thc.count
А если поменять setp sum2.thc.gain0 0.001 на другое значение? Хотя на in0 оно влиять не должно, только на общую сумму...

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

Добавлено: 11 янв 2013, 16:44
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

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

Добавлено: 11 янв 2013, 17:02
lobzik
Ура, заработало!!! Спасибо за помощь! Теперь бы еще modbus подключить, чтоб задавать и читать напряжение. Я так понял нужно ClassicLadder осваивать?

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

Добавлено: 11 янв 2013, 17:49
Nick
Угу его самого...
Вот эту тему почитай: LinuxCNC и modbus #1

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

Добавлено: 15 янв 2013, 09:44
lobzik
С модбасом разобрался, работает, только напрягает, что появились лишние окна. Но все так же остается вопрос: как зделать, чтоб числа в полях ввода сохранялись, и при следующей загрузке не нужно было бы их вводить? А вообще не плохо было бы зделать выпадающую таблицу с толщинами металла, напряжением, высотой подпрыжки, и только выбирать нужную строку, такое возможно?

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

Добавлено: 15 янв 2013, 10:59
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 - это как раз выпадающий список.

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

Добавлено: 15 янв 2013, 11:28
lobzik
Nick писал(а):Плюс нужно какому-нибудь объекту на форме привязать сигнал destroy к функции on_destroy
Это вообще не понял как делается :(

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

Добавлено: 15 янв 2013, 11:36
Nick
Выделяешь какой-нибудь объект, например главный контейнер и вот сюда пишешь on_destroy

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

Добавлено: 15 янв 2013, 12:44
lobzik
Че-то не работает, появился в пвпке моего станка файл my-glade.pyc и все, значения не сохраняются

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

Добавлено: 15 янв 2013, 14:00
Nick
Скинь свои glade, hal, ini и py файлы.

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

Добавлено: 15 янв 2013, 14:15
lobzik
мой-станок.tar.gz
Мои настройки
(7.17 КБ) 1151 скачивание

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

Добавлено: 15 янв 2013, 15:30
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

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

Добавлено: 18 янв 2013, 11:16
lobzik
Все прекрасно работает, спасибо за помощь, но вот возникла еще небольшая проблемка, у меня электрод поиска метала должен отключаться при зажигании плазмы. Как в О-коде зделать выход, который будет включать и выключать реле контрольного електрода?

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

Добавлено: 18 янв 2013, 11:30
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