Страница 4 из 4

Re: маленький долгострой

Добавлено: 25 ноя 2014, 02:01
Serg
Судя по тексту программы туда ничего не и должно писаться. Более того, прога будет завершаться с ошибкой.

Re: маленький долгострой

Добавлено: 25 ноя 2014, 18:00
gedrolium
так вроде должен записывать переменную z в файл

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

#!/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
чет я с hal не могу разобраться
net motion.spindle-speed-out-rps.out test.sp

Re: маленький долгострой

Добавлено: 25 ноя 2014, 19:19
Serg
gedrolium писал(а):так вроде должен записывать переменную z в файл
Один раз запишет... :)
gedrolium писал(а):чет я с hal не могу разобраться
net motion.spindle-speed-out-rps.out test.sp
Надо ещё читать вот тут http://linuxcnc.org/docs/devel/html/hal/intro.html :)
Два пина можно соединить только через сигнал.

Re: маленький долгострой

Добавлено: 26 ноя 2014, 09:37
Nick
gedrolium писал(а):т.е по идее частоты шпинделя дожны сохранятся в файле speed. txt
однако там пусто
не указано куда писать: write(z)
должно быть что-то вроде file.write(z)

лучше не использовать file как название переменной - это встроенный тип. Назови его просто f.

более того, проще все просто в консоль выводить
print h['in']
и чтобы это было не слишком часто, добавь
time.sleep(0.5) в цикл

Re: маленький долгострой

Добавлено: 28 ноя 2014, 00:09
gedrolium
Так у меня и не получилось получить данные, то не записываются, то пин пропадает. Если и запысывается, то тольов через str, но и это ни чего не дает в инт перевести не возможно. Не знаю, что я не так делаю, может у кого из вас получиться сделать нормально.
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
    

Re: маленький долгострой

Добавлено: 02 авг 2015, 03:48
gedrolium
Проект несколько тормознулся из-за сгоревших драйверов и курса доллара, и так как дело хоть как-то сдвинулось, вот немного фоток

Re: маленький долгострой

Добавлено: 02 авг 2015, 03:55
gedrolium
Еще мне пришлось слегка разобрать шпиндель для замены разъема. И глядя на на все это у меня появилась идея встроить датчик холла. Инвертор поддерживает функцию ПИД регулирования.

Re: маленький долгострой

Добавлено: 02 авг 2015, 03:56
gedrolium
Стоит ли заморачиваться?

Re: маленький долгострой

Добавлено: 12 авг 2015, 20:24
gedrolium
Пока шпиндель отложил на потом. Меня разочаровали скорости осей, они конечно здорово зависят от ускорения. Но выжать более 1800мм/мин не удавалось, все что выше могло сорваться в любой момент. Однако я мог выставить ускорение в 1000мм*с2 и понизив максимальную скорость до 1200-1500. Вообщем решил я поэкспериментировать и переделать двигатель на 8 выводной. Разобрав я обнаружил что катушек там аж целых 8 штук, ну я и решил а почему бы не питать каждую отдельно. Вообщем я вывел 16 проводов...

Re: маленький долгострой

Добавлено: 12 авг 2015, 20:33
aftaev
gedrolium писал(а): Вообщем я вывел 16 проводов...
И как скорость в 16 раз увеличилась :)
И куда теперь прикручивать эти 16 проводов? Напрямую к LPT :lol:

Был у меня Nema42 максимально смог его раскрутить до 150 об/мин, после разборки этот показатель упал до 120 об/мин. ;)

Re: маленький долгострой

Добавлено: 12 авг 2015, 20:41
gedrolium
Подключив все это дело параллельно я не много расстроился, мотор крутиться выше 300-350 оборотов в мин отказывался, и остановить пальцами мотор не составляло ни какого труда. Я даже не стал его ставить на ось. Позже я пере коммутировал обмотки. Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно, а я хочу и скорость и ускорение

Re: маленький долгострой

Добавлено: 12 авг 2015, 20:55
aftaev
gedrolium писал(а):Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно
Наверно если до разборки установить такое же ускорение то получил такие же скорости ;)
gedrolium писал(а):а я хочу и скорость и ускорение
Сервы в помощь ;)

Re: маленький долгострой

Добавлено: 12 авг 2015, 21:01
gedrolium
До переборки выше 2100 даже при ускорении 300 не мог получить. Серва хорошо, но дорого....

Re: маленький долгострой

Добавлено: 12 авг 2015, 21:06
michael-yurov
gedrolium писал(а):Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно, а я хочу и скорость и ускорение
Покупай у меня плату http://stepm.ru/ (правда только в конце сентября, не раньше).
и срывов не будет, и скорость возрастет и ускорение можно будет поставить в несколько раз выше.

Да, еще... если драйверы Leadshine - нужно обязательно сделать автонастройку контура тока, дважды щелкнув четвертым переключателем.

Ну и моторам с высокой индуктивностью нужно высокое напряжение питания.
Если скажешь индуктивность, рабочий ток моторов и напряжение питания драйверов - я посчитаю, до какой скорости они должны нормально работать.

Re: маленький долгострой

Добавлено: 12 авг 2015, 21:49
aftaev
gedrolium писал(а):Серва хорошо, но дорого....
На форуме не раз показывали сервы которые дешевше шаговиков ;)

Re: маленький долгострой

Добавлено: 13 авг 2015, 09:11
gedrolium
michael-yurov писал(а):Да, еще... если драйверы Leadshine - нужно обязательно сделать автонастройку контура тока, дважды щелкнув четвертым переключателем.
эту настройку я провожу в ручную, при помощи спец проги.

характеристики эл.двигателя
индуктивность -6,5 mГн
сопротивление-0,6 ом
ток-6 А
напряжение питания 68 вольт


по поводу платы думал, присматривал, но мне нужно 5 осей, а у тебя 4.

Re: маленький долгострой

Добавлено: 13 авг 2015, 09:33
michael-yurov
gedrolium писал(а):по поводу платы думал, присматривал, но мне нужно 5 осей, а у тебя 4.
Будет 5.

Re: маленький долгострой

Добавлено: 13 авг 2015, 10:11
michael-yurov
gedrolium писал(а):характеристики эл.двигателя
индуктивность -6,5 mГн
сопротивление-0,6 ом
ток-6 А
напряжение питания 68 вольт
Если посчитать скорость нарастания тока в этих моторах при питании драйверов 68 В (я посчитаю упрощенно, исходя из пилообразной формы изменения тока в обмотках),
получается что для изменения тока от ноля до максимального значения (8,5 А, если действующее значение 6 А), что должно происходить при каждом полном шаге, потребуется 6.5 мГн / (68 В - 5,1 В) x 8,5 А= 0,878 мс
Т.е. 1 полный оборот будет совершен за 175,7 мс (5,7 об/сек)
за 1 минуту - 341 оборот, или 1707 мм /мин (для ШВП с шагом 5 мм без редукторов).

Это и будет теоретическим потолком для данных моторов при напряжении питания 68 В.
Выше данной скорости моторы начнут быстро терять крутящий момент.
Чтобы добиться более высоких скоростей - нужно либо напряжение питания драйверов выше, либо моторы меньше (с меньшей индуктивностью и меньшим рабочим током).
Зависимость от индуктивности, тока и напряжения - линейная (для тока и индуктивности - обратная).