как?
Сообщений в теме: 6
#1 OFFLINE
Отправлено 27 Июль 2014 - 01:58
мне не нужна война.мне нужен МИР. желательно весь...
#2 OFFLINE
Отправлено 27 Июль 2014 - 03:30
Сам я этого не делал,поэтому могу написать не правильно,но думаю что для софтварного декодирования это должно выглядеть так:
Для того чтоб можно было сразу приступить к эксперементам подключим сигналы ABZ энкодера к входным пинам LPT номер ....
Далее сигналы с LPT порта подаются через программный комутатор сигналов Hal на входы модуля encoder,
который на пине encoder.[axis_number].counts будет вырабатывать значение координаты которое надо будет подать на пин axis.N.motor-pos-fb модуля axis
Задействавание LPT порта: Parallel Port Driver
Описание модуля encoder: Encoder
Описание модуля Axis: Axis (Joints)
Описание программы net: net
Но надо учитывать,что быстродействия LPT порта не достаточно для своевременной обработки сигналов энкодера
при сколько бы то ни было заметном движениии станка,поэтому для рабочего варианта надо использовать аппаратные декодеры сигнала.
Они могут подключатся как к спецальным PC платам,как и по последовательным шинам (CAN RS485 и T-Rex ещё какие знает)
А здесь можно посмотреть на пример использования модуля encoder для управления станком через джойстик : #4
Сообщение отредактировал torvn77: 27 Июль 2014 - 03:31
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том...
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том...
#3 OFFLINE
Отправлено 27 Июль 2014 - 04:41
для первого ознакомления с принципом пусть будет на любой самой низкой скорости.
в принципе интересует простейший алгоритм:
1. LinuxCNC выдаёт на LPT порт команду сделать 1 шаг по Х 1 шаг по Y и 1 по Z
2. смотрит на входы LPT к которымм подключены энкодеры XYZ и убеждается что шаги сделаны.
3. если к примеру шаг по Х не сделан - пытается его сделать ещё раз и опять проверяет (дальнейшее выполнение программы останавливается пока не сделается шаг)
4. пытаемся раз 100 если неудача значит стоп и сообщение на экран - уберите бревно с пути...
или как-то по другому реализовано?
мне не нужна война.мне нужен МИР. желательно весь...
#4 OFFLINE
Отправлено 27 Июль 2014 - 05:25
Примерно так и работает,из axis исходит через пин axis.N.motor-pos-cmd желаемая позиция,а на пин axis.N.motor-pos-fb приводится контрольный сигнал.
Если разница между контрольным и обратным сигналом оказывается больше заданных в ini файле,то будет генерироваться ошибка с остановкой работы.
Посмотреть текущею ощибку можно на пине axis.N.f-error,а задать в "MIN_FERROR =" "FERROR =" секции [AXIS_<num>]
Линк: [AXIS_<num>] Section
Ещё только скажу тебе что в hal'e определяется не алгоритм работы,а дискретные по времени потоки сигналов между пинами.
То есть разумным аналогом будет сеть водопроводных труб.
Сообщение отредактировал torvn77: 27 Июль 2014 - 05:25
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том...
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том...
#5 OFFLINE
Отправлено 27 Июль 2014 - 05:28
Если разница между контрольным и обратным сигналом оказывается больше заданных в ini файле,то будет генерироваться ошибка с остановкой работы.
это уже хорошо, можно с этой же позиции опять запустить на попытку дальнейшего выполнения.
а повторить шаг оно само не пытается?
мне не нужна война.мне нужен МИР. желательно весь...
#6 OFFLINE
Отправлено 27 Июль 2014 - 05:37
Точно не знаю,но думаю что повтора шага не будет,а будет замедление скорости движения,если толку с этого не будет,
то последует остановка с аварией.(При исправной механике и правильных настройках необходимости в повторе шака быть не должно)
В принципе можно пропустить прямой или обратный сигнал через компонент sum2 и съэммитировать им то или иное отставание или опережение позиций.
Чтобы понять,как он подключается выполни следующее:
halrun
loadrt sum2
show all
то последует остановка с аварией.(При исправной механике и правильных настройках необходимости в повторе шака быть не должно)
В принципе можно пропустить прямой или обратный сигнал через компонент sum2 и съэммитировать им то или иное отставание или опережение позиций.
Чтобы понять,как он подключается выполни следующее:
halrun
loadrt sum2
show all
Сообщение отредактировал torvn77: 27 Июль 2014 - 05:52
Я по мнению сообщества безграмотен,могу дать вредные или ошибочные советы.
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том...
Используйте их после обдумывания и на свой страх и риск.
У меня не всегда выходит понять вопрос,если это случилось то пожалуйста напишите мне об этом в личку.Ответ то я может и знаю,но пишу не то и не о том...
#7 OFFLINE
Отправлено 28 Июль 2014 - 14:26
можно ли LinuxCNC приостановить выполнение работы сигналом с лпт порта? (типа пауза)
Сообщение отредактировал novarobotix: 28 Июль 2014 - 14:26
мне не нужна война.мне нужен МИР. желательно весь...
Темы с аналогичным тегами пропуск шагов
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных