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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Протокол передачи данных по одному проводу
Слесарь
сообщение Nov 29 2011, 08:02
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Здравствуйте!
Я сделал эл. схему и создал протокол передачи данных по одному проводу. По типу протокола 1-wire. Напряжение питания устройств на шине 15V. Высокий уровень> 10V. Низкий уровень < 5V. Расстояние между устройствами, ведущим и ведомым, несколько метров. Больше месяца намеренно не делаю никакого контроля достоверности информации передаваемой по шине, получил такую статистику: в среднем, раз в час происходит сбой достоверности преданных данных, почемут, особенно в ночное время.
Данные в размере двух байт, передаются от ведущего к ведомому (двубайтная последовательность, адрес и команда) с частотой двух посылов в секунду. Ведомый принимает два байта и немедленно отвечает ведущему одним байтом, отвечает продолжая передачу ведущего. Тактовая частота последовательности передаваемых бит - 100 Гц.
Нормальная ли это статистика ошибок для однопроводной шины по типу 1-wire? Грубо говоря, провод висит в воздухе и не будет экранирован.
Планирую как-то ввести контроль достоверности, на стороне ведомого, для переданных мастером адреса ведомого устройства на шине и команды. На стороне мастера сделать проверку достоверности ответа ведомого.
Если у кого-нить есть опыт, подскажите, как лучше в данной схеме реализовать контроль? Может просто ведущему дважды посылать запрос и сравнивать два ответа ведомого? Ведомому сравнивать два запроса ведущего? Как говорится, молния не попадает дважды в одно место.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 29 2011, 09:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Слесарь @ Nov 29 2011, 12:02) *
Нормальная ли это статистика ошибок для однопроводной шины по типу 1-wire? Грубо говоря, провод висит в воздухе и не будет экранирован.
Если у кого-нить есть опыт, подскажите, как лучше в данной схеме реализовать контроль?


Как минимум нужно использовать контроль четности, а лучше - CRC8, как это сделано в тех же DS18B20. Еще можно для повышения помехоустойчивости увеличить ток в линии.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 29 2011, 09:50
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(kovigor @ Nov 29 2011, 12:03) *
Как минимум нужно использовать контроль четности, а лучше - CRC8, как это сделано в тех же DS18B20. Еще можно для повышения помехоустойчивости увеличить ток в линии.

Для контроля четности читать собственно нечего. Мастер передает байт идентификатор устройства и следом за ним байт команду. Суммировать эти два значения и сравнивать с третим байтом четности?

В данный момент сделал двойную передачу мастером ID устройства и команду, если дважды ведомый принимает одинаковую команду, команда принимается ведомым. Если ведомый принял команду, то продолжает принятую от мастера последовательность двух байт, ответным байтом равным значению байта команды мастера. Мастер получив такой ответ от ведомого, фиксирует, что команда успешно принята ведомым. Что-то мне подсказывает, что данный способ надежней простого контроля четности.

Как сделано в DS18B20 изучаю.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 29 2011, 10:03
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Слесарь @ Nov 29 2011, 13:50) *
Суммировать эти два значения и сравнивать с третим байтом четности?


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

Цитата(Слесарь @ Nov 29 2011, 13:50) *
Что-то мне подсказывает, что данный способ надежней простого контроля четности.


Сложно, надумано и ненадежно. Почитайте у того же Тутевича про помехоустойчивое кодирование. Или хотя бы про код Хемминга у Калабекова. Это ведь не зря все придумали и обосновали:


http://lord-n.narod.ru/walla.html
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 29 2011, 10:13
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Я думал все эти биты четности для уменьшения количества передаваемых контролируемых бит. Выше скорость передачи.
А если скорость передачи не принципиальна, что может быть надежней повторения передачи и сравнения двух, а то и трех, переданных данных.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 29 2011, 10:37
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Слесарь @ Nov 29 2011, 14:13) *
А если скорость передачи не принципиальна, что может быть надежней повторения передачи и сравнения двух, а то и трех, переданных данных.


А если из-за обрыва или КЗ на линии вы трижды получите вполне допустимые посылки вида "0xff" или "0x00", что вы станете делать ? А если вход чувствительного приемника повиснет в воздухе, и вы постоянно будете получать "0x55" или "0xAA", тоже формально вполне допустимые ?
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 29 2011, 10:42
Сообщение #7


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(kovigor @ Nov 29 2011, 14:37) *
А если...

прямой код и инверсный
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 29 2011, 10:47
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(kovigor @ Nov 29 2011, 13:37) *
А если из-за обрыва или КЗ на линии вы трижды получите вполне допустимые посылки вида "0xff" или "0x00", что вы станете делать ?

Перед посылкой вида - идентификатор+команда, мастер закорачивает линию для сброса в течении 100 мксек. Ведомый зарегистрировав событие сброса, начинает прием данных вида - идентификатор+команда. Проверяет идентификатор (сравнивает со своим) и запоминает переданную за идентификатором команду. Снова ожидает событие сброса и повторения посылки вида - идентификатор+команда.
Если дважды ведомый принял одинаковую команду, значит команда верна. Ведомый выполняет эту команду и отчитывается мастеру посылая ответный байт, код выполненной команды.

Разве что-либо может быть надежней?

Тактирует шину мастер(ведущий), ведомый передает данные по тактам ведущего, как и DS18B20
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 29 2011, 10:50
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(stells @ Nov 29 2011, 14:42) *
прямой код и инверсный


И кому это, простите, надо ? Теория помехоустойчивого кодирования давно разработана, подробнейшим образом расписана в литературе. Так нет же, надо изобретать велосипед, просто потому, что лень почитать книжку. Так ?

Цитата(Слесарь @ Nov 29 2011, 14:47) *
Перед посылкой вида - идентификатор+команда, мастер закорачивает линию для сброса в течении 100 мксек. Ведомый зарегистрировав событие сброса, начинает прием данных вида - идентификатор+команда. Проверяет идентификатор (сравнивает со своим) и запоминает переданную за идентификатором команду. Снова ожидает событие сброса и повторения посылки вида - идентификатор+команда.
Если дважды ведомый принял одинаковую команду, значит команда верна. Ведомый выполняет эту команду и отчитывается мастеру посылая ответный байт, код выполненной команды.

Разве что-либо может быть надежней?

Тактирует шину мастер(ведущий), ведомый передает данные по тактам ведущего, как и DS18B20


Делайте. Игнорируйте разработанную до вас теорию, тысячекратно проверенную и десятилетиями используемую. Набивайте шишки. Только потом не жалуйтесь, что ничего не работает ...
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 29 2011, 11:13
Сообщение #10


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(kovigor @ Nov 29 2011, 14:50) *
Так нет же, надо изобретать велосипед...

дублирование и резервирование изобрели до нас
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 29 2011, 11:17
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(stells @ Nov 29 2011, 15:13) *
дублирование и резервирование изобрели до нас


Не будем продолжать этот бессмысленный спор. Я стою на том, что изобретать новые способы помехоустойчивой передачи данных, не изучив того, что разработано до вас (не изучив из-за простого нежелания изучить), по меньшей мере не совсем разумно ...
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 29 2011, 11:28
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Ну почему же не будет работать? Работает даже без проверки достоверности, только изредка ложные срабатывания.
Мне нужно сегодня и сейчас, не вижу ничего проще дублировать команды и на стороне приемника перед выполнением сверять. Мне главное чтоб было достоверно, я готов пожертвовать количесвом передаваемого кода.
Но в тоже время, я согласен, что существуют и более экономичные методы и более надежные, в будущем можно будет попробовать и их. Например в будущем месяце. Мне просто непонятно, чем плохо дублирование, кроме как уменьшением пропускной способности?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 29 2011, 11:43
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Слесарь @ Nov 29 2011, 15:28) *
Мне просто непонятно, чем плохо дублирование, кроме как уменьшением пропускной способности?


У меня нет времени детально продумывать описанный вами протокол. Лично мне видятся как минимум связанные с повторениями проблемы распознавания границ посылок - можно запутаться, что и к чему относится. Еще раз. Ничего изучать не надо. Просто настройте ваш МК на работу с битом четности, и все. На проходящие контроль четности посылки отбрасывайте. Проще едва ли можно придумать ...
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 29 2011, 11:53
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Но насколько мне известно при контроле четности обнаруживается лишь какой-то процент ошибок или я что-то не понимаю. Двойная ошибка в байте ведь может пройти контроль четности?

Байт информации по одной линии, это последовательность 8 переданных бит. Если в середине передачи байта пройдет импульс помехи длиной в два бита, как понимаю байт может пройти контроль четности как истинный. Четность ведь не нарушится?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 29 2011, 12:03
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Слесарь @ Nov 29 2011, 15:53) *
Но насколько мне известно при контроле четности обнаруживается лишь какой-то процент ошибок или я что-то не понимаю. Двойная ошибка в байте ведь может пройти контроль четности?


Да, двойные ошибки так не обнаружишь, но ведь и ваша схема неидеальна. В обоих байтах нарушится первый разряд. Что тогда ? Или из-за обрыва вы примете одни нули или одни единички ? Вы попробуйте, вполне возможно вам контроля четности и хватит. А еще очень советую увеличить передаваемый в линию ток ...
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Nov 29 2011, 12:53
Сообщение #16


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Слесарь @ Nov 29 2011, 12:02) *
....Нормальная ли это статистика ошибок для однопроводной шины по типу 1-wire?....


нет. для 1wire шины в пром зоне = одна, две ошибки на часы, дни работы - сто пудово... при правильном передатчике и приёмнике (аппаратной и программной части). интенсив где то 10-20 байт в секунду...

мне кажется, что надо копать в сторону детекции уровней. т.е. тут предлагают увеличить токи - вот это мне кажется ближе(при исправной логике софта), к истине. в 1wire там всё таки ноль играет бОльшую роль чем может показаться. это и помехоустойчивость так же...

удачи вам
(круглый)
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 29 2011, 16:25
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(kovigor @ Nov 29 2011, 15:03) *
Да, двойные ошибки так не обнаружишь, но ведь и ваша схема неидеальна. В обоих байтах нарушится первый разряд. Что тогда ? Или из-за обрыва вы примете одни нули или одни единички ? Вы попробуйте, вполне возможно вам контроля четности и хватит. А еще очень советую увеличить передаваемый в линию ток ...

Если линия закорочена или оборвана, ничего не пойдет, необходимо вначале получить правильный ID устройства, это не 0ч00 и не 0XFF.
Если нарушится первый разряд в обоих байтах дублированной команды, ведомому тогда вся надежда, что на стороне ведущего есть соответствующий обработчик. Ведомый то отсылает обратно код принятой команды, дабы ответить мастеру какая команда реально была выполнена. Если несоответствие, надо выходить в безопасный режим аварии или еще как реагировать, просто повторить команду.

Цитата(kolobok0 @ Nov 29 2011, 15:53) *
нет. для 1wire шины в пром зоне = одна, две ошибки на часы, дни работы - сто пудово... при правильном передатчике и приёмнике (аппаратной и программной части). интенсив где то 10-20 байт в секунду...

мне кажется, что надо копать в сторону детекции уровней. т.е. тут предлагают увеличить токи - вот это мне кажется ближе(при исправной логике софта), к истине. в 1wire там всё таки ноль играет бОльшую роль чем может показаться. это и помехоустойчивость так же...

удачи вам
(круглый)

Биты по шине передаются в точности как 1-wire, только у меня частота на порядок ниже, для поддержания тактовой частоты 1-wire контроллер приходится дополнять кварцем, как минимум 8 мГц. У меня сейчас используется внутренний генератор контроллера 4 мГц.
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Nov 29 2011, 18:28
Сообщение #18


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

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(stells @ Nov 29 2011, 14:42) *
прямой код и инверсный

Существуют очнь много разных алгоритмов кодирования не только с обнаружением но и с исправлением ошибок. Рекомендую обратится к соответствующей литературе.
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 29 2011, 18:59
Сообщение #19


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(MaslovVG @ Nov 29 2011, 22:28) *
Существуют очнь много разных алгоритмов...

я о них слышал... фраза была на возможность КЗ или обрыва на линии, передача прямого и инверсного кода исключает "правильный" прием в этом случае
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 29 2011, 21:00
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Только сейчас вспомнил, у меня на компьютере Радио РК-86, при загрузке программы с магнитной ленты проверялась контрольная сумма байт загруженной программы, что удивительно, иногда контрольная сумма сходилась, а программа выдавала глюки, например подмена символов. Загружал заново. Наверное это совсем редкое явление, но тоже возможно.
Изучаю варианты контроля данных
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 30 2011, 03:15
Сообщение #21


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Слесарь, где-то на форуме встречал утверждение, что разрабатывать свой протокол (канальный уровень модели OSI) еще вполне допустимо, хотя и готовых немеряно ( WAKE, SLIP, MODBUS...), но создавать свой физический интерфейс (нулевой уровень модели) нужно только тогда, когда есть весомые требования. Можно поинтересоваться, есть ли они у Вас? Почему бы не воспользоваться готовым 1-wire. Там и интерфейс и протокол.

По поводу контроля ошибок. Предлагаю crc8. Считается аналитически (медленно) и таблично (быстро). Если вероятность обнаружения ошибки не устраивает, есть crc16/32.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Nov 30 2011, 07:37
Сообщение #22


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Слесарь @ Nov 29 2011, 20:25) *
...для поддержания тактовой частоты 1-wire контроллер приходится дополнять кварцем, как минимум 8 мГц. У меня сейчас используется внутренний генератор контроллера 4 мГц.


это откуда вот такое(8мГц)?
помню на 51 серии (выполнение команд = 2мГц) работает до сих пор на ура в нескольких странах мира...


Можно и ниже 1мГц(но задачи в фоновом режиме - придёться извращаться, чтоб крутить)... мастер можно вплоть до 200 кГц думаю опускать. другое дело, что интенсив мелкий получится по данной шине...

(круглый)
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 30 2011, 08:33
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Слесарь @ Nov 30 2011, 01:00) *
у меня на компьютере Радио РК-86, при загрузке программы с магнитной ленты проверялась контрольная сумма байт загруженной программы, что удивительно, иногда контрольная сумма сходилась, а программа выдавала глюки, например подмена символов.


Там, возможно, использовалась простейшая сумма по модулю "2", а не CRC
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Nov 30 2011, 18:50
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(haker_fox @ Nov 30 2011, 06:15) *
Слесарь, где-то на форуме встречал утверждение, что разрабатывать свой протокол (канальный уровень модели OSI) еще вполне допустимо, хотя и готовых немеряно ( WAKE, SLIP, MODBUS...), но создавать свой физический интерфейс (нулевой уровень модели) нужно только тогда, когда есть весомые требования. Можно поинтересоваться, есть ли они у Вас? Почему бы не воспользоваться готовым 1-wire. Там и интерфейс и протокол.

Все равно приходится самому обработчик протокола писать, если это не под готовое ведомое устройство, то можно и свой пртокол, заодно на практике видно все слабые места в технике передачи данных.
Собственно своего там мало, принцип синхронизации и выставления бит на шине, как и 1-wire. Питание только 12 ... 15V чтоб работало и от аккумулятора и от БП.
Все устройства на шине самодельные.

Цитата(kolobok0 @ Nov 30 2011, 10:37) *
это откуда вот такое(8мГц)?
помню на 51 серии (выполнение команд = 2мГц) работает до сих пор на ура в нескольких странах мира...


Можно и ниже 1мГц(но задачи в фоновом режиме - придёться извращаться, чтоб крутить)... мастер можно вплоть до 200 кГц думаю опускать. другое дело, что интенсив мелкий получится по данной шине...

(круглый)

Тактирующий импульс 1-wire 6 мкс. с используемыми мной контроллерами и средой программирования при 4 мГц реализовать крайне сложновато. По крайней мере, мне не удавалось. Просто ставлю кварц 8 мГц.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 1 2011, 08:12
Сообщение #25


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Слесарь @ Nov 30 2011, 22:50) *
...Тактирующий импульс 1-wire 6 мкс. с используемыми мной контроллерами и средой программирования при 4 мГц реализовать крайне сложновато....


да ладно сложно.
1) 6uS = это рекомендуемая задержка для мастера. минималка - 1uS. Из опыта скажу - что в пром зоне с минимальной задержкой - отлично дышит на дцать метров.
2) 1uS = это 4 такта МК(при тактовой 4МГц).
значит имеем что Вы должны обеспечить задержку от
1*4 = 4
6*4 = 24

от 4 до 24 тактов.
пуш-поп - это уже 4 такта. т.е. выставляете ноль на шину и деалеет любые подготовительные телодвижения. они занимают (как правило) не меньше чем требуется. далее выставляете еденичку и далее...

в чём сложности? пояснить на пальцах можете?

(круглый)

Сообщение отредактировал kolobok0 - Dec 1 2011, 08:14
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 1 2011, 08:41
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Просто не получается.
Я же не просто тактирую(программно делаю выдержки времени для такта), еще по тактам выставляю/снимаю сигнал с порта, суммирую полученные данные, фильтрую дребезг сигнала в проводе и прочее.. ,Ну не получается на 4 мГц и все, просто ставлю кварц на 8 мГц и проблема решается.
Go to the top of the page
 
+Quote Post
МП41
сообщение Dec 1 2011, 08:42
Сообщение #27


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Цитата(stells @ Nov 29 2011, 13:42) *
прямой код и инверсный

Как в некоторых протоколах передачи по ИК-каналу (пульты ДУ).


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 1 2011, 08:48
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Вот я сейчас отлавливаю ошибки при передаче по одному проводу, просто дублируя байта и сверяю их в приемнике. Мож правда лучше дублировать инверсно в плане истинности передаваемых данных? Предположим, байты следуют один за другим при передаче. Байт, это последовательность из восьми переданных бит.
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Dec 1 2011, 09:11
Сообщение #29


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

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(kovigor @ Nov 30 2011, 12:33) *
Там, возможно, использовалась простейшая сумма по модулю "2", а не CRC

Нет сумма по модулю 2 была у SPECTRUM у РК 86 контрольная сумма двух байтовая сумма плюс перенос
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 1 2011, 10:00
Сообщение #30


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Слесарь @ Dec 1 2011, 16:48) *
Вот я сейчас отлавливаю ошибки при передаче по одному проводу, просто дублируя байта и сверяю их в приемнике. Мож правда лучше дублировать инверсно в плане истинности передаваемых данных? Предположим, байты следуют один за другим при передаче. Байт, это последовательность из восьми переданных бит.

Способ контроля целостности данных может быть любой, в том числе и самый изощренный. Но почему бы не применить готовые алгоритмы? Ведь даже те же 1wire-устройства используют CRC8.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
МП41
сообщение Dec 1 2011, 10:04
Сообщение #31


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Вообще неплохо было бы посмотреть осциллографом что там в линии творится и свести физические причины возникновения ошибок к минимуму.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 1 2011, 13:43
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(haker_fox @ Dec 1 2011, 13:00) *
Способ контроля целостности данных может быть любой, в том числе и самый изощренный. Но почему бы не применить готовые алгоритмы? Ведь даже те же 1wire-устройства используют CRC8.

Надо изучать готовый алгоритм и писать обработчик. А можно самому придумать алгоритм и пасать обработчик. Я постоянно перед выбором, как поступить. Изучать обычно нет времени или лень, по этому зачастую выбор падает на придумывыние своего.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 1 2011, 13:48
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Слесарь @ Dec 1 2011, 16:43) *
Надо изучать готовый алгоритм и писать обработчик. А можно самому придумать алгоритм и пасать обработчик. Я постоянно перед выбором, как поступить. Изучать обычно нет времени или лень, по этому зачастую выбор падает на придумывыние своего.


Ага, поэтому конечный продукт получается сыроватым, работает через пень-колоду и проч. Быстрее, быстрее, еще быстрее, прыжками, через две ступеньки ... Читать некогда, учиться - тоже. Результат выходит соответствующий, спешка хороша при ловле блох. Лучше все-таки потратить какое-то время на самообразование, оно потом окупится многократно ...
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 1 2011, 14:08
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Это как существует задача, повесить на установку несколько датчиков и пару клапанов - моторов. Любой нормальный КИПовец зайдет в магазин КИПсервис и купит готовый универсальный контроллер, напишет программу на языке логики этого контроллера. Все сделает быстро и качественно. Но что поделаешь, мне лень изучать еще один язык логики прибора например ОВЕН, пойду тернистым путем паять свой прибор и писать обслуживающую прогу на привычном языке. Иначе я не работаю, надо обращаться к обычным КИПовцам или электрикам.

Цитата(kovigor @ Dec 1 2011, 16:48) *
Ага, поэтому конечный продукт получается сыроватым, работает через пень-колоду и проч. Быстрее, быстрее, еще быстрее, прыжками, через две ступеньки ... Читать некогда, учиться - тоже. Результат выходит соответствующий, спешка хороша при ловле блох. Лучше все-таки потратить какое-то время на самообразование, оно потом окупится многократно ...

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

Цитата(МП41 @ Dec 1 2011, 13:04) *
Вообще неплохо было бы посмотреть осциллографом что там в линии творится и свести физические причины возникновения ошибок к минимуму.

Да. Надо посмотерть. Но боюсь мой осцилограф плохо будет отображать дискретный сигнал. Я настраивал протокол по логическому пробнику. Низкий и высокий уровни подбирал по мультиметру, подбором сопротивлений. Контроллер связан с сигнальной линией через транзисторные ключи. Сигнальная линия притянута сопротивлением 4,7 кОм к нестабильному питающему напряжения 12 ... 15v. От этого напряжения питаются устройства висящие паралельно на линии.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 1 2011, 15:02
Сообщение #35


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Кстати, а теория длинных линий учтена?) Ту же I2C ничто не мешает на километр растянуть, лишь бы соблюсти постоянные времени...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 1 2011, 15:32
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(haker_fox @ Dec 1 2011, 19:02) *
Кстати, а теория длинных линий учтена?) Ту же I2C ничто не мешает на километр растянуть, лишь бы соблюсти постоянные времени...

это ж какие токи нужны, чтобы фронты сохранить... чай не дифпара...
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 1 2011, 15:36
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Вся шина вот:

Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 2 2011, 00:56
Сообщение #38


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Слесарь @ Dec 1 2011, 23:36) *
Вся шина вот:

Она там с силовой линией рядом идет? Жестко!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 2 2011, 08:01
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(haker_fox @ Dec 2 2011, 03:56) *
Она там с силовой линией рядом идет? Жестко!

Такие условия задачи. Действительно, линия до 10А нестабилизированного 12V ... 15V постоянного напряжения. На линии присутствуют эл. двигателя и лампы накаливания освещения. Минус этой линии является общим проводом информационной линии (зеленый с коричневым провод - сигнальный).
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 2 2011, 08:57
Сообщение #40


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Слесарь, Ваши решения задач вызывают восхищение! (это правда, без иронии!!!) Но неужели там было трудно прокинуть два провода и гнать данные по RS485? Помехоустойчивость самого интерфейса значительно выше, а если и протокол соответствующий прикрутить с контрольной суммой, то вообще будет сказка)))

QUOTE (toweroff @ Dec 1 2011, 23:32) *
это ж какие токи нужны, чтобы фронты сохранить... чай не дифпара...

Так я и сделал оговорку про время... Это скорее эмоции были, конечно не надо на километр тянуть приборную (внутреннию) шину.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 2 2011, 18:21
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(haker_fox @ Dec 2 2011, 11:57) *
Но неужели там было трудно прокинуть два провода и гнать данные по RS485? Помехоустойчивость самого интерфейса значительно выше, а если и протокол соответствующий прикрутить с контрольной суммой, то вообще будет сказка)))

Я незнаю, подключаются ли по RS485 множество устройств паралельно? А за 1-wire как-то читал, что питание устройств и данные как-то передаются по одному проводу, паралельным подключением всех устройств..
Такой уж сделал выбор. Тянуть дополнительные провода для данных или какой-то специализированный провод, это будет менее кустарно. Тогда думаю лучше автомобильный CAN.
Постораюсь решить одним проводом, мож будут последователи такой прокладки проводки по квартире.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 2 2011, 19:39
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(Слесарь @ Dec 1 2011, 17:36) *
Вся шина вот:


Делал управление освещением. По двум проводам, что раньше были проводкой, питается сенсорный выключатель, который USARTом передает команды по тем же двум проводам. Команд там больше двух не нужно, но несколько байт с контролем CRC вполне будет возможно. Кстати, ошибок в передаче/приеме пока нет. Скорость небольшая да и байты команд выбраны хитро.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 3 2011, 00:54
Сообщение #43


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Слесарь @ Dec 3 2011, 02:21) *
Я незнаю, подключаются ли по RS485 множество устройств паралельно?

Конечно, как минимум 32 устройства.
QUOTE (Слесарь @ Dec 3 2011, 02:21) *
Тогда думаю лучше автомобильный CAN.

Единственное, что нужны контроллеры этой шины. Если для 485-го годится контроллер USART, то для CAN нужен свой, совершенно другой аппаратный контроллер.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Dec 4 2011, 04:58
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Понятно. Хорошо, спасибо! Буду иметь в виду для будущих разработок.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Dec 4 2011, 13:22
Сообщение #45


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(kovigor @ Nov 30 2011, 12:33) *
Там, возможно, использовалась простейшая сумма по модулю "2", а не CRC

Точнее - там, все-таки использовалась контрольная сумма ВСЕЙ программы.
Ошибки при использовании контрольной суммы как средства контроля данных я сам видел - в малоизвестном устройстве венгерского производства VT-20 с использованием 2.5 МБ дисков при 256-байтных блоках так же были сбои.
Сбоев 16-битного CRC на флоппи-дисках, лентах, каналах передачи данных я не встречал.
Go to the top of the page
 
+Quote Post

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

 


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


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