Страница 1 из 1
Как в EMC сделать естоп, чтобы он работал как в Mach3
Добавлено: 15 сен 2014, 18:46
Alex75
Как кнопку-грибок прикрутить к EMC так, что бы она как и в Mach3 работала. Сколько вариантов ни пробовал так и не понял, как сделать настройку. Или программа вообще перестаёт запускаться, или просто как не работала так и не работает. Здесь проблема в том, что нигде не нашёл внятного описания, на конкретном примере, концепции как к EMC можно прикрутить любое железо, тоже, так сказать, на пальцах, для тех "кто в бронепоезде".
Если есть ссылки на такие статьи или намёки, заранее спасибо за ссылки. Но после того как разберусь всё таки и этот вопрос так же развёрнуто надо описать.
Как то так.
Эта тема опубликована из серии ЛС.
--Nick
Re: Как в EMC сделать естоп, чтобы он работал как в Mach3
Добавлено: 15 сен 2014, 18:46
Nick
С кнопкой - а как она работает в Маче?
Re: Как в EMC сделать естоп, чтобы он работал как в Mach3
Добавлено: 15 сен 2014, 18:46
Alex75
Хорошо, ответ подготовлю, но не быстро, пришлю, или выставлю на wiki (ничего никогда не выставлял в таком формате)
В Mach-e: у меня на станке стоит кнопка грибок, на Х и Y концевики в конце осей и на Z сразу оба концевика заведены на 15 пин порта ltp.
И всё это работало естественно на аварийный останов, грибок тоже простым нажатием останавливал станок (кнопка не фиксируется, нажал-отпустил станок стоит)
ни стандартная конфигурация, ни прописывание настройки вручную ни к чему ни привели: или программа не стартует (конфликт настроек) или ничего не работает (как и не работало).
Что бы хотелось видеть? Вот как это будет понятно и мне и всем, я думаю та:
Настройка:
net estop-in <= parport.0.pin-15-in-not => iocontrol.0.emc-enable-in
читается так:
net - создаёт настройку
estop-in - аварийной остановки, входящий сигнал
<= - данные будут поступать
parport. - c параллельного порта
0. - первого по счёту, за которое отвечает прерывание LPT1 - 0x378
pin- - брать с контакта
15- - контакт номер 15
in- - входящий,
not - сигнал низкий, инвертированный (по необходимости)
=> - передавать сигнал так же (аналогично <=, здесь мне понятно, что это аналог идеи pipeline в linux - передача вывода одной команды на вход другой)
iocontrol. - на контроллер ( вот тут то я совсем не понимаю куда это идёт, надо это прописывать, именно в этой строке или отдельно?)
0. - это типа первый контроллер самого EMC ???
emc- - контроллер самого EMC ???
enable- - сигнал включения ???
in - тоже входящий ???
Это моя примерная расшифровка (уверен не правильная).
iocontrol.0.emc-enable-in - единственно что понял, это точно не клавиатура
так как правильно читать эту конфигурацию?
и эта срока у меня не работает, хотя EMC её "проглатывает"
догадываюсь почему EMC считается гибким , так можно всякое железо вешать, скушает всё.
Re: Как в EMC сделать естоп, чтобы он работал как в Mach3
Добавлено: 15 сен 2014, 18:47
Nick
net estop-in <= parport.0.pin-15-in-not => iocontrol.0.emc-enable-in
читается так:
net - создаёт настройку
создает сигнал, или подключает к уже созданому сигналу пины
estop-in - аварийной остановки, входящий сигнал
имя сигнала - может быть любое
<= - данные будут поступать
это ничего не значит - пишется только, чтобы лучше читался файл
parport. - c параллельного порта
это название компонента который работает с лпт
0. - первого по счёту, за которое отвечает прерывание LPT1 - 0x378
pin- - брать с контакта
15- - контакт номер 15
in- - входящий,
в данном случае прикол с именованием, это пин ввода лпт, т.е. в него можно послать сигнал, но внутри хал это пин вывода (out) т.к. сигнал идет от него к другим компонентам. В среде hal это пин вывода (т.е. внутри компьютера), в среде железа (т.е. снаружи компьютора) это пин ввода
not - сигнал низкий, инвертированный (по необходимости)
это реализовано в самом компоненте, для других пинов не будет работать (в этом компоненте есть два отдельных пина in и in-not)
=> - передавать сигнал так же (аналогично <=, здесь мне понятно, что это аналог идеи pipeline в linux - передача вывода одной команды на вход другой)
тоже ничего не значит
iocontrol. - на контроллер ( вот тут то я совсем не понимаю куда это идёт, надо это прописывать, именно в этой строке или отдельно?)
можно писать как угодно, можно в одной строке, можно в нескольких, главное для каждой строки сохранять синтаксис: net <имя сигнала> <пин> (<пин>, <пин>, <пин>, ...)
0. - это типа первый контроллер самого EMC ???
emc- - контроллер самого EMC ???
enable- - сигнал включения ???
in - тоже входящий ???
Это просто название пина, так его назвали и все. По логике похоже на пин включения чпу. Но правильнее по этому делу читать ман на iocontrol или тут http://linuxcnc.org/docs/html/man/man1/iocontrol.1.html или просто в консоле man iocontrol (там будет тоже самое)
--------------
По сути того, что ты написал - проще всего тупо повесить гибок Estop на любой из лимитов. Но можно и на iocontrol.0.emc-enable-in.
По ману:
iocontrol.0.emc-enable-in
(Bit, In) Should be driven FALSE when an external estop condition exists.
Т.е. чтобы сработал Естоп надо на это пин подать 0, т.е. если мы берем пин in-not от лпт, то надо замкнуть контакт.
Re: Как в EMC сделать естоп, чтобы он работал как в Mach3
Добавлено: 15 сен 2014, 23:09
Alex75
Ну что сказать: как ставить ноль детали я понял и поэтому смогу написать доходчивый ответ на этот вопрос.
А по поводу аварийной остановки через грибок...

"Всем избранным придётся вернуться к Источнику...- сказала Пифия Нео"
А для нас ПервоИсточник это мануалы, т.к. пока я это не понял, буду медитировать в этом направлении...

))
Re: Как в EMC сделать естоп, чтобы он работал как в Mach3
Добавлено: 14 ноя 2015, 12:22
Alex75
После не очень долгих танцев с бубном, выяснилась простая причина почему не работает внешняя кнопка СТОП
Оказалось, что на порту компа битый порт и пин, на который я вешал кнопку просто не работает!
А выяснилось это методом простого перебора пинов.
Так что сейчас всё в порядке
Re: Как в EMC сделать естоп, чтобы он работал как в Mach3
Добавлено: 16 ноя 2015, 10:53
Nick
Alex75 писал(а):После не очень долгих танцев с бубном
16 сен 2014 - 14 ноя 2015 и правда очень долгие танцы

.
За такое время можно бубен стереть

.
ЗЫ Молодец, что написал решение.
ЗЫЫ в таикх случаях проще всего диагностировать по цепочке, смотреть правильность подключения, потом в halmeter смотрим меняется ли состояние пина parport, потом смотрим дальше по цепочке пинов, меняются ли они. Как только находим битое место - решаем проблему.
Ну и сразу отделяем проблемы железа от проблем софта.