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

 
 
> MSP & RS485
AVN
сообщение Aug 7 2008, 05:24
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 21-03-05
Пользователь №: 3 556



У MSP нет прерывания по опустошению сдвигового регистра, как у AVR. Каким образом мне поймать момент опустошения сдвигового регистра, чтобы переключить направление передачи? Сделал по таймеру, но в этом случае отправляется лишний байт и как-то не нравится такое решение. Кто может что-то предложить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Aug 7 2008, 11:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Не нужно стремиться включать драйвер как можно быстрее. Если у вас разрабатывается поддержка сетевого устройства, а не "настольный" вариант конвертора, то предвосхищая трудности стыковки в одной сети вашего устройства с устройствами других производителей, следует заложить в реализацию настраиваемые задержки.
1) задержка между переключением драйвера RS485 на передачу и началом передачи
2) задержка после окончания передачи, перед переключением драйвера в режим приема.
Еще раз подчеркиваю, что это должны быть настраиваемые пользователем задержки.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 8 2008, 06:08
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(rezident @ Aug 7 2008, 17:02) *
2) задержка после окончания передачи, перед переключением драйвера в режим приема.
Еще раз подчеркиваю, что это должны быть настраиваемые пользователем задержки.


А это зачем? ИМХО, что чем быстрее устройство отпустит шину после передачи, тем лучше. Какие могут быть причины задерживать момент отключения?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 8 2008, 06:19
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(AHTOXA @ Aug 8 2008, 10:08) *
А это зачем? ИМХО, что чем быстрее устройство отпустит шину после передачи, тем лучше. Какие могут быть причины задерживать момент отключения?

Переходные процессы в линии


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 8 2008, 09:05
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(MrYuran @ Aug 8 2008, 12:19) *
Переходные процессы в линии


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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 8 2008, 14:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AHTOXA @ Aug 8 2008, 15:05) *
Для их подавления служит задержка перед началом передачи. А смысла в задержке по окончании передачи я не вижу никакого.

Для RTU-ных протоколов связи, в которых конец пакета отслеживается по паузе тишины, смысл в формировании этой паузы удержанием драйвера в режиме передачи имеется. К тому же я написал - настраиваемая задержка. Параметр, имеющий величину - 0, означает отсутствие этой задержки wink.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 8 2008, 15:44
Сообщение #7


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(rezident @ Aug 8 2008, 20:12) *
Для RTU-ных протоколов связи, в которых конец пакета отслеживается по паузе тишины, смысл в формировании этой паузы удержанием драйвера в режиме передачи имеется.


Во-первых, эта задержка нужна для протокола, а не для собственно передачи по RS-485. А во-вторых, если эта задержка задаётся протоколом, то зачем её дополнительно настраивать? smile.gif

Цитата
К тому же я написал - настраиваемая задержка. Параметр, имеющий величину - 0, означает отсутствие этой задержки wink.gif


По закону тов. Мерфи, если есть настройка, то обязательно найдётся пользователь, который настроит неправильноsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 9 2008, 00:46
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AHTOXA @ Aug 8 2008, 21:44) *
Во-первых, эта задержка нужна для протокола, а не для собственно передачи по RS-485. А во-вторых, если эта задержка задаётся протоколом, то зачем её дополнительно настраивать? smile.gif
Чтобы реализовать протокольную часть связи, нужно иметь возможность реализации на физическом уровне, не так ли?
Цитата(AHTOXA @ Aug 8 2008, 21:44) *
По закону тов. Мерфи, если есть настройка, то обязательно найдётся пользователь, который настроит неправильноsmile.gif
Закон Мерфи гласит, что если вероятность неприятного события отлична от нуля, то оно обязательно произойдет, причем в самый неподходящий момент smile.gif Заложить дополнительную возможность это как соломки себе подстелить. Неоднократно встречались ситуации, когда производитель оборудования был вынужден модифицировать аппартно-программную часть, для реализации возможности подключения его оборудования в уже существующую сеть приборов. Причем доработки были связаны именно с введением дополнительных задержек, реализации поддержки протокола и, например, введения гальванической развязки RS485. Но если вам нравится ходить по чужим и уже известным граблям, то ради Бога! laughing.gif Шагайте! biggrin.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 9 2008, 11:03
Сообщение #9


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(rezident @ Aug 9 2008, 06:46) *
Чтобы реализовать протокольную часть связи, нужно иметь возможность реализации на физическом уровне, не так ли?


Ерунда. Протокольные задержки реализуются протоколом, задержки физического уровня - на физическом. Если заложить "настраиваемые задержки" на физическом уровне, то протоколу придётся учитывать ещё и их.

Цитата
Закон Мерфи гласит, что если вероятность неприятного события отлична от нуля, то оно обязательно произойдет, причем в самый неподходящий момент smile.gif


Вот именно. Потому каждая лишняя настройка потенциально ведёт к неприятному событию.

Цитата
Неоднократно встречались ситуации, когда производитель оборудования был вынужден модифицировать аппартно-программную часть, для реализации возможности подключения его оборудования в уже существующую сеть приборов. Причем доработки были связаны именно с введением дополнительных задержек, реализации поддержки протокола и, например, введения гальванической развязки RS485.


Предлагаете и гальваноразвязку делать в качестве настраиваемого параметра? smile.gif Ещё раз: это — протокольные дела. Подстройка протокола - это нормально. Но вопрос стоял о работе физического уровня. Я так понял, что для него удержание линии по окончании передачи таки не нужно.

Цитата
Но если вам нравится ходить по чужим и уже известным граблям, то ради Бога! laughing.gif Шагайте! biggrin.gif


Когда кончаются аргументы, начинают пугать граблями и рассказывать о своём богатом опыте, ага. А я-то надеялся, что Вы что-то умное мне поведаете...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 9 2008, 17:10
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AHTOXA @ Aug 9 2008, 17:03) *
Ерунда. Протокольные задержки реализуются протоколом, задержки физического уровня - на физическом. Если заложить "настраиваемые задержки" на физическом уровне, то протоколу придётся учитывать ещё и их.
Конечно, А как же без этого если реализованы поддержки различных протоколов на одном физическом уровне? Кроме того, задержки в любом случае нужно учитывать, т.к. линия связи RS485 может быть удлинена репитерами. А каждый репитер вносит задержку.
Цитата(AHTOXA @ Aug 9 2008, 17:03) *
Вот именно. Потому каждая лишняя настройка потенциально ведёт к неприятному событию.
В руках дурака и рогатка - самострел biggrin.gif
Цитата(AHTOXA @ Aug 9 2008, 17:03) *
Предлагаете и гальваноразвязку делать в качестве настраиваемого параметра? smile.gif
Не передергивайте! Я писал про доработку устройств, которые должны были быть подключены к уже имеющейся сети из различных приборов.
Цитата(AHTOXA @ Aug 9 2008, 17:03) *
Ещё раз: это — протокольные дела. Подстройка протокола - это нормально. Но вопрос стоял о работе физического уровня. Я так понял, что для него удержание линии по окончании передачи таки не нужно.
Исходя из вероятности возникновения коллизий, чем меньше время удержания, тем меньше вероятность коллизии. С этой точки зрения нет, не нужно. Но для поддержания протокольной части и увеличения надежности связи - весьма полезно. "Растяжку" линии тоже ведь широко используют для этой же цели (увеличение надежности связи), а ее ведь в стандарте EIA/TIA-475-A нет и в обязательном порядке для функционирования RS485 она не нужна.
Цитата(AHTOXA @ Aug 9 2008, 17:03) *
Когда кончаются аргументы, начинают пугать граблями и рассказывать о своём богатом опыте, ага.
Пугать? 07.gif Да ни в коем разе. smile.gif Всего лишь обмен опытом. Как говорится Sapenti sat. laughing.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 9 2008, 18:31
Сообщение #11


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(rezident @ Aug 9 2008, 23:10) *
Конечно, А как же без этого если реализованы поддержки различных протоколов на одном физическом уровне? Кроме того, задержки в любом случае нужно учитывать, т.к. линия связи RS485 может быть удлинена репитерами. А каждый репитер вносит задержку.


Тут скорее всё же нужно подстраивать задержку перед началом передачи, нежели задержку по окончании приёма.

Цитата
Не передергивайте! Я писал про доработку устройств, которые должны были быть подключены к уже имеющейся сети из различных приборов.


Не обижайтесь, я пошутилsmile.gif

Цитата
Исходя из вероятности возникновения коллизий, чем меньше время удержания, тем меньше вероятность коллизии. С этой точки зрения нет, не нужно.


Здесь полный консенсус beer.gif

Цитата
Но для поддержания протокольной части и увеличения надежности связи - весьма полезно. "Растяжку" линии тоже ведь широко используют для этой же цели (увеличение надежности связи), а ее ведь в стандарте EIA/TIA-475-A нет и в обязательном порядке для функционирования RS485 она не нужна.


А вот здесь я всё же пока не понимаю. Растяжка - понятно. Она держит незанятую линию в определённом состоянии. А какая польза от удержания линии занятой после окончания передачи? Или Вы имеете в виду, что, зная задержку ответа устройства и удерживая линию занятой после запроса почти всё это время, мы уменьшаем таким образом время незанятого (восприимчивого к помехам) состояния линии?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 9 2008, 19:40
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AHTOXA @ Aug 10 2008, 00:31) *
Тут скорее всё же нужно подстраивать задержку перед началом передачи, нежели задержку по окончании приёма.
Дык выше она у меня под №1 шла. А против которой вы возражаете - №2.
Цитата(AHTOXA @ Aug 10 2008, 00:31) *
А вот здесь я всё же пока не понимаю. Растяжка - понятно. Она держит незанятую линию в определённом состоянии. А какая польза от удержания линии занятой после окончания передачи? Или Вы имеете в виду, что, зная задержку ответа устройства и удерживая линию занятой после запроса почти всё это время, мы уменьшаем таким образом время незанятого (восприимчивого к помехам) состояния линии?
А вы рассмотрите линию как со стороны передатчика, так и со стороны приемника. Начальные условия. Растяжки нет, есть только терминальные резисторы.
- линия свободна и нагружена только на терминальные резисторы. При наличии помех приемники возможно ловят их как ошибочные символы.
- включился драйвер RS485 мастера. Произошел перезаряд линии. Приемники возможно опять словили ошибочный символ. Поэтому здесь для реализации RTUного протокола нужно сделать паузу перед началом передачи, иначе пакет уйдет в никуда. Слейв обязан начать прием только после временнОй паузы определенной величины.
- сделали паузу в течение которой линию связи в определенном состоянии удерживает драйвер RS485 мастера.
- идет передача пакета.
- передача пакета завершена. Если тут же отпустить линию (выключить передатчик мастера), то приемники слейвов имеют шанс словить ошибочный символ. И весь пакет уйдет в помойку. laughing.gif Но мастер у нас не дурак и держит линию (своим включенным на передачу драйвером) в течение времени, определяемым требованиями RTU-ной протокольной "паузы".
- пауза закончилась. Мастер отключил трансмиттер. Все свободны.
- ждем ответа от слейва, отбиваясь от помех в линии.

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

Кстати, исходя из этой же концепции слейв тоже должен делать паузу после приема пакета запроса перед отправкой ответа. Для уменьшения вероятности коллизии из-за разбежки формирования временнЫх пауз у него и у мастера. Хотя, эта пауза и необязательна. Коллизия в линии RS485 не так уж и страшна. А для протокольной совместимости слейв тоже сделает задержку перед передачей после включения трансмиттера. Главное чтобы мастер успел отключиться к тому времени.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 9 2008, 20:46
Сообщение #13


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(rezident @ Aug 10 2008, 01:40) *
Дык выше она у меня под №1 шла. А против которой вы возражаете - №2.

А, ту, что под номером один я целиком и полностью одобряюsmile.gif
Цитата
- передача пакета завершена. Если тут же отпустить линию (выключить передатчик мастера), то приемники слейвов имеют шанс словить ошибочный символ. И весь пакет уйдет в помойку. laughing.gif

Это почему? Пакет-то уже принят, целиком, корректный и без ошибок. Слейв должен ответить... Или в MODBUS (вы же про него, да?) положено выкидывать принятый валидный пакет, если после него пришёл лишний символ?

Остальное-то всё понятно, с остальным я собственно и не спорилsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AVN   MSP & RS485   Aug 7 2008, 05:24
- - MrYuran   Цитата(AVN @ Aug 7 2008, 09:24) Сделал по...   Aug 7 2008, 06:00
|- - AVN   Решение, похоже, единственное за неимением других ...   Aug 7 2008, 06:31
||- - MrYuran   Цитата(AVN @ Aug 7 2008, 10:31) трудно си...   Aug 7 2008, 06:48
|- - shasik   Цитата(MrYuran @ Aug 7 2008, 09:00) Не по...   Aug 7 2008, 10:35
|- - rezident   Цитата(AHTOXA @ Aug 10 2008, 02:46) Это п...   Aug 9 2008, 21:55
|- - AHTOXA   Цитата(rezident @ Aug 10 2008, 03:55) Дык...   Aug 10 2008, 08:20
|- - rezident   Цитата(AHTOXA @ Aug 10 2008, 14:20) Понят...   Aug 10 2008, 11:48
|- - AHTOXA   Цитата(rezident @ Aug 10 2008, 17:48) Не ...   Aug 10 2008, 14:55
|- - shasik   2 AHTOXA & rezident Помните как все начина...   Aug 10 2008, 16:48
|- - rezident   Цитата(AHTOXA @ Aug 10 2008, 20:55) То ес...   Aug 10 2008, 17:12
- - vesago   В UxTCTL вродеж есть TXEPT. По крайней мере я его ...   Aug 7 2008, 11:06
|- - rezident   Цитата(vesago @ Aug 7 2008, 17:06) В UxTC...   Aug 7 2008, 13:44
|- - shasik   Цитата(rezident @ Aug 7 2008, 16:44) TXEP...   Aug 7 2008, 16:21
|- - rezident   Цитата(shasik @ Aug 7 2008, 22:21) Ну, от...   Aug 8 2008, 01:38
- - landrey   Можно сделать следующий финт ушами: На время пере...   Aug 10 2008, 17:55
|- - shreck   Цитата(landrey @ Aug 11 2008, 01:55) Можн...   Sep 23 2008, 12:11
|- - Dog Pawlowa   Цитата(shreck @ Sep 23 2008, 15:11) Кто-н...   Sep 23 2008, 12:42
- - AHTOXA   Цитата(shasik @ Aug 10 2008, 22:48) 2 AHT...   Aug 10 2008, 18:26


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

 


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


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