Страница 1 из 1
изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 08:11
j4zzur1
Друзья, добрый день! Столкнулся с необходимостью привязать определенный пин к моменту закрытия Linuxcnc (в т.ч. ручного). Однако заметил, что linuxcnc не меняет значение ни одного пина (по крайней мере из тех, что я пробовал, типа halui.machine.is-on или iocontrol.0.user-unable-out) при выключении. Может есть какой-то пин/параметр или еще что, который я упустил? или другое подходящее решение.
Заранее спасибо.)
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 09:09
MX_Master
По-моему, в INI файле можно указать HAL файл, который будет выполнен перед выходом из LinuxCNC. Что-то типа
внутри файла shutdown.hal можно установить нужный пин
Но стоить помнить, что после выхода из
LinuxCNC, вся выделенная под
HAL память будет освобождена. Я, честно говоря, не знаю, когда именно выполняется этот файл - до выгрузки всех компонентов или после. И не могу сказать точно, успеет ли дёрнуться какой-то физический пин, установленный в этом файле.
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 10:56
j4zzur1
MX_Master писал(а):Но стоить помнить, что после выхода из LinuxCNC, вся выделенная под HAL память будет освобождена. Я, честно говоря, не знаю, когда именно выполняется этот файл - до выгрузки всех компонентов или после. И не могу сказать точно, успеет ли дёрнуться какой-то физический пин, установленный в этом файле.
Да уж, пин вообще не дергается никак.. Причем он бы дернулся даже если LCNC бы тупо нажал условный "F1", то бишь pin joint.0.amp-enable-out. Но нет;(
Не понятно, когда этот shutdown выполняется.
Может есть другие варианты? Например, скриптом через halrun какой-нибудь..
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 11:08
nkp
j4zzur1 писал(а):Не понятно, когда этот shutdown выполняется.
хорошо бы проверить - выполняется ли
для этого запусти свой конфиг из терминала
потом "погаси"
и почитай - что пишет терминал
там должна быть строка
========
если все это почему то не работает - можно переделать скрипт выхода из емс
но это ,если ты не из секты ярых противников менять что либо в исходниках программ
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 11:25
Сергей Саныч
Если использовать chargepump, вопрос решается автоматически. Причем независимо от причины закрытия LCNC.
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 11:32
nkp
Сергей Саныч писал(а):Если использовать chargepump, вопрос решается автоматически.
да,но это если просто все нужно отключить
а если требуется что то переключить-дождаться_подтверждения-etc
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 11:40
Сергей Саныч
nkp писал(а):а если требуется что то переключить-дождаться_подтверждения-etc
Ну, тогда проще всего завести отдельную кнопку для выключения. Скажем, в pyvcp или вообще физическую, и пользоваться только ею.
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 11:49
nkp
Сергей Саныч писал(а):Скажем, в pyvcp или вообще физическую, и пользоваться только ею.
да,в стойке так и делаю
это когда скрин растянут на весь экран и нет даже декоратора окна
(как бы - "онднооконный" интерфейс))
там по другому даже захочешь - не выключишь(кнопка выключает стойку(комп)
а вот в pyvcp человек может забыть и нажать на крестик,или в меню "файл" есть пункт "Закрыть"
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 12:12
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=
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 12:27
nkp
чтоб "добить" эту тему - проверил работу так :
в ini записал
Код: Выделить всё
[HALUI]
MDI_COMMAND = M100
[HAL]
SHUTDOWN = s.sh
s.sh
в M100 у меня окошко с предупреждением:
Код: Выделить всё
#!/bin/bash
yad --title "Ошибка!" --width 200 --height=100 --center\
--on-top --text "\nСкорость шпинделя установлена\n меньше 6000 об/мин"
когда выхожу из емс - окошко появляется
то есть - пин срабатывает
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 13:44
j4zzur1
nkp писал(а):Running HAL shutdown script
Проблема решена.
Ошибка была в том, что пин, значение которого я хотел изменять при закрытии linuxcnc, соединен с сигналом, что в общем-то логично.
Поэтому сначала прописал unlinkp данного пина, а уже потом его изменил.
Спасибо за помощь!
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 14:24
nkp
j4zzur1 писал(а):Ошибка была в том, что пин, значение которого я хотел изменять при закрытии linuxcnc, соединен с сигналом, что в общем-то логично.
а обнаружилась ошибка ,предположу, когда стал запускать из терминала,и там емс уже ругнулся...
бывает очень полезен запуск программы из терминала...
Re: изменение пина при закрытии linuxcnc
Добавлено: 24 янв 2020, 18:11
j4zzur1
nkp писал(а):а обнаружилась ошибка ,предположу, когда стал запускать из терминала,и там емс уже ругнулся...
Всё верно, ну и плюс такую же ошибку видел, когда пытался управлять данным пином через "установки HAL" в самом linuxcnc. только в тот момент не придал значения этой ошибке..