|
Система команд сервоконтроллера, обсудим? |
|
|
11 страниц
1 2 3 > »
|
 |
Ответов
(1 - 99)
|
Feb 16 2009, 14:40
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(_Pasha @ Feb 16 2009, 21:23)  Доброго времени суток! "Заболел" я созданием мелкого сервоконтроллера. Очень хочется поговорить о системе команд, поскольку то, что я наблюдаю в openservo, elm-chan и в аппликухах microchip, не нравится. Вы имеете в виду эти странные Dir & Step? Если речь о них, то я тоже не могу их назвать удобными, т.к. никакой полезной инфой с сервой не обменяешься. Ни конфиги принять/передать, ничего. Цитата(_Pasha @ Feb 16 2009, 21:23)  Думаю, может лучше подмножество G-кода огранизовать? Беглое знакомство с G-кодом говорит, что он скорее предназначен для программирования уже готовой системы, например станка. А серва это лишь периферия ЧПУшного оборудования. Кстати, подобная проблема обсуждалась в моей ветке по приводу, вот только плохо помню, где она. Но там пришли к выводу, что можно (и я реализовал, кроме I2С) сделать два интерфейса: RS-232 и I2C. Первый для сервисного обслуживания, т.е. для работы "на столе" потестировать, настроить, что не исключает подключение по нему и к системе более выского ранга. Второй - как раз ориентирован для работы в системе. Над протоколом I2C, к сожалению пока еще все не думал, так вышло( Но как основу хотел покопать протокол на www.openservo.com . Там тоже серва по I2C управляется. Цитата(_Pasha @ Feb 16 2009, 21:23)  очется, чтобы в конце обсуждения появился некий маленький "стандартик" на систему команд и применяемые интерфейсы и протоколы. Всеми четырьмя лапами за!!!) Все равно это прорабатывать придеться в будущем. Почему бы не заняться сейчас?! Цитата(_Pasha @ Feb 16 2009, 21:23)  Или организую RS-274D, если это никому не интересно. Ну что Вы, интерес есть! Что касается меня, то я придерживаюсь пока двух интерфейсов, как написал выше. Интерфейс для RS-232 создан по образу одного из микрочиповских аппноутов. Т.е. примерно это я ввожу в терминалке: Цитата $ m 250 Где доллар - приглашение командной строки сервы. m - задать вручную значение PWM. 250 - непосредственное значение. Все подтверждается ENTERом. Редактирование не возможно. Т.к. программа сервы это не поддерживает. Все остальные команды в подобном стиле. Например * позвояет посмотреть все текущие настройки сервы (параметры ПИДа, заданной скорости и тд). В общем, все пока примитивненько. Но общими силами может быть и получится что-то? Очень надеюсь на это!!! Паша, респект!
--------------------
Выбор.
|
|
|
|
|
Feb 16 2009, 14:55
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(_Pasha @ Feb 16 2009, 17:23)  Доброго времени суток! "Заболел" я созданием мелкого сервоконтроллера. Очень хочется поговорить о системе команд, поскольку то, что я наблюдаю в openservo, elm-chan и в аппликухах microchip, не нравится. Думаю, может лучше подмножество G-кода огранизовать? Кто из сервостроителей имеет свое мнение на сей счет? ... В станках G-код преобразуется (скажем постпроцессором) в команды контроллера. Долго и нудно описывать, назову группы. Калибровка привода. Отображение состояния. Включение/выкл. функций. Сброс, запись, чтение, сохранение, ожидание. Тестовые. Знач. параметров двигателя, энкодера, регуляторов. Величина и тип перемещения. Ввод программы, загр. прогр. в EEPROM, старт программы. И пр. мелочи.
--------------------
Quo vadis?
|
|
|
|
|
Feb 16 2009, 15:15
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(_Pasha @ Feb 16 2009, 19:01)  ... Т.е напрямую G-код на контроллер сервака никогда не поступит? "В команды контроллера" - слишком расплывчатое определение. Интересно, насколько это стандартизовано. Нет смысла передавать G-код в контроллер, это снизит быстродействие. Хост (PLC, например) транслирует G-код в команды контроллеров (!) привода. Насчет стандартов не знаю, я же бывший.
Сообщение отредактировал evgeny_ch - Feb 16 2009, 15:16
--------------------
Quo vadis?
|
|
|
|
|
Feb 16 2009, 15:25
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(haker_fox @ Feb 16 2009, 18:40)  как основу хотел покопать протокол на www.openservo.com Кстати, я большой противник регистров, их адресов и прочей низкоуровневой шелухи. Только команды. Например, для "тупокрутилок" асинхронных двигателей у меня такое: Код Адрес устройства Размер блока данных Адрес вызывающего Команда мастера или статус слейва (слейв - привод) Опциональные данные (ограничены макс длиной блока - 4байта) CRC8 типа как у DS18B20 А команды: Код 0x00 - сводка о состоянии привода (набор параметров программируется) 0x01.. 0x7F пространство команд чтения параметров 0x80 - программируется содержимое, выдаваемое командой 0x00 0x81..0xFE пространство команд записи параметров 0xFF - резерв, какой-нить HELP по поводу того или иного параметра. Например 0xFF 0x00 привод выдаст "GET_BRIEF" Меняются версии, контроллеры, вместо простенького пульта компьютер... протокол изменять надобности нет. Цитата(arisov @ Feb 16 2009, 19:08)  И ориентироваться надо, на мой взгляд, на самую популярную программу Масh3. Да-да-да. Есть такое подозрение  Только хоцца и объять необъятное и определить нужный людям уровень универсальности.
|
|
|
|
|
Feb 16 2009, 15:27
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(arisov @ Feb 16 2009, 23:08)  А зачем всё это? Вопрос риторический, ответа не имеет... Ведь и elm-chan когда-то создавался... Цитата(arisov @ Feb 16 2009, 23:08)  актуально будет управление через USB или ТСР TCP, пожалуй, тяжеловато да и монстрообразно для привода. Хотя при современном спектер недорогих армов вполне. Но речь идет об интерфейсе не системы ЧПУ, где эти интерфесы как раз, а о серве. Где можно применить дешевый AVR или PIC, но поднять USB или TCP на их бортах дело тяжелое, да и зачем? Цитата(arisov @ Feb 16 2009, 23:08)  т.к. LPT «отходит». Есть еще RS-232. И дешевые конвертилки RS-232<->USB. Поэтому (ИМХО) RS-232 забывать не стоит)
--------------------
Выбор.
|
|
|
|
|
Feb 16 2009, 15:41
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(arisov @ Feb 16 2009, 23:29)  А какой смысл применения своих команд, если это никакой прогой не будет поддерживаться? Возможно это пригодиться только единицам. А как быть с физическим интерфейсом? Или он не будет особой роли играть, главное команды? Этот уровень, я тоже сейчас до шел до этого, нужно пытаться делать совместимым с чем-нибудь стандартным, но не особо навороченным, возможно со своими подмножествами. Как все-таки по поводу Rs-232 для подключения к кому, чтобы можно было из терминалки с приводом пообщаться? Ведь не всегда под рукой будет спецсофт, да стойка ЧПУ, а вот комп с примитивным терминалом обычно есть... (ИМХО). Да и для матлаба такой интерфейс, наверно больше подходит. Я вот сейчас пытаюсь в матлаб со своего привода данные гнать, для моделирования... RS-232 в этом деле как раз кстати: простота, куча примеров в инете... и тп.
--------------------
Выбор.
|
|
|
|
|
Feb 16 2009, 15:44
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Цитата(haker_fox @ Feb 16 2009, 18:41)  ...Как все-таки по поводу Rs-232 для подключения к кому, чтобы можно было из терминалки с приводом пообщаться?... Если уж с терминальной программой «отваливается», то чё уж тогда говорить о непосредственном управлении.
|
|
|
|
|
Feb 16 2009, 15:47
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(arisov @ Feb 16 2009, 23:36)  Дешёвые конвертилки на FT232 почему «отваливаются» с сервоконтроллером, при чём не только у меня. http://kazus.ru/forum/topics/14286.htmlИ здесь http://forum.rcdesign.ru/f41/thread40981-5.html#post1037070 начиная с сообщения №165 Бегло прочел. Там говорят что нужен оптрон. Так в моем приводе силовая L298 уже оптронами отделена от цифры... Может быть поэтому ничего не отваливается, правда я долго не тестировал. Кстати, тут много споров было по поводу оптронов. Может быть ответ тут, в этой ветке?) Цитата(arisov @ Feb 16 2009, 23:44)  Если уж с терминальной программой «отваливается», то чё уж тогда говорить о непосредственном управлении. Так я и не предлагаю RS-232 для непосредственного управлениея  Ну а "отваливание" нужно решать. Интерефейс-то из за этого игнорироваться не должен
--------------------
Выбор.
|
|
|
|
|
Feb 16 2009, 15:47
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Вот Screen из Mach.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 16 2009, 15:51
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(arisov @ Feb 16 2009, 23:47)  Вот Screen из Mach. Там я LPT вижу и что-то еще, связанное с TCP? ___________ OFF: у меня тут уже полночь почти пришла. Завтра на учебу и работу рано. Хочется, конечно, поучавствовать, но надо спать идти. Не хочу спать на парте перед лектором) Завтра днем посмотрю, что получится из обсуждения. Всем успехов!
--------------------
Выбор.
|
|
|
|
|
Feb 16 2009, 18:47
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Это уже не любительский получается. А в любительских задание ускорения, времени выполнения перемещений и т.д. выполняется в управляющей программе обработки, обратная связь – единственный сигнал ServoError объединяющий несколько ошибок (рассогласование позиции, большие и долгие перегрузки по току и т.п.) подается снова в управляющую программу. В управляющей программе при поступлении этого сигнала (по отдельному входу) происходит экстренная остановка. Любителям всех этих наворотов, как я понял не надо. Им даже концевиков ограничения хода не надо, т.к. они тоже предусмотрены в некоторых программах. Любителям надо НЕДОРОГОЙ, надёжный сервоконтроллер с максимальной частотой (энкодер) 100-150кГц, напряжением питания серводвигателя – до 150В, мощностью – до 1кВт. С регулируемой защитой по току. И как я уже писал желательно с интерфейсом согласования USB, т.к. многие сейчас переходят на ноутбуки (один комп – несколько станков).
|
|
|
|
|
Feb 16 2009, 19:19
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(_Pasha @ Feb 16 2009, 19:01)  ... "В команды контроллера" - слишком расплывчатое определение. Интересно, насколько это стандартизовано. Покопался в доках, можно почитать, как стандартизуют ПО для ПЛК. Программирование ПЛК: языки МЭК 61131-3 и возможные альтернативы. Некоторые конторы указывают на соответствие своих языков пр. сервоконтроллеров этому стандарту.
--------------------
Quo vadis?
|
|
|
|
|
Feb 16 2009, 19:41
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Конечно было бы ещё лучше, просто выше писали о сложностях при этом. В каждый контроллер смысла засовывать Ethernet в полулюбительском варианте конечно нет. Но оконцовывать контроллер интерфейсом USB тоже не есть гуд - врядли ему будет хорошо работаться в "горячей" (с точки зрения ЭМС) зоне. А выполнив физику в виде 485го интерфейса и дополнительный мост в TCP - это, как мне кажется, будет самая пися золотая. Мост могу организовать. Весьма дешево. И решится вопрос с зависанием FT232 (к сожалению, вынужден констатировать, что один из моих знакомых, занимающийся модулями телеуправления, хотя и имеет в ассортименте выпускаемой продукции конверторы 485-USB, применять их не рекомендует. Хотя у него профессиональные разработчики, но справиться с зависаниями фтэшки не смогли)
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 16 2009, 20:49
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
* гуд! * RS-274D на уровне приводов избыточен и неудобен * I2C совсем неподходит, RS232 просто не подходит - есть прекрасные RS485/RS422 или CAN. После долгих мучений с выбором я остановился на RS422, как наиболее отвечающему всем ограничениям * терминалка с одной стороны хорошо, но с другой - сильно ограниченный и незащищенный способ обмена с девайсом. Но нет ничего проще, чем написать свою терминалку, с формированием команд в пакетах * скорость 9600, дефолтовая для конфигурирования, и выше, для работы. Я остановился на 1 MBit - на столе вроде бы работает * задирать сервоциклы я (бы) не стал, иначе и arm не хватит, а хотелось бы остановиться на народном avr * интерфейс со стороны компа USB/ETHERNET/RS232/LPT - в порядке убывания * Масh3 нужен далеко не всем * Modbus слишком неудобный протокол. Под Масh3 лучше бы иметь свой протокол и свой плагин * навороты любителям не нужны, это точно, но любители могут подрасти * в интерфейсах начинал описание своего протокола Slp, но никто не поддержал. Если все же интересно, то в процессе разработки уже появились некоторые изменения * все имхо
|
|
|
|
|
Feb 16 2009, 22:58
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(arisov @ Feb 16 2009, 19:36)  Дешёвые конвертилки на FT232 почему «отваливаются» с сервоконтроллером Тему ниасилил ввиду большого объема. К тому же FT232 ни разу не того. PL2303 немножко юзал. А FTшки на слуху отдельно от матюков не употребляются. Цитата(Rst7 @ Feb 16 2009, 20:10)  Можем скооперироваться. У меня как-раз тут рояль завалялся Про рояль знаю, т.к. слежу за Вашими постами с большим интересом. Изначально была мысль "дружить девайсами"  , но вначале хоть запущу то, что наваял. Завтра... ой, уже сегодня платы приедут! В общем, кажется, впереди нас ждет, извините, невыпитое море водки.  Цитата(arisov @ Feb 16 2009, 20:24)  _Pasha а это будет коммерческая разработка или OpenServo? Начнем Open, потом, когда появятся "фишечки" (если появятся), тему плавно прикроем, чтоб уже кормила заинтересованных фигурантов  как, впрочем и должно все развиваться. Имхо. Цитата(evgeny_ch @ Feb 16 2009, 23:19)  языки МЭК 61131-3 Некоторые конторы указывают на соответствие своих языков пр. сервоконтроллеров этому стандарту. Громоздко несколько. Надо подумать... Цитата(Огурцов @ Feb 17 2009, 00:49)  * в интерфейсах начинал описание своего протокола Slp, но никто не поддержал. Если все же интересно, то в процессе разработки уже появились некоторые изменения Конечно, интересно! Только ссылку киньте, пожалуйста, а то за Вашими деяниями как-то не слежу. Пока не было интереса. По поводу выбора RS-422 vs RS-485, прошу Вас высказаться подробнее, почему именно 422 рулит? Цитата(arisov @ Feb 16 2009, 22:47)  Любителям надо НЕДОРОГОЙ, надёжный сервоконтроллер с максимальной частотой (энкодер) 100-150кГц, напряжением питания серводвигателя – до 150В, мощностью – до 1кВт. С регулируемой защитой по току. Спасибо за взвешенные цифры.
|
|
|
|
|
Feb 17 2009, 04:50
|

Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 19-04-08
Из: Москва
Пользователь №: 36 913

|
До создания своего собственного физического интерфейса и системы команд привода предлагаю рассмотреть и обсудить уже существующие решения , которые используют большие компании. По моему проще приспособится к готовому стандарту чем изобретать свой собственный велосипед. Возможно это будет несколько дороже и сложнее , но у такого варианта есть и преимущества. Ваш привод (и другая перефирия) будет совместим с оборудованием которое выпускает большая фирма, можно использовать готовый "верхний" софт , который пишет , отлавливает баги и сопровождает не один - два человека а целая коорпорация. Какими свойствами должен обладать кандидат? Относительно низкая стоимость реализации физического интерфейса. Гальваническая развязка. Легкая масштабируемость и переконфигурация. Защита от помех, сбоев и зависаний. Автоопределение типов устройств (у каждого должен быть свой паспорт). Высокая скорость. Доступная и полная информация описывающая интерфейс, примеры и готовые решения. Доступный (возможно после некоторого "лечения"), удобный и часто обновляемый "верхний" софт.
Для начала предлагаю рассмотреть EtherCAT, Sercos, PROFINET.
|
|
|
|
|
Feb 17 2009, 06:07
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(dpss @ Feb 17 2009, 12:50)  Ваш привод (и другая перефирия) будет совместим с оборудованием которое выпускает большая фирма, можно использовать готовый "верхний" софт , который пишет , отлавливает баги и сопровождает не один - два человека а целая коорпорация. Какими свойствами должен обладать кандидат? Интересно, а есть ли различие в плане интерфейса привода станка и привода робота? Хотелось бы не только на привод станка ориентироваться. Цитата(slog @ Feb 17 2009, 13:52)  А для чего нужен этот сервоконтроллер и что он из себя представляет как-то забыли упомянуть, надо именно от этого и плясать. Это действительно упущение, хотя выше и предполагалось Цитата Любителям надо НЕДОРОГОЙ, надёжный сервоконтроллер с максимальной частотой (энкодер) 100-150кГц, напряжением питания серводвигателя – до 150В, мощностью – до 1кВт. С регулируемой защитой по току. Но надо детализировать. Цитата(slog @ Feb 17 2009, 13:52)  Ваш самодельный интерфейс ни с чем не совместимый вряд ли кому-то будет нужен, вы же не Siemens чтобы протолкнуть свой интерфейс. Выше уже была мудрая идея - приспособиться к существующему стандарту. Так идеи протолкнуть интерфейс вроде бы и не ставилось. Просто EtherCAT и другие предложенные базируются на ETHERNET, как я понял. Довольно таки монстрообразно. Хотелось бы на AVR-подобные МК уложиться. С другой стороны на AVRке серьезный привод вряд ли можно сделать. Получается, что мы хотим создать что-то среднего класса. По поводу стандартного интерфейса: можно ведь создать при необходимости переходник наш_интерфейс<->что_то_стандартное. А вот команды может быть можно и ближе к распространенным стандартным взять.
--------------------
Выбор.
|
|
|
|
|
Feb 17 2009, 07:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936

|
Step-dir это самый простой и надежный интерфейс, сам делаю на этом(от ЦАПа отхожу). Но это под ЧПУ реального времени. А под Windows это плохо работает (у меня), поэтому видимо выход как раз допустим M команды типа <М96.1000> - повернуть вал двигателя на 1000 импульсов датчика. Это особенно подходит для роботов и манипуляторов, где простой командой можно повернуть "руку" на определенный угол. А также это нужно, что-бы программировать сам привод допустим P командами и практически не нужны встроенные пульты на блоках управления. Все же не соглашусь, что в реале не нужно изменять какие ли бо параметры. Как раз таки параметры типа разгон торможение и т.п. удобнее на "ходу" регулировать и для опытного электронщика методика настройки из книги не нужна, он это на "глаз" сделает и под конкретное железо. А RS-422, я согласен, рулит. Не знаю, мое мнение на счет МК. Все же лучше применять 16 разрядные МК, типа dsPIC30/33 да и по цене они не намного дороже, и переферия мощная и все есть.
|
|
|
|
|
Feb 17 2009, 07:11
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(_Pasha @ Feb 16 2009, 22:58)  чтоб уже кормила Ой ) Цитата(_Pasha @ Feb 16 2009, 22:58)  Только ссылку киньте http://electronix.ru/forum/index.php?showt...495&hl=slp*Цитата(_Pasha @ Feb 16 2009, 22:58)  По поводу выбора RS-422 vs RS-485, прошу Вас высказаться подробнее, почему именно 422 рулит? Минимум, не болит голова с переключениями прием-передача, блокировкой шины, снижением трафика и совместимостью с rs232.
|
|
|
|
|
Feb 17 2009, 07:56
|

Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 19-04-08
Из: Москва
Пользователь №: 36 913

|
Вот "отец - основатель" EtherCAT. http://www.beckhoff.com/ http://www.beckhoff.ru Есть международная ассоциация www.ethercat.org Самый быстрый интерфейс реального времени на основе эзернета. PLC , декодер G кода , профиль движения, интерполяторы делаются программно с использовнием TwinCAT который сделан из CODESYS.
|
|
|
|
|
Feb 17 2009, 08:58
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(_Pasha @ Feb 17 2009, 11:40)  Блин, занесло всех в эзернет! Ну нельзя сразу его закладывать! Рано еще. Поздно, оптику надо, это же привод, а не описная сеть. Пмсм, рассуждая о системе команд, нужно отталкиваться от ЦП контроллера. Специализированные процессоры для упр. электродвигатлями уже имеют библиотеки и ПО, поставляемое производителем. Далее автоматически получается функциональные возможности. Особенности специализированных контроллеров для управления прецизионными электроприводами.
Сообщение отредактировал evgeny_ch - Feb 17 2009, 09:04
--------------------
Quo vadis?
|
|
|
|
|
Feb 17 2009, 09:03
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(dpss @ Feb 17 2009, 11:42)  Для кого рано? Пусть будет два девайса: мост эзернет в какой-нить RS485 либо Ether->PLC->[step/dir/Analogue] Но в одном флаконе - рановато Цитата(evgeny_ch @ Feb 17 2009, 11:58)  Поздно, оптику надо, это же привод, а не описная сеть. Тогда повторяю вопрос: каким выражением (алгебраическим, ессно, а не матерным) можно отобразить требования по максимальному времени доставки сообщения и получения ответа ???
|
|
|
|
|
Feb 17 2009, 09:33
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(evgeny_ch @ Feb 17 2009, 08:58)  Поздно, оптику надо Вот, пожайлуйста, еще одна причина делать rs422, но не что-нибудь еще. Цитата(evgeny_ch @ Feb 17 2009, 08:58)  Специализированные процессоры для упр. электродвигатлями уже имеют библиотеки и ПО, поставляемое производителем. Насколько сложнее будет сделать совместимый протокол, нежели свой ?
|
|
|
|
|
Feb 17 2009, 09:47
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(evgeny_ch @ Feb 17 2009, 12:32)  Временем реакции системы на самое быстрое событие, делённым на количество управляемых осей. Нет, даже еще хуже: деленным на количество устройств в сегменте сети. Их может быть немного больше чем осей  Действительно, до фига большая скорость Цитата(dpss @ Feb 17 2009, 12:18)  Частота обновления командного регистра положения 0.5 - 0.1 от частоты токового регулятора. Ну, допустим, как снизить частоту обновления, понятно всем: использовать макроязык с интерполяторами. Зачем апдейтить координату еще и с дисперсией времени доставки, когда можно ее хоть кусочно-линейно хоть сплайном интерполировать. А кто знает уже готовые устоявшиеся решения?
|
|
|
|
|
Feb 17 2009, 10:11
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(evgeny_ch @ Feb 16 2009, 22:19)  Покопался в доках, можно почитать, как стандартизуют ПО для ПЛК. Программирование ПЛК: языки МЭК 61131-3 и возможные альтернативы. Теперь, если стремиться снизить требования к коммуникационному каналу, получается, что рулят Techno IL и Techno ST http://www.adastra.ru/products/overview/IEC61131/ЗЫ: а если сервоцикл уложится в один период ШИМ?  Причем это будут честные 4 кГц
|
|
|
|
|
Feb 17 2009, 11:15
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Мне кажется «в дебри улезли». Изначально планировалось полулюбительский контроллер. Таких контроллеров по 100-150$ много уже кто выпускает. Даже российский есть http://www.ellab.ru/russian/razrabotki/sva...rka_001_rus.htm. С приобретением особых проблем нет. Любители ЧПУ народ консервативный и будут покупать или изготавливать (ServoOpen) только многократно проверенные конструкции. И надо ещё видео на рабочем станке ЧПУ показать, а то так не поверят. Испытания желательно производить на станке с ЧПУ. _Pasha у Вас он есть? Испытания на столе никого не убедят в работоспособности. Я просто с этим уже столкнулся. Сначала надо попробовать с «мощным» двигателем (хотя бы 110В, 10А) - возможно что и разговоры о протоколах не понадобятся – можно будет здесь «увязнуть». И если уж такой движок будет «послушным», то и от 24В подавно. Если Вы действительно хотите сделать что-то полезное для любителей и которое пользовалось бы спросом, то я думаю преобразователь USB в Step/Dir было бы самое то. Например http://www.usbcnc.com/index_products.html или http://www.cnc4pc.com/Store/osc/product_in...products_id=185, только цену конечно не 180-320$. За открытый проект или 50$ многие сказали бы спасибо. И на своих станочках начали бы ещё усерднее бороться с мировым кризисом. К тому для этого никакого оборудования не надо. А вообще то лучше конечно сначала пообщаться с теми кому это предназначено и из "первых рук" узнать что им надо. http://www.cnczone.ru/forums/index.php?&act=idxhttp://forum.rcdesign.ru/f41
|
|
|
|
|
Feb 17 2009, 11:34
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(dpss @ Feb 17 2009, 13:17)  А как при таком управлении делать табличные корректировки положения, управлять приводами ведущий-ведомый ? CODE Макроязык управления сервоконтроллером. 1. Концепция Для снижения нагрузки на канал связи локального управляющего контроллера и одновременно для обеспечения возможности активно воздействовать на все параметры управляющего серво-алгоритма предлагается макроязык, позволяющий описывать поведение параметров во времени с использованием предопределенного набора известных методов интерполяции, а также задавать управление в реальном времени от различных входов
2. Набор параметров управления
2.1. Управляющие параметры - Координата S либо X,Y,Z в случае, если определены функции сервоконтроллера по перемещению вдоль конкретной оси. - Скорость V либо VX, VY, VZ - Момент T либо TX, TY, TZ - Прямой нормированный канал ШИМ U, либо UX,UY,UZ - Интервалы времени du - в микросекундах, dm-миллисекунды ds-секунды dt-время в формате с плавающей точкой либо dt=<число><суффикс u|m|s>
2.2. Входы управления или источники команд - Одиночная команда. Например S=1120,dt=1.09Е-2 или тоже самое S=1120,du=10900 - Интерполятор, например S= cspline(-11.24,-3.003,6.573,0) dt=1.09E-2 S= pwl((115,1120u),(220,2400u),(1120,10900u))
- Частота по входу, например S=freq(x1), где x1 - символическое имя дискретного входа,
- Период по входу, напр. S= per(x1,K) - Напряжение по входу например S=an(x3) Денормирующие коэффициенты хранятся в настройках
2.3. Вывод состояния сервоконтроллера - выходные параметры - координата - скорость - момент - прямой нормированный канал тока
2.4. Средства мониторинга выходных параметров - прямой лог - лог с интерполяцией - лог о выходе за заданные пределы - лог ошибки, например между заданным S и фактическим
2.5. Простые настроечные параметры в EEPROM - через символические имена например Kp_speed = 16384 - коэфф пропорциональности в ПИ-звене контура регулирования скорости Сразу говорю - просьба не пинать за этот поток сознания. Интересует, существуют ли где-то похожие концепции. Цитата(arisov @ Feb 17 2009, 14:15)  Испытания желательно производить на станке с ЧПУ. _Pasha у Вас он есть? Ну, у меня есть хорошо "промаринованный" заказчик, который ловит каждое мое слово, а я, в свою очередь, стараюсь не наглеть и держаться на уровне. А у заказчика - станок.
|
|
|
|
|
Feb 17 2009, 11:37
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Цитата(khach @ Feb 17 2009, 14:28)  ...привод дергается, получается управление как на шаговиках, а не "плавно врезался и поехал фрезой под постоянной нагрузкой" Что делать не подскажу, но такое дёргание в Mach происходит когда вместо G1 (линейная интерполяция) выполняется G0 (ускоренное перемещение) при одинаковых заданных скоростях.
|
|
|
|
|
Feb 17 2009, 11:47
|
Гуру
     
Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741

|
Цитата(_Pasha @ Feb 17 2009, 14:38)  В идеале - перекрестной связью по датчику положения. В реале -  кисло Это как, доп раземы на драйверы сервомоашинок от енокдеров другой оси? А кто тогда математикой заведует? Я уже не говорю, что заказчики "обнаглели" и присылают G-код с хеликоидальной интерполяцией или пытаются использовать зуборезные пальчиковые фрезы- это когда отверстие и фрезеруется и резьба режется одной и той же фрезой и нужно согласованное с вращением шпинделя движение детали по двум осям :-)
|
|
|
|
|
Feb 17 2009, 12:02
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(haker_fox @ Feb 17 2009, 13:10)  А я воспринял Ваше сообщение, как иронию. Или неправильно воспринял? Вполне серьезно. Вот энкодер с оптовыходом.
Сообщение отредактировал evgeny_ch - Feb 17 2009, 12:05
--------------------
Quo vadis?
|
|
|
|
|
Feb 17 2009, 13:18
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Сразу говорю - просьба не пинать за этот поток сознания. Как по мне, то пинать совершенно не за что. Я вообще считаю, что надо как можно больше мозга уносить ближе к исполнительным механизмам. Во-первых - снижается нагрузка на канал связи. Во-вторых - намного проще обеспечить действительно реалтайм работу - ну о каком вменяемом реалтайме может идти речь, если весь моск суть программа на большом брате работающем под виндой/никсами? А гарантированное время доставки? Как по мне - это сугубо говнопиар. А если пакет потеряется? Как-то мне никогда в описаниях протоколов не попадалась фраза "время доставки меньше T гарантируется с вероятностью X". А именно такая формулировка и должна присутствовать. Может, конечно, не туда смотрел, посему с удовольствием разую глаза по вашей фразе "А это ты внимательно курил?" и приложенной ссылке. Однако, для такого управления необходимо помимо команд задания алгоритма движения необходимо еще предусмотреть выбор алгоритма на случай аварийной ситуации - например, серьезная авария при заклинивании механизма может быть обработана банальным обесточиванием, а вот, например, ситуация неприхода привода в точку финиша? Или большое отклонение от заданной траектории? Кроме того, в каждом пакете данных необходимо иметь таймстамп в приемлемых единицах. Для получения информации с контроллера смысл понятен - точная привязка данных к временной шкале. А для передачи команд управления - возможно, например, передавать команды с будущим временем, а контроллер будет принимать их к исполнению по достижению внутренними часами метки времени во входящем пакете. Пошел покурить про Mach3... Очень порадовало описанице на форуме Цитата Програмное обеспечение с сайта производителя. Без таблеток и кряков. Ограничения производителя 1000сторк G-кода и 25000гц частота. ВНИМАНИЕ!!! При использовании MACH оптимизируйте операционную систему согласно рекомендаций,погасите все ненужные сервисы,иначе реал -тайм в виндах проблематичен. После установки программы ОБЯЗАТЕЛЬНО перезагрузите компьютер. Перед первым запуском запустите Driver Test.exe (по умолчанию в папке C:\Mach3\Driver Test.exe) НЕ ИСПОЛЬЗУЙТЕ компьютер станка для задач кроме управления станком. При отсутствии другого компьютера-разделите жесткий диск и поставьте ОТДЕЛЬНУЮ операционную систему ТОЛЬКО для задач управления станком. Последние релизы программ на сайте производителя: Болд мой  Только вот фраза неправильная - "иначе реалтайм в виндах проблематичен". Правильная фраза "В любом случае реалтайм в виндах невозможен!"
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 17 2009, 13:24
|
Профессионал
    
Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936

|
Цитата(khach @ Feb 17 2009, 14:47)  Это как, доп раземы на драйверы сервомоашинок от енокдеров другой оси? А кто тогда математикой заведует? Я уже не говорю, что заказчики "обнаглели" и присылают G-код с хеликоидальной интерполяцией или пытаются использовать зуборезные пальчиковые фрезы- это когда отверстие и фрезеруется и резьба режется одной и той же фрезой и нужно согласованное с вращением шпинделя движение детали по двум осям :-) Это надо, что-бы у каждего привода выхода датчиков положения соединялись как с ЧПУ так и между собой, и ЧПУ распределяет кто ведущий кто ведомый. Например при нарезки резьбы, ведущий привод шпинделя, поэтому привод допустим Z считывает импульсы датчика "S " и синхронизуется с масштабом которая ЧПУ прописала (что будет соответсвовать какому-то шагу), также и допустим линейная интерполяция ведущий допустим "Z" , а ведомый "X" (здесь ведущий будет тот, у кого по расчетам будет наибольшая скорость).
|
|
|
|
|
Feb 17 2009, 15:12
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Что-то это меня настораживает: Цитата The Home of Mach3 and LazyCam
Artsoft has been in the CNC business since 2001. In this time, the Mach series of CNC software has evolved into the best available PC-based CNC software on the market. Not only is it extremely affordable to the hobbyist and industry alike, it is pioneering in it's features and continuing development. There are over 10000 users of Mach who swear by its ease of use, great features, and outstanding support.
Software Requirements
Keeping with our home hobbyist roots, the minimum software requirements to run Mach are very reasonable. Below are the specifications for running Mach3 stably. Mach3 Minimum Requirements:
* Windows 2000/XP Operating System * 1Ghz CPU * 512MB RAM * Non-integrated Video Card with 32MB RAM * Basic Computer Skills (ability to copy/rename files, browse directories, etc) * Desktop PC if using the Mach3 Driver (Laptops are not supported because the power saving features of the chipsets disrupt the pulse stream) Взято отсюда.Получается, что Mach3 софтварно реализует ЧПУ на базе компьютера? С учетом требований к реалтайтму, возникает вопрос, а на сколько все это надежно? Да и системные требования впечателяют, хотя и не сверхбольшие. Или это нормально и я отстал (не догнал) от жизни? Просто в моем представлении ЧПУ это специализированная платформа (ну пусть IBM PC) с соответствующей ОС. А компьютер, пусть даже и под виндой, выполняет только функцию терминала - удобного рабочего места для оператора, наладчика. Но не как не выполняет функции непосредственного управления оборудованием.
--------------------
Выбор.
|
|
|
|
|
Feb 17 2009, 15:18
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Rst7 @ Feb 17 2009, 17:18)  Как по мне, то пинать совершенно не за что. Есть за что: явный перекос потока данных. От сервака с АВР в реалтайме да еще и режиме мониторинга требовать обрабатывать поставляемые данные - это что-то особеннаго  Надо додумать. Оправдывает только то, что написано буквально "на кончиках пальцев" - что вижу, то и пою. Цитата ситуация неприхода привода в точку финиша? Или большое отклонение от заданной траектории? Это по-большей части головная боль контроллера верхнего уровня, надо только гарантировать доставку лога от сервака. Цитата Кроме того, в каждом пакете данных необходимо иметь таймстамп в приемлемых единицах. +1 И еще синхронизацию как-то сделать бы. Синхропакетом, что ли? Пока непонятно. Цитата Пошел покурить про Mach3... Очень порадовало описанице на форуме   У меня старый ноутбук, на который еле-еле влезла ХР, печатная машинка, короче. Думал: ага, пристрою вещицу. Пень 300 МГЦ/192 ОЗУ... Блин, как поставил Mach3 - компьютер чуть ли не вздулся от "реалтайма"  Цитата(Огурцов @ Feb 17 2009, 18:47)  А это откуда ? Еще есть ? Из головы, дурное дело - нехитрое
|
|
|
|
|
Feb 17 2009, 15:29
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(_Pasha @ Feb 17 2009, 16:18)  +1 И еще синхронизацию как-то сделать бы. Синхропакетом, что ли? Пока непонятно. Slp_system_synchronize Цитата(_Pasha @ Feb 17 2009, 16:18)  Пень 300 МГЦ/192 ОЗУ... Блин, как поставил Mach3 - компьютер чуть ли не вздулся от "реалтайма" Лол...у меня пентиум 2GHz временами зависает. Не, если кроме Mach больше ничего не пущать, то оно работает. Так что выше не просто так про отдельную и оптимизированную ось написано. Цитата(_Pasha @ Feb 17 2009, 16:18)  Из головы, дурное дело - нехитрое  Неплохо. Подумывал написать нечто такое, та все некогда.
|
|
|
|
|
Feb 17 2009, 15:45
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата И еще синхронизацию как-то сделать бы. Синхропакетом, что ли? Пока непонятно. Это не трудно. Можно реализовать что-то аля NTP. К сожалению, винда - это тоже не атомные часы. Миллисекундные тики - они хорошо если с дискретностью 10-20мс идут. При частом вызове вот такого (а часов с меньшей дискретой в винде я не знаю) Цитата struct timeb ct; double d; ftime(&ct); d=ct.time*1000.0+ct.millitm; d будет иметь дискрету, названную выше.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 17 2009, 16:17
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Получил платы, Ё-МОЁ. Таки умудрился накосячить. Если бы у меня был начальнег, уволил бы меня нахрен. В общем, все блины - первые  Хорошо, что не смертельно, можно и так запустить. По теме. Есть еще вариант задания траекторий/профилей тупо в виде арифметического выражения. Влезет в m168 ? В общем, на ум приходят все более текстовые версии протокола. Бинарные - мимо кассы, раз тут математика пойдет. А это, в свою очередь, облегчает навороты с синхронизмом, адресацией, маршрутизацией и т.п.
|
|
|
|
|
Feb 17 2009, 16:24
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Есть еще вариант задания траекторий/профилей тупо в виде арифметического выражения. Давайте все-же определимся, кто будет этому контроллеру команды давать? Нужен ли тому, кто будет давать эти команды такой способ их задания? Цитата Влезет в m168 ? Калькулятор на +-*/() - это очень маленькая софтинка
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 17 2009, 17:30
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(_Pasha @ Feb 17 2009, 16:33)  Не, я начал вкуривать, но пока чего-то все кажется, что это избыточно. Надо еще время для осознания. Не, это еще малая толика. Но не избыточно и не сложно. Описание, конечно, нужно, с картинками, чтобы хоть чуть-чуть понятно было. Цитата(_Pasha @ Feb 17 2009, 17:34)  Не, с синусами, логарифмами, экспонентами и степенями... А может и не надо Какие синусы, таблично бы успеть... Цитата(dpss @ Feb 17 2009, 17:30)  Десятки приводов ,тысячи портов с управлением под "Окнами" c жестким реальным временем до 30 микросекунд на цикл Mach3 и побыстрее может. Ядро способно работать на 100kHz, при том, что реально прерывания вызваются еще в два раза чаще. Однако все упирается в цену ошибки. Пока он грызет фанеру вопрос с зависаниями не актуален, если запущена обработка чегой-нибудь более ценного, чем фанера с пенопластом, то тут уж задумаешься.
|
|
|
|
|
Feb 18 2009, 06:27
|
Знающий
   
Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489

|
Вам бы сначала определится что за сервоконтроллер изобретаете. Какие функции у этого сервоконтроллера? Это что, гибрид сервоусилителя и motion controller? Куда подключены датчики обратной связи? Кто синхронизирует оси? Кто интерпретирует G-код? Какая программа будет им управлять? Не напишите же вы софт для ЧПУ и роботов. От этого и надо плясать. А большинство любительских программ используют step-dir и не нужна там никакая система команд и протокол. Цитата(dpss @ Feb 17 2009, 19:30)  Как говорится "все уже придумано до нас" Десятки приводов ,тысячи портов с управлением под "Окнами" c жестким реальным временем до 30 микросекунд на цикл http://www.beckhoff.ru/english/pdf/EtherCA...AT_Overview.pdfЕсть ли в свободном доступе документация по логической части EtherCAT? Дастаточная чтобы его можно было использовать в своих контроллерах.
--------------------
В действительности всё не так, как на самом деле.
|
|
|
|
|
Feb 18 2009, 07:38
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(slog @ Feb 18 2009, 09:27)  Вам бы сначала определится что за сервоконтроллер изобретаете. Объясняю более внятно. 1. Цель: получить "гибрид сервоусилителя и motion controller" 2. Заложены 6 свободно программируемых дискретных входов по IEC61131-2 http://www.prolog-plc.ru/beck/docum/AN_SC1X3_IO.pdf которые закороткой одного стабилитрона можно превратить обратно TTL Из этих входов 2/3 идут на квадратурный энкодер, Step, Dir, Limit_Switch 3. Аналоговый вход 4..20 мА 4. RS-485 с растяжками и джампером на RC-termination Протокол уже строю по принципу Hayes-модема: с одной стороны богатая текстовая командная строка, затем переход к варианту MODBUS-RTU или скорострельный поток данных непосредственно для командных регистров положения/скорости/момента. Теперь про бинарный поток данных Избежать "экзотики", видимо, не получится. Замечу еще полезное свойство: командные регистры не могут измениться мгновенно, поэтому для низкоуровневого потока данных достаточно передавать приращения с гарантией их доставки, например инвалидацией после приема блока данных (адресат отправляет обратно CRC блока), отправитель решает, повторять ли передачу. В пакет входит Timestamp с "зерном" в 100 мкс разрядности 16 бит, потому что реально никто больше 1 секунды молчать не будет.
|
|
|
|
|
Feb 18 2009, 11:00
|
Знающий
   
Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489

|
Цитата(_Pasha @ Feb 18 2009, 13:33)  Это что, сложно ??? Смотря для кого. Что делать с манчестером на 12мегабитах уже решили? Как устроены "PROFIchip" внутри посмотрели? http://www.profichip.com/products/Если не испугались, то ничего сложного. И действительно, 12 мегабит для серво это сейчас медленно.
--------------------
В действительности всё не так, как на самом деле.
|
|
|
|
|
Feb 18 2009, 11:34
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(slog @ Feb 18 2009, 15:00)  Смотря для кого. Что делать с манчестером на 12мегабитах уже решили? Стоп-стоп. Давайте не будем мешать в кучу физический уровень 1 OSI и весь Profibus, который использует уровни 1,2 и 7 То, что Вы назвали - это MBP. Кстати, почему-то написано Цитата MBP is synchronous transmission with a defined transmission rate of 31.25 Kbit/s and Manchester coding Цитата MBP transmission technology is usually limited to a specific segment (field devices in hazardous areas) of a plant, which are then linked to a RS485 segment via a segment coupler or links (Fig. ). Segment couplers are signal converters that modulate the RS485 signals to the MBP signal level and vice versa. Т.е. говоря по-русски Profibus, реализованный на манчестере и Profibus, реализованный на RS-485 или Profibus, реализованный на оптике. Надеюсь, понятно объяснил. Итого, на борту несчастной меги168 имеем UART и микросхему ST485 - это уровень 1 OSI Уровень 2 OSI- пока собираю инфу. Как-то все ненаглядно  Развеселая картинка, что приводил выше - это относится к нему Уровень 7 - уже параметры и некоторые рекомендации по улучшению синхронности. 12Мбит может и мало, но это уже восходит к возможностям сервака и энкодера, а они -то как раз скромненькие.
|
|
|
|
|
Feb 18 2009, 12:20
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(slog @ Feb 18 2009, 16:02)  Мега программно потянет только самые маленькие скорости. Флаги поддерживаемых скоростей - содержатся в GSD, типо паспорте устройства - это я уже асилил. Поэтому для собственно поддержки Profibus не имеет значения, что мега не успеет на 12Мбит. Это уже относится только к ТТХ системы в целом, а из-за того, что контроллер не поддерживает какие-либо скорости, сеть не развалится. Цитата Манчестер там всегда. Где?! Не вижу. Ткнете носом, где это написано?
|
|
|
|
|
Feb 18 2009, 14:07
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата поэтому для низкоуровневого потока данных достаточно передавать приращения с гарантией их доставки, например инвалидацией после приема блока данных (адресат отправляет обратно CRC блока), отправитель решает, повторять ли передачу. Так не делают. Для понимания рассмотрите случай, если девайс не услышал пакет подтверждения. На самом деле надо просто пронумеровать пакеты (или байты) и ввести подтверждение по номерам. Аля TCP. Если обмен организован в стиле "только запрос-ответ", то достаточно пронумеровать по модулю 2. Т.е. для номера достаточно одного бита. Алгоритм прост (в однобитном варианте) - у передающей стороны есть переменная SEQ, у принимающей - ACK. Передающая сторона в пакет вставляет свой SEQ, принимающая сторона сравнивает SEQ со своим ACK, если SEQ!=ACK - пакет отбрасывается, если SEQ==ACK - пакет принимается, увеличивается ACK на 1 (ну точнее ACK^=1). В любом случае значение ACK передается обратно в качестве подтверждения. Передающая сторона при приеме ACK!=SEQ выбрасывает переданный пакет (его подтвердили) и делает SEQ=ACK. В противном случае (ACK==SEQ) происходит перепосылка текущего пакета.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 18 2009, 14:13
|
Знающий
   
Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489

|
Цитата(_Pasha @ Feb 18 2009, 15:20)  Флаги поддерживаемых скоростей - содержатся в GSD, типо паспорте устройства - это я уже асилил. Поэтому для собственно поддержки Profibus не имеет значения, что мега не успеет на 12Мбит. Это уже относится только к ТТХ системы в целом, а из-за того, что контроллер не поддерживает какие-либо скорости, сеть не развалится.
Где?! Не вижу. Ткнете носом, где это написано? Где написано не помню, информация из памяти, в доках искать лень. Если нет 12 мбит, то и делать PROFIBUS для серво не интересно. Очень сложно и медленно. Добиться совместимости с фирменными устройствами не самая простая задача. Без гарантированной совместимости с остальными в PROFIBUS нет никакого смысла. EtherCAT гораздо интереснее. Но это не для простых сервоконтроллеров на мега168. Для простых достаточно step-dir или +/-10v для работы с простым ЧПУ софтом или любого простого самопального протокола хоть на основе ModBus для работы в качестве контроллера позиционирования. Цитата(dpss @ Feb 18 2009, 15:43)  Если не удастся достать специализированный чип , то проще сделать на какой- нибудь дешевой Альтере . Чипы достать теоретически можно. Но в штучных кол-вах цена у них десятки баксов за штуку, что совсем не интересно. Делать программно - не получить скорость. Есть корки для PROFIBUS под FPGA, но зачем его делать в FPGA если лучше сделать EtherCAT. Для серво это гораздо перспективнее. Цитата(dpss @ Feb 18 2009, 15:43)  Кстати есть готовая корка под EtherCAT. Если получится ее найти с ключиком , то считайте что у вас есть вся система. С их софтом проблема уже кажется решена. :-) http://www.beckhoff.com/download/Document/...1810_ET1815.pdfЭто конечно хорошо, но как быть с лицензией? Сколько она стоит? Может есть достаточно информации по которой можно самостоятельно что-то сваять типа этой корки?
--------------------
В действительности всё не так, как на самом деле.
|
|
|
|
|
Feb 18 2009, 14:44
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(_Pasha @ Feb 18 2009, 22:21)  Профибаса хачу!  Я уже тут плохо разбираюсь в вопросе. Но по профибасу, если не ошибаюсь, также контроллеры и оборудование фирмы Simiens соединяется? Просто, как я вижу, тема далеко отклонилась от первоначальных требований Цитата(_Pasha @ Feb 16 2009, 21:23)  "Заболел" я созданием мелкого сервоконтроллера. немножко уровень полулюбительский должен остаться. В идеале хочется, чтобы в конце обсуждения появился некий маленький "стандартик" на систему команд и применяемые интерфейсы и протоколы. Можно в двух словах примитивно мне объяснить прелести профибаса? Ну про совместимость со производственным оборудованием я понял. А что он еще дает? И на какой элементной базе реализовать поддержку этого протокола, а то уже FPGA мелькают сверху... И какой МК вообще будет ядром сервы? Как на счет остальных элементов привода (мост, питание, защиты, алгоритмы... и тп)? Я конечно помню, что тема для обсуждения команд, но мне, как начинающему в этой области хотелось бы остальное услышать) Не сочтите за наглость
--------------------
Выбор.
|
|
|
|
|
Feb 18 2009, 15:22
|
Знающий
   
Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489

|
Цитата(_Pasha @ Feb 18 2009, 18:00)  Пугает скорость  в два раза упавшая. Меня пугает даже не упавшая, а максимальная скорость UARTа в Меге. Я уже делал серво с интерфейсом на 12 мегабит. Этого в притык хватило для управления 4-мя осями. И без всяких сложно-наворочанных протоколов. Еще и протокол и так примитивный оптимизировать под максимальную скорость пришлось. Но для простого позиционирования одной оси большая скорость обмена конечно не нужна.
--------------------
В действительности всё не так, как на самом деле.
|
|
|
|
|
Feb 19 2009, 04:31
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Rst7 @ Feb 18 2009, 18:07)  Если обмен организован в стиле "только запрос-ответ" Делаю шаг назад, и вот почему: CODE Протокол 8-E-2 Скорость по умолчанию 9600 Режимы ASCII и BIN
Режимы различаются по первому байту.
Если первый байт 0x00..0x7f то это у нас ASCII с набором команд, о котором позже.
Если же первый байт >= 0x80,то это будет такая весчь: 7 6 5 4 3 2 1 0 1 V R R A A A A
V- номер пакета по версии RST7 RR - командный регистр 00 - положения 01 - скорости 10 - момента 11 - прямой ШИМ ------------------------ AAAA - адрес устройства в сегменте сети, то бишь, короткий адрес. Адрес 0 - всегда адрес хоста. Адреса общего вызова нет, поскольку в бинарном потоке это не нужно. ------------------ Далее (это все про BIN)идет 1 байт signed приращения командного регистра, 1 байт timestamp и crc8 а-ля даллас ----------------------------- После получения подобной команды слейв обязан ответить таким образом: первый байт 1VRR0000 (V,R - тот же смысл, ессно) второй - приращение фактической величины (положение/скорость/момент/ШИМ) третий -timestamp четвертый CRC8 -----------------------
ASCII - в процессе разработки, но сразу скажу, что там с игнорированием регистра, поскольку делать из юзеров неврастеников неприлично. Умерла тема? Не дождетесь!  Возражения и правки принимаются до конца недели в "парламентском" режиме. Насчет интеграции мысль такая: если страдаемый протокол будет поддержан людьми, то дальше - конверторы с чего хошь куда хошь как средство зарабатывания и поддержания интереса к теме вообще. В данном случае за уши притягивается итоговый перфоманс с учетом реализации на АВР. Цитата(Rst7 @ Feb 18 2009, 20:26)  призываю подумать над тем, какой софт или железо будет использоваться в качестве верхнего уровня ЗЫ: посоветуйте, надо ли в рамках бинарного потока сигналить об аварии или достаточно сделать это в текстовом виде?
|
|
|
|
|
Feb 19 2009, 04:57
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Протокол 8-E-2 Эээ, я не очень понял, данные передаются по инициативе контроллера? Или запрашиваются мастером? Цитата надо ли в рамках бинарного потока сигналить об аварии или достаточно сделать это в текстовом виде? Хотя бы флаг аварии надо передать. А расшифровку можно уже и потихоньку текстом забрать. Но есть ли смысл реализовывать текстовый протокол вообще? Как по мне, так и не очень...
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 19 2009, 06:39
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Rst7 @ Feb 19 2009, 08:57)  Эээ, я не очень понял, данные передаются по инициативе контроллера? Или запрашиваются мастером? Хотя бы флаг аварии надо передать. А расшифровку можно уже и потихоньку текстом забрать. Но есть ли смысл реализовывать текстовый протокол вообще? Как по мне, так и не очень... 1. Мастер - инициатор обмена. Следовательно запрашиваются мастером 2. Какой нибудь MAGIC... вот: использовать несимметричность signed char, т.е в отдаваемом приращении 0x80 -ето туши свет  3. Вы его еще не видели PS текстовый - в первую очередь для возможности управлять, причем всем сегментом сети, из терминала. Отсюда некоторые особенности: Код 1. Единица обработки команды - строка, заканч. 0x0d или 0x0a - настраивается 2. Команды широковещательные, адресные и может быть приватные сообщения между слейвами 3. широковещательные, адресные - идут от компа, читай - от юзера, поэтому для проверки правильности делаем эхо обратно 4. приваты - в конце добавляется CRC8, пусть слейвы между собой разбираются :) *****Как это выглядит ***** команда назначения имени и адресу assign x=0x04 девайс отвечает @x: assign x=0x04 OK Дальше что-то пишем ему x: S+=20 @x: S+=20 OK
|
|
|
|
|
Feb 19 2009, 08:34
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
- не защищенХочу сделать в рамках этого мини-языка несколько синонимов одних и тех же действий, чтобы юзер на свой страх и риск их применял. Из предыдущего моего поста: x: S+=20 после получения команды можно сделать сразу эхо, а можно после выполнения - избыточен, раза в два примерно Почему в два? Гораздо больше, но тут упор на макроязык и всякие навороты по синхронному исполнению о них - позже - требует для дешифрации больших ресурсов в слейве "На лету" ничего делаться не будет в текстовом режиме. Получил - сверился- выполнил - отчитался. В бинарном режиме, по получении MAGIC 0x80, сигнализирующем об аварии, хост останавливает процесс элементарно - переходом в текст. Остальные - услышали MAGIC и стали, а для "особо понятливых" - сработает тайм-аут "потеря связи" по прекращению бинарного потока (планируеццо 3,5 символа) Кстати, тайм-аут в символах на полудуплексе ваще удобно делать - Dummy writes при выключенном драйвере 485 ЗЫ какой из меня парсер сообщений!  Следующая "умная мысль". Структура строки Код [#<идентификатор потока>] [<имя устройства>:] [<команда1> [;<команда1>]]
идентификатор потока: число 1-99
имя устройства: идентификатор
команда1: семейство команд модификации регистров S,V,M,T Идент. потока нужен для задания синхронного начала исполнения команд. По именам регистров: регистр момента предлагаю назвать M,а не T(torque) потому что иначе нечем назвать время Еще вопрос из другой оперы: кто как считает ресурс/наработку сервака? Имхо есть смысл считать отдельно: Код 1. Моточасы, т.е. общее время в работе силовухи
2. Счетчик общего пробега
3. Время нахождения в режиме с ускорением По поводу бинарного протокола: +статистика: общее число принятых пакетов, число подтвердженных.
|
|
|
|
|
Feb 19 2009, 09:48
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Добавил (текстовый режим): Код Только для адресных команд!
По умолчанию слейв возвращает полученную строку обратно
Запустить ее на исполнение можно набрав / и ввод.
Если же в конце строки будет /, то исполнение начнется сразу, после чего слейв выдаст простой отчет OK
x: S=1200; V=12; T=122m юзер пишет
@x: S=1200; V=12; T=122m OK отвечает сервак
x:/ юзер
сервак подумал, переместился и написал
@x:OK
***********************************
Или то же самое но без эха
x: S=1200;V=12; T=122m / юзер пишет
сервак подумал и сгорел. И никто не знает, что он там получил,
потому что если был бы ошибка, то он написал бы
@x: S=0200;V=12Ё;T= / ERROR
Мораль: не уверен - не пользуй опасные вещи.
Тем более, что испортить можно все и всегда. Еще. Например, выполняется команда, а нам неймется в текстовом режиме обратиться к девайсу Код X: S+=120
@X: S+=120 BUSY Таким образом, других сообщений от слейва не надо, кроме {"OK","BUSY","ERROR"} На какую комбинацию клавиш лучше ввести экстренный стоп?
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|