реклама на сайте
подробности

 
 
8 страниц V  « < 6 7 8  
Reply to this topicStart new topic
> Разработка комплекса программа+железо LPT/USB для станков, Рабочее название "Конь В Вакууме"
Огурцов
сообщение Apr 18 2017, 01:27
Сообщение #106


Гуру
******

Группа: Участник
Сообщений: 3 775
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



вот симуляшка, собранная из g-кода одной из моделей, идущих с mach3

Прикрепленное изображение


сколько такое на fpga кодить будете ?
Go to the top of the page
 
+Quote Post
Леонид Григорьев...
сообщение Apr 18 2017, 05:10
Сообщение #107


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-10-16
Пользователь №: 93 698



Есть два вопроса которые сейчас нужно выяснить:
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
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 18 2017, 10:04
Сообщение #108


Гуру
******

Группа: Участник
Сообщений: 3 775
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



думаю, для начала можно даже не заморачиваться с fpga, а остановиться на rs232/422 - на 5 осей и несколько команд управления должно хватить
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 19 2017, 00:34
Сообщение #109


Гуру
******

Группа: Участник
Сообщений: 3 775
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



вот и видосик созрел
Прикрепленный файл  cross.wmv ( 1.84 мегабайт ) Кол-во скачиваний: 29

Go to the top of the page
 
+Quote Post
khach
сообщение Apr 19 2017, 09:24
Сообщение #110


Гуру
******

Группа: Свой
Сообщений: 3 245
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(Огурцов @ Apr 18 2017, 12:04) *
думаю, для начала можно даже не заморачиваться с fpga

FPGA необходимо при использовании петли ОС по позиции от внешнего энкодера или оптической линейки. В этом случаеи петля замкнута через софт контроллера. Возможно конечно применнеие сервопривода с внутренней обратной связью, тогда вариант с FPGA может быть излишне усложненный.
Также FPGA и DAC на дополнительной карте необходимы при использовании древних сервоприводов с аналоговым управлением, стандарт +/-10В сигнала управления скоростью ( а не позицией) сервопривода. Актуально для большинства промышленных ЧПУ советских станков, если задумаете прересадить станку "мозги" без замены сервоприводов.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 19 2017, 11:30
Сообщение #111


Гуру
******

Группа: Участник
Сообщений: 3 775
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



fpga необходимо при параллельных вычислениях одновременно по нескольким осям неортогональной кинематики
в остальных случаях достаточно обычного stm32


Сообщение отредактировал Огурцов - Apr 19 2017, 11:30
Go to the top of the page
 
+Quote Post
khach
сообщение Apr 19 2017, 11:43
Сообщение #112


Гуру
******

Группа: Свой
Сообщений: 3 245
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(Огурцов @ Apr 19 2017, 13:30) *
fpga необходимо при параллельных вычислениях одновременно по нескольким осям неортогональной кинематики

Очень спорное утверждение. Во всех контролерах CNC что встречались, FPGA использовалось не в "мозгах", а в интерфейсе. Траекторию многоосевого движения типа хеликальной интерполяции считали специализированные процессоры или DSP, но это было лет 10 назад. Сейчас любой Cortex-M7 ( nbgf STM32F756) с double-FPU те древние DSP за пояс заткнет.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 19 2017, 13:01
Сообщение #113


Гуру
******

Группа: Участник
Сообщений: 3 775
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



stm32 вполне справится с одной осью, но несколько осей даже для 2.5d никак не потянет
поэтому либо fpga и гоним через com команды, типо распарсенного g-кода
либо считаем траекторию на pc и через com идет тактирование приводов по step/dir
первый вариант более правильный, второй - более быстрый в реализации
сейчас нужно определиться, насколько реально поднять разработку на fpga или забить и для начала считать на pc
Go to the top of the page
 
+Quote Post
Леонид Григорьев...
сообщение Apr 20 2017, 06:35
Сообщение #114


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-10-16
Пользователь №: 93 698



Пошла параллельная разработка sm.gif
Все равно интересно наблюдать этот процесс.
Я бы не стал связываться с COM портом. Он очень чувствителен к помехам, уже есть опыт в этом деле. Даже USB более помехоустойчив. Еще как вариант - воткнуть плату RS-485
http://www.nnz-ipc.ru/good/show/14821/10212/
Другой вариант- выше была предложена отладочная плата для PCI-E. Думаю, там можно даже обратную связь с датчика сделать. В случае с RS485 петля обратной связи (с датчика) будет замыкаться на отдельное устройство, т. е. привод, тот, что на одну ось.
Ещё один вариант был представлен выше, рабочее название "100%".
Жрать G-код и макрокоманды компьютером. Им же синхронизиовать работу осей между собой. Компьютер позволяет добавлять новые устройства в готовую систему, по мере возникновения необходимости. Например - кнопки, штурвалы, маховички, датчики и т. д.
Программу можно сделать как с нуля - в самом простом исполнении, для получения навыков и понимания процесса, так и использовать готовые наработки. Здесь единственный вариант линукс CNC, с их открытым исходным кодом.
Зы: неспешно ищется исполнитель для написания оной программы. Финансирование уже обеспечено.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Apr 21 2017, 01:04
Сообщение #115


Гуру
******

Группа: Участник
Сообщений: 3 775
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



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

Go to the top of the page
 
+Quote Post
Леонид Григорьев...
сообщение Nov 10 2017, 10:53
Сообщение #116


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-10-16
Пользователь №: 93 698



Вырос до 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.
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 10 2017, 17:28
Сообщение #117


Профессионал
*****

Группа: Участник
Сообщений: 1 700
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Леонид Григорьевич @ Apr 20 2017, 09:35) *
Я бы не стал связываться с COM портом. Он очень чувствителен к помехам, уже есть опыт в этом деле. Даже USB более помехоустойчив. Еще как вариант - воткнуть плату RS-485


Вот это поворот, я смотрю. Вы точно с ком портом работали правильно, в смысле софта?
Go to the top of the page
 
+Quote Post
Леонид Григорьев...
сообщение Nov 11 2017, 04:49
Сообщение #118


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-10-16
Пользователь №: 93 698



Сейчас вопрос не в 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

Работает.
Теперь вопрос: как здесь опросник порт? На уровне программы.
Go to the top of the page
 
+Quote Post
Леонид Григорьев...
сообщение Nov 17 2017, 09:54
Сообщение #119


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-10-16
Пользователь №: 93 698



Научился в Питоне считывать порт. Функция getInSelected()
getInError()
и т. д.
Получил частоту обмена 22 КГц. Теперь нужно на C.
Go to the top of the page
 
+Quote Post

8 страниц V  « < 6 7 8
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd November 2017 - 15:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01879 секунд с 7
ELECTRONIX ©2004-2016