Страница 5 из 5
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 18:36
Impartial
SergeyK писал(а):растолкуите, я пока ещё не в курсе, что в данном случае значит "сервоцикл"?
Кратко общий принцип работы ЕМС такой (в части движения):
Интерпретатор Г кода выдает следующую точку, куда должен переместиться инструмент. Интерполятор,в зависимости от выбранной кинематики, апроксимирует эту траекторию (алгоритм кубической интерполяции сплайнами) и выдает набор точек, через которые надо пройти, чтобы достигнуть следующей заданной. Далее работает планировщик траектории который в зависимости от заданных параметров максимальной скорости и ускорения распределяет эти точки во временной плоскости. Так вот минимальный тик этого распределения и
называется сервоциклом. По умолчанию он равен 1мс.
В начале сервоцикла система получает информацию о положении каждой оси, датчиков. Потом происходят все расчеты в ХАЛе (ПИД,заданные зависимости) если это внутренние компоненты. И наконец происходит выдача команд на исполнительные блоки (синтезаторы частоты,ШИМы , реле итд.)
Мне пока не ясно, происходит это в одном и том же сервоцикле, либо этот расчет делается для следующего. Если для следующего то все получается, если текущего, то о медленной передаче можно забыть. У меня работает исходя из первого предположения. Работает вроде нормально, но как оно будет при всех возможных условиях - не знаю.
А что собственно за драйвер такой специальный для EMC и с чем его едят, если не секрет?
Драйвер писал сам, в расчете на спец контроллер КОМ порта. Контроллер реализован на Verilog на CPLD ALTERA.
Скажу сразу, все это очень сырое и до конечного результата далеко.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 19:13
Nick
Impartial писал(а):Мне пока не ясно, происходит это в одном и том же сервоцикле, либо этот расчет делается для следующего. Если для следующего то все получается, если текущего, то о медленной передаче можно забыть. У меня работает исходя из первого предположения. Работает вроде нормально, но как оно будет при всех возможных условиях - не знаю.
Все выполняется в порядке добавления функций к потоку (это то, что addf).
Т.е. если сначала снимаем данные с энкодера, потом расситываем значения по траектории, потом считаем параметры pid, то конечный результат будет постоянным до следующего срабатывания. Хотя, он и так будет постоянным до следующего цикла.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 20:30
Impartial
Т.е. если сначала снимаем данные с энкодера, потом расситываем значения по траектории, потом считаем параметры pid, то конечный результат будет постоянным до следующего срабатывания. Хотя, он и так будет постоянным до следующего цикла.
Хотелось, чтобы это было так
Но судя по исходнику сначала все таки производится считывание параметров. Если бы по твоему, то вначале должна идти запись.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 21:00
Nick
Все зависит от расположения строчек addf в твоем файле hal. В каком порядке ты их расположишь, в таком они и будут работать.
Вот пример, взял hal Lexxa
....
addf hm2_5i20.0.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 pid.2.do-pid-calcs servo-thread
...
addf classicladder.0.refresh servo-thread
addf near.0 servo-thread
addf hm2_5i20.0.write servo-thread
addf hm2_5i20.0.pet_watchdog servo-thread
Сначала читаем данные из mesa, потом планируем траекторию, потом вычисляем параметры ПИД, потом выполняем Ladder logic, потом делаем near, потом пишев все на выводы и все - ждем следующего цикла

.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 21:14
Impartial
Все правильно. Логически по другому не напишешь. Есть только одно НО! Поток ОС и порядок обработки потока драйвером не одно и тоже.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 21:22
Nick
порядок обработки потока драйвером?
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 21:29
Impartial
Да, а что удивляет?
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 21:32
Nick
Не удивляет, просто не понял/не знаю что это

.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 21:44
Impartial
Драйвера тоже работают в потоке, только с с системными привилегиями. Общаются через систему сообщений. Даже при условии синхронизации потоков очередность выборки сообщений из потока определяет драйвер. Вот этот механизм в ЕМС и не понятен.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 21:59
Nick
Насколько я понимаю, с драйверами общаются только
addf hm2_5i20.0.read servo-thread
addf hm2_5i20.0.write servo-thread
addf hm2_5i20.0.pet_watchdog servo-thread
И пока они не выполнились выполнение дальше не идет. Хотя для меня это черный лес, в низкоуровневом программировании я

Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 18 янв 2012, 22:13
Impartial
Это уровень APPLICATION драйвера, который, скорее всего, только производит идентификацию сообщений для низкоуровневой части драйвера.
Основная работа происходит именно там (обработка прерываний, обмен с периферией, DMA).
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 19 янв 2012, 11:35
SergeyK
Большое спасибо. Вполне доходчиво объяснили, принцип более менее понятен. Конечно интересно было бы поработать в этом направлении, но жалко времени. Хотя, что касается лада вместе с MODBUS, тут даже для подключения концевиков скорость маловата. Только если помпу включать или что то подобное.
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 04 май 2016, 10:46
Гагарин
Nick писал(а):Да, на обратный пакет нужна еще одна мс.
И еще на каждое отдельное устройство нужно посылать отдельные пакеты.
Т.е. если подключить несколько юсб устройств( usb0, usb1 и т.д.) то для отправки 1 пакета из каждого устройства потребуется задержка в мс? Нельзя уложиться в 1мс, если слать одним юсб устройством, а принимать другим?
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 07 май 2016, 12:13
Гагарин
Никто не знает?) Просто есть мысль повтыкать в юсб хаб несколько переходников усб-рс232 и каждый будет ответственен за свое устройство. Какие-то будут принимать положение от энкодера( внешний счетчик и квадратурный декодер) какие-то передавать сигнал на серву( пока не знаю в каком формате) Можно ли таким способом ускорить передачу и уложиться в сервоцикл....
Re: Настройка EMC2 на работу с COM(RS-232) портом
Добавлено: 07 май 2016, 12:49
Сергей Саныч
Гагарин писал(а): Просто есть мысль повтыкать в юсб хаб
На слове USB мечты о реалтайме заканчиваются. Отклик в 1 мс USB никак не гарантирует.