Как реализовать связь пинов HAL с переменными подпрограммы?

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

Не поможете до кучи разобраться с режимами М66? (автопеводчик Гугля совсем абракадабру выдает)

параметр L:

Mode 0: IMMEDIATE - no waiting, returns immediately. The current value of the input is stored in parameter #5399

Mode 1: RISE - waits for the selected input to perform a rise event.

Mode 2: FALL - waits for the selected input to perform a fall event.

Mode 3: HIGH - waits for the selected input to go to the HIGH state.

Mode 4: LOW - waits for the selected input to go to the LOW state.


Если L0, то ясно, что команда ничего не ждет и сразу содержимое соответствующего команде пина прописывает в регистр #5399...

А другие режимы?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Ворон226 писал(а):Mode 1: RISE - waits for the selected input to perform a rise event.
Ждёт перепада уровня с низкого на высокий.
Ворон226 писал(а):Mode 2: FALL - waits for the selected input to perform a fall event.
Ждёт перепада уровня с высокого на низкий.
Ворон226 писал(а):Mode 3: HIGH - waits for the selected input to go to the HIGH state.
Ждёт появления высокого уровня, если он уже высокий, то сразу завершается.
Ворон226 писал(а):Mode 4: LOW - waits for the selected input to go to the LOW state.
Ждёт появления низкого уровня, если он уже низкий, то сразу завершается.

P.S. В симуляторе ж элементарно пробуется... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

UAVpilot писал(а):В симуляторе ж элементарно пробуется... :)
А можно поподробнее про симулятор? Что за зверь такой?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

sim.png (2051 просмотр) <a class='original' href='./download/file.php?id=34691&sid=c17cdfef834a621721e521ff80174533&mode=view' target=_blank>Загрузить оригинал (86.47 КБ)</a>
Изображение
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

Открыл раздел "М-коды" в ВИКИ...
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

Сегодня долго искал пин, на который нужно подать значение координаты для немедленного перемещения оси в эту координату. Т.е. не нашел как можно аппаратным способом (через конфигурацию HAL и подпрограммы) заставить переместиться ось в нужное положение?
Самое близкое (по-моему) - (FLOAT) stepgen.<chan>.position-cmd – Желаемое положение мотора, в единицах измерения положения (только для режима положения).

На какой пин нужно подать 1000, чтобы ось Х станка переместилась в координату 1000? Как организовать команду G01 X1000 F2400?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Ворон226 писал(а):Сегодня долго искал пин, на который нужно подать значение координаты для немедленного перемещения оси в эту координату. Т.е. не нашел как можно аппаратным способом (через конфигурацию HAL и подпрограммы) заставить переместиться ось в нужное положение?
Если ось подключена к компоненту axis, то никак. : :cry:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение PKM »

Параметры можно читать из кода, в формате #<_hal[hal.pin.name]>

Т.е. по идее G01 X#<_hal[hal.pin.name]> поедет куда надо
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Только это будет не немедленно, а когда можно будет G01 позвать... :)

P.S. Проблема актуальна и когда у станка более 9 независимых осей...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение PKM »

Тогда не связывать приводы с motion и ехать куда угодно )
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Тогда хоминг придётся в рукопашную мутить, а это жесть! - я уже попробовал... :cry:

Вобщем если надо ось, которой можно управлять не из "планировщика", а только из HAL, то "ждите анонсов" - я потихоньку двигаюсь в эту сторону... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

Хм... Тогда конкретнее:

Есть автомат, допустим, для сверления отверстий в плите.

Хомы не нужны. Достаточно только датчики крайних положений, по которым автомат просто выходит из этих крайних положений в любой ситуации. Это я уже сделал - все работает на ура.

В начале работы я подгоняю головку к одному углу пластины и нажимаю кнопочку "ЭТО НОЛЬ". Подгоняю к противоположному углу пластины (по диагонали) и нажимаю кнопочку "ЭТО МАКСИМАЛЬНЫЙ РАЗМЕР ЗАГОТОВКИ".

Имея эти координаты и шаг сверловки, я легко могу разбить поле сверловки и начать сверление.

Проблема в том, что я не нашел способа переместить ось в НУЖНУЮ точку (просто двинуть ось могу, могу сделать движение до концевого датчика - все из HAL), т.е. не нашел способа сделать компонентами HAL команду G01 или G00.

Зачем мне это? Не хочу на мониторе стандартных AXIS с загрузкой G-кодов или формированием программы G-кодов в ngcgui. Но хочу вкусностей LCNC. ;)
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение nkp »

Ворон226 писал(а):Тогда конкретнее:
как вариант - использовать jog :

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

setp axis.0.jog-vel-mode 0
setp  axis.0.jog-scale 1
net enable_x    axis.0.jog-enable
net count_x  PIN_OUT   axis.0.jog-counts
PIN_OUT - пин ,с которого приходит координата
==========
но тут неудобство в скоростях...
============
не до конца понятны твои требования :
убрать Axis?
не использовать интерпретатор?
...?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Ворон226 писал(а):Проблема в том, что я не нашел способа переместить ось в НУЖНУЮ точку
К такой оси просто не подключаешь компонент axis, а вместо него рулишь осью сам. На вход pid.N.command или stepgen.N.position-cmd подаёшь значение нужной позиции и оно едет.
Только подавай через limit3, а то оно ломанётся в указанную позицию не взирая на ограничения скорости и ускорения. :)
nkp писал(а):как вариант - использовать jog :
Это работает только в ручном режиме и в относительных значениях.
nkp писал(а):не использовать интерпретатор?
LinuxCNC без морды AXIS - это довольно таки удобный и мощный PLC... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение nkp »

UAVpilot писал(а):LinuxCNC без морды AXIS - это довольно таки удобный и мощный PLC...
таки да...
---------------------
но вопрос возник после этого:
Ворон226 писал(а):не нашел как можно аппаратным способом (через конфигурацию HAL и подпрограммы) заставить переместиться ось в нужное положение?
и тут чуть ниже:
Ворон226 писал(а):Не хочу на мониторе стандартных AXIS с загрузкой G-кодов
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Ну оно "довольно таки удобный и мощный PLC" и без G-кодов, а только в виде HAL-логики и Classicladdr'а. :)
Я вообще мечтаю засунуть эту часть в микроконтроллеры...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Nick »

Ворон226 писал(а):Проблема в том, что я не нашел способа переместить ось в НУЖНУЮ точку (просто двинуть ось могу, могу сделать движение до концевого датчика - все из HAL), т.е. не нашел способа сделать компонентами HAL команду G01 или G00.
А чем тебе MDI_COMMAND не подходит?
По пину можно выставлять режим в MDI, и потом выполнять MDI_COMMAND.

А какая общая задача? ИМХО это все лучше написать на Gкоде. Не хочешь axis - не надо, пишешь свой интерфейс на gladevcp и axis не грузишь вообще. Gкод загружаешь по умолчанию, и его никто не увидит.
Просто на Gкоде очень просто писать функции сверловки по шаблону.
UAVpilot писал(а):Только подавай через limit3, а то оно ломанётся в указанную позицию не взирая на ограничения скорости и ускорения.
У stepgen свои ограничения по максимальной скорости и ускорению, можно напрямую давать желаемое положение.
UAVpilot писал(а):P.S. Проблема актуальна и когда у станка более 9 независимых осей...
А в чем именно проблема?
Подключай ось через mux2 или просто unlinkp после хоуминга...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Nick писал(а):Подключай ось через mux2 или просто unlinkp после хоуминга...
А как повторно хомится?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Nick »

обратно переключаешь mux и все :).
или обратно unlinkp ...
кстати с unlinkp через M100 что-то делали... толи двигатель в режим шпинделя переключали, толи что-то такое...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Nick писал(а):обратно переключаешь mux и все :).
Ага, и ось не взирая на ограничения несётся в HOME позицию, попутно вырубая всё по "Folowing error"... Изображение
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

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