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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

Вот глупый вопрос.. Видел как пишут скрипты для LINUXCNC для вычисления кких либо новых переменных для HAL, но так и не понял как создать

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

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

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

Итого вопрос.. Как взять пин из хала.. пересчитать его ( самым быстрым способом) и выдать в хал с новым именем.
" Linux CNC - наше всё"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Dmaster писал(а):Итого вопрос.. Как взять пин из хала.. пересчитать его ( самым быстрым способом) и выдать в хал с новым именем.
можно использовать sum
там и множитель будет и смещение прибавить можно
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

вот бин.. замучался искать, а оно под носом лежит.)) пасипа.. вечером попробую
Как я понял функцию sum можно использовать непосредственно в hal файле?
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Ага :).
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение 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-периода ;)
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение 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

Показания похожи на правду. Полевые испытания назначены на субботу. ЖДЕМ)!
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Стоп, а зачем тогда вообще sum2, если и в энкодере и в pwmgen есть scale? :thinking:
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

потому, что ПО НЕЯСНОЙ мне причине.. scale не влияло на показания pwmgen value или оно влияет непосредсвенно па напряжение на выходе.
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Именно так:
pwmgen.value - это пин входа, из него рассчитывается
dc = (value/scale) + offset
и это значение выводится через out в виде ШИМ.
Просто так этот out не увидеть. Разве что в halscope смотреть и оценивать увеличение частоты :)
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

хммммм... тогда ясно))).. тогда всё удобнее))))
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

ИТАК!!! ЗАРАБОТАЛО!!!))))... привод держит.. но настройки пид еще подгонять
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

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

Отправить его в другой энкодер
задать другой
encoder.N.min-velocity-estimate
и получить более жесткий расчет скорости.
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Можешь сделать скрин halscope?
А что именно надо изменить в вычислении?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

это с sum2 или напрямую???
--------------
может коэфициентом D в пид попробовать подправить
все таки не хватает быстродействия
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

это напрямую) PWM scale я расчитал 83.3333333333

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

Наверное надо создать энкодер еще один и в него закинуть
encoder.N.rawcounts так как это самый быстрый пин.. на его осонове наверное и расчитывается скорость
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Dmaster писал(а):На самом энкодере для оси я менять не хочу. это повлияет на настройки оси.
А как оно повлияет на настройки? вроде не должно...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение 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 других?
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

А фильтр зачем отключать? Какая у тебя частота на пинах энкодера? (К чему у тебя подключен энкодер?)
Dmaster писал(а):А как с одно пина хал отправить сигналы сразу на 2 других?
Просто пишешь net <имя сигнала> и нужный пин(ы).
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение 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
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение 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 ;)
Ответить

Вернуться в «LinuxCNC»