Форум сайта python.su
Привет питонеры :)
И так дано:
есть некие координаты (x1,y1.z1) = 100,100,200 и (x2,y2,z2) = 400,200,100; (мм)
буфер обмена 4096 байт;
подача на двигатель одной оси приравнена условно 1000 сигналов == 1 мм; (т.е. каждые 4 мм надо делать сброс буфера)
рабочая(суммарная) скорость перемещения по координатам V = 200мм./сек.
Для варианта “”“Б”“” плавное ускорение и торможение. Ускорение = 2мм/сек**2
Задача такая:
нарисовать блок-схему и примерный математический расчёт.
думаю так же подойдёт http://ru.wikipedia.org/wiki/Алгоритм_DDA-линии или http://e-science.ru/math/theory/?t=277
я удумаю решать так(для начала в двумерном пространстве):
V == V(x) + V(y)
X2 - X1 = AB
Y2 - Y1 = BC
AC**2 = AB**2 + BC**2
если X2-X1 < 0 == против_часовой_стрелки
если X2-X1 > 0 == по_часовой_стрелки
иначе стоп
#____________________
если Y2-Y1 < 0 == против_часовой_стрелки
если Y2-Y1 > 0 == по_часовой_стрелки
иначе стоп
цикл_памяти = (((X2-X1)+(Y2-Y1))*1000)/(значение_буфера-96) #для очистки буфера
начало_цикла = 0
если начало_цикла не равно цикл_памяти:
начать движение пропорционально суммарно не превысив 4000 сигналов
иначе стоп
Офлайн
нахождение пропорции для 2Д, где
>>> a = модуль(x2-x1)
>>> b = модуль(у2-у1)
если а больше b
c = a/b
d = 1
если с*b равно a
подставить значение пропорционального хода(c,d)
иначе соблюдать пропорции(a,b)
если b больше a
c = b/a
d = 1
если с*a равно b
подставить значение пропорционального хода(c,d)
иначе соблюдать пропорции(a,b)
Офлайн
при распределении скоростей , знаем что скорость не должна превышать 200мм/сек. , тогда получается
максимальное_значение = 200000
суммарное_количество_за_секунду = квадратный_корень((х2-х1)**2+(у2-у1)**2)/максимальное_значение
суммарное_количество_за_секунду делим пропорционально движению
Офлайн
при плавном ускорении и торможении максимальное_значение варьируется от 0 до 200000
еще http://ru.wikipedia.org/wiki/Широтно-импульсная_модуляция может пригодиться
Отредактировано (Фев. 12, 2010 20:18:18)
Офлайн