DpInRock 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Тогда все понятно. Вы делаете сеть. Физический уровень вам делает микросхема. А вот канальный вы даже и не думали делать. Сразу перепрыгнули на уровень приложения. Люди вовсе не от скуки рисуют многоуровневую систему протоколов для сетевого общения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Если у топикстартера фундаментальная проблема с протоколом, то смена этих рюшечек ему точно совсем никак не поможет. Конечно, это брюзжание :) У топикстартера проблема с инструментарием. Осциллограф позволит узнать, кто послал посылку, кто ее получил, кто не получил, а кто зажал ответ. Нет осциллографа - светодиоды помогут. Нет светодиодов - тестер (проверить сигнал направления после посылок). Нужно учиться отлаживать программу и находить собственные ошибки. Любым доступным способом. Ничего нет - ну что ж - будем учить строить автоматы состояний приемо-передачи. Типа такого... Dmb_mast.pdf Легкой жизни не будет! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Легкой жизни не будет! :) Ну почему, если подключили второе устройство и всё упало - то тут всё просто. У нас круче было. 512 модулей в сети RS-485 (только не говорите, что это невозможно), управляют решёткой ФАР. Всё работает. Но есть одна команда, которая загружает в память модуля массив из 8кБ. И каждый раз на одном и том же байте (где-то после первой тысячи) происходит сбой и пара-тройка байт пишется с ошибками. И что только не пробовали. Согласовывали, резисторы вешали, земли выравнивали, даже конденсатор вешали (крайняя мера, всегда помогало!) А тут ни в какую. Дело происходило в последний день (вернее, уже ночь) перед сдачей (или несдачей) системы. На кону пара сотен миллионов (рублей). Из 6 присутствующих трое были начальники отделов, и они жутко мотивировали. Иногда забегал зам главного инженера и тоже добавлял мотивации. Помог крутой ажилент (тогда ещё HP) за $7000, с памятью на мегасемпл и функцией мегазум. Рассмотрели коллизию, поняли причину. Рвали волосы, посыпали головы пеплом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба даже конденсатор вешали (крайняя мера, всегда помогало!) да ... Действительно все меры ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xoz 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Легкой жизни не будет! :) О легкой жизни и не мечтал Тогда все понятно. Вы делаете сеть. Физический уровень вам делает микросхема. А вот канальный вы даже и не думали делать. Сразу перепрыгнули на уровень приложения. Люди вовсе не от скуки рисуют многоуровневую систему протоколов для сетевого общения. О канальном уровне где можно посмотреть? Хотяб краткое разъяснение что это и зачем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Непонятно, чем он принципиально лучше. Тьфу! Забыл. Там был 9-битный протокол. Адрес, соотв. с 9-битом == 1. Для него остается в силе мой вопрос: что гарантирует отсутствие ложной реакции ведомого на данные, передаваемые другим ведомым? Адрес получателя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба О канальном уровне где можно посмотреть? Хотяб краткое разъяснение что это и зачем. Сетевая модель OSI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Тьфу! Забыл. Там был 9-битный протокол. Адрес, соотв. с 9-битом == 1. Вот с этого и надо было начинать. Тогда, действительно, ваш протокол вполне работоспособен. Для полного счастья ему не хватает только преабулы перед первым байтом (адресом) и жестко оговоренных таймаутов :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Для полного счастья ему не хватает только преабулы перед первым байтом (адресом) и жестко оговоренных таймаутов :) Таймаут общий за счет того, что слейвы обязаны ответить. А про прембулу перед адресом - не понял, зачем? ЗЫ: в первом посте о протоколе - забыл отдельно сказать, что слейв отвечает так же, только вместо команды выдает статус <адрес> <длина пакета> <адрес отправителя> <статус> [данные] <CRC8> ЗЗЫ: адрес общего вызова 0х00. Если пакет подписан адресом отправителя 0х00, то на него никто из слейвов не имеет права отвечать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба А про прембулу перед адресом - не понял, зачем? Ну например в виде байта 0xFF для борьбы с шумами линии, когда она в неактивном состоянии. После передачи 0xFF все приемники станут в одинаково готовое состояние для приема байта адреса в независимости от предыдущих помех на линии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Таймаут общий за счет того, что слейвы обязаны ответить. А про прембулу перед адресом - не понял, зачем? Если ввести правило, по которому пауза между соседними байтами в сообщении не может превышать, например, одного байт-интервала, то при помощи преамбулы удается резко поднять помехоустойчивость. Преамбула состоит в том, что передатчик включает свой RS-485 трансивер на передачу, и молчит в течении, скажем, 2-х байт-интервалов. Вследствие упомянутого правила все приемники, обнаружив длинную паузу, сбрасывают свои приемные тракты в исходное состояние и изготавливаются к приему первого байта сообщения. Без преамбулы помеховый сигнал на линии может инициировать начало ложного приема. Ведь приемники RS-485 очень чувствительные, а на свободную линию, когда ни один из передатчиков не включен, легко наводятся помехи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 26 августа, 2009 Опубликовано 26 августа, 2009 · Жалоба Спасибо, понятно. Я это давным-давно обозвал "продувкой линии" :laughing: и теория потому прошла мимо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться