Шаг + серво на Pluto-P

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

Спасибо вроде начало работать.
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

Правильно ли я понимаю по хал скопу что это проблмы со связью?
Если согласовать с помощью транзистора как на схеме, либо какие спец микросхемы порекомендуете ?
Вложения
19-51-26.png (2544 просмотра) <a class='original' href='./download/file.php?id=52828&mode=view' target=_blank>Загрузить оригинал (57.29 КБ)</a>
1205399989_4.gif
1205399989_4.gif (3.91 КБ) 2544 просмотра
Pavel_M
Новичок
Сообщения: 32
Зарегистрирован: 10 янв 2015, 11:44
Репутация: 9
Настоящее имя: Павел
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Pavel_M »

Да, это явно проблемы со связью. А драйвер pluto_servo используется?
Pavel_M
Новичок
Сообщения: 32
Зарегистрирован: 10 янв 2015, 11:44
Репутация: 9
Настоящее имя: Павел
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Pavel_M »

Такую связку для согласования уровне можно использовать и если есть возможность проконтролировать крутизну фронтов/спадов осциллографом. А у вас силовая часть подсоединена? Если силовая часть используется без гальванической развязки и неудачной разводкой общего провода, то она может быть источником помех.
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

Драйвер,прошивка с Ваших файлов взят. Силовой части нету только энкодер ВЕ-178А через делитель напряжения стоит. Сегодня гляну осциллографом что происходит на передаче данных.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Сергей Саныч »

Такая схема согласования (с общим затвором) имеет высокое выходное сопротивление. Могут быть завалы фронтов и низкая помехоустойчивость, особенно в состоянии лог.1.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

А если что из серии ADUM1400?

Низкое потребление:
При 5 В питании:
- 1.0 мА на канал на скорости до 2 Мбит/с
- 3.5 мА на канал на скорости 10 Мбит/с
При 3 В питании:
- 0.7 мА на канал на скорости до 2 Мбит/с
- 2.1 мА на канал на скорости 10 Мбит/с
Двунаправленная передача данных
Совместим с 3.3 В и 5.0 В питанием/уровнями логических сигналов
Максимальная рабочая температура 100°C
Высокая скорость передачи данных: от 0 до 100 Мбит/с (NRZ)
временные параметры:
максимальное искажение длительности импульса 2 нс
максимальное временное рассогласование каналов 2 нс
Способность выдерживать воздействие изменяющегося входного синфазного сигнала, имеющего скорость нарастания более 25 кВ/мкс
Функция активизации выходов
Широкий 16 выводной SOIC корпус
Отвечает требования 5 параграфа CSA
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Сергей Саныч »

А кто, кстати, будет переключать направление передачи данных, если ставить какие-то буфера?
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

ну то что я предложил двунаправленная передача данных.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Сергей Саныч »

Techno писал(а):то что я предложил двунаправленная передача данных.
Которая? Схема на КМОП-транзисторе - да. Но она вряд ли повысит помехоустойчивость. А буферные микросхемы нужно переключать внешними сигналами. Без этого они двунаправленности не обеспечат.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

Вы правы там надо направление.
А что скажите по поводу TXB0108
8-Bit Bidirectional Voltage-Level Translator
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Сергей Саныч »

Попробовать можно. Теоретически вроде бы должно работать.
Но для начала имеет смысл просто предельно укоротить соединительные провода между портом и платой.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

собрано на соплях максимально близко к плате.
Pavel_M
Новичок
Сообщения: 32
Зарегистрирован: 10 янв 2015, 11:44
Репутация: 9
Настоящее имя: Павел
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Pavel_M »

Видимо работа порта на моём буке отличается, хотя передача данных работает по исправленной схеме. Если в Новосибирске, то как вариант можно попробывать подключить вашу плату у меня. Кстати ЛПТ используется родной или дочерняя плата? какой версии линукс и линуксцнц? Может попробывать подключить к другому по конфигурации компу?
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

Добрый всем вечер или ночь. Наконец то появилось время вернуться к плате.
Начну по порядку.
1.Поменял конфигурацию компьютера к которому подключаю ПЛИС.
2. Поменял энкодер который подключен к ПЛИС (Раньше это был ВЕ-178) сейчас стоит OMRON.
После таких нововведений связь стала стабильной POS-CMD красивая кривая.

Использую прошивку из первого поста, так же настройки linuxcnc из первого поста .

Но как всегда есть НО!
Теперь проблема стоит в другом нету генерации ШИМ на ножках ПЛИС.
По идеи когда я включаю станок и начинаю движение по оси то на соответствующих ножках должен быть ШИМ 20кгц (Но его нету).

Думал что порт приказал долго жить. Нашел прошивку моргания светодиодом переназначил на 72 ножку (Там должен быть ШИМ), сигнал меняется (значит порт жив).

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

[EMC]
VERSION =               $Revision$
MACHINE =               LATHE-PLUTO
DEBUG = 0

[DISPLAY]
#PYVCP = vcp.xml
DISPLAY =               axis
#LATHE =                 1
CYCLE_TIME =            0.200
POSITION_OFFSET =       MACHINE
POSITION_FEEDBACK =     ACTUAL
MAX_FEED_OVERRIDE =     1.5
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files

# Editor to be used with Axis
EDITOR = gedit


[FILTER]
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .NGC rs274ngc files
py = python

[TASK]
TASK =                  milltask
CYCLE_TIME =            0.001

[RS274NGC]
PARAMETER_FILE =        emc.var

[EMCMOT]
EMCMOT =                motmod
COMM_TIMEOUT =          1.0
COMM_WAIT =             0.010
SERVO_PERIOD =          500000

[HAL]
HALFILE =               lathe-pluto.hal
HALFILE =               axis_manualtoolchange.hal
#POSTGUI_HALFILE =       postgui.hal

[TRAJ]
AXES =                  3
COORDINATES =           X Y Z
HOME =                  0 0 0
LINEAR_UNITS =          1.0
ANGULAR_UNITS =         1.0
CYCLE_TIME =            0.0010
DEFAULT_VELOCITY =      300
MAX_VELOCITY =          300
DEFAULT_ACCELERATION =  1500
MAX_ACCELERATION =      1500

[AXIS_0]
TYPE =                          LINEAR
UNITS =                         1.0
HOME =                          0.0
HOME_SEQUENCE =			0
MAX_VELOCITY =                  300
MAX_ACCELERATION =              1500
BACKLASH =                      0.00
CYCLE_TIME =                    0.001000
INPUT_SCALE =                   102.5 
OUTPUT_SCALE =                  1.000 
MIN_LIMIT =                     0.0
MAX_LIMIT =                     280.50001
FERROR = 10000
MIN_FERROR = 10000
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             YES
P =                              75.99
I =                              0.76
D =                                0.165
BIAS =                             0
FF0 =                              0.012
FF1 =                              0.033
FF2 =                              0.002
DEADBAND=.00009

[AXIS_1]
TYPE =                          LINEAR
UNITS =                         1.0
HOME =                          0.0
HOME_SEQUENCE =			0
MAX_VELOCITY =                  250
MAX_ACCELERATION =              1500
BACKLASH = 0.00
CYCLE_TIME =                    0.001000
INPUT_SCALE =                   119.7
OUTPUT_SCALE = 1.000 
MIN_LIMIT =                     0.0
MAX_LIMIT =                     280.0
FERROR = 10000
MIN_FERROR = 10000
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             YES
P =                              80
I =                              1
D =                                0.13
BIAS =                             0
FF0 =                              0.032
FF1 =                              0.058
FF2 =                              0.001
DEADBAND=         .00009

[AXIS_2]
TYPE =                          LINEAR
HOME =                          0.0
MAX_VELOCITY =                  10
MAX_ACCELERATION =              15.0
BACKLASH = 0.000
SCALE =                   -100
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     0.0
MAX_LIMIT =                     34.0
FERROR = 0.950
MIN_FERROR = 0.910
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             YES


[EMCIO]
EMCIO = 		io
CYCLE_TIME =            0.100
TOOL_TABLE =            emc.tbl
TOOL_CHANGE_POSITION =  40 0 20


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


# load realtime modules
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt pid num_chan=2 debug=1
loadrt ddt count=4 
loadrt pluto_servo
loadrt scale
loadrt mux2
loadrt debounce cfg=1
loadrt limit1 count=1

addf pluto-servo.read        servo-thread
addf motion-command-handler  servo-thread
addf motion-controller       servo-thread
addf pid.0.do-pid-calcs      servo-thread
addf pid.1.do-pid-calcs      servo-thread
addf pluto-servo.write       servo-thread

addf ddt.0                   servo-thread
addf ddt.1                   servo-thread
addf ddt.2                   servo-thread
addf ddt.3                   servo-thread
addf scale.0                 servo-thread
addf mux2.0                  servo-thread
addf debounce.0              servo-thread
addf limit1.0                servo-thread

# Step
setp pluto-servo.stepgen.2.scale [AXIS_2]SCALE
net Zpos-cmd axis.2.motor-pos-cmd => pluto-servo.stepgen.2.position-cmd
net Zpos-fb pluto-servo.stepgen.2.position-fb => axis.2.motor-pos-fb
net Zen axis.2.amp-enable-out => pluto-servo.stepgen.2.enable
setp pluto-servo.stepgen.steplen 40000
setp pluto-servo.stepgen.stepspace 40000
setp pluto-servo.stepgen.dirtime 40000

#end Step

setp pluto-servo.encoder.0.scale [AXIS_0]INPUT_SCALE
setp pluto-servo.encoder.1.scale [AXIS_1]INPUT_SCALE
setp pluto-servo.encoder.2.scale -4096

setp pluto-servo.pwm.0.scale 26 # volts supply
setp pluto-servo.pwm.1.scale 26

setp pid.0.maxoutput 26 # volts at motor
setp pid.1.maxoutput 26


# the values below come from the ini
setp pid.0.Pgain [AXIS_0]P
setp pid.0.Igain [AXIS_0]I
setp pid.0.Dgain [AXIS_0]D
setp pid.0.bias [AXIS_0]BIAS
setp pid.0.FF0 [AXIS_0]FF0
setp pid.0.FF1 [AXIS_0]FF1
setp pid.0.FF2 [AXIS_0]FF2
setp pid.0.deadband [AXIS_0]DEADBAND

setp pid.1.Pgain [AXIS_1]P
setp pid.1.Igain [AXIS_1]I
setp pid.1.Dgain [AXIS_1]D
setp pid.1.bias [AXIS_1]BIAS
setp pid.1.FF0 [AXIS_1]FF0
setp pid.1.FF1 [AXIS_1]FF1
setp pid.1.FF2 [AXIS_1]FF2
setp pid.1.deadband [AXIS_1]DEADBAND

net Xpos-fb pluto-servo.encoder.0.position => pid.0.feedback axis.0.motor-pos-fb
net Ypos-fb pluto-servo.encoder.1.position => pid.1.feedback axis.1.motor-pos-fb

net Xpos-cmd axis.0.motor-pos-cmd => pid.0.command ddt.0.in
net Ypos-cmd axis.1.motor-pos-cmd => pid.1.command ddt.2.in

net Xvel-cmd pid.0.output => pluto-servo.pwm.0.value
net Yvel-cmd pid.1.output => pluto-servo.pwm.1.value

net Xvel ddt.0.out => ddt.1.in
net Xacc ddt.1.out

net Yvel ddt.2.out => ddt.3.in
net Yacc ddt.3.out

# machine ON
net Xenable axis.0.amp-enable-out => pid.0.enable pluto-servo.pwm.0.enable pluto-servo.dout.09
net Yenable axis.1.amp-enable-out => pid.1.enable pluto-servo.pwm.1.enable

net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in

# spindle SSR
# net spindle-fwd motion.spindle-forward pluto-servo.dout.00

setp debounce.0.delay 3
#net Xswitch pluto-servo.din.00-not => debounce.0.0.in
#net Xswitch-debounced debounce.0.0.out => axis.0.home-sw-in axis.0.pos-lim-sw-in

#net Yswitch pluto-servo.din.01-not => debounce.0.1.in
#net Yswitch-debounced debounce.0.1.out => axis.1.home-sw-in axis.1.pos-lim-sw-in

# tool loading loopback
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed

# spindle speed control
setp pluto-servo.pwm.3.enable 1

# this needs scale/offset to give the right speeds, but 0 should be 0
net spindle-speed-cmd motion.spindle-speed-out => limit1.0.in
net spindle-speed-cmd-limited limit1.0.out => scale.0.in
setp scale.0.gain 0.00026315789 # 1/3800
setp scale.0.offset 0.105
setp mux2.0.in0 0
# setp limit1.0.max 1300
net spindle-speed-scaled scale.0.out => mux2.0.in1
net spindle-fwd motion.spindle-forward => mux2.0.sel pluto-servo.dout.00
net spindle-pwm mux2.0.out => pluto-servo.pwm.3.value

# spindle position, for threading
net spindle-index motion.spindle-index-enable <=> pluto-servo.encoder.2.index-enable
net spindle-pos pluto-servo.encoder.2.position => motion.spindle-revs
net spindle-speed-fb pluto-servo.encoder.2.velocity => motion.spindle-speed-in



Pavel_M
Новичок
Сообщения: 32
Зарегистрирован: 10 янв 2015, 11:44
Репутация: 9
Настоящее имя: Павел
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Pavel_M »

Здесь сконфигурированы всего 2 координаты х и у. Из сразу увиденного FERROR = 2.9
MIN_FERROR = 2.2 или что то близкое, а не 10000. Методика проверки: 1. научится получать на энкодере минимальный поворот (на несколько единиц). 2. зацепиться на вывод ШИМ х. 3. включить питание платы, запустить линух цнц, нажать виртуальную кнопку активации станка, теперь мы в рабочем режиме и оси у нас вроде как уравновешенны при это у нас шима нет. Если внести рассогласование энкодером с "текущей позицией", !но! пределах MIN_FERROR появится шим в попытке скомпенсировать рассогласование. Если рассогласование превысит MIN_FERROR, то линух цнц вывалится с ошибкой превышения MIN_FERROR (как именно звучит не помню) и шим изчезнет...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Serg »

PLUTO_SERVO(9):
pluto-servo.pwm.M.pwmdir bit rw (M=0..3) (default: 0)
Set to TRUE use PWM+direction mode. Set to FALSE to use Up/Down mode.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Pavel_M
Новичок
Сообщения: 32
Зарегистрирован: 10 янв 2015, 11:44
Репутация: 9
Настоящее имя: Павел
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Pavel_M »

Да, действительно забыл упомянуть. Выходов шима 2 и активация конкретного зависит от направления рассогласования, то есть выходы настроены для управления мостом.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Serg »

Выход ШИМ один. Просто он может работать как ШИМ и не как ШИМ.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Techno
Кандидат
Сообщения: 59
Зарегистрирован: 07 сен 2011, 23:38
Репутация: 4
Контактная информация:

Re: Шаг + серво на Pluto-P

Сообщение Techno »

Я Ferror специально поставил 10000 что бы можно было давать рассогласование большое (Это неправильно ?).


pluto-servo.pwm.M.pwmdir bit rw (M=0..3) (default: 0)
Set to TRUE use PWM+direction mode. Set to FALSE to use Up/Down mode.
По умолчанию стоит Up/Down mode он мне и нужен (Хочу его потом в +-10В преобразовать)
Ответить

Вернуться в «Электроника»