Настройка EMC2 на работу с COM(RS-232) портом

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение psha »

Impartial писал(а):По протоколу обмена:
Протокол 9 битный, девятый бит вместо паритета является признаком адресации.
Передаем один байт с мастера со следующей информацией:
Адрес устройства, операция (запись/чтение), (адресуем максимум 128 контроллеров), далее пакет, CRC8.
Структуру пакета надо расчитать исходя из двух главных параметров: Максимальная битовая длина равна 421 бит, время 1 мс. ( жестковато получается 210 бит в каждую сторону а еще и на зазор надо оставить).
А откуда взялись 421 бит и 1мс? Наличие ttyUSB0 еще не значит что там serial device. Там обычный USB со всеми своими косяками.
А именно 512 бит на данные в interrupt режиме и 1024 - в изохронном. Сбой в посылке (если происходит и пересылается) - это еще один такт в 1мс.
Посылка обратного пакета (вроде бы) еще 1мс, но здесь могу ошибаться.
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

Да, на обратный пакет нужна еще одна мс.
И еще на каждое отдельное устройство нужно посылать отдельные пакеты.

Но есть и хорошая сторона, в режиме High-Speed пакеты можно слать в 8 раз быстрее, т.е. за 125 наносекунд.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение psha »

root писал(а):Но есть и хорошая сторона, в режиме High-Speed пакеты можно слать в 8 раз быстрее, т.е. за 125 наносекунд.
Продолжу гундеть :)
Не 125нс, а 125мкс. И режим High-Speed почти нигде не поддерживается насколько мне известно.
Декларирование USB 2.0 совместимости не означает High Speed. По крайней мере народ на #emc на это очень ругался
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

ну да, мкс :).

А что писали по поводу High speed?
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение psha »

Писали что многие микрухи, которые обещают USB2.0 не выдают честный High Speed, а работают на Full Speed. То есть с 1мс задержками
root, доделай конвертацию! :)
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

А откуда взялись 421 бит и 1мс? Наличие ttyUSB0 еще не значит что там serial device.
921600/11/1000-83*3=421. скорость/длина посылки/ 1 мс - неиспользуемые биты (старт/стоп/паритет).
1мс - период сервоцикла.
Наличие ttyUSB однозначно говорит о том, что там компорт. Об этом говорит документация с сайта FTDI.
Это обеспечивается их аппаратурой и драйвером.
Скорость USB канала в режиме 2.0 - 12мбит. в высокоскоростном режиме 480.
Чипы FT232 не поддерживают высокоскоростной режим.
За время 1 мс необходимо обеспечить полный обмен, поэтому и жесткое ограничение на битовую длину, однако это возможно, правильно сформировав пакеты и не используя нестандартные скорости. Для этого надо найти компромисные ответы на поставленные выше вопросы.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение psha »

Impartial писал(а):Наличие ttyUSB однозначно говорит о том, что там компорт. Об этом говорит документация с сайта FTDI.
Это обеспечивается их аппаратурой и драйвером.
Наличие видимости сериал девайса еще не говорит о том, что его задержки такие же, как у обычного физического rs-232 или rs-485.
Скорость USB канала в режиме 2.0 - 12мбит. в высокоскоростном режиме 480.
Скорость никакого отношения к задержкам не имеет. Наибольшая скорость достигается в bulk режиме с большими пакетами, при этом задержки там никуда не годятся.
За время 1 мс необходимо обеспечить полный обмен, поэтому и жесткое ограничение на битовую длину, однако это возможно, правильно сформировав пакеты и не используя нестандартные скорости. Для этого надо найти компромисные ответы на поставленные выше вопросы.
За время 1ms может быть осуществлен один такт передачи в Full Speed режиме. Укладывается в него обратная передача или нет - я из документации по USB не понял. Обойти эти ограничения нельзя.

Для примера ткнулся в даташит на FT2232H (он похоже поддерживает High Speed), в нем написано что используется USB bulk transfer mode.
То есть никакой гарантии на задержки нет. На остальные чипы написано то же самое. Максимум что можно получить от драйвера - отключить внутреннюю буферизацию и получать данные каждый USB'шный микрофрейм (1мс для low и full, 125мкс для high).
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

Вроде на обратный пакет отдельный IN Token и, соответственно, это отдельный фрейм.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

Наличие видимости сериал девайса еще не говорит о том, что его задержки такие же, как у обычного физического rs-232 или rs-485.
Так для выравнивания задержек и предназначен FIFO. А кто нибудь проводил измерения задержки получения пакета прикладной уровень<->прикладной уровень, допустим по такой схеме:
Закорачиваем RX-TX на FT232 передаем пакет 100 байт, регистрируем прием каждого байта по тикам процессора.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

За время 1ms может быть осуществлен один такт передачи в Full Speed режиме. Укладывается в него обратная передача или нет - я из документации по USB не понял. Обойти эти ограничения нельзя.
Да, действительно, за один цикл шины (1мс) может быть осуществлена передача только в одном направлении.
Что то не понятное.
Вот что показал сигнатурный анализатор альтеры
stp1.jpg (6518 просмотров) <a class='original' href='./download/file.php?id=1199&mode=view' target=_blank>Загрузить оригинал (16.57 КБ)</a>
Это передача в винде в гипер терминале текстового файла при закороченных RX-TX на FT232BM.
Шкала - номера тиков 50 нс (20мгц), Пачка это один байт передачи на скорости 921600.
Вообще дикость какая то или я чего то не понимаю.
Наверное нефик выпендриваться с USB а проще настроить стандартный COM на эту скорость.
Последний раз редактировалось Impartial 02 мар 2011, 10:23, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

Внизу есть закладка добавить вложение.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

А чем com лучше, чем lpt?
Может и вправду лучше посмотреть в сторону ethernet?
Скорости до 1 Gbit завораживают :roll: .
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

Ethernet резко усложняет все, включая цену, не для хобби он, да и не всякий сможет его отладить, необходимо специфическое оборудование.
А сом не лучше и не хуже лрт. Они предназначены для разных применений. Просто я хочу проанализировать в возможность создания простого распределенного контроллера и с лпт сложнее это сделать или вернее дороже.
А сом похоже подходит, на скорость 921600 настраивается и передача в оба направления идет стройными рядами и колоннами :)
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

Характеристики (пока не точные) того что получается.
Пока все только на макетке.
Какие будут предложения и критика?

Контроллер спроектирован так, что прием и передача не разнесены во времени.
Т.е. стартовый бит пакета на выходе хоста без задержек появляется на входе.
Пока ориентирован на обычный СОМ порт.
Предполагаю, что будет работать как с ЕМС2 так и с МАЧЕМ.
Все контроллеры соединены последовательно хост TX - RX-TX-RX-TX…..хост RX.
Протокол физического уровня - RS422.
Елементная база ALTERA CPLD EPM570T144C5.
В одном чипе помещаются до 3х контроллеров.(это если не надо будет разносить в пространстве).
Тактовая частота 40 мгц.
Каждый контроллер содержит блоки:
-Сетевой СОМ подобный интерфейс.
-Цифровой ПИД регулятор в параметрах К1,К2,К3
Где К1=P+I+D.
K2=-P-2*D.
K3 = D
-Синтезатор частоты / шим контроллер с регулируемыми параметрами (20 кгц шим для сервопривода, макс 320 кгц для степ шаговых двигателей )
-Контроллер шагового двигателя .(униполярный/биполярный с микрошагом до 8)
-Квадратурный енкодер.( до 8 мгц)
-8 битный порт ввода/вывода.

Структура пакета обмена.
Параметры порта 921600, n,1.
Общая длина – 27 байт * 10 = 270 бит.
Timeout 2 байта.

Передача:
Байт:
0 Управление
Бит:
0 Всегда равен 1 (для автоматического определения скорости)
1 Признак повторного пакета ( если предыдущий передан с ошибкой)
Допускается передача передача трех пакетов в одном цикле 1 мс. Если во всех ошибки то остановка оборудования.
2-6 Наличие контроллеров в сети
7 Признак работа/настройка параметров (1)
(структуру пакета для настройки параметров еще не делал)
1-4 Данные для контроллера 0
Бит:
0-23 Скорость (число с фиксированной точкой 12.12
24-31 Восьмиразрядный регистр вывода контроллера 0
5 CRC8 для данных контроллера 0.
6-9 Данные для контроллера 1
Бит:
0-23 Скорость (число с фиксированной точкой 12.12
24-31 Восьмиразрядный регистр вывода контроллера 1
10 CRC8 для данных контроллера 1.
11-14 Данные для контроллера 2
Бит:
0-23 Скорость (число с фиксированной точкой 12.12
24-31 Восьмиразрядный регистр вывода контроллера 2
15 CRC8 для данных контроллера 2.
16-19 Данные для контроллера 3
Бит:
0-23 Скорость (число с фиксированной точкой 12.12
24-31 Восьмиразрядный регистр вывода контроллера 3
20 CRC8 для данных контроллера 3.
21-24 Данные для контроллера 4
Бит:
0-23 Скорость (число с фиксированной точкой 12.12
24-31 Восьмиразрядный регистр вывода контроллера 4
25 CRC8 для данных контроллера 4.
26 CRC8 Для всего пакета передачи

Прием:
Байт:
0 Управление
Повторяет байт на передаче
1-4 Данные с контроллера 0
Бит:
0-23 Состояние счетчика энкодера или количество сделанных шагов
24-31 Восьмиразрядный регистр ввода контроллера 0
5 CRC8 для данных контроллера 0.
6-9 Данные с контроллера 1
Бит:
0-23 Состояние счетчика энкодера или количество сделанных шагов
24-31 Восьмиразрядный регистр ввода контроллера 1
10 CRC8 для данных контроллера 1.
11-14 Данные с контроллера 2
Бит:
0-23 Состояние счетчика энкодера или количество сделанных шагов
24-31 Восьмиразрядный регистр ввода контроллера 2
15 CRC8 для данных контроллера 2.
16-19 Данные с контроллера 3
Бит:
0-23 Состояние счетчика энкодера или количество сделанных шагов
24-31 Восьмиразрядный регистр ввода контроллера 3
20 CRC8 для данных контроллера 3.
21-24 Данные с контроллера 4
Бит:
0-23 Состояние счетчика энкодера или количество сделанных шагов
24-31 Восьмиразрядный регистр ввода контроллера 4
25 CRC8 для данных контроллера 4.
26 CRC8 Для всего пакета приема
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

Под контроллером понимается контроллер одного двигателя?
Если да, то крайне желательно уместить 4 на одном чипе. Т.к. 4 двигателя это сильно востребованная конфигурация для самодельных станков.

Не уверен, что PID регулятор необходим на контроллере, с этой задачей прекрасно справляется EMC2. И без него будет проще реализация и настройка контроллера, т.к. PID должен учитывать максимальные скорости / ускорения и еще кучу параметров.

Если получится, было бы очень хорошо иметь поддержку USB.

а почему 27байт равно 270 бит, а не 216?

Еще нужны дополнительные биты для управления периферией:
кнопки аварийной остановки
датчики как минимум по 1 на ось, а лучше по 2
реле охлаждения - 2 разные штуки
реле шпинделя 1 бит.
шпиндель - хотя бы 8 бит на управление и 8 бит на энкодер
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

В данный чип 4 не влезают, да и зачем? Ведь основная идея - распределенность.
Да, контроллер одного двигателя плюс на каждый контроллер восьмибитный порт ввода вывода для управления/датчиков и таких портов пять для всей системы так что управлять можно чем угодно (40 бит выхода и входа).
ПИД необходим для универсальности. ЕМС, конечно, прекрасно справится сам, а вот в МАЧЕ его нет. Максимальные скорости/ускорения расчитывает не ПИД, а программа. Да и настроить его не сложно.
USB получится только с контроллером поддерживающим высокоскоростной режим т.е. с циклом шины 125мкс.
270 бит = 216+2*27 . Надо учитывать старт/стор биты.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

На сколько я понимаю на вход PID подается желаемое положение, а он выдает значение скорости для достижения этого положения.
В случае с серво двигателем все просто - передаем значение ПИД на усилитель и серва крутиться в нужную сторону. Но в случае с шаговым двигателем возникает проблема - это значение нужно обрабатывать.

За это в EMC2 отвечает компонент stepgen - который генерирует импульсы шага в зависимости от заданной скорости (положения) и параметров оси, таких как максимальные ускорение, скорость, расстояния между импульсами шага и направления и т.д.
Вот тут есть блок схема его работы: http://www.cnc-club.ru/forum/viewtopic. ... t=40#p2354

Хотя, твоя правда - и со внешним PID ситуация будет такая же :).
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

На вход ПИД подается параметр скорости а не положения и настраивается он на установленную скорость, а в случае шаговых двигателей на вход синтезатора частоты подается тот же параметр скорости а синтезатор уже выдает частоту степ, соответствующую заданной скорости. Там ничего расчитывать не надо, все уже расчитано управляющей программой. А ускорение является производной от скорости, а dt и есть те 1мс.
Компонент stepgen ЕМС и является как раз этим синтезатором.
Скажи, а в твое детище плагина g code к INKscape для винды нельзя добавить саму ЕМС или хотя бы интерпретатор G кода?
Вообще, туда можно вставить С код или скомпилированный кусок. Я не знаю досконально питон.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Impartial »

gcodecompiler.zip
Интерпретатор G кода из ЕМС2
(665.03 КБ) 730 скачиваний
Вот это нельзя вставить в INKSCAPE?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Настройка EMC2 на работу с COM(RS-232) портом

Сообщение Nick »

1. В питон можно встроить Си, но ограничено.
2. Ни в windows ни тем более в python EMC не встроить.
3. Интерпретаторы Gcode под win, бывают разные:
Mach
Gigamech http://forum.gigamesh.ru/viewtopic.php?f=51&t=215
Есть программы предпромотра Gкода:
http://www.nc-corrector.inf.ua/


---------------------------
Impartial писал(а):
gcodecompiler.zip
Вот это нельзя вставить в INKSCAPE?
А что значит вставить?
Ответить

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