GladeVCP и PyVCP для начинающих

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение alexandr1988 »

Немного не понял принцип работы sample_hold. Он будет сохранять значение axis.1.motor-pos-fb при активации пина sample-hold.N.hold?
Как будет происходить сброс в этом случае?
Я думал просто хоумить ось Y для сброса, так как датчика на ней нет и просто обнулится координата.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение Nick »

по моему да.
Ну как сохраняешь значение, потом его запихиваем в scale.offset. Только надо наверное со знаком минус его сделать = нужен еще 1 scale :).
alexandr1988 писал(а):Я думал просто хоумить ось Y для сброса, так как датчика на ней нет и просто обнулится координата.
Можно и так. Кстати можно для этого кнопочку добавить в gladevcp ;)
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение alexandr1988 »

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

Re: GladeVCP и PyVCP для начинающих

Сообщение Nick »

Да, примерно так
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение alexandr1988 »

alexandr1988 писал(а): нужно взять пин axis.1.motor-pos-fb (для Y) и с ним уже производить операции
хоумить ось Y для сброса
В ходе экспериментов выяснилось, что такой счетчик не сбрасывается хоумом оси.
Чтобы сброс работал, нужно использовать axis.1.joint-pos-fb вместо axis.1.motor-pos-fb.
А так все работает отлично. Nick, спасибо!

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

Re: GladeVCP и PyVCP для начинающих

Сообщение Nick »

alexandr1988 писал(а):Теперь ищу способ сбрасывать счетчик при запущенном gcode, так как кнопка хоума оси неактивна во время работы программы.
Делай, как я говорил - 2 scale и 1 hold
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение alexandr1988 »

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

Re: GladeVCP и PyVCP для начинающих

Сообщение Nick »

еще один scale ;). но если хочешь - можешь и через mult.
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение alexandr1988 »

В итоге работает такой вариант, в hal

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

net positionY axis.1.joint-pos-fb mult2.0.in0 scale.1.in
setp mult2.0.in1 -0.001
net conversion conv-float-s32.0.in mult2.0.out
net SH_in sample-hold.0.in conv-float-s32.0.out
net SH_out sample-hold.0.out conv-s32-float.0.in
setp scale.1.gain 0.001
net offset1 scale.1.offset conv-s32-float.0.out
в Postgui

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

net counter gladevcp.counter scale.1.out
net button gladevcp.reset sample-hold.0.hold
В glade кнопка + label
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

что бы не писать в теме о Gmoccapy перенес вопрос сюда:
вот суть вопроса http://www.cnc-club.ru/forum/viewtopic. ... 68#p207446

установил мастера. все хорошо. но громоздко(((
хотелось бы более независимых инструментов.
вот что я смог дополнить, в архиве.
как сделать чтобы эти параметры передались в MDI?
в формате o<compensation_map> call [50] [50] [1] [1] [4] [25] [1] [2] [0.1] [0]
M02
%
Вложения
comp.rar
(9.37 КБ) 257 скачиваний
||||||||||||
||||||||||||
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

вобщем пока баловался получилось.. осталось только "марафет"навести.
Вложения
comp1.tar.gz
(9.6 КБ) 955 скачиваний
||||||||||||
||||||||||||
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

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

Re: GladeVCP и PyVCP для начинающих

Сообщение Nick »

raddd писал(а):как зделать что бы помнило последние значения?
В файл сохранять...

я не совсем понимаю, ты эту строчку из MDI вызываешь?
o<compensation_map> call [50] [50] [1] [1] [4] [25] [1] [2] [0.1] [0]
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

наоборот в в МДИ вбиваю значения из SpinButton в виде o<compensation_map> call [${Xsize]] [${Ysize]] и так далее...
так вот как запомнить последние данные в SpinButton?
||||||||||||
||||||||||||
Аватара пользователя
verser
Мастер
Сообщения: 1903
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение verser »

raddd писал(а):..как запомнить последние данные в SpinButton?
Добавить в python модуль такой класс
(для просмотра содержимого нажмите на ссылку)

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

from linuxcnc import ini
import ConfigParser

cp = ConfigParser.RawConfigParser
class preferences(cp):
    types = {
        bool: cp.getboolean,
        float: cp.getfloat,
        int: cp.getint,
        str: cp.get,
        repr: lambda self, section, option: eval(cp.get(self, section, option)),
    }

    def __init__(self, path = None):
        cp.__init__(self)
        if not path:
            path = "~/.my_preferences"
        self.fn = os.path.expanduser(path)
        self.read(self.fn)

    def getpref(self, option, default = False, type = bool):
        m = self.types.get(type)
        try:
            o = m(self, "DEFAULT", option)
        except Exception, detail:
            print detail
            self.set("DEFAULT", option, default)
            self.write(open(self.fn, "w"))
            if type in(bool, float, int):
                o = type(default)
            else:
                o = default
        return o

    def putpref(self, option, value, type = bool):
        self.set("DEFAULT", option, type(value))
        self.write(open(self.fn, "w"))
и такую функцию
(для просмотра содержимого нажмите на ссылку)

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

    def get_preference_file_path(self):
        # we get the preference file, if there is none given in the INI
        # we use my.pref in the config dir
        temp = self.inifile.find("DISPLAY", "PREFERENCE_FILE_PATH")
        if not temp:
            machinename = self.inifile.find("EMC", "MACHINE")
            if not machinename:
                temp = os.path.join(CONFIGPATH, "my.pref")
            else:
                machinename = machinename.replace(" ", "_")
                temp = os.path.join(CONFIGPATH, "%s.pref" % machinename)
        print("**** PREFERENCE GETINIINFO **** \n Preference file path: %s" % temp)
        return temp
Далее создать объект класса preferences при инициализации

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

self.prefs = preferences( self.get_preference_file_path() )
И использовать при необходимости сохраниться

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

 self.prefs.putpref( "param_for_saving", self.param_for_saving, float )
или, если извлечь сохраненное

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

self.param_for_saving=self.prefs.getpref( "param_for_saving",0, float)
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

паять и гайки крутить пожалуйста! а вот тут без пояснений никак(((
пробовал копипастить все пропадает и кнопки и вобщем все пропадает...
да и чего пробовать если я не программер)))

куда чего вставлять? в начало в конец? в средину али посля ХХХ строки?
verser писал(а):И использовать при необходимости сохраниться
так мне надо будт сохранять при необходимости?

мне надо как простому юзеру открыл AXIS - Compesation_z а там значения в spinbutton те что были до закрытия...

хелп ми плиз!
||||||||||||
||||||||||||
Аватара пользователя
verser
Мастер
Сообщения: 1903
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение verser »

Инструкция предназначалась не для copy-paste. Она подробно демонстрирует принцип сохранения параметров, который можно применять в разных приложениях. Когда Вы начали вносить свои правки в код, то перестали быть "да-и-чего-пробовать-если-я-не-программер". И это здорово! Вы сможете сделать так, чтобы всё выглядело по-вашему. :good:
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

пока что поправки я внес только в Glade.. там я ооочень мало но разобрался... (там все графическое оно попроще)
в питоне я как кролик в питоне)) по лапкам связан.
даже когда приперло для AVR простенькую прошивку написать писал на ASSEMBLER (там в отладке проще) си и прочие высокоуровневые языки мне непонятны...
вот и прошу того кто шарит.... и я заодно чегото в свою голову положу....
||||||||||||
||||||||||||
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

verser писал(а):Инструкция предназначалась не для copy-paste. Она подробно демонстрирует принцип сохранения параметров, который можно применять в разных приложениях
я вчера находил на нашем форуме от Ника сообщение с сылками и исправленым кодом (помоему человек для плазмореза Z управление делал). с такой же проблемой...по ссылкам ходил... за пивом ходил.. нифига непонял)))
||||||||||||
||||||||||||
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: GladeVCP и PyVCP для начинающих

Сообщение raddd »

ну а пока "вбил" начальные значения через Glade...
все методом научного тыка))))
hal и python файлы не трогал..
Вложения
comp2.tar.gz
(10.2 КБ) 1024 скачивания
||||||||||||
||||||||||||
Ответить

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