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

 
 
> Организация сетевого обмена на AT90S8515, Построение локальной сети микроконтроллеров
nelord
сообщение Jun 2 2008, 13:20
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 5-11-07
Пользователь №: 32 068



Здравствуйте!
Подскажите как лучше реализовать сетевой обмен между МК, если имеется следующие требования:
- обмен по последовательному каналу (планирую использовать UART + MAX232);
- число абонентов от 1 до 16;
- возможность горячего подключения/отключения абонентов;
- длина передаваемого сообщения данных / команд не более 64 байт.

Сетевой обмен будет макетироваться на STK500 и моделироваться в Proteus'е.
Есть ряд вопросов по реализации:
- следует ли реализовывать некое подобие Ethernet, TokenRing, HDLC?
- как следует осуществлять квитирование? (для связи будет использоваться нуль-модемный кабель (RS-232C, COM (DB-9M)))
- будут ли программно доступны линии спецификации RS-232C (9-контактов), кроме TxD/RxD/GND? Есть подозрения, что они будут недоступны. Поясню, планировал использовать ряд линий как запрос на конфигурирование сети и быстрый ответ на передачу данных (принято без/с ошибками), без них же будет затруднительно это реализовать.

Полагаю использовать преамбулу в 2 байта + 2 байта, определяющие тип передачи, + 2 байта CRC16. Думаю, что имеет смысл реализовать некоторый набор стандартных команд-пакетов, например опрос статуса и т.д. По-началу хотел реализовать детерминированный доступ к каналу - в духе TokenRing, однако сейчас в недоумении, как организовать выбор монитора (резервного монитора) из всех МК, а также организовать обход абонента, которому нечего передавать и/или передача адресована не ему, - это для сокращения временных задержек, связанных с приемом, а затем перепередачей данных. Сейчас же в раздумьях, как это можно сделать, чтобы потом была возможность выполнить макетирование на STK500.

Подскажите, пожалуйста, как решить вышеописанные вопросы. Заранее благодарен.

В догонку, есть еще одно требование - реализовать "средства (аппаратные и программные), обеспечивающие контроль работы канала связи с помощью пульта оператора в режиме диагностики, предусмотрев централизованное управление всеми транзакциями по командам оператора", следует ли на этой плате ставить дополнительную ИМС памяти (для приемного буфера), если да, то какого объема лучше? Для индикации будет использован цифро-буквенный ЖКИ типа LM041L/LM044L.

P.S.: также было высказано "требование-пожелание" - программы должны быть написаны на ассемблере (это несколько огорчило... smile3009.gif ).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Qwertty
сообщение Jun 2 2008, 13:45
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(nelord @ Jun 2 2008, 17:20) *
Здравствуйте!
Подскажите как лучше реализовать сетевой обмен между МК, если имеется следующие требования:
...

MAX232 (как и RS232 вообще) не предназначена для построения сетей. ИМХО Ваш выбор - RS485 и что-то типа max483.
AT90S8515 - странный выбор,контроллер не производится лет 5.
Про Протеус лучше забыть, в нем хорошо только игрушки отлаживать.
Линий кроме RXD и TXD у AVR нет. Если нужны следует выбрать другой контроллер, например AT91SAM7S128.
Протоколов много стандартных - MODBUS, WAKE, или на их основе изобретайте свое.
Курсовик? smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 2 2008, 15:32
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Qwertty @ Jun 2 2008, 16:45) *
Линий кроме RXD и TXD у AVR нет. Если нужны следует выбрать другой контроллер, например AT91SAM7S128.

Зачем? Берем любые GPIO и называем их так как надо.

Цитата
Какой из предложенных протоколов лучше выбрать: MODBUS или WAKE?

Я бы выбрал modbus.

Цитата
следует ли на этой плате ставить дополнительную ИМС памяти (для приемного буфера), если да, то какого объема лучше?

Я бы ставил 8-32kB (корпуса/сигналы одинаковые), но "не для приемного буфера", а для комфортной работы. Т.е. подключить эту память по шине и использовать также как и внутреннюю - если надо под стек, под переменные и проч.
Чип m162 или m128 (с внешней шиной и с JTAG'ом для отладки).
Go to the top of the page
 
+Quote Post
nelord
сообщение Jun 2 2008, 16:20
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 5-11-07
Пользователь №: 32 068



Цитата(defunct @ Jun 2 2008, 19:32) *
Зачем? Берем любые GPIO и называем их так как надо.
Я бы выбрал modbus.
Я бы ставил 8-32kB (корпуса/сигналы одинаковые), но "не для приемного буфера", а для комфортной работы. Т.е. подключить эту память по шине и использовать также как и внутреннюю - если надо под стек, под переменные и проч.
Чип m162 или m128 (с внешней шиной и с JTAG'ом для отладки).


Разумеется, что можно использовать любой I/O вывод, вопрос был относительно поддержки физической коммутации этих выводом с разъемом DB-9M на плате STK500, в документации для указанной коммутации есть только "RS232 SPARE", то есть TxD/RxD + GND

Описание спецификации modbus нашел следующее, если кому быть может понадобится:
http://www.idom.ru/files/Schneider/Info/Ne.../Modbus_Rus.Doc

Также вопрос: почему RS-485 лучше, чем RS-232, как я понял почитав по следующим ссылкам:
Цитата

он отличается только в передаче по дифференциальной паре, то есть лучше применим для сетей с удаленными абонентами + лучше помехозащищен.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 2 2008, 17:26
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(nelord @ Jun 2 2008, 19:20) *
Разумеется, что можно использовать любой I/O вывод, вопрос был относительно поддержки физической коммутации этих выводом с разъемом DB-9M на плате STK500, в документации для указанной коммутации есть только "RS232 SPARE", то есть TxD/RxD + GND

Дык в чем вопрос? Подведите требуемые линии к разъему.
Всяко проще чем переходить к совсем другим платформам.

Цитата
Также вопрос: почему RS-485 лучше, чем RS-232, как я понял почитав по следующим ссылкам:
он отличается только в передаче по дифференциальной паре, то есть лучше применим для сетей с удаленными абонентами + лучше помехозащищен.

1. 2.5км дальность сегмента.
2. можно подключать до 32-х устройств к одной шине из двух проводов.

Он не лучше применим, он создан для сетевых решений, в то время как 232-й это соединение точка-точка и к сетевым решениям не применим вообще.
Go to the top of the page
 
+Quote Post
nelord
сообщение Jun 3 2008, 06:49
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 5-11-07
Пользователь №: 32 068



Цитата(defunct @ Jun 2 2008, 21:26) *
... 232-й это соединение точка-точка и к сетевым решениям не применим вообще.


Согласен, что соединение - точка-точка, что же мешает соединить всех абонентов следующим образом: TxD(n-1)-RxD(n), n=1, ... N-1; TxD(N-1)-RxD(0). Организовав таким образом кольцо связями точка-точка.

Сейчас у меня остался вопрос, как организовать доступ к каналу, если не обходимо поддерживать горячее подключение. Поясню - имеется активный монитор (при чем как отдавать предпочтение одному абоненту не очевидно), возможно что включат новых абонентов, несконфигурированных для работы в сети, или же выключат станцию-монитора. То есть нужно организовать что-то вроде MAC (Media Access Control) канального уровня модели OSI.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 3 2008, 06:59
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(nelord @ Jun 3 2008, 09:49) *
Согласен, что соединение - точка-точка, что же мешает соединить всех абонентов следующим образом: TxD(n-1)-RxD(n), n=1, ... N-1; TxD(N-1)-RxD(0). Организовав таким образом кольцо связями точка-точка.

1. Мазохизм 2. Потеря быстродействия. 3. Потеря надежности.

Цитата(nelord @ Jun 3 2008, 09:49) *
Сейчас у меня остался вопрос, как организовать доступ к каналу, если не обходимо поддерживать горячее подключение. Поясню - имеется активный монитор (при чем как отдавать предпочтение одному абоненту не очевидно), возможно что включат новых абонентов, несконфигурированных для работы в сети, или же выключат станцию-монитора. То есть нужно организовать что-то вроде MAC (Media Access Control) канального уровня модели OSI.

Сессия скоро, что, MAC в задании записан?
Даже если записан, пишем, что объединяем этот уровень со следующим и вводим адресацию на перемычках. Хочешь подключиться - сконфигурируй перемычки.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
nelord
сообщение Jun 3 2008, 08:51
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 5-11-07
Пользователь №: 32 068



Цитата(Dog Pawlowa @ Jun 3 2008, 10:59) *
MAC в задании записан?


Нет, MAC я просто привел для примера. Вопрос относительно MAC был связан с тем, что как организовать доступ к каналу. Была мысль ввести дополнительную линию занят/свободен, но тогда один абонент может полностью занять канал на продолжительное время, если же в передачу вклинится другой абонент, то это может быть воспринято, как нарушение timeout.
Адекватно ли будет ввести паузу установки занят/свободен 3х видов: передаю кадр, ждите (минимум); хочу начать передачу (средне); только что передал, если кому канал нужен, занимайте (максимум). При приеме любого передаваемого байта сбрасывать соответствующие таймеры. Таким образом, думаю, что пакет будет полностью передан без вклиниваний других станций и передающая станция не займет весь канал.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 3 2008, 09:35
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(nelord @ Jun 3 2008, 11:51) *
...
Адекватно ли будет ввести паузу установки занят/свободен 3х видов:
...

Куда, простите, Вы собираетесь вводить эту паузу?

Есть два основных варианта -
1) логика Ethernet (все слушают и пытаются вклиниться, если коллизия произошла, повтор по правилам)
2) организация сети Master-Slaves - коллизии исключаются, но Мастер должен опрашивать всех.
ну и там разные еще токен ринги на любителей извращений.

Хотите придумать что-то свое?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
nelord
сообщение Jun 3 2008, 10:13
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 5-11-07
Пользователь №: 32 068



Цитата(Dog Pawlowa @ Jun 3 2008, 13:35) *
Куда, простите, Вы собираетесь вводить эту паузу?
Хотите придумать что-то свое?


Хочу ввести дополнительную линию: свободен или занят канал (busy).
При доступе к этой линии будет использоваться задержка 3х видов (задержка после приема последнего байта информации или сброса счетчиков). В принципе это аналог Ethernet, только прослушивается перед выходом в сеть не канал передачи, а линия busy. Если кто-то начал передавать данные, то он должен передать все без вмешательства в передачу других абонентов (то есть минимальная задержка установки линии busy). Если канал свободен - то его может захватить любой абонент (средняя задержка установки линии busy). Если абонент только что передал данные - то он ждет перед отправкой новых данных время, большее, чем в предыдущем случае (больше средней задержки).
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 3 2008, 10:46
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(nelord @ Jun 3 2008, 13:13) *
Хочу ввести дополнительную линию: свободен или занят канал (busy).
При доступе к этой линии будет использоваться задержка 3х видов (задержка после приема последнего байта информации или сброса счетчиков). В принципе это аналог Ethernet, только прослушивается перед выходом в сеть не канал передачи, а линия busy.

Послушайте.
Тысячи людей, поумнее чем Вы и я, во всем мире, лет сорок уже, работали над созданием локальных сетей. И кое-что придумали. И тут приходите ВЫ! 07.gif
В Вашей идее с ходу видны элементарные логические дыры.
1) Например, двум узлам есть передавать, они дожидаются, пока освободится канал. И оба одновременно занимают его! И оба начинают передавать. А уж при более подробном рассмотрении дыр найдется гораздо больше.
2) Каким приемопередатчиком Вы будете формировать сигнал Busy? Что-то уникальное закажете?

Если препод лох, то он, конечно, проглотит. Дерзайте.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jun 3 2008, 11:35
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Dog Pawlowa @ Jun 3 2008, 14:46) *
Послушайте.
Тысячи людей, поумнее чем Вы и я, во всем мире, лет сорок уже, работали над созданием локальных сетей. И кое-что придумали.

Например CAN, где проблеммы мультимастерности решены способом очень похожим на то, что предложил 'nelord'.

2 'nelord'. Если вам эта тема действительно интересна. В смысле не как курсач сдать, а как хобби что-ли, то рекомендую сделать следующее: использовать вместо приёмопередатчиков RS485 приёмопередатчики CAN (или LIN). У них есть рецессивный и доминантный уровень, и если 100 передатчиков передают рецессивный (1), а один доминантный уровень (0) на линии будет доминантный уровень (0). И если передатчик будет слушать свою передачу, то он сможет распознать коллизию (в отличие от использования приёмопередатчиков RS485). В это случае линия BUSY не будет нужна.
А вообще почитайте и про CAN и про LIN. Я сделал мультимастерную сеть на базе USART с приёмопередатчиками CAN - всё замечательно работало. По крайней мере гораздо эффективнее MODBAS. Единственный недостаток - нестандартность.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 3 2008, 12:00
Сообщение #13


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(galjoen @ Jun 3 2008, 14:35) *
Например CAN, где проблеммы мультимастерности решены способом очень похожим на то, что предложил 'nelord'.

Нисколько непохожи. В CAN нет никаких доп линий "занятности" канала. Конфликт разрешается "отвалом" группы мастеров-лузеров с рецессивным уровнем сигнала. Т.о. возможна ситуация когда опеределенный мастер вообще никогда не получит шанса "пообщаться".
Идея CAN'a - это I2C с PHY пригодным для подключения на большие расстояния.

nelord предлагает некое подобие CSMA-CD, за тем исключением, что CSMA-CD обходится без доп линий, а использует прослушку и преамбулу для выявления конфликта, плюс случайный таймаут. Его доп. линия - это потеря надежности ровно на 50%. Заглюч какое-то из устройств или оборвись эта линия - и вся система сдохла.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jun 3 2008, 12:45
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(defunct @ Jun 3 2008, 16:00) *
Нисколько непохожи. В CAN нет никаких доп линий "занятности" канала. Конфликт разрешается "отвалом" группы мастеров-лузеров с рецессивным уровнем сигнала. Т.о. возможна ситуация когда опеределенный мастер вообще никогда не получит шанса "пообщаться".
Идея CAN'a - это I2C с PHY пригодным для подключения на большие расстояния.

Я имел ввиду, что похоже не по физической реализации, а по методологии. Конечно в CAN нет никакой доп. линии, но имеется РАВНОПРАВНАЯ мультимастерность (в отличие от I2C с его адресами устройств). А ситуация, когда мастер не сможет пообщатся в CAN невозможна (при физической исправности). Возможна только ситуация, когда определённый мастер не сможет никогда отправить сообщение с НИЗКИМ приоритетом. Но никто не мешает ему в случае таймаута этот приоритет поднять - сеть-то совершенно равноправная.

2 'Dog Pawlowa'. Вообще то это я предложил 'nelord' использовать драйвера CAN. Примерно год назад это обсуждали. Это первая моя тема на этом форуме была.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 3 2008, 13:16
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(galjoen @ Jun 3 2008, 15:45) *
2 'Dog Pawlowa'. Вообще то это я предложил 'nelord' использовать драйвера CAN. Примерно год назад это обсуждали. Это первая моя тема на этом форуме была.

Да-да, простите. 05.gif
Идея хорошая и скрашивающая натянутость использования USART в данном случае. smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- nelord   Организация сетевого обмена на AT90S8515   Jun 2 2008, 13:20
||- - Т.Достоевский   Цитата(galjoen @ Jun 3 2008, 15:35) А воо...   Jun 5 2008, 20:33
||- - galjoen   Цитата(Т.Достоевский @ Jun 6 2008, 00:33)...   Jun 6 2008, 14:53
||- - nelord   Цитата(galjoen @ Jun 6 2008, 18:53) ... П...   Jun 8 2008, 15:00
||- - Dog Pawlowa   Цитата(nelord @ Jun 8 2008, 18:00) Тут на...   Jun 8 2008, 20:12
||- - galjoen   Цитата(Dog Pawlowa @ Jun 9 2008, 00:12) П...   Jun 9 2008, 14:23
||- - Dog Pawlowa   Цитата(galjoen @ Jun 9 2008, 17:23) Все,...   Jun 9 2008, 15:21
||- - nelord   Цитата(galjoen @ Jun 9 2008, 18:23) Вы ка...   Jun 9 2008, 18:23
|- - VladimirYU   [quote name='nelord' date='Jun 3 2008,...   Jun 3 2008, 07:25
- - nelord   Именно, курсовик. Свой уже сдал, попросили сделать...   Jun 2 2008, 14:23
- - Kuzmi4   2 nelord - на счёт модбаза - где то сдесь и исходн...   Jun 2 2008, 15:40
- - Kuzmi4   2 Dog Pawlowa - с его проводом занятости просто на...   Jun 3 2008, 10:56
|- - Dog Pawlowa   Цитата(Kuzmi4 @ Jun 3 2008, 13:56) 2 Dog ...   Jun 3 2008, 11:11
|- - nelord   Цитата(Kuzmi4 @ Jun 3 2008, 14:56) 2 nelo...   Jun 3 2008, 11:35
|- - nelord   Цитата(Kuzmi4 @ Jun 3 2008, 14:56) 2 nelo...   Jun 3 2008, 12:01
|- - defunct   Цитата(nelord @ Jun 3 2008, 15:01) Хотел ...   Jun 3 2008, 12:13
- - MrYuran   Огласите пжалста, весь список! То есть, задани...   Jun 3 2008, 11:00
- - Qwertty   Упс - два раза вставилось..   Jun 3 2008, 11:35
- - Qwertty   Просто мысль - для курсовика экономика не важна, м...   Jun 3 2008, 11:35
- - nelord   Спасибо большое за помощь. С этим я разобрался, но...   Jun 3 2008, 12:20
|- - Dog Pawlowa   Цитата(nelord @ Jun 3 2008, 15:20) Спасиб...   Jun 3 2008, 12:26
- - Kuzmi4   2 nelord - а здесь пробовали искать http://electro...   Jun 3 2008, 12:20
- - nelord   Попутно возник еще один вопрос, при детальном анал...   Jun 8 2008, 16:32
- - vet   Цитата(nelord @ Jun 8 2008, 20:32) Попутн...   Jun 9 2008, 04:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:20
Рейтинг@Mail.ru


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