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

 
 
 
Reply to this topicStart new topic
> Организация информационного канала RS232
amoralex
сообщение Nov 29 2005, 08:07
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Есть несколько входных каналов RS232, на каждом стоит по микропроцессору, анализирующему приходящие данные. Как только сформировался пакет данных его необходимо передать на выходной канал. Следующий пакет данных допускается потерять, с учетом затрат на пересылку.

Есть один выходной канал RS232, на нем хочется, чтобы последовательно (по мере приема сформировавшихся пакетов) шли данные со входных каналов.

Совсем не ясен момент как организовать пересылку данных со входных микропроцессоров на выходной канал... Напрямую через микроконтроллер или через буферную память?

Буду благодарен за советы!
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 29 2005, 08:32
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



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

2. Поставить отдельный контроллер на выходной канал и связать его с остальными например по I2C или SPI.
Go to the top of the page
 
+Quote Post
upc2
сообщение Nov 29 2005, 09:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Непонятно где будет расположена буферная память?
Скорость передачи соизмерима с формированием пакета?
Так нельзя.Надо повышать скорость передачи.
Есть несколько вариантов:
1.Выходной контроллер поочереди опрашивает входные,
формирует пакет и передает его дальше.Выходные
контроллеры должны накапливать данные до запроса.
2.Входные контроллеры сформировав пакет выставляют
запрос на прерывание.Выходной контроллер на порядок
должен быть 'круче' входных.
Для работы по протоколу RS232 можно задействовать любые
выводы микроконтроллера ,если не хватает встроенных портов.
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 29 2005, 09:58
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(upc2 @ Nov 29 2005, 12:21) *
Непонятно где будет расположена буферная память?
Скорость передачи соизмерима с формированием пакета?
Так нельзя.Надо повышать скорость передачи.
Есть несколько вариантов:
1.Выходной контроллер поочереди опрашивает входные,
формирует пакет и передает его дальше.Выходные
контроллеры должны накапливать данные до запроса.
2.Входные контроллеры сформировав пакет выставляют
запрос на прерывание.Выходной контроллер на порядок
должен быть 'круче' входных.
Для работы по протоколу RS232 можно задействовать любые
выводы микроконтроллера ,если не хватает встроенных портов.


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

И смонительно что выходной контроллер должен быть на порядок круче, UART не так сложно обрабатывать тем более суммарный поток данных все равно не больше чем может выдать один UART
Go to the top of the page
 
+Quote Post
Roma_te
сообщение Dec 13 2005, 11:57
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 13-12-05
Из: Украина, Тернополь
Пользователь №: 12 161



Цитата(KRS @ Nov 29 2005, 12:32) *
1. Можно подключить выходной канал к каждому из контроллеров, они по мере готовности выходного пакета его захватывают и передают, главное здесь миханизм синхронизации с остальными, чтобы 2 одновременно не стали передавать и надо что бы у каждого контроллера была 2 уарта
один на вход, другой выход - обычно отключен (в 3 состоянии) как выходной пакет готов контроллер подключает уарт на выход и передает пакет, потом отключает.
Тут самое сложно седлать синхронизацию, можно выделить ногу под сигнал занятости шины, но все равно как то надо исключить совсем одновременный захват шины.

2. Поставить отдельный контроллер на выходной канал и связать его с остальными например по I2C или SPI.


Я думаю первый вариант - оптимальное решение. Только несогласен с тем, что необходимо иметь 2 уарта поскольку, как я понимаю, каждый канал уарта включаэт как приемник так и передатчик, который может быть объеденен с передатчиками других процессоров, например через монтажное ИЛИ, и отправлен на выход.
Go to the top of the page
 
+Quote Post
afe
сообщение Jan 25 2006, 16:53
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 4-05-05
Из: Харьков
Пользователь №: 4 740



Цитата(amoralex @ Nov 29 2005, 12:07) *
Есть несколько входных каналов RS232, на каждом стоит по микропроцессору, анализирующему приходящие данные. Как только сформировался пакет данных его необходимо передать на выходной канал. Следующий пакет данных допускается потерять, с учетом затрат на пересылку.

Есть один выходной канал RS232, на нем хочется, чтобы последовательно (по мере приема сформировавшихся пакетов) шли данные со входных каналов.

Совсем не ясен момент как организовать пересылку данных со входных микропроцессоров на выходной канал... Напрямую через микроконтроллер или через буферную память?

Буду благодарен за советы!


А почему бы не посмотреть в сторому RS485 не посмотреть, и вешать все на ону пару ...


--------------------
SY AfE
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 26 2006, 07:16
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(amoralex @ Nov 29 2005, 11:07) *
Есть несколько входных каналов RS232, на каждом стоит по микропроцессору, анализирующему приходящие данные. Как только сформировался пакет данных его необходимо передать на выходной канал. Следующий пакет данных допускается потерять, с учетом затрат на пересылку.

Есть один выходной канал RS232, на нем хочется, чтобы последовательно (по мере приема сформировавшихся пакетов) шли данные со входных каналов.

Совсем не ясен момент как организовать пересылку данных со входных микропроцессоров на выходной канал... Напрямую через микроконтроллер или через буферную память?


Извините за ... но все - же. Если Вам лень написать десяток строк, то подумайте о тех, кто эти посты читает. Мы хотим Вам помочь, а иногда так получается, что бесполезно тратим свое время! Надо грамотно поставить условие задачи. А оно такое:
есть сеть из N микроконтроллеров.
И вот далее - сколько есть данных и с какой скоростью относительно канала передачи они поступают.
Надо описать то, как они расположены и их физическую реализацию.
Требуется определить протокол передачи данных.

Простейший вариант - один мастер. Он опрашивает слэйвы, и они отдают ему информацию. Нет никаких буферов и потерь пакетов. Но могут теряться данные в слэйвах, если размер памяти их буфера мал.
Более сложный вариант - опрос по запросу. Запрос можно сделать аппаратный, сложить все по ИЛИ и анализировать запрос прерывания от этих входов. Далее опрашивать того, кто имеет более высокий приоритет или любого.
Далее идут варианты с несколькими мастерами и с передачей эстафеты. Но это и гораздо сложнее в отладке.

Только после того, как будет определен протокол общения между процессорами, надо определить как будут передаваться данные от одного процессора к другому.
Как будет формироваться начало и конец кадра. Этот признак можно посылать как аппаратный флаг - сигналом. Можно произвести избыточное кодирование данных. Можно сделать как в LIN. По поводу LIN - скоро повешу у себя на сайте верстку статьи о LIN. Можно вводить большую паузу.

Теперь самое простое - физическая реализация линии связи. Точка- точка т.е. звезда, общая шина или комбинации. Уровни сигналов в линии - все зависит от скоростей, расстояний, помех и конструкции.

Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post

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

 


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


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