MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

Разработка нового контроллера

Строим реалистичный симулятор перегрузок своими руками. Рекомендации. Советы.

Модераторы: Death_Morozz, null, Ale

Сообщение Ale » 05 апр 2012, 12:35

Позвольте присоединиться к дискуссии? Собираюсь строить сим, но пока ничего из железа нет. Повторить изделие Таноса - вопросов нет, но как-то не комильфо, тем более, что есть тема все же сделать свой "универсальный" контроллер. Опыт работы с AVR достаточно большой, особенно на ассемблере, но и на CVAVR уже пару лет. С USART никаких проблем, принимаем, передаем, адресуем Изображение .
Собственно, для начала хотел бы прояснить несколько вопросов
1 - известен ли протокол, по которому контроллер обменивается с компом? т.е. "формат" сообщения?
2 - есть ли возможность модифицировать этот протокол на предмет включения в него адреса контроллера, если мы собираемся делать контроллер на каждую ось? Просто от этого зависит и сама возможность создания универсального "одно-осевого" контроллера.
3 - список параметров, передаваемых софтом на контроллер для управления осью (скорость, направление, дистанция???)
4 - как в софте реализуется возможность масштабирования, т.е перхеода от 2dof к 3dof и так далее...
5 - как я понимаю, в управлении собственно осью должен быть задействован алгоритм регулирования с настраиваемыми параметрами разгона и торможения?


Если что не в тему, извиняйте. Я тут человек новый, не все еще смог охватить.

Что касается структуры - то действительно видится адресуемый (на дип-переключателях) модуль для управления аналогоавым (ШИМ) или шаговым драйвером с обратной связью по положению и двумя концевиками. Связь с компом - через переходник RS-232 (5В) <> USB ( мы юзаем FTDI )

Преобразователь один, а линии RS для всех контроллеров в системе объединяются в параллель (с нормально-отключенными передатчиками). Вся система работает в режиме 1- мастер (Комп) - все остальные - слэйвы.

Вот как-то так

(Добавление)
Кстати, совсем не обязательно использовать Мегу в таком проекте. Вполне можно обойтись 20-ножечным AtTiny167, к примеру. У него все необходимое на борту имеется
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Сообщение null » 05 апр 2012, 16:45

Приветствую!

Ale писал(а):1 - известен ли протокол, по которому контроллер обменивается с компом? т.е. "формат" сообщения?
2 - есть ли возможность модифицировать этот протокол на предмет включения в него адреса контроллера, если мы собираемся делать контроллер на каждую ось? Просто от этого зависит и сама возможность создания универсального "одно-осевого" контроллера.
3 - список параметров, передаваемых софтом на контроллер для управления осью (скорость, направление, дистанция???)


Формат известен, модифицировать без проблем.
Контроллер Таноса получает посылки в виде символов 'AB' (посылки), затем два байта, по одному на каждую ось. Они указывают контроллеру в какое положение надо переместить привод. Остальное делает контроллер.

Ale писал(а):4 - как в софте реализуется возможность масштабирования, т.е перхеода от 2dof к 3dof и так далее...

От 2-ух осей до большего количество расширение осуществляется установкой дополнительных ком портов и соответственно контроллеров.

Ale писал(а):5 - как я понимаю, в управлении собственно осью должен быть задействован алгоритм регулирования с настраиваемыми параметрами разгона и торможения?

Ага ПИД. В контроллере Таноса реализована только пропорциональная составляющая.

Ale писал(а):Преобразователь один, а линии RS для всех контроллеров в системе объединяются в параллель (с нормально-отключенными передатчиками). Вся система работает в режиме 1- мастер (Комп) - все остальные - слэйвы.

Можно и так, а можно и обсудить. Изображение
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Сообщение andrik » 05 апр 2012, 16:55

null писал(а):От 2-ух осей до большего количество расширение осуществляется установкой дополнительных ком портов и соответственно контроллеров.

В посылку можно вписать любое количество осей, дополнительные ком порты не нужны. Все что будет записано в строке передачи выплюнется в один порт без проблем. Пример: ~a1~a2~a3~a4~a5~a6~
Аватара пользователя
andrik
Новичок
 
Сообщения: 38
Зарегистрирован: 04 ноя 2011, 14:28
Благодарил (а): 1 раз.
Поблагодарили: 5 раз.
Баллы репутации: 5

Сообщение null » 05 апр 2012, 19:07

andrik писал(а):В посылку можно вписать любое количество осей, дополнительные ком порты не нужны. Все что будет записано в строке передачи выплюнется в один порт без проблем. Пример: ~a1~a2~a3~a4~a5~a6~

Я имел ввиду при использовании контроллера Таноса.

(Добавление)
Ага, а если начать цепляться к словам, тогда так: ~a1~~a2~~a3~~a4~~a5~~a6~

(Добавление)
Pavel155 писал(а):
Код: Выделить всё
UCSRC = 1<<URSEL|1<<UCSZ0|1<<UCSZ1;

Почему тут используется 2 bit на стоп ?


не знаю почему ты так решил, но то о чем ты говоришь делается так:

Код: Выделить всё
/* Set frame format: 8data, 2stop bit */  UCSRC = (1<<USBS)|(3<<UCSZ0);


копипаст из даташита.
А вообще в целом там инициализация это 115200/8bit/noparity/1stopbit с отключенным передатчиком, если я все правильно помню.

Pavel155 писал(а):ShowRPMBar(curr_byte);
я так понимаю эта функция выводит текущий байт оборотов на порт А ?

Не совсем. Эта функция в зависимости от curr_byte зажигает подряд светодиоды, подключенные к PORTA. При curr_byte = 0x00 все отключены, а при curr_byte = 0xFF соответственно все включены.


(Добавление)
И насчет твоего кода, правильней все таки будет так:

Код: Выделить всё
unsigned char USART_Receive( void )  {  /* Wait for data to be received */  while ( !(UCSRA & (1<<RXC)) )  ;  /* Get and return received data from buffer */  return UDR;  }


из того же даташита.
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Сообщение andrik » 05 апр 2012, 20:00

null писал(а):если начать цепляться к словам, тогда так:

Даже и не думал цепляться к словам Изображение
Аватара пользователя
andrik
Новичок
 
Сообщения: 38
Зарегистрирован: 04 ноя 2011, 14:28
Благодарил (а): 1 раз.
Поблагодарили: 5 раз.
Баллы репутации: 5

Сообщение null » 05 апр 2012, 21:29

andrik
Изображение
неделя тяжелая Изображение
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Сообщение Ale » 06 апр 2012, 07:52

Продолжаем разговор. Уважаемый null писал
Контроллер Таноса получает посылки в виде символов 'AB' (посылки), затем два байта, по одному на каждую ось. Они указывают контроллеру в какое положение надо переместить привод. Остальное делает контроллер.

и
тогда так: ~a1~~a2~~a3~~a4~~a5~~a6~

Должен признать, что обе фразы пока для меня совершенно не понятны. Могу предположить, что символы AB - это два подряд байта 0x41 и 0x42 (в 16-ричном формате ascii коды английских букв A и B). И эта последовательность символов служит для синхронизации, т.е. для определения начала посылки. Предположим, за ней следуют два (по байту со знаком, т.е макс +/- 127) байта - положение каждой оси...
Тогда что означает загадочная запись ~a1~~a2~~a3~~a4~~a5~~a6~

У меня предложение - что бы не флудить тут, может кто нибудь обстоятельно расписать, как работает все программное обеспечение (и верхнего, т.е как в нем и что настраивается?) уровня, и нижнего (контроллера)? Особенно меня интересуют именно вопросы протокольной части, т.е чем комп и контроллер обмениваются друг с другом на разных этапах работы (калибровка, настройка, симуляция). Потому что пока, к примеру, у меня складывается впечатление, что от контроллера к компу ничего не передается.

Можно мне на мыло, дабы не...


(Добавление)
Просто у меня есть готовая универсальная платка на меге64 как раз для отладки всяких протокольных штучек. Ежели получится связаться с софтом на компе (а почему вдруг может не получиться??), тогда будем делать следующий "программный" шаг. Ну и обсуждать, естественноИзображение
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Сообщение Pavel155 » 06 апр 2012, 08:23

Я сделал свою программу для управления платой Таноса, который работает с прошивкой под аналоговый выход 0-5 вольт:
0В - вращение влево, 2,5В - стоп и 5В - вращение вправо.

Моя программа посылает вот такой код:
4142 FF00 0000 00

В Profilere настройки были сделаны вот так:
AB~255~~a01~~a02~

что имеем:
АВ или 4142 - синхронизация;
FF или 255 - какое то условие для контроллера. (Например команда АВ~221~~0~ - опускает все оси в нижнюю точку.);
00 00 или а01 - положение оси 1 (выдаю значение от 0 до 1024);
00 00 или а02 - положение оси 2.
Иногда пропадаю. Пишите в личку.
Аватара пользователя
Pavel155
SIMER
 
Сообщения: 172
Зарегистрирован: 06 июл 2011, 10:39
Откуда: Саратов
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Баллы репутации: 20
Новичок

Сообщение null » 06 апр 2012, 09:04

Ale писал(а):Должен признать, что обе фразы пока для меня совершенно не понятны. Могу предположить, что символы AB - это два подряд байта 0x41 и 0x42 (в 16-ричном формате ascii коды английских букв A и B). И эта последовательность символов служит для синхронизации, т.е. для определения начала посылки.

Ага согласен, сумбурно получилось. Здесь описано как работает контроллер Таноса.

Ale писал(а):
Предположим, за ней следуют два (по байту со знаком, т.е макс +/- 127) байта - положение каждой оси...

Беззнаковые 0-255.

Ale писал(а):
Тогда что означает загадочная запись ~a1~~a2~~a3~~a4~~a5~~a6~

Здесь речь идет о настройках формата вывода данных программой х-сим в ком порт. Это задается строкой. ~a01~ например означает вывод данных с первой оси. Вышеупомянутая строка поочередно выводит значение 6-ти осей. А если написать так: A~a1~A~a2~A~a3~A~a4~A~a5~A~a6~, то в компорт перед значениями осей будет передаваться символ 'A'.

Ale писал(а):У меня предложение - что бы не флудить тут, может кто нибудь обстоятельно расписать, как работает все программное обеспечение (и верхнего, т.е как в нем и что настраивается?) уровня, и нижнего (контроллера)?

Уж лучше обсудить это здесь, а точнее в соседней ветке о программном обеспечении http://mal4x.ru/viewtopic.php?f=6&t=217.
А на самом деле рекомендую скачать и установить х-сим, а потом мы обсудим оставшиеся вопросы.

Ale писал(а):
Потому что пока, к примеру, у меня складывается впечатление, что от контроллера к компу ничего не передается.

Совершенно верно. Компу ничего не передается.

Pavel155
00 00 или а01 - положение оси 1 (выдаю значение от 0 до 1024);
00 00 или а02 - положение оси 2.

Не совсем понимаю, как у тебя там все работает. Дело в том, что при стандартных для контроллера таноса настройках USO, х-сим в ком порт отправляет 1 байт на ось, а не два. Т.е. 0-255. Или это я что-то путаю?
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Сообщение Pavel155 » 06 апр 2012, 09:22

Все верно для ваших прошивок.
У вас в Profilere стоит настройка USO COM на 8bit resolution (0...255) LowRes
а у меня стоит: 16bit resolution (0...65535) MedRes

Я так понимаю вы получаете 1 байт на 8bit, а я на 16bit ?
Иногда пропадаю. Пишите в личку.
Аватара пользователя
Pavel155
SIMER
 
Сообщения: 172
Зарегистрирован: 06 июл 2011, 10:39
Откуда: Саратов
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Баллы репутации: 20
Новичок

Сообщение null » 06 апр 2012, 09:26

null писал(а):А на самом деле рекомендую скачать и установить х-сим, а потом мы обсудим оставшиеся вопросы.

Не заметил что фашисты поваляли старые версии у себя на сайте. Вечером выложу правильную версию здесь.

(Добавление)
Pavel155 писал(а):Я так понимаю вы получаете 1 байт на 8bit, а я на 16bit ?

Ага, все верно. Не знал особенностей этой прошивки.

ЗЫ Только 16 бит - это не один байт, а два. Таков он - байт Изображение
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Сообщение Pavel155 » 06 апр 2012, 09:38

Попробую завтра сделать программку, которая будет иметь пару ползунков и посылать код в компорт.
Иногда пропадаю. Пишите в личку.
Аватара пользователя
Pavel155
SIMER
 
Сообщения: 172
Зарегистрирован: 06 июл 2011, 10:39
Откуда: Саратов
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Баллы репутации: 20
Новичок

Сообщение null » 06 апр 2012, 10:37

Если уж собрался писать, сделай переключалку между lowres и highres.
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Сообщение Ale » 06 апр 2012, 13:41

Ну воот, уже значительно теплей.
Изображение
Продолжаем разговор (с)

Еще раз хочу уточнить - контроллер Таноса не отсылает на комп никаких сообщений? т.е связь, по сути, может осуществляться по одной линии данных?

И второй ворос, а надо ли (или скорее - "желательно ли"? ) обеспечить какую-либо связь в обратную сторону для новой разработки. Ну, к примеру, вместо экрана, который подключается к контроллеру (кстати, для чего вообще он нужен?) передавать на комп какую нибудь служебную информацию, необходимую для настройки и контроля работоспособности?
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Сообщение Pavel155 » 06 апр 2012, 13:57

Еще раз хочу уточнить - контроллер Таноса не отсылает на комп никаких сообщений? т.е связь, по сути, может осуществляться по одной линии данных?

Отсылает только когда контроллер переводишь в режим работы с терминалом. Это нужно для установки параметра KP.
http://youtube.com/watch?v=iH1T9-vApyM


И второй ворос, а надо ли (или скорее - "желательно ли"? ) обеспечить какую-либо связь в обратную сторону для новой разработки. Ну, к примеру, вместо экрана, который подключается к контроллеру (кстати, для чего вообще он нужен?) передавать на комп какую нибудь служебную информацию, необходимую для настройки и контроля работоспособности?

Вот это было бы лучше.
На текущий момент на дисплей выводится текущее положение оси и положение куда надо двигаться.

Иногда пропадаю. Пишите в личку.
Аватара пользователя
Pavel155
SIMER
 
Сообщения: 172
Зарегистрирован: 06 июл 2011, 10:39
Откуда: Саратов
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Баллы репутации: 20
Новичок

Пред.След.

Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

x

#{title}

#{text}