Re: маленький долгострой
Добавлено: 25 ноя 2014, 02:01
Судя по тексту программы туда ничего не и должно писаться. Более того, прога будет завершаться с ошибкой.
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
Код: Выделить всё
#!/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Один раз запишет...gedrolium писал(а):так вроде должен записывать переменную z в файл
Надо ещё читать вот тут http://linuxcnc.org/docs/devel/html/hal/intro.htmlgedrolium писал(а):чет я с hal не могу разобраться
net motion.spindle-speed-out-rps.out test.sp
не указано куда писать: write(z)gedrolium писал(а):т.е по идее частоты шпинделя дожны сохранятся в файле speed. txt
однако там пусто
Код: Выделить всё
#!/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
И как скорость в 16 раз увеличиласьgedrolium писал(а): Вообщем я вывел 16 проводов...
Наверно если до разборки установить такое же ускорение то получил такие же скоростиgedrolium писал(а):Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно
Сервы в помощьgedrolium писал(а):а я хочу и скорость и ускорение
Покупай у меня плату http://stepm.ru/ (правда только в конце сентября, не раньше).gedrolium писал(а):Скорость удалось поднять до 2500-3000мм/мин однако ускорение выше 500 выставить в принципе не возможно, а я хочу и скорость и ускорение
На форуме не раз показывали сервы которые дешевше шаговиковgedrolium писал(а):Серва хорошо, но дорого....
эту настройку я провожу в ручную, при помощи спец проги.michael-yurov писал(а):Да, еще... если драйверы Leadshine - нужно обязательно сделать автонастройку контура тока, дважды щелкнув четвертым переключателем.
Будет 5.gedrolium писал(а):по поводу платы думал, присматривал, но мне нужно 5 осей, а у тебя 4.
Если посчитать скорость нарастания тока в этих моторах при питании драйверов 68 В (я посчитаю упрощенно, исходя из пилообразной формы изменения тока в обмотках),gedrolium писал(а):характеристики эл.двигателя
индуктивность -6,5 mГн
сопротивление-0,6 ом
ток-6 А
напряжение питания 68 вольт