Arduino EMC2 LinuxCNC - советы начинающим

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение aftaev »

odekolon писал(а):из какой?
Arduino -> ModBus -> LCNC #1
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение Vasia_Pupkin »

Товарищи, добрый день!

Подниму и подытожу тему.

Задача: получить недорогое расширение i/o для LCNC. Оговорюсь, что здесь мы имеем ввиду, что устройства, подключаемые к ARDIUNO не требовательны к быстродействию. Т.е. это всякая периферия типа вакуумного стола, пылесоса, подачи воздуха, подачи тумана, в общем релюхи с периферией, а так же различные датчики типа температуры, давления и тд, с необходимостью опрашивать или управлять периферией не чаще чем 0,1с

ARDUINO можно, подключить следующими способами:
1. Через COM порт, реализовав связь по MOODBUS RTU - это решение неплохое и довольно быстрое, но сейчас все чаще встречаются материнские платы без COM порта, поэтому это решение мы не рассматриваем как основное.
2. Напрямую через USB(либо же использовать преобразователи интерфейсов USB/RS485 типа "свисток", но это те же самые яйца что и просто USB, но только в профиль, да еще и добавляем дополнительные элементы в схему) - данный способ простой, он работает, но как писали люди выше очень плохо там с помехозащищенностью и стабильностью связи.
3. Подключить по Ethernet, используя связку ARDUINO+Ethernet shield, дешево и сердито. Вот здесь это реализовано вроде как, но у меня пока не заработало, читаю мат. часть.
4. Подключить по EtherCat, используя связку ARDUINO+EtherCat shield вот здесь , но на мой взгляд это решение дороговатое и сравнимо по цене с тем, что бы купить beckhoff ek1100 + пару модулей к нему. Данная схема тоже очень интересная, но для бюджетного i/o не подходит и мы ее тоже пока рассматривать не будем.

По способу №2 в данной теме уже все подробно описано
По способу №3 информации почти нет.

Нашел у братьев китайцев Реле с опторазвязкой и отпоизолированный модуль дискректных входов/выходов
надо еще найти чего нибудь оптоизолированное что бы можно было было без страха снимать данные с аналоговых датчиков типа температуры и тд и будет полный комплект.

Удалось ли кому-нибудь реализовать работу Ардуинки как I/O через Ethernet, как там дела с помехами и устойчивостью связи?
Или может найдено другое решение дополнительных i/o для Linuxcnc?
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение evgenymcp »

Самый простой и дешевый вариант, это второй PCI LPT, порт.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение aftaev »

У меня на токарном Ардуина опрашивает кнопочки/крутилочки на панельке Сименс и отправляет данные по MoudBus в Lcnc. Круилки на панельке Сименса выдавали хитрый код Грея, потому прям в Ардуинке написал кодик чтобы его преобразовать и отправить ;)
Для примера было взято отсюды Arduino -> ModBus -> LCNC #1
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
odekolon
Мастер
Сообщения: 1103
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение odekolon »

Vasia_Pupkin писал(а):надо еще найти чего нибудь оптоизолированное что бы можно было было без страха снимать данные с аналоговых датчиков типа температуры и тд и будет полный комплект.
у меня ардуина, подключенная через ком-порт принимает напряжение дуги от плазмы. Линейность, правда не фонтан (около 5%) - но и задача такая не стояла. поэтому была выбрана упрощенная схемотехника.

ключевое слово "HCNR-200" на ней можно реализовать опторазвязку с приемлемой линейностью
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
odekolon
Мастер
Сообщения: 1103
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение odekolon »

Vasia_Pupkin писал(а):3. Подключить по Ethernet, используя связку ARDUINO+Ethernet shield, дешево и сердито. Вот здесь это реализовано вроде как, но у меня пока не заработало, читаю мат. часть.
а питоновский файл в usr/bin - клали?
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение Vasia_Pupkin »

Самый простой и дешевый вариант, это второй PCI LPT, порт.
Поидее то да... но это опять надо городить какую-то периферию дополнительную, но мысль тоже дельная и весьма бюджетная.
У меня на токарном Ардуина опрашивает кнопочки/крутилочки на панельке Сименс и отправляет данные по MoudBus в Lcnc. Круилки на панельке Сименса выдавали хитрый код Грея, потому прям в Ардуинке написал кодик чтобы его преобразовать и отправить ;)
Для примера было взято отсюды Arduino -> ModBus -> LCNC #1
Всю тему Arduino -> ModBus -> LCNC #1, я тоже пересмотрел, но как писал выше, если нет COM порта, то остаются только преобразователи интерфейсов USB/..., а это уже ничем от просто подключения по USB не отличается.
у меня ардуина, подключенная через ком-порт принимает напряжение дуги от плазмы. Линейность, правда не фонтан (около 5%) - но и задача такая не стояла. поэтому была выбрана упрощенная схемотехника.
ключевое слово "HCNR-200" на ней можно реализовать опторазвязку с приемлемой линейностью
Вот за ключевое слово "HCNR-200" - спасибо, в схемотехнике я понимаю еще меньше чем в программировании(а в нем я только autolispом владею на уровне 3 класса сельской школы), но суть понял, куда нужно смотреть, почитаю интернет, а там думаю станет более понятно.
а питоновский файл в usr/bin - клали?
я его в директорию с конфигами положил.
Да на счет того что у меня пока ничего не работает, это нормально)) у меня никогда с первого раза ничего не работает(карма:)), в подключении думаю разберусь, если уж прямо совсем грустно будет, то буду плакать и просить помощи у людей знающих здесь на форуме.
Интересен был сам вопрос, кто пользовался, как впечатления, как помехоустойчивость и стабильность при использовании arduino+ethernet?
Аватара пользователя
odekolon
Мастер
Сообщения: 1103
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение odekolon »

Vasia_Pupkin писал(а):я его в директорию с конфигами положил.
у файла нужно убрать расширение txt, можно оставить вообще без расширения, положить его в usr/bin и дать права на выполнение.
как это сделать, нагуглите, я точно не помню, обычно пользуюсь MC в режиме root (sudo mc) хоть и бесит меня этот командер, но все проще, чем с командной строки вводить ;)
зы
чтоб поставить мс
~sudo apt-get install mc
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение evgenymcp »

odekolon писал(а):я точно не помню, обычно пользуюсь MC в режиме root
sudo chmod +x имя_файла делает таковой исполняемым.
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение Vasia_Pupkin »

evgenymcp, odekolon, спасибо добрые люди и за MC и за chmod +x, я смотрю вы тоже не ищите легких путей, но открою секрет, в GUI можно сделать проще - правой кнопкой на файлик, а там в разрешениях галочку поставить на исполнение, суть одна и та же))))
Проблема была в том, что сто пиц0т лет назад настроил iptables на своем роутере в параноидальном режиме, поэтому и ничего не работало, но благо вспомнил, так сказать ССЗБ.
Вобщем поморгал диодом, вроде как работает, но правда задержки какие-то странные, то прямо сразу диод загорается, то почти секунду задержки, на первый взгляд, я думаю это проблема в том, что в WmVare все делаю, так как все эксперименты только дома на виртуалке провожу, на рабочей машине, имея горький опыт не балуюсь больше))))
Так же пока не очень разобрался как пины переназначить в udpio.py, но главное работает)))
Поковыряюсь еще сколько то времени потом подробно отпишусь что и как делал.
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Arduino linuxcnc modbus tcp

Сообщение Vasia_Pupkin »

Здравствуйте, товарищи!

Потратил немного жизни на поиск/изобретение велосипеда с ардуино и linuxcnc.
Решение от сюда сюда у меня так нормально и не заработало и я пошел искать дальше..
Наткнулся на очень интересную статью. Сразу набросился на ETHERNET/IP решение, но так же как и с обычным ETHERNET оно работало криво, в Ардуину пакеты уходили без проблем, а при ответе от ардуины были фризы секунд на 5, причины их не смог найти, бросил и приступил к MODBUS TCP. Данное решение у меня нормально заработало. Теперь по порядку:
Устанавливаем pymodbus. Устанавливал я его на систему поставленную из загрузочного диска linuxcnc-2.7-wheezy.iso

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

sudo apt-get install python2.7-dev
sudo apt-get install curl
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
sudo pip install  -U pymodbus
Далее из приложенного архива ложим/кладем arduino_modbus_tcp(делаем его исполняемым) и custom_bar.glade в папку со своей конфигурацией. В свой custom_postgui.hal, добавляем данные из приложенного, по необходимости меняем пины. В .ini файле добавляем путь к панельке GLADEVCP= custom_bar.glade
В arduino_modbus_tcp меняем IP адрес, обратите внимание, что нужно указать адрес Ардуины, адрес должен быть из той же подсети, что и ваш компьютер.
Так же в arduino_modbus_tcp указываем порты Ардуины которые будете использовать. Для UNO аналоговые порты указываете как 14,15,16,.... вместо А0, А1, А2...

Далее переходим к самой Ардуине. Берем обычную UNO, Mega не пробовал, но по идее ничего не должно измениться. Вставляем в нее Ethernet shield, я пробовал шилд на w5100, на других не проверял.
Открываем Arduino IDE, и первым делом добавляем пользовательскую библиотеку, можно из приложенного архива Modbus.zip, можно от сюда
Дальше открываем прошивку modbus.ino в ней указываем те же порты, что и в arduino_modbus_tcp, адрес, шлюз. Заливаем. И радуемся.

Сразу оговорюсь, с программированием у меня очень не очень, код в arduino_modbus_tcp и modbus.ino кривой и режет глаза, если найдется кто умный и сильный и сделает это все как положено по ООП с классами, это было бы отлично.

https://youtu.be/MealQ0Z6jCE
Вложения
Arduino_linuxcnc_modbustcp.rar
(41.21 КБ) 478 скачиваний
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение daiman444 »

всех приветствую. прочитал всю ветку и таки смог залить прошивку в Nano. прописав в ini нужные строчки запускаю конфиг.
Появляется предупреждение:
выбран не правильный файл
Processing может открывать свои скетчи и другие файлы заканчивающиеся на ino и pde.
Далее открывается arduino.ide и linuxcnc вылетает со следующими словами:

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

Error report created by /usr/lib/tcltk/linuxcnc/show_errors.tcl:

Print file information:
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/lib/linuxcnc/modules
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/lib/tcltk/linuxcnc/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.6
LINUXCNC - 2.8.0
Machine configuration directory is '/home/ddd/linuxcnc/configs/TESTS'
Machine configuration file is 'TESTS.ini'
INIFILE=/home/ddd/linuxcnc/configs/TESTS/TESTS.ini
VERSION=1.1
PARAMETER_FILE=linuxcnc.var
TASK=milltask
HALUI=
DISPLAY=axis
COORDINATES=X Y Z
KINEMATICS=trivkins coordinates=XYZ
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Found file(REL): ./TESTS.hal
Found file(REL): ./custom.hal
Starting TASK program: milltask
Starting DISPLAY program: axis
Linux parallel port @888 not found

Unexpected realtime delay on task 0 with period 100000
This Message will only display once per session.
Run the Latency Test and resolve before continuing.

Shutting down and cleaning up LinuxCNC...
task: 17862 cycles, min=0.000418, max=0.088888, avg=0.010135, 0 latency excursions (> 10x expected cycle time of 0.010000s)
config string '0x378 out'
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments

Debug file information:
Note: Using POSIX realtime
Linux parallel port @888 not found
Unexpected realtime delay on task 0 with period 100000
This Message will only display once per session.
Run the Latency Test and resolve before continuing.
note: MAXV     max: 25.000 units/sec 1500.000 units/min
note: LJOG     max: 25.000 units/sec 1500.000 units/min
note: LJOG default: 2.500 units/sec 150.000 units/min
note: jog_order='XYZ'
note: jog_invert=set([])
Error parsing gtk-icon-sizes string: ''
Waiting for component 'arduino' to become ready.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
arduino-vcp.hal:1: arduino exited without becoming ready
11207
11232
Stopping realtime threads
Unloading hal components
Note: Using POSIX realtime
подскажите пожалуйста гже искать решение?
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
pinderkhara
Новичок
Сообщения: 14
Зарегистрирован: 19 янв 2019, 07:04
Репутация: 1
Настоящее имя: pinder khara
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение pinderkhara »

Здравствуйте все, Могу ли я использовать Arduino для считывания напряжения дуги? USB достаточно быстрый?
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение daiman444 »

Vasia_Pupkin писал(а): Данное решение у меня нормально заработало. Теперь по порядку
возможно ли это все провернуть для дистанционного управления станком? для ардуины же есть радиопередатчик и приемник. а то скакать вокруг станка длиной 6 метров с проводами к пульту вообще большая проблема
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение daiman444 »

Vasia_Pupkin писал(а): я пробовал шилд на w5100,
вот бы для ENC28J60 суметь разобраться
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение Vasia_Pupkin »

pinderkhara писал(а): 08 окт 2020, 07:30 Здравствуйте все, Могу ли я использовать Arduino для считывания напряжения дуги? USB достаточно быстрый?
Есть уже готовые решения. Пользователь odekolon реализовывал такой проект.
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение Vasia_Pupkin »

daiman444 писал(а): 11 окт 2020, 07:15
Vasia_Pupkin писал(а): Данное решение у меня нормально заработало. Теперь по порядку
возможно ли это все провернуть для дистанционного управления станком? для ардуины же есть радиопередатчик и приемник. а то скакать вокруг станка длиной 6 метров с проводами к пульту вообще большая проблема
Зачем изобретать велосипед?
Возьмите простой джойстик от PlayStation.
В сети куча статей как все настроить.
Начать можно здесь: viewtopic.php?t=563
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение Vasia_Pupkin »

daiman444 писал(а): 14 окт 2020, 16:21
Vasia_Pupkin писал(а): я пробовал шилд на w5100,
вот бы для ENC28J60 суметь разобраться
Не пробовал, но думаю, придется что-то в библиотеке править.
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение daiman444 »

Vasia_Pupkin писал(а): Заливаем. И радуемся.
Для Nano нужно радоваться после нажатия кнопки reset. иначе почему то не летает.
Крутая идея и воплощение!
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
Vasia_Pupkin
Кандидат
Сообщения: 70
Зарегистрирован: 23 авг 2017, 19:57
Репутация: 10
Настоящее имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Arduino EMC2 LinuxCNC - советы начинающим

Сообщение Vasia_Pupkin »

daiman444 писал(а): 10 янв 2021, 20:05
Vasia_Pupkin писал(а): Заливаем. И радуемся.
Для Nano нужно радоваться после нажатия кнопки reset. иначе почему то не летает.
Крутая идея и воплощение!
можно и через reset, а можно и питание выкл/вкл)))
Ответить

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