Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
05.12.2008, 08:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от user_ushastyj
|
Открытый коллектор - из опыта - не самый удачный вариант. В индуктивности линиии - после передачи - скажем так - накапливается энергия, желающая выйти. Дать нужно времени для этого...
|
Конечно приёмопередатчики лучше.. но дороже )))
А токовая петля? Зашунтить приёмный светодиод резистором малого R... и ток больше в линию...
|
|
|
|
05.12.2008, 10:02
|
|
Частый гость
Регистрация: 17.12.2006
Сообщений: 26
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Да все очень просто. У самого таких систем несколько работает. Значится так:
У контроллеров (я использую Атмел, но у ПИКов тоже такой режим вроде есть) есть режим мультипроцессорной связи. Мастер передает адресный байт в мультипроцессорном режиме, при этом у всех остальных контроллеров, подключенных по RS-485, отрабатывает прерывание по приему адреса по УАРТ. Контроллеры сравнивают свои адреса с принятым, и если он не совпал, то выходят из прерывания и занимаются дальше своим делом. До прихода следующего адреса реагировать на поток данных по шине они не будут вообще никак.
Если же адрес совпал, то контроллер дальше принимает 1 байт в котором указана длина сообщения для него, потом само сообщение указанной длины, и после неё один (или два) байта контрольной суммы, лучше CRC. Если все принято нормально и CRC совпала, то он ставит 485 порт на передачу и отдает свои данные в таком-же формате: свой адрес (для контроля, и без мультипроцессорного режима), длину. данные, CRC. И продолжает дальше заниматься своим делом.
Со стороны Мастера это выглядит так:
Мастер передает адресный байт в мультипроц. режиме, остальные в обычном, после этого ждет ответа от подчиненного контроллера некоторое время. Если ответа нет, значит адресуемый контроллер принял данные с ошибкой, и тогда их отправку надо повторить. Если после 3-4 повторов ответа всеравно нет, значит связи с контроллером нет, что делать решайте сами.
Если же в ответ пришли ответные данные, и проверка CRC совпала, значит можно переходить к сеансу связи со следующим контроллером. Если данные пришли не все или с ошибкой - повторить запрос.
В общем что-то вроде этого.
У меня работает несколько таких систем с кол-вом подчиненных устройств от 5 до 97!!! Работает на УРА!!!
Кроме того мультипроцессорный режим позволяет всем незадействованным контроллерам не отвлекаться на проверку шины данных пока Мастер общается с одним из Подчиненных.
Вот так!
Просто и со вкусом.
http://samodelkin2001.ru.gg
|
|
|
|
05.12.2008, 10:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Сообщение от picavr
|
А токовая петля? Зашунтить приёмный светодиод резистором малого R... и ток больше в линию...
|
приёмный светодиод Это как?? 8O
|
|
|
|
05.12.2008, 10:31
|
|
Прописка
Регистрация: 09.06.2007
Сообщений: 96
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Хотел написать о 485, да Самоделкин опередил. Хочу добавить только то, что не следует стремиться к слишком простым решениям, иногда это дороже обходится в дальнейшем. Используйте готовые стандартные решения. Например для данного случая хорошо подойдут 485 интерфейс и Modbus протокол. И всё у вас будет в порядке.
|
|
|
|
05.12.2008, 10:51
|
|
Частый гость
Регистрация: 17.12.2006
Сообщений: 26
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Сообщение от BigMazzi
|
Хотел написать о 485, да Самоделкин опередил. Хочу добавить только то, что не следует стремиться к слишком простым решениям, иногда это дороже обходится в дальнейшем. Используйте готовые стандартные решения. Например для данного случая хорошо подойдут 485 интерфейс и Modbus протокол. И всё у вас будет в порядке.
|
То что я описал, это и есть немного измененный МодБас. Только МодБас несколько громоздкий для небольших контроллеров. Тут-же контроллеры работают в очень щадящем режиме, и им не надо контролировать поток данных. Да и у контроллеров мультипроц. режим специально для этого и сделан. В МодБасе такого режима нет. Описанные мной сети работают в металлуггических цехах, и очень хорошо себя зарекомендовали.
Только одно НО: 485 интерфейсы я использую с гальванической развязкой контроллеров от линии. Тогда эта сеть работает при любых помехах и антисанитарии!!!
|
|
|
|
05.12.2008, 11:23
|
|
Прописка
Регистрация: 09.06.2007
Сообщений: 96
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Сообщение от Samodelkin2001
|
Сообщение от BigMazzi
|
Хотел написать о 485, да Самоделкин опередил. Хочу добавить только то, что не следует стремиться к слишком простым решениям, иногда это дороже обходится в дальнейшем. Используйте готовые стандартные решения. Например для данного случая хорошо подойдут 485 интерфейс и Modbus протокол. И всё у вас будет в порядке.
|
То что я описал, это и есть немного измененный МодБас. Только МодБас несколько громоздкий для небольших контроллеров. Тут-же контроллеры работают в очень щадящем режиме, и им не надо контролировать поток данных. Да и у контроллеров мультипроц. режим специально для этого и сделан. В МодБасе такого режима нет. Описанные мной сети работают в металлуггических цехах, и очень хорошо себя зарекомендовали.
Только одно НО: 485 интерфейсы я использую с гальванической развязкой контроллеров от линии. Тогда эта сеть работает при любых помехах и антисанитарии!!!
|
Согласен со всем, кроме "немного изменённого МодБаса".
В таком случае он совсем не Модбас.
|
|
|
|
05.12.2008, 13:22
|
|
Вид на жительство
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Зачем привязываться к сложным протоколом Modbus, чем плох стандартный (старт дата стоп) на одной из стандартной скорости? Все что мне нужно:
Ведущий отправляет по очереди адрес каждого ведомого + 1 команду, и ждет от каждого ответа типа все в норме, или код ошибки.
Вот и все.
|
|
|
|
05.12.2008, 14:02
|
|
Частый гость
Регистрация: 17.12.2006
Сообщений: 26
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Сообщение от maxNTF
|
Зачем привязываться к сложным протоколом Modbus, чем плох стандартный (старт дата стоп) на одной из стандартной скорости? Все что мне нужно:
Ведущий отправляет по очереди адрес каждого ведомого + 1 команду, и ждет от каждого ответа типа все в норме, или код ошибки.
Вот и все.
|
А если отправлен код, что все нормально, а в пути на него наложилась помеха, и мастер принял его как код ошибки? Или наоборот? Или вообще не принял?
Контрольная сумма всеравно нужна.
И длину передаваемых данных тоже надо передавать после адреса, если длины конечно различные у разных устройств!
Так что то на то и выходит!!!
|
|
|
|
05.12.2008, 15:51
|
|
Вид на жительство
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Сообщение от Samodelkin2001
|
А если отправлен код, что все нормально, а в пути на него наложилась помеха, и мастер принял его как код ошибки? Или наоборот? Или вообще не принял?
Контрольная сумма всеравно нужна.
И длину передаваемых данных тоже надо передавать после адреса, если длины конечно различные у разных устройств!
Так что то на то и выходит!!!
|
Не-е-е, я согласен, что защита в любом случае должна присудствовать. Просто зачем использовать протокол Modbus? Я с ним не знаком к примеру. Мне больше нравится:
- отправляем адресс и 3-4 копии команды, и выбераем по совпадению. Так же отвечаем в трех-четырех экземплярах.
Чем плохо?
|
|
|
|
05.12.2008, 16:56
|
|
Прописка
Регистрация: 09.06.2007
Сообщений: 96
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Сообщение от maxNTF
|
Сообщение от Samodelkin2001
|
А если отправлен код, что все нормально, а в пути на него наложилась помеха, и мастер принял его как код ошибки? Или наоборот? Или вообще не принял?
Контрольная сумма всеравно нужна.
И длину передаваемых данных тоже надо передавать после адреса, если длины конечно различные у разных устройств!
Так что то на то и выходит!!!
|
Не-е-е, я согласен, что защита в любом случае должна присудствовать. Просто зачем использовать протокол Modbus? Я с ним не знаком к примеру. Мне больше нравится:
- отправляем адресс и 3-4 копии команды, и выбераем по совпадению. Так же отвечаем в трех-четырех экземплярах.
Чем плохо?
|
Тем, что не стандартно. К тому же МодБас не сложен.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:19.
|
|