маленький долгострой
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: маленький долгострой
Судя по тексту программы туда ничего не и должно писаться. Более того, прога будет завершаться с ошибкой.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
так вроде должен записывать переменную z в файл
чет я с hal не могу разобраться
net motion.spindle-speed-out-rps.out test.sp
Код: Выделить всё
#!/usr/bin/python
import hal, time
file = open("/home/usercnc/linuxcnc/configs/cnc/speed.txt", 'w')
h = hal.component("test")
h.newpin("sp", hal.HAL_FLOAT, hal.HAL_IN)
#h.newpin("sp", hal.HAL_FLOAT, hal.HAL_OUT)
h.ready()
z1= h['sp']
file.write(z1)
try:
while 1:
time.sleep(1)
z= h['sp']
#file.write('12')
except KeyboardInterrupt:
raise SystemExit
net motion.spindle-speed-out-rps.out test.sp
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: маленький долгострой
Один раз запишет...gedrolium писал(а):так вроде должен записывать переменную z в файл
Надо ещё читать вот тут http://linuxcnc.org/docs/devel/html/hal/intro.htmlgedrolium писал(а):чет я с hal не могу разобраться
net motion.spindle-speed-out-rps.out test.sp
Два пина можно соединить только через сигнал.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: маленький долгострой
не указано куда писать: write(z)gedrolium писал(а):т.е по идее частоты шпинделя дожны сохранятся в файле speed. txt
однако там пусто
должно быть что-то вроде file.write(z)
лучше не использовать file как название переменной - это встроенный тип. Назови его просто f.
более того, проще все просто в консоль выводить
print h['in']
и чтобы это было не слишком часто, добавь
time.sleep(0.5) в цикл
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
Так у меня и не получилось получить данные, то не записываются, то пин пропадает. Если и запысывается, то тольов через str, но и это ни чего не дает в инт перевести не возможно. Не знаю, что я не так делаю, может у кого из вас получиться сделать нормально.
linuxcnc 2.6.4 debian
У меня же вышло несколько иначе, правда прогу нужно запускать вручную в терминале.
https://www.youtube.com/watch?v=UCBZ5XO36DQ
это программка для управления шпинделем ed3100 по протоколу modbus, она к сожалению работает только на отправку команд.. Прогу нужно еще дорабатывать. Поэтому могут быть косячки....
Для приема данных нужно разбираться в системе команд, а где их искать хрен его занет. Ну и за код не сильно пинайте,
linuxcnc 2.6.4 debian
У меня же вышло несколько иначе, правда прогу нужно запускать вручную в терминале.
https://www.youtube.com/watch?v=UCBZ5XO36DQ
это программка для управления шпинделем ed3100 по протоколу modbus, она к сожалению работает только на отправку команд.. Прогу нужно еще дорабатывать. Поэтому могут быть косячки....
Для приема данных нужно разбираться в системе команд, а где их искать хрен его занет. Ну и за код не сильно пинайте,
Код: Выделить всё
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import linuxcnc, time, serial, struct
ser=serial.Serial(port='/dev/ttyS0', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS,)
try:
#----------------------------------------------------------------
while 1:
#------------------------------------------------------------------------------
time.sleep(2)
ins=linuxcnc.stat()
ins.poll()
s1=ins.spindle_speed
if s1<2:
s1=0
s=(s1/60)*100 # входящий праметр
y=(int(s)) # перевод в целое число
t=str(hex(y)) # перевод в строку для разделения байт
l=len(t) # нахождение длины строки
t1=t[2:l] # удаление лишних символов 0x
l1=len(t1)
#------------------------------------------------------------------------------
if l1 % 2 <> 0:
t0=('0')
t1=t0+t1
if (l1 % 2 == 0) and (l1==2) or (s1==0):
t0=('00')
t1=t0+t1
#-------------------------------------------------------------------------------
d=[]
data=[]
l1=len(t1)
l0=l1
#----------------------------------------------------------
while l0<>0:
#-------------------------------------------------------------------------------
l0=l1-2
a=t1[l0:l1] # поиск в строке по номеру символа
a=(int(a,16))
a=(hex(a))
d.insert(0,a)
l1=l1-2
#--------------------------------------------------------------------
n1=(hex(0x01))
n2=(hex(0x10))
n3=(hex(0x20))
n4=(hex(0x00))
n5=(hex(0x00))
n6=(hex(0x02))
n7=(hex(0x04))
n8=(hex(0x00))
n9=(hex(0x12))
data=[]+[n1,n2,n3,n4,n5,n6,n7,n8,n9]
data.extend(d)
#---------------------------------------------------------------------------
ldata=(int(len(data)))
t1=data[0]
F=(int(0xffff))
p=(int(0xa001)) # полином
t1=(int(t1,16))
CRC=(t1^F)
e=0
b1=0
#--------------------------------------------
while ldata<>0:
e=e+1
b=0
while b<>8:
t=(CRC & 1)
if t==1:
CRC>>=1
CRC=(CRC^p)
if t==0:
CRC>>=1
b=b+1
if e==11:
e=e-1
crce=CRC
z=data[e]
z=(int(z,16))
CRC=CRC^z
ldata=ldata-1
#____________________________________________________________
y1=(int(crce)) # перевод в целое число
t1=str(hex(y1)) # перевод в строку для разделения байт
d1=('')
a1=t1[4:6] # поиск в строке по номеру символа
a2=t1[2:4]
d1=(a1+a2)
d1=int(d1,16)
crcend=struct.pack('>H',d1)
#-------------------------------------------------------------
nt1=('\x01')
nt2=('\x10')
nt3=('\x20')
nt4=('\x00')
nt5=('\x00')
nt6=('\x02')
nt7=('\x04')
nt8=('\x00')
nt9=('\x12')
si=struct.pack('>H',s)
speed=(nt1+nt2+nt3+nt4+nt5+nt6+nt7+nt8+nt9+si+crcend)
ser.write(speed)
print(repr(speed))
#----------------------------------------------------------------------------
except KeyboardInterrupt:
raise SystemExit
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
Проект несколько тормознулся из-за сгоревших драйверов и курса доллара, и так как дело хоть как-то сдвинулось, вот немного фоток
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
Еще мне пришлось слегка разобрать шпиндель для замены разъема. И глядя на на все это у меня появилась идея встроить датчик холла. Инвертор поддерживает функцию ПИД регулирования.
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
Стоит ли заморачиваться?
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
Пока шпиндель отложил на потом. Меня разочаровали скорости осей, они конечно здорово зависят от ускорения. Но выжать более 1800мм/мин не удавалось, все что выше могло сорваться в любой момент. Однако я мог выставить ускорение в 1000мм*с2 и понизив максимальную скорость до 1200-1500. Вообщем решил я поэкспериментировать и переделать двигатель на 8 выводной. Разобрав я обнаружил что катушек там аж целых 8 штук, ну я и решил а почему бы не питать каждую отдельно. Вообщем я вывел 16 проводов...
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: маленький долгострой
И как скорость в 16 раз увеличиласьgedrolium писал(а): Вообщем я вывел 16 проводов...
И куда теперь прикручивать эти 16 проводов? Напрямую к LPT
Был у меня Nema42 максимально смог его раскрутить до 150 об/мин, после разборки этот показатель упал до 120 об/мин.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
Подключив все это дело параллельно я не много расстроился, мотор крутиться выше 300-350 оборотов в мин отказывался, и остановить пальцами мотор не составляло ни какого труда. Я даже не стал его ставить на ось. Позже я пере коммутировал обмотки. Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно, а я хочу и скорость и ускорение
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: маленький долгострой
Наверно если до разборки установить такое же ускорение то получил такие же скоростиgedrolium писал(а):Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно
Сервы в помощьgedrolium писал(а):а я хочу и скорость и ускорение
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
До переборки выше 2100 даже при ускорении 300 не мог получить. Серва хорошо, но дорого....
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: маленький долгострой
Покупай у меня плату http://stepm.ru/ (правда только в конце сентября, не раньше).gedrolium писал(а):Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно, а я хочу и скорость и ускорение
и срывов не будет, и скорость возрастет и ускорение можно будет поставить в несколько раз выше.
Да, еще... если драйверы Leadshine - нужно обязательно сделать автонастройку контура тока, дважды щелкнув четвертым переключателем.
Ну и моторам с высокой индуктивностью нужно высокое напряжение питания.
Если скажешь индуктивность, рабочий ток моторов и напряжение питания драйверов - я посчитаю, до какой скорости они должны нормально работать.
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: маленький долгострой
На форуме не раз показывали сервы которые дешевше шаговиковgedrolium писал(а):Серва хорошо, но дорого....
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
-
- Кандидат
- Сообщения: 59
- Зарегистрирован: 18 янв 2014, 20:07
- Репутация: 16
- Контактная информация:
Re: маленький долгострой
эту настройку я провожу в ручную, при помощи спец проги.michael-yurov писал(а):Да, еще... если драйверы Leadshine - нужно обязательно сделать автонастройку контура тока, дважды щелкнув четвертым переключателем.
характеристики эл.двигателя
индуктивность -6,5 mГн
сопротивление-0,6 ом
ток-6 А
напряжение питания 68 вольт
по поводу платы думал, присматривал, но мне нужно 5 осей, а у тебя 4.
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: маленький долгострой
Будет 5.gedrolium писал(а):по поводу платы думал, присматривал, но мне нужно 5 осей, а у тебя 4.
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: маленький долгострой
Если посчитать скорость нарастания тока в этих моторах при питании драйверов 68 В (я посчитаю упрощенно, исходя из пилообразной формы изменения тока в обмотках),gedrolium писал(а):характеристики эл.двигателя
индуктивность -6,5 mГн
сопротивление-0,6 ом
ток-6 А
напряжение питания 68 вольт
получается что для изменения тока от ноля до максимального значения (8,5 А, если действующее значение 6 А), что должно происходить при каждом полном шаге, потребуется 6.5 мГн / (68 В - 5,1 В) x 8,5 А= 0,878 мс
Т.е. 1 полный оборот будет совершен за 175,7 мс (5,7 об/сек)
за 1 минуту - 341 оборот, или 1707 мм /мин (для ШВП с шагом 5 мм без редукторов).
Это и будет теоретическим потолком для данных моторов при напряжении питания 68 В.
Выше данной скорости моторы начнут быстро терять крутящий момент.
Чтобы добиться более высоких скоростей - нужно либо напряжение питания драйверов выше, либо моторы меньше (с меньшей индуктивностью и меньшим рабочим током).
Зависимость от индуктивности, тока и напряжения - линейная (для тока и индуктивности - обратная).