Всем привет. Долго искал инфу на эту тему, но толком ничего нет. Есть примеры реализации с использованием rs485, поделитесь пожалуйста.
Фото взято отсюда http://adatum.ru/podklyuchenie-konverte ... duino.html
Связка ПК-RS485-Arduino
Модератор: immortal
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Связка ПК-RS485-Arduino
Вам что конкретно нужно?
RS485 это физический протокол обмена информацией по 2 проводам (витая пара). RS232 тоже протокол. Адаптер который на фото это преходник USB (сом) в физический протокол RS485. Чтобы два устройства (не важно компьютер это или 2 ардуино) начали предавать друг другу информацию должен быть определенный прорядок. Одно устройство это мастер, он предает команду и может занимать линию. Второе (или 3-4-N) линию слушаюти отвечают только на запрос. Т.е в Вашей схеме (рисунок) 3 ардуинки это слейвы они просто отвечают на запросы. Примеров кода на подобные задачи в сети масса конкртно под ВАши задачи, типа "вот хочу так" Вы может и не найдете, но сам код мастер-слейв т.е как пример обмена такого добра масса.
Поэтому нужно подробнее рсписать задачи, что нужно делать мастеру (это PC). а что должны делать слейвы (ардуино) .
RS485 это физический протокол обмена информацией по 2 проводам (витая пара). RS232 тоже протокол. Адаптер который на фото это преходник USB (сом) в физический протокол RS485. Чтобы два устройства (не важно компьютер это или 2 ардуино) начали предавать друг другу информацию должен быть определенный прорядок. Одно устройство это мастер, он предает команду и может занимать линию. Второе (или 3-4-N) линию слушаюти отвечают только на запрос. Т.е в Вашей схеме (рисунок) 3 ардуинки это слейвы они просто отвечают на запросы. Примеров кода на подобные задачи в сети масса конкртно под ВАши задачи, типа "вот хочу так" Вы может и не найдете, но сам код мастер-слейв т.е как пример обмена такого добра масса.
Поэтому нужно подробнее рсписать задачи, что нужно делать мастеру (это PC). а что должны делать слейвы (ардуино) .
-
- Сообщения: 254
- Зарегистрирован: Ср июл 09, 2014 3:48 pm
- Благодарил (а): 6 раз
- Поблагодарили: 41 раз
Re: Связка ПК-RS485-Arduino
При использовании RS-485 есть много подводных камней, которые не видны новичкам:
- Передатчики RS-485 довольно мощные. Как правило при коротком замыкании выхода они способны выдавать на выходе ток порядка сто-двести миллиампер. Поэтому надо озаботиться, чтобы два передатчика никогда не были включены одновременно, иначе они устроят друг другу короткое замыкание по выходу. А для того, чтобы передатчики включались в определенном порядке, нужен протокол обмена, который будет определять, кто и когда может "говорить", а кто должен "слушать и помалкивать". Один из популярных протоколов для RS-485 называется Modbus RTU.
- Приемники RS-485 довольно чувствительные. Когда линия связи свободна, т.е. все передатчики выключены, то на линию наводятся помехи, а приемники преобразуют эти помехи в ложные сигналы, которые приходят на вход UART-ов. Поэтому все узлы RS-485 должны быть готовы к тому, что к ним на вход все время приходит какой-то мусор. Они должны уметь отличать мусор от правильных сигналов. Если используется хорошо продуманный протокол обмена, такой как Modbus RTU, там это проблема решена. Если же используется какой-то самопальный протокол, который не может отличаать мусор от полезных сигналов, то необходимо ставить подтягивающие резисторы: одну линию притянуть к +5В резистором 680 Ом, другую линию притянуть к земле резистором 680 Ом. Помехоустойчивость при этом будет хуже, чем при использовании хорошего протокола обмена.
- Если обмен ведется на высокой скорости, то необходимо использовать согласованные линии связи. То есть, использовать витую пару, которая последовательно обходит все узлы. В начале и в конце витой пары надо поставить терминирующие резисторы между линиями, типично по 120 Ом, это предотвратит отражение сигналов от концов витой пары. "Высокая скорость обмена" - эта такая скорость, когда время распространения сигнала из конца в конец линии связи сопоставимо по времени с длительностью битового интервала. Если расстояние всего лишь несколько десятков метров, а бодовая скорость невысокая, десятки килобод - то можно не заморачиваться с терминирующими резисторами.
- Передатчики RS-485 довольно мощные. Как правило при коротком замыкании выхода они способны выдавать на выходе ток порядка сто-двести миллиампер. Поэтому надо озаботиться, чтобы два передатчика никогда не были включены одновременно, иначе они устроят друг другу короткое замыкание по выходу. А для того, чтобы передатчики включались в определенном порядке, нужен протокол обмена, который будет определять, кто и когда может "говорить", а кто должен "слушать и помалкивать". Один из популярных протоколов для RS-485 называется Modbus RTU.
- Приемники RS-485 довольно чувствительные. Когда линия связи свободна, т.е. все передатчики выключены, то на линию наводятся помехи, а приемники преобразуют эти помехи в ложные сигналы, которые приходят на вход UART-ов. Поэтому все узлы RS-485 должны быть готовы к тому, что к ним на вход все время приходит какой-то мусор. Они должны уметь отличать мусор от правильных сигналов. Если используется хорошо продуманный протокол обмена, такой как Modbus RTU, там это проблема решена. Если же используется какой-то самопальный протокол, который не может отличаать мусор от полезных сигналов, то необходимо ставить подтягивающие резисторы: одну линию притянуть к +5В резистором 680 Ом, другую линию притянуть к земле резистором 680 Ом. Помехоустойчивость при этом будет хуже, чем при использовании хорошего протокола обмена.
- Если обмен ведется на высокой скорости, то необходимо использовать согласованные линии связи. То есть, использовать витую пару, которая последовательно обходит все узлы. В начале и в конце витой пары надо поставить терминирующие резисторы между линиями, типично по 120 Ом, это предотвратит отражение сигналов от концов витой пары. "Высокая скорость обмена" - эта такая скорость, когда время распространения сигнала из конца в конец линии связи сопоставимо по времени с длительностью битового интервала. Если расстояние всего лишь несколько десятков метров, а бодовая скорость невысокая, десятки килобод - то можно не заморачиваться с терминирующими резисторами.
-
- Сообщения: 87
- Зарегистрирован: Пн янв 27, 2014 2:50 pm
- Откуда: Россия, Тюмень
- Благодарил (а): 12 раз
- Поблагодарили: 14 раз
-
- Сообщения: 254
- Зарегистрирован: Ср июл 09, 2014 3:48 pm
- Благодарил (а): 6 раз
- Поблагодарили: 41 раз
Re: Связка ПК-RS485-Arduino
Вот простой самопальный протокол обмена по RS-485 для Ардуино: http://www.gammon.com.au/forum/?id=11428
Помехоустойчивость у него средненькая, защита от помех состот в подтягивающих резисторах и в CRC. Однако для домашней автоматизации вполне подходит.
Помехоустойчивость у него средненькая, защита от помех состот в подтягивающих резисторах и в CRC. Однако для домашней автоматизации вполне подходит.