Страница 11 из 21

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 25 май 2012, 18:34
Lexxa
Не работает ограниечени Uзадания((((

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

#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR

FERROR = 1000000000
MIN_FERROR = 100000000
MAX_VELOCITY = 2000
MAX_ACCELERATION = 2.0
P = 1.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.005
OUTPUT_SCALE = 2
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 5
INPUT_SCALE = 800.0
MIN_LIMIT = -790.0
MAX_LIMIT = 790.0
HOME_OFFSET = 750.000000
HOME = 0.0
HOME_SEARCH_VEL = -250.000000
HOME_LATCH_VEL = -3.000000
HOME_FINAL_VEL = 250.000000
HOME_USE_INDEX = YES
HOME_SEQUENCE = 1

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 25 май 2012, 18:47
Lexxa
Причем косячит либо 5i20, либо 7i33TA, поскольку если открыть окошко установки HAL, и быбрать нужный пин (hm2_5i20.0.pwmgen.01.value) , то больше 5 вольт там он не поднимается.
Может быть так, потому что без нагрузки работает 7i33TA?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 25 май 2012, 19:07
Lexxa
10 кОм не спасли ситуацию

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 25 май 2012, 20:26
Lexxa
Короче это 100% софтовый глюк.
Обновился до 2,5 релиза.
в pncconf есть тест месы. В этом тесте есть замечательные ползунки, устанавливающие напряжение на выходе шим. Этими ползунками преспокойненько устанавливается любое напряжение от -10В до +10В.
Следовательно связка 5и20+7и33 работает верно.
Т.е. не работает масштабирование!!!
Откатился на 2.4.7, поскольку 2.5 стартовать с моими настройками не хочет почему-то.
OUTPUT_SCALE = -2 знак минус меняет Uзадания, но что поразительно - не ограничивает

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 25 май 2012, 21:42
Lexxa
пин pid.x.output ограничивается MAX_OUTPUTом
соответственно hm2_5i20.0.pwmgen.01.value тоже ограничивается.
сигнал xoutput тоже.
так почему же на выходе 7i33TA сигнал 10В вместо установленного в MAX_OUTPUT и сгенерированного в xoutput ????????

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 25 май 2012, 22:45
Lexxa
Нашелся косяк.
Uзадания = MAX_OUTPUT умножить на OUTPUT_SCALE умножить на xoutput

Т.е. для ограничения Uзадания до 2В и его инверсии надо

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

OUTPUT_SCALE = -1
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 0.2
Т.е. 10В*(-1)*0,2 = 2В
Бред какой-то!
MAX_OUTPUT = 10 ( HAL ) The maximum value for the output of the PID compensation that is
written to the motor amplifier, in volts. The computed output value is clamped to this limit.
The limit is applied before scaling to raw output units. The value is applied symmetrically to
both the plus and the minus side.
не в вольтах оно, а в разах, причем прямой прапорциональности!!!!!!!!!!!!!!

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 27 май 2012, 18:21
Lexxa
Итак, запуск одной оси можно сказать успешно прошел

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

#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR

FERROR = 0.1
MIN_FERROR = 1
MAX_VELOCITY = 200000
MAX_ACCELERATION = 600
P = 1.0
I = 0
D = 0
FF0 = 0.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.005
OUTPUT_SCALE = -1
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1
INPUT_SCALE = 800.0
MIN_LIMIT = -790.0
MAX_LIMIT = 790.0
HOME_OFFSET = 750.000000
HOME = 0.0
HOME_SEARCH_VEL = 250.000000
HOME_LATCH_VEL = -3.000000
HOME_FINAL_VEL = 250.000000
HOME_USE_INDEX = YES
HOME_SEQUENCE = 1

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 27 май 2012, 22:34
Nick
Lexxa писал(а):The limit is applied before scaling to raw output units.
По идее это говорит, что он должен обрезать значение до MAX_OUTPUT, а потом спокойно масштабировать на выход :thinking: ... а, ну да, так оно и получается... может этому есть какое-то разумное объяснение...

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 12:08
Lexxa

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

# Загружаем модуль "производная"
loadrt ddt count=6

# Скорость и ошибка скорости Х
addf ddt.0                     servo-thread
addf ddt.1                     servo-thread
net xpos-cmd => ddt.0.in
net xvel ddt.0.out => => pid.x.command
net xpos-fb => ddt.1.in
net xvel-fb ddt.1.out =>  pid.x.feedback
Это, кстати, не заработало. Постоянно Uзадания = 0В и двигатель соответственно стоит на месте.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 14:17
Nick
А можешь снять скрин HAL Scope, с графиками xpos-cmd и ddt.0.out, ну и на всякий случай xpos-fb и xvel-fb и pid.out.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 18:18
Lexxa
Ник, давай еще раз пройдем по халу, который для регулирования скорости
Подозреваю ошибку

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

net xenable     => pid.x.enable
net xoutput     pid.x.output           => hm2_5i20.0.pwmgen.01.value
#net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command
net xpos-cmd => ddt.0.in
net xvel ddt.0.out => pid.x.command
net xpos-fb               <=  hm2_5i20.0.encoder.01.position
#net xpos-fb               =>  pid.x.feedback
net xpos-fb => ddt.1.in
net xvel-fb ddt.1.out =>  pid.x.feedback
Сейчад думаю, что правильно было бы так:

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

net xenable     => pid.x.enable
# Регулируемая величина - скорость
net xoutput     pid.x.output           => hm2_5i20.0.pwmgen.01.value
net xpos-cmd    axis.0.motor-pos-cmd   => ddt.0.in
net xvel ddt.0.out => pid.x.command
#Обратная связь по скорости
net xpos-fb               <=  hm2_5i20.0.encoder.01.position
net xpos-fb => ddt.1.in
net xvel-fb ddt.1.out =>  pid.x.feedback

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 18:22
Nick
Да, вот этого не хватало:
axis.0.motor-pos-cmd

Теперь работает?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 18:30
Lexxa
Да, только вот на станке смогу опробовать только в выходные, по крайней мере Uзадания теперь меняется как надо.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 19:06
Lexxa
Вот всё забываю спросить. Зачем загонять FERROR в малые значения?? Ведь FERROR это величина ошибки при быстром перемещении, точнее при большем, чем указанно в параметре [TRAJ]MAX_VELOCITY
Вряд ли на быстром ходу кому-то важно отношение расчетной скорости к истинной.
А вот MIN_FERROR - другое дело тут напротив очень важно отклонение от расчетной скорости.
поправьте меня, если я неправ

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 21:35
Nick
вроде как FERROR это для скорости равной MAX_VELOCITY, a min_ferror для скорости близкой к 0. Для других скоростей берется линейная интерполяция этих значений.

Весь вопрос в том, на какой скорости будет вестись обработка.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 22:59
Lexxa
Я чёт в мануалах про интерполяцию не встречал...

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 май 2012, 23:59
Nick
MIN_FERROR = 0.010 - This is the value in machine units by which the axis is permitted to deviate from commanded position
at very low speeds. If MIN_FERROR is smaller than FERROR, the two produce a ramp of error trip points. You could think
of this as a graph where one dimension is speed and the other is permitted following error. As speed increases the amount of
following error also increases toward the FERROR value.


• FERROR = 1.0 - FERROR is the maximum allowable following error, in machine units. If the difference between commanded
and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the
amplifiers. If MIN_FERROR is present in the .ini file, velocity-proportional following errors are used. Here, the maximum allowable
following error is proportional to the speed
, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY,
and proportionally smaller following errors for slower speeds. The maximum allowable following error will always be greater
than MIN_FERROR. This prevents small following errors for stationary axes from inadvertently aborting motion. Small following
errors will always be present due to vibration, etc. The following polarity values determine how inputs are interpreted
and how outputs are applied. They can usually be set via trial-and-error since there are only two possibilities. The EMC2 Servo
Axis Calibration utility program (in the AXIS interface menu Machine/Calibration and in TkEMC it is under Setting/Calibration)
can be used to set these and more interactively and verify their results so that the proper values can be put in the INI file
with a minimum of trouble.

как-то так...

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 03 июн 2012, 18:19
Lexxa
Разбирался сегодня с pid и решил проверить на "похожесть" скорость, считанную с энкодера, с производной перемещения.

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

loadrt ddt count=3
addf ddt.0                     servo-thread
addf ddt.1                     servo-thread
#Тест обратной связи по скорости Y
net y-axis-feedback <= hm2_5i20.0.encoder.01.position
net y-axis-feedback			=> ddt.1.in
net yvel-fb 				<= ddt.1.out
Крутил руками датчик и смотрел НАЛ-осцилоскопом.
Обнаружел неприятный эффект. На больших скоростях графики похожи, но на скорости от производной очень заметна дискретизация по уровню. На мальеньких же скоростях совсем ужас.
Т.е. имеет место сильный цифровой шум, точнее даже не шум, а квантованность Как увеличить количество уровней квантования?
Фото осцилоскопа с большии и маленькими скоростями в прицепе.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 04 июн 2012, 11:08
PKM
Lexxa писал(а):на скорости от производной очень заметна дискретизация по уровню. На мальеньких же скоростях совсем ужас
Кстати, а зачем тебе эта скорость по производной? Она разве используется где-то?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 04 июн 2012, 11:10
Lexxa
Чтобы в ПИД регулировать скорость.