Страница 1 из 2

Эмулятор тахогенера, Какой лучший способ расчета переменной?

Добавлено: 12 фев 2013, 11:40
Dmaster
Вот глупый вопрос.. Видел как пишут скрипты для LINUXCNC для вычисления кких либо новых переменных для HAL, но так и не понял как создать

Собственно проблема. Задолбался чистить тахогенератор. Помехи на щетках, умирающий коллектор. в общем много всякой дряни в этом устройстве.
Мысль была такая. Заменить его одним из выходов +-10V ...
Взять показатели энкодера=>вычислить скорость=>Пересчитать значение для скорости оБ.мин => Выдать задание

Взять показатели энкодера= оно само всё читает и скорость высчитывает Выдавать задание- выдает,

но вот как его пересчитать для линейной зависимости 1000об мин 10в .
Попробовал через ладдер))) не вариант.. он преобразует переменную из Float в S32 и получается, что отбрасывает из значения дробные части.

Итого вопрос.. Как взять пин из хала.. пересчитать его ( самым быстрым способом) и выдать в хал с новым именем.

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 12 фев 2013, 11:48
nkp
Dmaster писал(а):Итого вопрос.. Как взять пин из хала.. пересчитать его ( самым быстрым способом) и выдать в хал с новым именем.
можно использовать sum
там и множитель будет и смещение прибавить можно

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 12 фев 2013, 12:02
Dmaster
вот бин.. замучался искать, а оно под носом лежит.)) пасипа.. вечером попробую
Как я понял функцию sum можно использовать непосредственно в hal файле?

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 12 фев 2013, 12:03
Nick
Ага :).

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 12 фев 2013, 12:09
nkp
примерно так:
loadrt sum2
sum2.0 servo-thread
net in0 sum2.0.in0 encoder.0.velocity
setp sum2.0.gain0 сюда_множитель
setp sum2.0.offset сюда_offset
net out_sum sum2.0.out xxxx.analogout0 (это для 7и77)
если выйдет - то это будет маленькая революция для старых двигов :cheesy:
может не хватить быстродействия - даже с учетом небольшой (на первый взгляд) длительности servo-периода ;)

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 12 фев 2013, 19:07
Dmaster
Собралось и выглядит так)

loadrt sum2 count=1
addf sum2.0 servo-thread
net z-vel-fb => sum2.0.in0
setp sum2.0.gain0 0.12

setp hm2_5i20.0.pwmgen.02.output-type 1
setp hm2_5i20.0.pwmgen.02.scale 10
setp hm2_5i20.0.pwmgen.02.enable 1
net taho sum2.0.out => hm2_5i20.0.pwmgen.02.value

Показания похожи на правду. Полевые испытания назначены на субботу. ЖДЕМ)!

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 13 фев 2013, 00:22
Nick
Стоп, а зачем тогда вообще sum2, если и в энкодере и в pwmgen есть scale? :thinking:

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 13 фев 2013, 14:27
Dmaster
потому, что ПО НЕЯСНОЙ мне причине.. scale не влияло на показания pwmgen value или оно влияет непосредсвенно па напряжение на выходе.

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 13 фев 2013, 15:52
Nick
Именно так:
pwmgen.value - это пин входа, из него рассчитывается
dc = (value/scale) + offset
и это значение выводится через out в виде ШИМ.
Просто так этот out не увидеть. Разве что в halscope смотреть и оценивать увеличение частоты :)

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 13 фев 2013, 16:06
Dmaster
хммммм... тогда ясно))).. тогда всё удобнее))))

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 13 фев 2013, 22:33
Dmaster
ИТАК!!! ЗАРАБОТАЛО!!!))))... привод держит.. но настройки пид еще подгонять

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 18:39
Dmaster
Возник вопрос. в ходе точной настройки.
При старте движения по координате есть резкий скачек рассогласования ferror. При остановке то-же самое.
В остальном движение просто ОТЛИЧНОЕ) рассогласование при скорости 2000 мм мин 0.005
Но вот скачек в начале и в конце движения меня сильно напрягает ( при использовании старого тахогенератора скачка нет, но шумов куча) .
Думается мне, это из-за Особенностей расчета скорости самим LUNUX cnc.
Как по номальному взять
encoder.N.rawcounts s32 out

Отправить его в другой энкодер
задать другой
encoder.N.min-velocity-estimate
и получить более жесткий расчет скорости.

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 18:58
Nick
Можешь сделать скрин halscope?
А что именно надо изменить в вычислении?

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 19:04
nkp
это с sum2 или напрямую???
--------------
может коэфициентом D в пид попробовать подправить
все таки не хватает быстродействия

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 19:16
Dmaster
это напрямую) PWM scale я расчитал 83.3333333333

скрина к сожеленю сегодня уже не достать(...
encoder.N.min-velocity-estimate задать 0.8 ...
На самом энкодере для оси я менять не хочу. это повлияет на настройки оси.

Наверное надо создать энкодер еще один и в него закинуть
encoder.N.rawcounts так как это самый быстрый пин.. на его осонове наверное и расчитывается скорость

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 20:27
Nick
Dmaster писал(а):На самом энкодере для оси я менять не хочу. это повлияет на настройки оси.
А как оно повлияет на настройки? вроде не должно...

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 20:45
Dmaster
Надо вырубить фильтр и посмотреть)
If set to True (the default), the quadrature counter needs 15 clocks to register a change on any of the three input lines (any pulse shorter than this is rejected as noise). If set to False, the quadrature counter needs only 3 clocks to register a change.
hm2_5i20.0.encoder.00.filter
и encoder.N.min-velocity-estimate задать 0.8

Я-б хотел что-б от показаний одного реального энкодера шли 2 разных расчета скорости, что-б можно было параметры тахогенератолра и параметры слежения за осью менять отдельно и наблюдать разницу в изменениях.

А как с одно пина хал отправить сигналы сразу на 2 других?

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 20:51
Nick
А фильтр зачем отключать? Какая у тебя частота на пинах энкодера? (К чему у тебя подключен энкодер?)
Dmaster писал(а):А как с одно пина хал отправить сигналы сразу на 2 других?
Просто пишешь net <имя сигнала> и нужный пин(ы).

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 21:08
Dmaster
энкодер к 7i33 а она в свою очередь в 5i20
если так net z-pos-rawcounts <= hm2_5i20.0.encoder.00.rawcounts encoder.0.rawcounts
Мне пишет пин hm2_5i20.0.encoder.00.rawcounts it already has OUT pin z-pos-rawcounts

Re: Эмулятор тахогенера, Какой лучший способ расчета перемен

Добавлено: 18 фев 2013, 21:35
Nick
Dmaster писал(а):энкодер к 7i33 а она в свою очередь в 5i20
Тогда лучше распараллель контакты и сделай два энкодера на 5i20.
Dmaster писал(а):Мне пишет пин hm2_5i20.0.encoder.00.rawcounts it already has OUT pin z-pos-rawcounts
Так ты хочешь в rawcounts писать? Так не выйдет - это пин Out, а не In - т.е. read-only ;)