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


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

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

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

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

Сообщение Death_Morozz » 16 ноя 2011, 21:13

Очень хорошая идея универсального контроллера!
Пара аналоговых вводов, пара энкодерных. Изображение Хорошо бы..
А набирать в этом случае количество осей можно портами (контроллерами)!
Дешёвый вариант - мультикарты на moschip, более дорогой, можно попробовать moxa.

Изображение
По поводу первых, есть опыт использования (moschip) stlab, netmos - почти железные, но не совсем. За последние скажу, я ни разу не видел их глюков, переконфигурация на лету (без перезапусков), очень грамотные дрова, характеристики лучше "железных" портов.
P.S.: Хочется добыть плату с параллельным фейсом


А по-поводу одноразовой калибровки, даже на энкодерах, не факт, что в реальных условиях это не раскалибруется вдруг.
Хочешь сделать хорошо - сделай это сам.
Изображение
Аватара пользователя
Death_Morozz
Фраерок
 
Сообщения: 2839
Зарегистрирован: 11 янв 2007, 23:35
Откуда: Ростов-на-Дону
Благодарил (а): 822 раз.
Поблагодарили: 312 раз.
Баллы репутации: 200
ТехнарьТехнарьТехнарь

Сообщение andrik » 16 ноя 2011, 22:42

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

Сообщение Death_Morozz » 16 ноя 2011, 23:26

http://moxa.ru/good/show/14821/10220/

Моксе, например, пофигу каким интерфейсом быть, не в этом сложность, загвоздка в том, что ни как не определимся, что должен уметь новый, (пока виртуальный) контроллер, какие будут его достоинства, по сравнению с AMC, к примеру.
Типа списка задач к проекту, если уж собрались реализовывать.

Вырисовывается такая схема:

- контроллер для одного двигателя
- поддерживающий RS-232, RS-485
- линия для связи analog/digital (джампер)


Другой вопрос - реализация KPR settings
Хочешь сделать хорошо - сделай это сам.
Изображение
Аватара пользователя
Death_Morozz
Фраерок
 
Сообщения: 2839
Зарегистрирован: 11 янв 2007, 23:35
Откуда: Ростов-на-Дону
Благодарил (а): 822 раз.
Поблагодарили: 312 раз.
Баллы репутации: 200
ТехнарьТехнарьТехнарь

Сообщение diglook » 18 ноя 2011, 18:30

Привет всем! Я давно хотел сделать свой контролер для симов.
Есть опыт управления платформой( наше предприятие делает симы разной техники, только там свой софт)
Действително если делать универсальный контролер нужно делать по одному для каждой оси.
предлагаю такую логику:
связь USB -> COM с 5В уровнями(485 - будет лишнее)
компьютер отсылает пакет для всех контролеров
на каждом контролере стоит 3 джампера - выбор адреса 0-8
соответственно каждый выбирает из пачки только свои данные
в пакете могут быть служебные команды для конкретного контролера
т.е. если первый байт -0 значит общий пакет иначе адрес, команда , данные для конкретного контролера.
итак при передаче общих данных компьютер сообщает "избушка-избушка повернись к лесу передом ко мне задом и немножко наклонись" контролер выбрав свои данные поворачивает двигатель до тех пор пока данные от датчика поворота не совпадут с принятыми данными - может быть переменный резистор или цифровой датчик угла или квадратурный энкодер( опять же выбираем джампером)
при этом чем меньше разница тем меньше ШИМ или команда для частотника, здесь тоже можно джампером выбирать.
на счет обрывов питания - ну включился контролер и что? а то что пока команда не придет после сброса он не имеет право крутить. Выставится по концевым датчикам обязан сразу и ждать команду. Чтобы ЕЕПРОМ не слетала - ее вообще не использовать а, настройки ? а какие там нужны настройки? да никаких!
Аватара пользователя
diglook
Новичок
 
Сообщения: 12
Зарегистрирован: 19 окт 2011, 10:13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Сообщение andrik » 19 ноя 2011, 01:40

Наконец-то кто-то меня понял, только чем не нравиться 485, его достоинство в большей помехозащищенности по сравнению с COM и в том, что к одной линии можно подключить большое количество контроллеров.
Я планирую ставить на плату микропереключатели как на материнках, 8 штук. То есть к одному 485-му можно будет подключить до 8 двигателей, приборку и прочее оборудование.
ЕЕПРОМ можно конечно и не использовать, но тогда прийдется калибровать при каждом включении. Или можно использовать абсолютный датчик положения, тогда ни калибровать, ни запоминать ничего не прийдеться. Но для ременной передачи такая обратная связь не подходит, так-как датчик желательно ставить прямо на вал двигателя. Я понимаю что у ЕЕПРОМ ограниченное кол-во записи, но она будет записываться очень редко, только во время калибровки для того что-бы запомнить к примеру количество циклов энкодера от нижнего до верхнего положения платформы.
Аватара пользователя
andrik
Новичок
 
Сообщения: 38
Зарегистрирован: 04 ноя 2011, 14:28
Благодарил (а): 1 раз.
Поблагодарили: 5 раз.
Баллы репутации: 5

Сообщение diglook » 19 ноя 2011, 13:52

Почему я сказал что 485 лишнее? попробую высказать свою мысль доходчевеею
- растояние от USB моста до контролеров не большое(проще поставить удлинитель для USB)
- при передаче от компа сигналы паралелятся на все контролеры - и это нормально, авот при передаче от контролера к компу включаем "монтажное ИЛИ" т.е. через диоды, далее все как обычно(таймауты, выдержки времени) впринципе их тоже можно исключить.
- чем проще тем лучше - дополнительный гемор для тех ето хочет повторить
Насчет 8 джамперов ( 256 адресов ) не возражаю хотя думаю достаточно 4 ( 16 адресов) тут важна экономия ножек. АТМЕГА8 или 48 вполне справяится с задачей.
На счет датчиков - для простоты настройки нужно 1 логический датчик ноля, тогда после сброса крутим вниз до сработки , считываем и запоминаем в ОЗУ значение абсолютного положения и в следующую ячейку запоминаем разницумежду нулем и текущим значением(в случае инкрементального энкодера просто обнуляем счетчик), для верхнего положения - итак все понятно.
Процедура привязки нуля важна, и осуществлятся должна всякий раз после сброса.
Аватара пользователя
diglook
Новичок
 
Сообщения: 12
Зарегистрирован: 19 окт 2011, 10:13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Сообщение andrik » 19 ноя 2011, 15:23

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

Сообщение diglook » 22 ноя 2011, 20:12

все правильно: адрес это и есть своего рода указатель на то какие байты из пакета выбирать, только джамперами ставим адрес контролера от 1 до 8 ( 3 джамперами можно адресовать до 8 устройств ),
ну представьте что для каждого контролера нужно передавать не по одному байту а по 2 или 16( не важно) ,наши контролеры знают протокол обмена и знают что для работы каждого контролера необходимо допустим 16 байт, компьютер тоже обо всем этом знает и передает соответствующий пакет, а именно
- нулевой байт пакета = 0 (обычная передача данных для всех) если !=0 служебная для конкретного адреса(здесь пока не заморачиваемся)
- 1-3 байты пока резерв
- с 4 по 20- данные для первого контролера
- с 20 по 36 данные для второго
- и т.д.

в итоге всего три джампера( в двоичной системе) нам указывают один из восьми
Аватара пользователя
diglook
Новичок
 
Сообщения: 12
Зарегистрирован: 19 окт 2011, 10:13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Сообщение andrik » 24 ноя 2011, 17:20

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

Сообщение FELiS » 09 дек 2011, 12:02

Помню разбирался с принципом работы электроподъемника, там калибровка была реализована спуском до концевого датчика и подсчетом оборотов вала двигателя до редуктора с червячной передачей магнитом и датчиком холла вместо энкодера.
Аватара пользователя
FELiS
Добрый Фелис
 
Сообщения: 532
Зарегистрирован: 11 янв 2007, 23:21
Благодарил (а): 27 раз.
Поблагодарили: 123 раз.
Баллы репутации: 156
ТехнарьТехнарь

Сообщение AutoRun » 04 фев 2012, 23:35

Доброго времени суток господа, у меня есть нескромная просьба - так как опыт программирования микрокотроллеров у меня очень небольшой, то не могли бы вы прислать мне код на С (или ассемблере),а не hex-файл, чтобы уже на его примере я писал свою версию Изображение
Аватара пользователя
AutoRun
Зашел на огонёк
 
Сообщения: 1
Зарегистрирован: 04 фев 2012, 20:50
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Сообщение null » 05 фев 2012, 14:07

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

Сообщение Pavel155 » 20 мар 2012, 20:23

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

Сообщение andrik » 21 мар 2012, 11:27

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

Сообщение Pavel155 » 29 мар 2012, 21:30

Пытаюсь послать данные из Profiler в контроллер по UART и отобразить это на LCD.
Пока получилось послать с гипертерминала (работаю в CVAVR):

lcd_clear();
while (1)
{
lcd_gotoxy(0,1);
lcd_putsf("Key botton:");
lcd_gotoxy(12,1);
lcd_putchar(getchar());
}

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

Пред.След.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 20

x

#{title}

#{text}