Как передать в hal информацию о выполняемой команде

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Как передать в hal информацию о выполняемой команде

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

Как можно получить в hal информацию о том, что выполняется конкретная команда G-кода?
Например, чтобы изменить реакцию системы на срабатывание датчиков в зависимости от того, какая команда выполняется. Скажем, если датчик длины инструмента вдруг сработал не во время команды G38, а при выполнении команд движения, то это надо расценивать, как аварийную ситуацию со всеми вытекающими последствиями.
Кстати, при выполнении MDI такая реакция уже реализована в Axis. А вот при выполнении программы - нет.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как передать в hal информацию о выполняемой команде

Сообщение nkp »

вариантов наверно много (в силу гибкости емс) - но что в голову сразу пришло :
перед "нужным" кодом вставлять М-код с активацией определенного пина:
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
тут s.poll() выдает True или False в зависимости от состояния прцесса probingа
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Как передать в hal информацию о выполняемой команде

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

nkp писал(а):перед "нужным" кодом вставлять М-код с активацией определенного пина:
Да, пожалуй, это вполне приемлемый вариант. Потому, что G38 используются, как правило, в составе подпрограмм, а в основном G-коде только вызовы.
nkp писал(а):или если это касается конкретно G38 - то можно написать компонент , в котором использовать питон-интерфейс:
Да, это касается только G38. Но с Питоном я пока что очень на "Вы", поэтому желательно расшифровать каждую строчку. я правильно понял, что при G38 LCNC (и только тогда) находится в состоянии probing, что мы и отлавливаем? А кто должен вызывать этот компонент?

ЗЫ: Дошло, вроде. Это комонент hal, он вызывается регулярно, скажем по servo thread?
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как передать в hal информацию о выполняемой команде

Сообщение nkp »

Serg-tmn писал(а):пожалуй, это вполне приемлемый вариант
дополню (может кому то пригодится ;) ):
пропишем в файл M105 активацию пина:

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

#!/bin/bash
halcmd setp   mcode.00.activate 1
exit 0
а в M106 - деактивацию :

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

#!/bin/bash
halcmd setp   mcode.00.activate 0
exit 0
(оба файла положить в папку , прописанную в ини в "PROGRAM_PREFIX = ") и сделать исполняемыми
перезагрузить емс ...(если был запущен)
а в фильтре в ини прописать замену "нужного кода" - допустим 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 информацию о выполняемой команде

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

Спасибо! Буду разбираться :good:
Чудес не бывает. Бывают фокусы.
Ответить

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