Как можно получить в hal информацию о том, что выполняется конкретная команда G-кода?
Например, чтобы изменить реакцию системы на срабатывание датчиков в зависимости от того, какая команда выполняется. Скажем, если датчик длины инструмента вдруг сработал не во время команды G38, а при выполнении команд движения, то это надо расценивать, как аварийную ситуацию со всеми вытекающими последствиями.
Кстати, при выполнении MDI такая реакция уже реализована в Axis. А вот при выполнении программы - нет.
Как передать в hal информацию о выполняемой команде
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Как передать в hal информацию о выполняемой команде
Чудес не бывает. Бывают фокусы.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Как передать в hal информацию о выполняемой команде
вариантов наверно много (в силу гибкости емс) - но что в голову сразу пришло :
перед "нужным" кодом вставлять М-код с активацией определенного пина:
M105
после отработки операции пин деактивируем...
в хал (или ладдере) построить какой нибудь логический элемент (с motion.probe-input )
---------
или если это касается конкретно G38 - то можно написать компонент , в котором использовать питон-интерфейс:
тут s.poll() выдает True или False в зависимости от состояния прцесса probingа
перед "нужным" кодом вставлять М-код с активацией определенного пина:
M105
Код: Выделить всё
#!/bin/bash
halcmd setp mcode.00.activate 1
exit 0в хал (или ладдере) построить какой нибудь логический элемент (с motion.probe-input )
---------
или если это касается конкретно G38 - то можно написать компонент , в котором использовать питон-интерфейс:
Код: Выделить всё
import linuxcnc
s = linuxcnc.stat()
s.poll()
print s.probing- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Как передать в hal информацию о выполняемой команде
Да, пожалуй, это вполне приемлемый вариант. Потому, что G38 используются, как правило, в составе подпрограмм, а в основном G-коде только вызовы.nkp писал(а):перед "нужным" кодом вставлять М-код с активацией определенного пина:
Да, это касается только G38. Но с Питоном я пока что очень на "Вы", поэтому желательно расшифровать каждую строчку. я правильно понял, что при G38 LCNC (и только тогда) находится в состоянии probing, что мы и отлавливаем? А кто должен вызывать этот компонент?nkp писал(а):или если это касается конкретно G38 - то можно написать компонент , в котором использовать питон-интерфейс:
ЗЫ: Дошло, вроде. Это комонент hal, он вызывается регулярно, скажем по servo thread?
Чудес не бывает. Бывают фокусы.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Как передать в hal информацию о выполняемой команде
дополню (может кому то пригодитсяSerg-tmn писал(а):пожалуй, это вполне приемлемый вариант
пропишем в файл M105 активацию пина:
Код: Выделить всё
#!/bin/bash
halcmd setp mcode.00.activate 1
exit 0Код: Выделить всё
#!/bin/bash
halcmd setp mcode.00.activate 0
exit 0перезагрузить емс ...(если был запущен)
а в фильтре в ини прописать замену "нужного кода" - допустим G38 , на :
Код: Выделить всё
M105
G38
M106Код: Выделить всё
[FILTER]
PROGRAM_EXTENSION = .ngc Script sed
ngc = sed 's/G38/M105 G38 M106/i' тогда не придется что то изменять в программах и постпроцессорах ...
==============
по поводу питона:
пишем компонент
Python Interface
точно...Serg-tmn писал(а):Это комонент hal, он вызывается регулярно, скажем по servo thread?
Последний раз редактировалось nkp 02 май 2013, 16:32, всего редактировалось 1 раз.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Как передать в hal информацию о выполняемой команде
Спасибо! Буду разбираться 
Чудес не бывает. Бывают фокусы.