изменение пина при закрытии linuxcnc

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
j4zzur1
Новичок
Сообщения: 29
Зарегистрирован: 26 фев 2018, 23:04
Репутация: 0
Настоящее имя: Николай
Контактная информация:

изменение пина при закрытии linuxcnc

Сообщение j4zzur1 »

Друзья, добрый день! Столкнулся с необходимостью привязать определенный пин к моменту закрытия Linuxcnc (в т.ч. ручного). Однако заметил, что linuxcnc не меняет значение ни одного пина (по крайней мере из тех, что я пробовал, типа halui.machine.is-on или iocontrol.0.user-unable-out) при выключении. Может есть какой-то пин/параметр или еще что, который я упустил? или другое подходящее решение.
Заранее спасибо.)
Аватара пользователя
MX_Master
Мастер
Сообщения: 7478
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение MX_Master »

По-моему, в INI файле можно указать HAL файл, который будет выполнен перед выходом из LinuxCNC. Что-то типа

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

[HAL]
SHUTDOWN = shutdown.hal
внутри файла shutdown.hal можно установить нужный пин

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

setp PIN1 1
setp PIN2 0
# ...
Но стоить помнить, что после выхода из LinuxCNC, вся выделенная под HAL память будет освобождена. Я, честно говоря, не знаю, когда именно выполняется этот файл - до выгрузки всех компонентов или после. И не могу сказать точно, успеет ли дёрнуться какой-то физический пин, установленный в этом файле.
j4zzur1
Новичок
Сообщения: 29
Зарегистрирован: 26 фев 2018, 23:04
Репутация: 0
Настоящее имя: Николай
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение j4zzur1 »

MX_Master писал(а):Но стоить помнить, что после выхода из LinuxCNC, вся выделенная под HAL память будет освобождена. Я, честно говоря, не знаю, когда именно выполняется этот файл - до выгрузки всех компонентов или после. И не могу сказать точно, успеет ли дёрнуться какой-то физический пин, установленный в этом файле.
Да уж, пин вообще не дергается никак.. Причем он бы дернулся даже если LCNC бы тупо нажал условный "F1", то бишь pin joint.0.amp-enable-out. Но нет;(
Не понятно, когда этот shutdown выполняется.
Может есть другие варианты? Например, скриптом через halrun какой-нибудь..
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение nkp »

j4zzur1 писал(а):Не понятно, когда этот shutdown выполняется.
хорошо бы проверить - выполняется ли
для этого запусти свой конфиг из терминала
потом "погаси"
и почитай - что пишет терминал
там должна быть строка

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

Running HAL shutdown script
========
если все это почему то не работает - можно переделать скрипт выхода из емс
но это ,если ты не из секты ярых противников менять что либо в исходниках программ
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение Сергей Саныч »

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

Re: изменение пина при закрытии linuxcnc

Сообщение nkp »

Сергей Саныч писал(а):Если использовать chargepump, вопрос решается автоматически.
да,но это если просто все нужно отключить
а если требуется что то переключить-дождаться_подтверждения-etc
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение Сергей Саныч »

nkp писал(а):а если требуется что то переключить-дождаться_подтверждения-etc
Ну, тогда проще всего завести отдельную кнопку для выключения. Скажем, в pyvcp или вообще физическую, и пользоваться только ею.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение nkp »

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

Re: изменение пина при закрытии linuxcnc

Сообщение nkp »

сценарий выхода:

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

    echo "Shutting down and cleaning up LinuxCNC..."
    # Kill displays first - that should cause an orderly
    #   shutdown of the rest of linuxcnc
    for KILL_TASK in linuxcncpanel iosh linuxcncsh linuxcncrsh linuxcnctop mdi debuglevel gmoccapy gscreen; do
	if $PIDOF $KILL_TASK >>$DEBUG_FILE ; then
	    KillTaskWithTimeout
	fi
    done

    if program_available axis-remote ; then
	if [ ! -z "$DISPLAY" ]; then
	    axis-remote --ping && axis-remote --quit
	fi
    fi

    if [ "$1" = "other" ]; then
        echo -n "Waiting for other session to finish exiting..."
	WAIT=$KILL_TIMEOUT
	while [ $WAIT -gt 1 ]; do
            if ! [ -f $LOCKFILE ]; then
                echo " Ok"
                return 0
            fi
            WAIT=$(($WAIT-1))
            sleep .1
        done
        echo "lockfile still not removed"
    fi

    SHUTDOWN=`$INIVAR -ini "$INIFILE" -var SHUTDOWN -sec HAL 2> /dev/null`
    if [ -n "$SHUTDOWN" ]; then
	echo "Running HAL shutdown script"
	$HALCMD -f $SHUTDOWN
    fi

    # now kill all the other user space components
    for KILL_TASK in linuxcncsvr milltask; do
	if $PIDOF $KILL_TASK >>$DEBUG_FILE ; then
	    KillTaskWithTimeout
	fi
    done

    echo "Stopping realtime threads" >> $DEBUG_FILE
    $HALCMD stop
    echo "Unloading hal components" >> $DEBUG_FILE
    $HALCMD unload all

    for i in `seq 10`; do
        # (the one component is the halcmd itself)
        if [ `$HALCMD list comp | wc -w` = 1 ]; then break; fi
        sleep .2
    done

    echo "Removing HAL_LIB, RTAPI, and Real Time OS modules" >>$PRINT_FILE
    $REALTIME stop

    echo "Removing NML shared memory segments" >> $PRINT_FILE
    while read b x t x x x x x x m x; do
        case $b$t in
            BSHMEM) ipcrm -M $m 2>/dev/null;;
        esac
    done < $NMLFILE


    # remove lock file
    if [ -f $LOCKFILE ] ; then
	rm $LOCKFILE
    fi
в нем видно - в какой очередности все выполняется ,включая SHUTDOWN=
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение nkp »

чтоб "добить" эту тему - проверил работу так :
в ini записал

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

[HALUI]
MDI_COMMAND = M100

[HAL]
SHUTDOWN = s.sh
s.sh

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

setp halui.mdi-command-00  1
в M100 у меня окошко с предупреждением:

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

#!/bin/bash
yad --title "Ошибка!" --width 200 --height=100 --center\
  --on-top --text "\nСкорость шпинделя установлена\n меньше 6000 об/мин"
когда выхожу из емс - окошко появляется
то есть - пин срабатывает
j4zzur1
Новичок
Сообщения: 29
Зарегистрирован: 26 фев 2018, 23:04
Репутация: 0
Настоящее имя: Николай
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение j4zzur1 »

nkp писал(а):Running HAL shutdown script
Проблема решена.
Ошибка была в том, что пин, значение которого я хотел изменять при закрытии linuxcnc, соединен с сигналом, что в общем-то логично.
Поэтому сначала прописал unlinkp данного пина, а уже потом его изменил.
Спасибо за помощь!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение nkp »

j4zzur1 писал(а):Ошибка была в том, что пин, значение которого я хотел изменять при закрытии linuxcnc, соединен с сигналом, что в общем-то логично.
а обнаружилась ошибка ,предположу, когда стал запускать из терминала,и там емс уже ругнулся...
бывает очень полезен запуск программы из терминала...
j4zzur1
Новичок
Сообщения: 29
Зарегистрирован: 26 фев 2018, 23:04
Репутация: 0
Настоящее имя: Николай
Контактная информация:

Re: изменение пина при закрытии linuxcnc

Сообщение j4zzur1 »

nkp писал(а):а обнаружилась ошибка ,предположу, когда стал запускать из терминала,и там емс уже ругнулся...
Всё верно, ну и плюс такую же ошибку видел, когда пытался управлять данным пином через "установки HAL" в самом linuxcnc. только в тот момент не придал значения этой ошибке..
Ответить

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