реклама на сайте
подробности

 
 
11 страниц V  « < 5 6 7 8 9 > »   
Reply to this topicStart new topic
> Система команд сервоконтроллера, обсудим?
Огурцов
сообщение Feb 18 2009, 15:18
Сообщение #91


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(_Pasha @ Feb 18 2009, 15:21) *
Профибаса хачу!

Кажется...тема умерла.


2 slog: согласен по всем пунктам
Go to the top of the page
 
+Quote Post
slog
сообщение Feb 18 2009, 15:22
Сообщение #92


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Цитата(_Pasha @ Feb 18 2009, 18:00) *
Пугает скорость sad.gif в два раза упавшая.

Меня пугает даже не упавшая, а максимальная скорость UARTа в Меге. Я уже делал серво с интерфейсом на 12 мегабит. Этого в притык хватило для управления 4-мя осями. И без всяких сложно-наворочанных протоколов. Еще и протокол и так примитивный оптимизировать под максимальную скорость пришлось. Но для простого позиционирования одной оси большая скорость обмена конечно не нужна.


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 18 2009, 16:26
Сообщение #93


Йа моск ;)
******

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



И всеже еще раз призываю подумать над тем, какой софт или железо будет использоваться в качестве верхнего уровня для изобретаемого контроллера. Я вам гарантирую, что ответ на этот вопрос даст ответы на все остальные - и протокол, и прочее smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 19 2009, 04:31
Сообщение #94


;
******

Группа: Участник
Сообщений: 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 - в процессе разработки, но сразу скажу, что там с игнорированием регистра, поскольку делать из юзеров неврастеников неприлично.
Умерла тема? Не дождетесь! smile.gif

Возражения и правки принимаются до конца недели в "парламентском" режиме.
Насчет интеграции мысль такая: если страдаемый протокол будет поддержан людьми, то дальше - конверторы с чего хошь куда хошь как средство зарабатывания и поддержания интереса к теме вообще. В данном случае за уши притягивается итоговый перфоманс с учетом реализации на АВР.

Цитата(Rst7 @ Feb 18 2009, 20:26) *
призываю подумать над тем, какой софт или железо будет использоваться в качестве верхнего уровня


ЗЫ: посоветуйте, надо ли в рамках бинарного потока сигналить об аварии или достаточно сделать это в текстовом виде?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 19 2009, 04:57
Сообщение #95


Йа моск ;)
******

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



Цитата
Протокол 8-E-2


Эээ, я не очень понял, данные передаются по инициативе контроллера? Или запрашиваются мастером?

Цитата
надо ли в рамках бинарного потока сигналить об аварии или достаточно сделать это в текстовом виде?


Хотя бы флаг аварии надо передать. А расшифровку можно уже и потихоньку текстом забрать.

Но есть ли смысл реализовывать текстовый протокол вообще? Как по мне, так и не очень...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 19 2009, 06:39
Сообщение #96


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Rst7 @ Feb 19 2009, 08:57) *
Эээ, я не очень понял, данные передаются по инициативе контроллера? Или запрашиваются мастером?
Хотя бы флаг аварии надо передать. А расшифровку можно уже и потихоньку текстом забрать.
Но есть ли смысл реализовывать текстовый протокол вообще? Как по мне, так и не очень...

1. Мастер - инициатор обмена. Следовательно запрашиваются мастером

2. Какой нибудь MAGIC... вот: использовать несимметричность signed char, т.е в отдаваемом приращении 0x80 -ето туши свет smile.gif

3. Вы его еще не видели smile.gif 
PS текстовый - в первую очередь для возможности управлять, причем всем сегментом сети, из терминала. Отсюда некоторые особенности:
Код
1. Единица обработки команды - строка, заканч. 0x0d или 0x0a - настраивается
2. Команды широковещательные, адресные и может быть приватные сообщения между слейвами
3. широковещательные, адресные - идут от компа, читай - от юзера, поэтому для проверки правильности делаем эхо обратно
4. приваты - в конце добавляется CRC8, пусть слейвы между собой разбираются :)
*****Как это выглядит *****
команда назначения имени и адресу
assign x=0x04
девайс отвечает
@x: assign x=0x04 OK
Дальше что-то пишем ему
x: S+=20
@x: S+=20 OK
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Feb 19 2009, 06:56
Сообщение #97


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Если таки речь не про профибас: Текстовый режим плох по многим причинам. Сходу:
- не защищен (если не собираетесь заставить юзера руками считать crc)
- избыточен, раза в два примерно (а канал и так довольно узкий)
- требует для дешифрации больших ресурсов в слейве (особенно если давать командам осмысленные имена)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 19 2009, 08:34
Сообщение #98


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



- не защищен

Хочу сделать в рамках этого мини-языка несколько синонимов одних и тех же действий, чтобы юзер на свой страх и риск их применял.

Из предыдущего моего поста: x: S+=20 после получения команды можно сделать сразу эхо, а можно после выполнения smile.gif

- избыточен, раза в два примерно 

Почему в два? Гораздо больше, но тут упор на макроязык и всякие навороты по синхронному исполнению о них - позже

- требует для дешифрации больших ресурсов в слейве 
"На лету" ничего делаться не будет в текстовом режиме. Получил - сверился- выполнил - отчитался.
В бинарном режиме, по получении MAGIC 0x80, сигнализирующем об аварии, хост останавливает процесс элементарно - переходом в текст. Остальные - услышали MAGIC и стали, а для "особо понятливых" - сработает тайм-аут "потеря связи" по прекращению бинарного потока (планируеццо 3,5 символа) Кстати, тайм-аут в символах на полудуплексе ваще удобно делать - Dummy writes при выключенном драйвере 485

ЗЫ какой из меня парсер сообщений! smile.gif

Следующая "умная мысль". Структура строки

Код
[#<идентификатор потока>] [<имя устройства>:] [<команда1> [;<команда1>]]

идентификатор потока: число 1-99

имя устройства: идентификатор

команда1: семейство команд модификации регистров S,V,M,T


Идент. потока нужен для задания синхронного начала исполнения команд. 

По именам регистров: регистр момента предлагаю назвать M,а не T(torque) потому что иначе нечем назвать время



Еще вопрос из другой оперы: кто как считает ресурс/наработку сервака?

Имхо есть смысл считать отдельно:

Код
1. Моточасы, т.е. общее время в работе силовухи

2. Счетчик общего пробега

3. Время нахождения в режиме с ускорением
 



По поводу бинарного протокола: +статистика: общее число принятых пакетов, число подтвердженных. 
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 19 2009, 09:48
Сообщение #99


;
******

Группа: Участник
Сообщений: 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"}

На какую комбинацию клавиш лучше  ввести  экстренный стоп?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 19 2009, 09:56
Сообщение #100


Йа моск ;)
******

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



Цитата
На какую комбинацию клавиш лучше ввести экстренный стоп?

^C, че за вопрос


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 19 2009, 10:28
Сообщение #101


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



^C - это скока? Помню ^Z=26, а это - забыл sad.gif

И вот еще мысль:

Пусть нам надо переместиться по одной оси, но взять текущую координату с другой и че-то там с ней сделать

Хочу еще попробовать навернуть конструкции типа X.S, т.е. обращение к другому девайсу 

Код
axis1: S+= axis2.S


Выполнение этого уже требует разговора двух девайсов. Не вижу сложностей:

Код
axis2*axis1: S? (здесь CRC в hex-виде) - это слейв спросил у своего "коллеги", чо там у него за Сэ

@axis2*axis1: S=120 (здесь CRC в hex-виде) - на что он ответил.

@axis1 S+=120 OK - а если бы не ответил, то был бы ERROR


В общем-то, логика не нарушается, потому что мастер по-прежнему инициирует обмен

Задача - эти все навороты разместить в символах, чтоб было понятно пользоваться и чтоб словоподобных команд было минимум, и чтоб парсилось это все легко.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 19 2009, 10:35
Сообщение #102


Йа моск ;)
******

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



Цитата
^C - это скока?


=3

Цитата
Хочу еще попробовать навернуть конструкции типа X.S, т.е. обращение к другому девайсу


Ох сдается мне, что для таких вещей лучше CAN. Девайсы флудят своим состоянием в шину, а кому надо - настраивает свои фильтры на интересующий ID - и гребет всегда свежие данные.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 19 2009, 10:47
Сообщение #103


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Rst7 @ Feb 19 2009, 14:35) *
Девайсы флудят своим состоянием в шину

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

В BIN-е фантазии кончаются, начинается скорость. Как только скорость оставляет желать и начинают хихикать сторонники 12мегабит, имеется еще более тупой и адекватный интерфейс - step/dir/an


Простенько, и со вкусом... это только выглядит замороченно, в реале должно быть проще.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 19 2009, 10:54
Сообщение #104


Йа моск ;)
******

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



Цитата
другой стороны - комфорт для юзера и почти язык для ручного управления, настройки, просмотра.


Надо бы Вам ко мне в гости зайти. Я покажу, как делается комфортно для юзера smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Feb 19 2009, 11:35
Сообщение #105


чукчхэшаражогрмонтажник
*****

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



Продолжу про оптику.
Упоминаемый уже Бекхоф, с интерфейсом Lightbus, он же Sercos,
переходит на CoDeSys. Почитал немного из форума.
Картинка из каталога.


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post

11 страниц V  « < 5 6 7 8 9 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 21:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.02083 секунд с 7
ELECTRONIX ©2004-2016