.axisrc

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: .axisrc

Сообщение steals_y2k »

llur писал(а): С внешней кнопки было б волшебно
есть же Естоп?
Аналогичным образом сделать другую "железную" кнопку, к входу в котрой в хал привязать halui.mdi-command-10(например), на который в ини задать запуск скрипта..
llur
Новичок
Сообщения: 12
Зарегистрирован: 13 май 2020, 14:47
Репутация: 0
Настоящее имя: Николай
Контактная информация:

Re: .axisrc

Сообщение llur »

Т.е. в Станок.hal пишем net z-probe <= parport.0.pin-13-in (скрипт z-probe уже прописан на панельке и работает)?
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: .axisrc

Сообщение steals_y2k »

да это у вас и так написано должно быть. как одна из 2 строк соединения сигнала)

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

Re: .axisrc

Сообщение nkp »

активация "оси" в Axis при Jog данной осью(удобно для привязки и тд)
jogaxisget.comp:

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

// sudo halcompile --install jogaxisget.comp
component jogaxisget "determines which axis jogging";


pin in bit Xin0 "axis.0.kb-jog-active";
pin in bit Xin1;

pin in bit Yin0 "axis.1.kb-jog-active";
pin in bit Yin1;

pin in bit Zin0 "axis.2.kb-jog-active";
pin in bit Zin1;

pin out bit Xtrigger  ;
pin out bit Ytrigger  ;
pin out bit Ztrigger  ;

pin out bit activeX     ;
pin out bit activeY     ;
pin out bit activeZ     ;


pin in bit Xverify =FALSE "axisui.Xisactive";
pin in bit Yverify =FALSE "axisui.Yisactive";
pin in bit Zverify =FALSE "axisui.Zisactive";


variable hal_bit_t  prev_Xtrigger = FALSE;
variable hal_bit_t  prev_Ytrigger = FALSE;
variable hal_bit_t  prev_Ztrigger = FALSE;

license "GPL";
function _;
;;
FUNCTION(_) {

    if (( Xin0 && !Xin1 ) || ( Xin1 && !Xin0 )) {/* XOR2 axisX */
    Xtrigger = 1;
    } else {
    Xtrigger = 0;
    }

    if (( Yin0 && !Yin1 ) || ( Yin1 && !Yin0 )) {/* XOR2 axisY */
    Ytrigger = 1;
    } else {
    Ytrigger = 0;
    }


    if (( Zin0 && !Zin1 ) || ( Zin1 && !Zin0 )) {/* XOR2 axisZ */
    Ztrigger = 1;
    } else {
    Ztrigger = 0;
    }


    if(!!Xtrigger != !!prev_Xtrigger) /* Xtrigger has changed */
    {
        activeX = 1;
        if(!!Xverify) {prev_Xtrigger = Xtrigger; activeX = 0;}
    }


    if(!!Ytrigger != !!prev_Ytrigger) /* Ytrigger has changed */
    {
        activeY = 1;
        if(!!Yverify) {prev_Ytrigger = Ytrigger; activeY = 0;}
    }


    if(!!Ztrigger != !!prev_Ztrigger) /* Ztrigger has changed */
    {
        activeZ = 1;
        if(!!Zverify) {prev_Ztrigger = Ztrigger; activeZ = 0;}
    }

}
##################################################




.axisrc

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

if hal_present == 1 :
    ucomp = hal.component("axisui.user")

    ucomp.newpin("activeX",hal.HAL_BIT,hal.HAL_IN)
    ucomp.newpin("activeY",hal.HAL_BIT,hal.HAL_IN)
    ucomp.newpin("activeZ",hal.HAL_BIT,hal.HAL_IN)

    ucomp.newpin("Xisactive",hal.HAL_BIT,hal.HAL_IN)
    ucomp.newpin("Yisactive",hal.HAL_BIT,hal.HAL_IN)
    ucomp.newpin("Zisactive",hal.HAL_BIT,hal.HAL_IN)

    ucomp.ready()

def fun(pin,act):
    global flag
    if pin:
        if flag :
            flag = 0
            try:
                act()
            except:
                print "except flag = ", flag
    else:
        flag = 1



def activate_axisX():
    print "activate_axisX"
    activate_axis(0)


def activate_axisY():
    print "activate_axisY"
    activate_axis(1)


def activate_axisZ():
    print "activate_axisZ"
    activate_axis(2)


def user_live_update():

    if "xyzabcuvw".index(vars.current_axis.get())!=0:
        fun(ucomp["activeX"],activate_axisX)
    if "xyzabcuvw".index(vars.current_axis.get())!=1:
        fun(ucomp["activeY"],activate_axisY)
    if "xyzabcuvw".index(vars.current_axis.get())!=2:
        fun(ucomp["activeZ"],activate_axisZ)


    if "xyzabcuvw".index(vars.current_axis.get())==0:
        ucomp["Xisactive"] = 1
        ucomp["Yisactive"] = 0
        ucomp["Zisactive"] = 0
    if "xyzabcuvw".index(vars.current_axis.get())==1:
        ucomp["Xisactive"] = 0
        ucomp["Yisactive"] = 1
        ucomp["Zisactive"] = 0
    if "xyzabcuvw".index(vars.current_axis.get())==2:
        ucomp["Xisactive"] = 0
        ucomp["Yisactive"] = 0
        ucomp["Zisactive"] = 1

#########################################
postgui.hal

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

loadrt jogaxisget
addf jogaxisget.0       servo-thread

net    activeX     jogaxisget.0.activeX   axisui.user.activeX
net    activeY     jogaxisget.0.activeY   axisui.user.activeY
net    activeZ     jogaxisget.0.activeZ   axisui.user.activeZ

net    axis:0:kb   jogaxisget.0.Xin0   axis.0.kb-jog-active
net    axis:1:kb   jogaxisget.0.Yin0   axis.1.kb-jog-active
net    axis:2:kb   jogaxisget.0.Zin0   axis.2.kb-jog-active

net    Xisactive     jogaxisget.0.Xverify  axisui.user.Xisactive
net    Yisactive     jogaxisget.0.Yverify  axisui.user.Yisactive
net    Zisactive     jogaxisget.0.Zverify  axisui.user.Zisactive


############################
axis

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

flag = 0
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: .axisrc

Сообщение nkp »

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

forget(widgets.homebutton, "halui.home-all")
скрыть любой виджет,если в конфиге нет пина (в данном случае :
скрываем кнопку home,если в конфиге нет пина halui.home-all)
Аватара пользователя
iMaks-RS
Мастер
Сообщения: 1726
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 198
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: .axisrc

Сообщение iMaks-RS »

Отбой... не работало в виртуалке под VMWare. На реальных машинах - работает.

Что-то у меня не выходит каменный цветок:
Хотел добавить таймер из примера в первом посте..
в 2.7.15 ругается на отсутсвие halui.program.is-idle, в 2.8.2 - axisui.user.sec
код скопирован и вставлен один и тот-же. :think:
Ответить

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