HAL2Arduino

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: HAL2Arduino

Сообщение Nick »

aftaev писал(а): c.newpin("hal_manualtoolchange.number",HAL_S32,hal.HAL_OUT)
На это по идее должно было ругнуться... хотя, нет. не должно. Должно создать новый пин
Hal2Arduino.hal_manualtoolchange.number и все. Он ни с кем не конфликтует...

Вообще - надо создавать пины с именами, которые будут говорить о пине, а не о его назначении. Т.е. например digital-in-01. И уже потом эти пины привязываются в hal. Пин относится к железу, а не к LinuxCNC. В этом и есть оснавная задумка HAL - абстрагировать железо от программы. У железа свои пины, у программы свои, а hal просто связывает эти пины вместе.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: HAL2Arduino

Сообщение aftaev »

допустим сделали digital-in-01 и в него Ардуина передала с пульта нужный мне номер №5. Как ЕМС заставить сменить инструмент с текущего на №5
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: HAL2Arduino

Сообщение Nick »

Из лс:
Nick писал(а):Смотри можно сделать так - из ардуины берем два пина, первый будет давать номер инструмента, второй - требовать смену. (точнее номер берем от твоего галетника, как написал uavpilot)
на выходе weighted sum будет число. А нет, лучше не через weighted, а через mux - у него выход в float, а не signed

Итак загружаем и настраиваем mux:

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

loadrt mux8 count=1
addf mux8.0  servo-thread

setp mux8.0.in0 1
setp mux8.0.in1 2
setp mux8.0.in2 3
setp mux8.0.in3 4
setp mux8.0.in4 5
setp mux8.0.in5 6

net tool_in0 arduino.Dout1  mux8.0.sel0 # к галетнику
net tool_in1 arduino.Dout2  mux8.0.sel1 # к галетнику
net tool_in2 arduino.Dout3  mux8.0.sel2 # к галетнику
Подключаем выход mux к motion, чтобы можно было читать значение через Gкод:

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

net tool_out <=  mux8.0.out => motion.analog-in-00
Привязываем кнопку

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

net change_tool_request <= сюда пин ардуины от кнопки
net change_tool_request => halui.mdi-command-00
И добавляем команду в ini :

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

[HALUI] 
MDI_COMMAND = M66 E0 L0 (читаем значение пина analog in в переменную #5399)
                       T#5399 M6 (меняем интсрумент)
Аватара пользователя
sr480
Мастер
Сообщения: 1295
Зарегистрирован: 08 янв 2012, 20:48
Репутация: 139
Откуда: Ростов-на-Дону
Контактная информация:

Re: HAL2Arduino

Сообщение sr480 »

А переименовать пин hal_manualtoolchange.number в i_toolNumber не пробовал?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: HAL2Arduino

Сообщение nkp »

Nick писал(а):Из лс:
а если вариант не через mdi,а сразу в ладдер...
разделить ,чтоб при авто работало как работает,а при ручном режиме от кнопок и галетника работал тот же ладдер...
как то это будет "прямее" ( имхо)...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: HAL2Arduino

Сообщение Nick »

nkp писал(а):а если вариант не через mdi,а сразу в ладдер...
Вроде как инструмент можно сменить только через Gкод... (если официально менять и чтобы linuxCNC об этом знал (со всеми вытекающими - типо выставление поправок на длинну и радиус)).
Т.е. надо обязательно выполнить M6, без этого никак. Поэтому нужен mdi.

Или я чего-то не знаю? :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: HAL2Arduino

Сообщение nkp »

галетник с кнопками зачем ?
он нужен - чтоб на чпу токарке можно было работать в ручном режиме, и ,что еще более восстребовано , менять инструмент при наладке.
И в том,и в другом случае можно обойтись и без mdi...
нам просто нужно в manual_mode провернуть голову до нужного положения...
зы
то есть обычно мы ждем сигнала для смены на iocontrol.0.tool-change ,
а в ручном режиме мы просто сами ладдеру (кнопкой) разрешаем начать процедуру смены,(и вот
тут как раз наш галетник выходит на авансцену - он то в отсутствии iocontrol.0.tool-prep-number и задает номер желаемого инструмента...
Последний раз редактировалось nkp 16 янв 2014, 17:39, всего редактировалось 2 раза.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: HAL2Arduino

Сообщение Nick »

А, если просто повернуть голову, тогда нет вопросов. Надо просто логику правильно прописать для поворотной башки и все...

А вот если надо именно "сменить инструмент" - тогда надо через Gкод.
Аватара пользователя
sr480
Мастер
Сообщения: 1295
Зарегистрирован: 08 янв 2012, 20:48
Репутация: 139
Откуда: Ростов-на-Дону
Контактная информация:

Re: HAL2Arduino

Сообщение sr480 »

А зачем в HAL читать энкодер галетника???? Этож одной строкой в arduino можно сделать и передать число сразу...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: HAL2Arduino

Сообщение nkp »

sr480 писал(а):А зачем в HAL читать энкодер галетника???? Этож одной строкой в arduino можно сделать и передать число сразу...
это как?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: HAL2Arduino

Сообщение nkp »

Nick писал(а):А, если просто повернуть голову, тогда нет вопросов. Надо просто логику правильно прописать для поворотной башки и все...
ну не знаю - может кто из токарей (настоящих) назовет мне потребность в "полной" процедуре смены в ручном режиме...
интерпретатор остановлен,даже кинематика не работает ...нам просто тупо)) надо покрутить головой...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: HAL2Arduino

Сообщение aftaev »

sr480 писал(а):А зачем в HAL читать энкодер галетника????
были предложения подключить панельку без Ардуины напрямую к Меса
Но 4 галетника по 5выходов + 15кнопок еще на панельке :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: HAL2Arduino

Сообщение aftaev »

Ардуинка читает пины и выплевывает данные (это работало еще вчера)
123.png (1283 просмотра) <a class='original' href='./download/file.php?id=23531&mode=view' target=_blank>Загрузить оригинал (55.82 КБ)</a>
А вот Питон не получается побороть
Phyton.png (1283 просмотра) <a class='original' href='./download/file.php?id=23533&mode=view' target=_blank>Загрузить оригинал (209.12 КБ)</a>
HAL2Arduino-0.4.rar
(8.38 КБ) 275 скачиваний
:attention: Питон в режиме симуляции(чтобы ЕМС не запускать)

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

simulation = True #Enable for console debugging.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
sr480
Мастер
Сообщения: 1295
Зарегистрирован: 08 янв 2012, 20:48
Репутация: 139
Откуда: Ростов-на-Дону
Контактная информация:

Re: HAL2Arduino

Сообщение sr480 »

701 это разве не зарезервированные команы для осей? они состоят из 4х частей:

номер номерОси значение кс=номер+значение
Последний раз редактировалось sr480 16 янв 2014, 20:26, всего редактировалось 1 раз.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: HAL2Arduino

Сообщение aftaev »

sr480 писал(а):когда из ардинки передаешь похоже забыл ; в конце сообщения
вроде как имеется
123.png (1280 просмотров) <a class='original' href='./download/file.php?id=23534&mode=view' target=_blank>Загрузить оригинал (59.89 КБ)</a>
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: HAL2Arduino

Сообщение aftaev »

sr480 писал(а):а еще 701 это разве не зарезервированные команы для осей? они состоят из 4х частей:
у меня было 313 решил попробовать 701 как в твоем примере :)
sr480 писал(а):#define toolNumberID 701 //Номер пина в сообщении, такой же должен быть описан в HAL.py файле
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: HAL2Arduino

Сообщение aftaev »

sr480 писал(а):701 это разве не зарезервированные команы для осей?
переделал на 400 результат такой же
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: HAL2Arduino

Сообщение aftaev »

sr480, какие из команд у тебя работают? Попробуй 135

100 motion.adaptive-feed - (float, in)
101 motion.analog-in-00 - (float, in)
102 motion.analog-in-01 - (float, in)
103 motion.analog-in-02 - (float, in)
104 motion.analog-in-03 - (float, in)

135 motion.spindle-revs - (float, in)
136 motion.spindle-speed-in - (float, in)

222 axis.N.jog-scale - (float, in)

Так у меня ЕМС запускается
#define commandsRequested "133 137"

А вот так уже нет :thinking:
#define commandsRequested "133 137 135"
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
sr480
Мастер
Сообщения: 1295
Зарегистрирован: 08 янв 2012, 20:48
Репутация: 139
Откуда: Ростов-на-Дону
Контактная информация:

Re: HAL2Arduino

Сообщение sr480 »

Похоже я понял....

Сообщение строится так:
command data1 data2 checksum

checksum = data1+data2

значение должно передаваться в data2, а data1 это для указания номера оси.

тогда нужно написать так:

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

    Serial.print(toolNumberID); //Номер сообщения
    Serial.print(" 0 "); //!!!!!!!!!!!!!!!!!!Вот тут у меня косяк был
    Serial.print(curTool); //номер инструмента
    Serial.print(" ");
    Serial.print(checkSum); //контрольная сумма
    Serial.println(";");
Я неправильно разобрался с протоколом.
asutpka
Мастер
Сообщения: 294
Зарегистрирован: 17 апр 2013, 14:27
Репутация: 78
Контактная информация:

Re: HAL2Arduino

Сообщение asutpka »

и того - профиксенный скетч во вложении для порядку не помешает а напротив...
Ответить

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