Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разработка комплекса программа+железо LPT/USB для станков
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Страницы: 1, 2, 3
krux
Цитата(Огурцов @ Apr 17 2017, 13:34) *
а вы и парсер в туда залить хотите ?

там же Cortex-A9, чего бы ему не распарсить G-код "на месте"?
khach
Цитата(krux @ Apr 17 2017, 13:35) *
там же Cortex-A9, чего бы ему не распарсить G-код "на месте"?

Распарсить G-код конечно сможет, да и траекторию нарисует про наличии FPU. Есть же примеры LinuxCNC на палатах типа Rapsberry и подобных. Вот только сразу начинаются грабли с интерфейсом пользователя и доп оборудованием. То на экран не успеваем рисовать, то энкодер-ручной задатчик подключить некуда, то файл длинный с G-кодом открыть не получается.
А потом при старте шпинделя на 20 квт плата без гальванической развязки по всем управляющим сигналам умудряется зависнуть.
Экран пользователя и энкодер-задатчик и датчик позиции и длины инструмента обязательны, если предполагается точно позиционировать на станке предварительно обработанную заготовку, а не просто металлический параллелепипед. Или продолжать обработку после снятия заготовки для других технологических операций.
Если станок с автоматической сменой инструмента, то там еще М-коды для управления шпинделем и механизмом смены инструмента добавляется, а главное- панель настройки параметров каждого инструмента в магазине.
Включение- выключение эмульсии для смазки-охлаждения инструмента- тоже отдельный контроллер типа PLC которым надо управлять. Так и сяк получается отдельный комп в индустриальном исполнении.
А еще запить лога всей работы, чтобы разобраться кто виноват, когда оператор вьедет шпинделем в стол.



Огурцов
Цитата(krux @ Apr 17 2017, 12:35) *
там же Cortex-A9, чего бы ему не распарсить G-код "на месте"?

и нафига ? потому что можем ?

Цитата(khach @ Apr 17 2017, 13:05) *
Так и сяк получается отдельный комп в индустриальном исполнении.

там где линух, там отдельный комп получается
тогда как плату с fpga спрятать гораздо легче
x736C
Цитата(Огурцов @ Apr 18 2017, 00:59) *
и нафига ? потому что можем ?
Потому что это очень удобно для человека, который освоил этот инструмент (SoC, Zynq).
Огурцов
удобнее что, распарсить ? симулировать ? видосик посмотреть, записать ?
Огурцов
вот симуляшка, собранная из g-кода одной из моделей, идущих с mach3

Нажмите для просмотра прикрепленного файла

сколько такое на fpga кодить будете ?
Леонид Григорьевич
Есть два вопроса которые сейчас нужно выяснить:
1. Формат передачи информации в линукс-cnc. Как это выглядит при работе через платы PCI; для общего развития ещё через езернет/USB.
2. Форматы управления частотниками KEB и хитачи по rs-485. Имеются в виду частотники с датчиками обратной связи и возможностью позиционирования вала. Может кто-то знает другие фирмы, или конкретные модели, которые работают в таком режиме? На первое время нужен частотник, понимающий сигнал TTL на входе (такое как-бы дублирование вращения чего-то), а ещё лучше - понимающий сигнал шаг-направление (таких, боюсь, вообще нет).

Цитата(khach @ Apr 17 2017, 15:14) *
Покажите пример приводов, которые управляются по "витой паре".

Сразу два примера: CAN и RS-485. В случае с CAN есть такая плата-заготовка, на базе которой можно начинать собирать привод, на плате есть CAN. Для одной оси даёт отличную скорость управления.
В случае с RS-485 есть преобразователи частоты под таким управлением, да и еще много чего можно найти. Вопрос только в том, как это будет выглядеть: запихать на плату пару контроллеров RS-485 и сотню контроллеров CAN или же сделать выводы на витые пары с микросхемы ПЛИС и передавать данные по своему стандарту, а где нужно - подключать преобразователи в CAN - RS-485
Огурцов
думаю, для начала можно даже не заморачиваться с fpga, а остановиться на rs232/422 - на 5 осей и несколько команд управления должно хватить
Огурцов
вот и видосик созрел
Нажмите для просмотра прикрепленного файла
khach
Цитата(Огурцов @ Apr 18 2017, 12:04) *
думаю, для начала можно даже не заморачиваться с fpga

FPGA необходимо при использовании петли ОС по позиции от внешнего энкодера или оптической линейки. В этом случаеи петля замкнута через софт контроллера. Возможно конечно применнеие сервопривода с внутренней обратной связью, тогда вариант с FPGA может быть излишне усложненный.
Также FPGA и DAC на дополнительной карте необходимы при использовании древних сервоприводов с аналоговым управлением, стандарт +/-10В сигнала управления скоростью ( а не позицией) сервопривода. Актуально для большинства промышленных ЧПУ советских станков, если задумаете прересадить станку "мозги" без замены сервоприводов.
Огурцов
fpga необходимо при параллельных вычислениях одновременно по нескольким осям неортогональной кинематики
в остальных случаях достаточно обычного stm32
khach
Цитата(Огурцов @ Apr 19 2017, 13:30) *
fpga необходимо при параллельных вычислениях одновременно по нескольким осям неортогональной кинематики

Очень спорное утверждение. Во всех контролерах CNC что встречались, FPGA использовалось не в "мозгах", а в интерфейсе. Траекторию многоосевого движения типа хеликальной интерполяции считали специализированные процессоры или DSP, но это было лет 10 назад. Сейчас любой Cortex-M7 ( nbgf STM32F756) с double-FPU те древние DSP за пояс заткнет.
Огурцов
stm32 вполне справится с одной осью, но несколько осей даже для 2.5d никак не потянет
поэтому либо fpga и гоним через com команды, типо распарсенного g-кода
либо считаем траекторию на pc и через com идет тактирование приводов по step/dir
первый вариант более правильный, второй - более быстрый в реализации
сейчас нужно определиться, насколько реально поднять разработку на fpga или забить и для начала считать на pc
Леонид Григорьевич
Пошла параллельная разработка sm.gif
Все равно интересно наблюдать этот процесс.
Я бы не стал связываться с COM портом. Он очень чувствителен к помехам, уже есть опыт в этом деле. Даже USB более помехоустойчив. Еще как вариант - воткнуть плату RS-485
http://www.nnz-ipc.ru/good/show/14821/10212/
Другой вариант- выше была предложена отладочная плата для PCI-E. Думаю, там можно даже обратную связь с датчика сделать. В случае с RS485 петля обратной связи (с датчика) будет замыкаться на отдельное устройство, т. е. привод, тот, что на одну ось.
Ещё один вариант был представлен выше, рабочее название "100%".
Жрать G-код и макрокоманды компьютером. Им же синхронизиовать работу осей между собой. Компьютер позволяет добавлять новые устройства в готовую систему, по мере возникновения необходимости. Например - кнопки, штурвалы, маховички, датчики и т. д.
Программу можно сделать как с нуля - в самом простом исполнении, для получения навыков и понимания процесса, так и использовать готовые наработки. Здесь единственный вариант линукс CNC, с их открытым исходным кодом.
Зы: неспешно ищется исполнитель для написания оной программы. Финансирование уже обеспечено.
Огурцов
сделал самую страшную и не понятную половину - математику
вот это уже нужно выдавать на станок, чтобы понять, где ошибся или нет
Нажмите для просмотра прикрепленного файла
Леонид Григорьевич
Вырос до Arduino due sm.gif
Есть пример из интернета по опросу Lpt порта:
Работа с LPT портом
Вот тестовая программка: нигде не накосячил?

#include <sys/io.h>
#include <sys/perm.h>
#include <stdio.h>
#include <stdlib.h>
main()
{
unsigned int x;
int init = 0xff;
if(ioperm(0x378,3,1))
{
printf("error opening lpt");
exit(1);
}
outb(init, 0x378);
outb(init, 0x37a);
while(1)
{
x=inb(0x378);
if(x != 255)
{
printf("%d\n", x);
}
}
if(ioperm(0x378,3,0))
{
printf("error closing lpt");
exit(1);
}
}
Под линуксом выдаёт ошибку открытия лпт. Кто-нибудь может помочь разобраться с этой программой, чтобы она работала?
Есть пример на Питоне, выставляет логические уровни на порте, работает. Не знаю, как там допрашивать порт, да и питон в конечном итоге будет работать медленнее, чем C. В примере испольховалась библиотека python.parallel.
mantech
Цитата(Леонид Григорьевич @ Apr 20 2017, 09:35) *
Я бы не стал связываться с COM портом. Он очень чувствителен к помехам, уже есть опыт в этом деле. Даже USB более помехоустойчив. Еще как вариант - воткнуть плату RS-485


Вот это поворот, я смотрю. Вы точно с ком портом работали правильно, в смысле софта?
Леонид Григорьевич
Сейчас вопрос не в COM-порте.

Пример на питоне:

Робоферма
Управление LPT портом из Debian Linux на языке python

В манипуляциях, описанных в статье использовался дистрибутив debian-live-7.2-i386-xfce-desktop.iso Операционная система работала в режиме live-usb, то есть без инсталляции на компьютер.

debian lpt.jpg
От себя рекомендую именно этот способ. Банально проще иных вариантов, которые мне удалось попробовать.

Приступим по этапам. Большая часть действий выполняется в программе "Эмулятор терминала".


1. Модуль Рython-Рarallel

Данный модуль собственно и предназначен для управления параллельным (lpt) портом.
1.1 Создайте новую директорию, в которой будет вестись работа.
1.2 Скачайте и перенесите в неё пакет python-parallel_0.2-7_all.deb.
1.3 Запустите эмулятор терминала. Можно кликнуть правой кнопкой мыши по рабочей директории и в контекстном меню выбрать пункт "открыть в терминале". Тогда терминал будет сразу ориентирован на работу с её содержимым.
Открыть в терминале 1.4 Устанавливаем пакет следующей командой:
sudo dpkg -i python-parallel_0.2-7_all.deb

2. Подготовка управляющего скрипта на Python

2.1 Создаём пустой файл, например "lpt.py".
2.2 Открываем его в текстовом редакторе и переносим следующий код:
import parallel;
import time;
p = parallel.Parallel()
p.setData(1)
time.sleep(1)
p.setData(2)
time.sleep(1)
p.setData(4)
time.sleep(1)
p.setData(8)
time.sleep(1)
p.setData(16)
time.sleep(1)
p.setData(32)
time.sleep(1)
p.setData(64)
time.sleep(1)
p.setData(128)
time.sleep(1)
p.setData(0)

В эмуляторе терминала откройте доступ к порту:
sudo rmmod lp
Запускается командой sudo lpt. py

Работает.
Теперь вопрос: как здесь опросник порт? На уровне программы.
Леонид Григорьевич
Научился в Питоне считывать порт. Функция getInSelected()
getInError()
и т. д.
Получил частоту обмена 22 КГц. Теперь нужно на C.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.