изменение пина при закрытии linuxcnc
-
- Новичок
- Сообщения: 29
- Зарегистрирован: 26 фев 2018, 23:04
- Репутация: 0
- Настоящее имя: Николай
- Контактная информация:
изменение пина при закрытии linuxcnc
Друзья, добрый день! Столкнулся с необходимостью привязать определенный пин к моменту закрытия Linuxcnc (в т.ч. ручного). Однако заметил, что linuxcnc не меняет значение ни одного пина (по крайней мере из тех, что я пробовал, типа halui.machine.is-on или iocontrol.0.user-unable-out) при выключении. Может есть какой-то пин/параметр или еще что, который я упустил? или другое подходящее решение.
Заранее спасибо.)
Заранее спасибо.)
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
По-моему, в INI файле можно указать HAL файл, который будет выполнен перед выходом из LinuxCNC. Что-то типа
внутри файла shutdown.hal можно установить нужный пин
Но стоить помнить, что после выхода из LinuxCNC, вся выделенная под HAL память будет освобождена. Я, честно говоря, не знаю, когда именно выполняется этот файл - до выгрузки всех компонентов или после. И не могу сказать точно, успеет ли дёрнуться какой-то физический пин, установленный в этом файле.
Код: Выделить всё
[HAL]
SHUTDOWN = shutdown.hal
Код: Выделить всё
setp PIN1 1
setp PIN2 0
# ...
-
- Новичок
- Сообщения: 29
- Зарегистрирован: 26 фев 2018, 23:04
- Репутация: 0
- Настоящее имя: Николай
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
Да уж, пин вообще не дергается никак.. Причем он бы дернулся даже если LCNC бы тупо нажал условный "F1", то бишь pin joint.0.amp-enable-out. Но нет;(MX_Master писал(а):Но стоить помнить, что после выхода из LinuxCNC, вся выделенная под HAL память будет освобождена. Я, честно говоря, не знаю, когда именно выполняется этот файл - до выгрузки всех компонентов или после. И не могу сказать точно, успеет ли дёрнуться какой-то физический пин, установленный в этом файле.
Не понятно, когда этот shutdown выполняется.
Может есть другие варианты? Например, скриптом через halrun какой-нибудь..
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
хорошо бы проверить - выполняется лиj4zzur1 писал(а):Не понятно, когда этот shutdown выполняется.
для этого запусти свой конфиг из терминала
потом "погаси"
и почитай - что пишет терминал
там должна быть строка
Код: Выделить всё
Running HAL shutdown script
если все это почему то не работает - можно переделать скрипт выхода из емс
но это ,если ты не из секты ярых противников менять что либо в исходниках программ
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
Если использовать chargepump, вопрос решается автоматически. Причем независимо от причины закрытия LCNC.
Чудес не бывает. Бывают фокусы.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
да,но это если просто все нужно отключитьСергей Саныч писал(а):Если использовать chargepump, вопрос решается автоматически.
а если требуется что то переключить-дождаться_подтверждения-etc
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
Ну, тогда проще всего завести отдельную кнопку для выключения. Скажем, в pyvcp или вообще физическую, и пользоваться только ею.nkp писал(а):а если требуется что то переключить-дождаться_подтверждения-etc
Чудес не бывает. Бывают фокусы.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
да,в стойке так и делаюСергей Саныч писал(а):Скажем, в pyvcp или вообще физическую, и пользоваться только ею.
это когда скрин растянут на весь экран и нет даже декоратора окна
(как бы - "онднооконный" интерфейс))
там по другому даже захочешь - не выключишь(кнопка выключает стойку(комп)
а вот в pyvcp человек может забыть и нажать на крестик,или в меню "файл" есть пункт "Закрыть"
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
сценарий выхода:
в нем видно - в какой очередности все выполняется ,включая SHUTDOWN=
Код: Выделить всё
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
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
чтоб "добить" эту тему - проверил работу так :
в ini записал
s.sh
в M100 у меня окошко с предупреждением:
когда выхожу из емс - окошко появляется
то есть - пин срабатывает
в ini записал
Код: Выделить всё
[HALUI]
MDI_COMMAND = M100
[HAL]
SHUTDOWN = s.sh
Код: Выделить всё
setp halui.mdi-command-00 1
Код: Выделить всё
#!/bin/bash
yad --title "Ошибка!" --width 200 --height=100 --center\
--on-top --text "\nСкорость шпинделя установлена\n меньше 6000 об/мин"
то есть - пин срабатывает
-
- Новичок
- Сообщения: 29
- Зарегистрирован: 26 фев 2018, 23:04
- Репутация: 0
- Настоящее имя: Николай
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
Проблема решена.nkp писал(а):Running HAL shutdown script
Ошибка была в том, что пин, значение которого я хотел изменять при закрытии linuxcnc, соединен с сигналом, что в общем-то логично.
Поэтому сначала прописал unlinkp данного пина, а уже потом его изменил.
Спасибо за помощь!
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
а обнаружилась ошибка ,предположу, когда стал запускать из терминала,и там емс уже ругнулся...j4zzur1 писал(а):Ошибка была в том, что пин, значение которого я хотел изменять при закрытии linuxcnc, соединен с сигналом, что в общем-то логично.
бывает очень полезен запуск программы из терминала...
-
- Новичок
- Сообщения: 29
- Зарегистрирован: 26 фев 2018, 23:04
- Репутация: 0
- Настоящее имя: Николай
- Контактная информация:
Re: изменение пина при закрытии linuxcnc
Всё верно, ну и плюс такую же ошибку видел, когда пытался управлять данным пином через "установки HAL" в самом linuxcnc. только в тот момент не придал значения этой ошибке..nkp писал(а):а обнаружилась ошибка ,предположу, когда стал запускать из терминала,и там емс уже ругнулся...