Jump to content

    

выбор протокола

Доброго времени суток, коллеги.

Нахожусь на перепутье с выбором протокола общения в сети. Сеть состоит из 25-30 датчиков на базе STM32F1хх и 1-го центрального устройства (будет что-то одноплатное типа Pi, Orange и т.п.). Линия связи - витая пара. Режим работы - периодический съем данных с датчиков (с периодом опроса от 1с до нескольких минут , каждый датчик генерит порядка 10 байт инфы). Расположение - жилое помещение. Максимальное расстояние между узлами - до 15 м. Также необходимо иметь возможность обновлять прошивку датчиков по сети (50-80 кБ).
Напрашивается сразу классика в виде RS485 + Modbus RTU, но есть особенность: если показания датчиков начинают превышать пороги, то центральное устройство должно об этом узнать не позднее, чем через 1с. И тут либо датчики должны иметь возможность асинхронно сгенерировать алерт, либо, если юзать Modbus, необходимо опрашивать постоянно всю сеть с частотой 1 Гц (хотя в "стандартном режиме" достаточно 1 в минуту и реже).

Есть ли альтернативы? С CAN никогда не сталкивался, вроде как можно ставить CAN-контроллер (или даже только трансивер) и радоваться жизни, или есть подводные камни?

Share this post


Link to post
Share on other sites
1 час назад, bornbash сказал:

Сеть состоит из 25-30 датчиков

 

1 час назад, bornbash сказал:

с периодом опроса от 1с до нескольких минут

 

1 час назад, bornbash сказал:

датчик генерит порядка 10 байт инфы

В данном случае можно использовать что угодно, еще с запасом будет. 485 - самое простое, кан сложнее но все это вполне реализуемо...

1 час назад, bornbash сказал:

Modbus RTU

А это будет лишний костыль, и не предназначено для обновления прошивки...

Share this post


Link to post
Share on other sites
1 hour ago, mantech said:

 

 

В данном случае можно использовать что угодно, еще с запасом будет. 485 - самое простое, кан сложнее но все это вполне реализуемо...

А это будет лишний костыль, и не предназначено для обновления прошивки...

А если замахиваться на возможность подключения всей этой сети через центральное устройство (RPi) к какой-либо SCADA? Внутреннюю сеть сделать на проприетарном протоколе, поддерживающем обновление прошивки, а уже в RPi думать о том, как в SCAD'у слать?

Edited by bornbash

Share this post


Link to post
Share on other sites
1 час назад, bornbash сказал:

А если замахиваться на возможность подключения всей этой сети через центральное устройство (RPi) к какой-либо SCADA?

И как этой скаде будете объяснять про обновление прошивки? Придется писать свой протокол на мастер устройстве...Либо реализовывать 2 протокола - 1-стандартный, типа модбаса, второй для обновления.

1 час назад, bornbash сказал:

Внутреннюю сеть сделать на проприетарном протоколе, поддерживающем обновление прошивки,

Кто в таком случае будет обновлять? Еще один контроллер? 

Edited by mantech

Share this post


Link to post
Share on other sites
29 minutes ago, mantech said:

И как этой скаде будете объяснять про обновление прошивки? Придется писать свой протокол на мастер устройстве...Либо реализовывать 2 протокола - 1-стандартный, типа модбаса, второй для обновления

Да никак, конечно. 

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

29 minutes ago, mantech said:

Кто в таком случае будет обновлять? Еще один контроллер? 

RPi будет смотреть в интернет, через неё будет апдейт прошивки. Целесообразность применения SCADA у меня пока под боооольшим вопросом. Вероятно, что вполне достаточно будет стрима данных в облако безо всяких локальных интерфейсов.

Edited by bornbash

Share this post


Link to post
Share on other sites
6 часов назад, bornbash сказал:

Напрашивается сразу классика в виде RS485 + Modbus RTU, но есть особенность: если показания датчиков начинают превышать пороги, то центральное устройство должно об этом узнать не позднее, чем через 1с. И тут либо датчики должны иметь возможность асинхронно сгенерировать алерт, либо, если юзать Modbus, необходимо опрашивать постоянно всю сеть с частотой 1 Гц (хотя в "стандартном режиме" достаточно 1 в минуту и реже).

Зачем так медленно? Калькулятор говорит, что на скорости UART 115200 нужно всего несколько мсек чтобы опросить все 30 датчиков и узнать состояния алертов на них.

Share this post


Link to post
Share on other sites
2 часа назад, bornbash сказал:

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

Да и нафига он нужен тогда?  Обычный протокол - заголовок+адрес, длина, к. сумма в сторону устройства, оно выдает аналогичный ответ, только без адреса и все, больше ничего не надо... 

Share this post


Link to post
Share on other sites
12 часов назад, mantech сказал:

Да и нафига он нужен тогда?  Обычный протокол - заголовок+адрес, длина, к. сумма в сторону устройства, оно выдает аналогичный ответ, только без адреса и все, больше ничего не надо... 

Ну и чем это кардинально отличается от того же модбаса?

Share this post


Link to post
Share on other sites
1 минуту назад, SSerge сказал:

Ну и чем это кардинально отличается от того же модбаса?

Более простая в понимании организация, без всяких доп. специфичных команд, входных регистров и битовых coils...

Share this post


Link to post
Share on other sites

Коллеги, а по конкретным микросхемам для RS-485 соориентируете?
Есть отличные по характеристиками трансиверы MAX3075 с кусачим ценником под $4 в мелкой серии. Есть ADM3072 (тоже полудуплекс, ESD, true fail-safe, только на 250кбод), но уже в 2 раза дешевле почти. Есть линейка от MaxLinear - про них вообще до сегодняшнего дня ничего не слышал. Подскажите из собственного опыта лучше на что ориентироваться, если нужно, чтобы без проблем сеть работала?

Edited by bornbash

Share this post


Link to post
Share on other sites
1 hour ago, bornbash said:

Есть линейка от MaxLinear - про них вообще до сегодняшнего дня ничего не слышал.

Это бывший Exar. Если остатки памяти мне не изменяют, всякие RS/V интерфейсы к ним от Sipex пришли...

Share this post


Link to post
Share on other sites
В 24.07.2019 в 21:38, bornbash сказал:

Коллеги, а по конкретным микросхемам для RS-485 соориентируете?

Используем вот такой ADM2483, не дешевый, но с изоляцией.

А выбирать нужно исходя из тех же характеристик. В первую очередь количество устройств в сети. Дальше всякие защиты от статики  и дурака. Уж или трансивер по дороже, или на рассыпухе защиту.

Если устройств много, как у Вас - отключаемые терминаторы.

Share this post


Link to post
Share on other sites
В 24.07.2019 в 17:38, bornbash сказал:

Коллеги, а по конкретным микросхемам для RS-485 соориентируете?
Есть отличные по характеристиками трансиверы MAX3075 с кусачим ценником под $4 в мелкой серии. Есть ADM3072 (тоже полудуплекс, ESD, true fail-safe, только на 250кбод),

А чем "классика" не угодила, та же ADM3485 ? Стоит копейки и есть в наличии...  https://www.elitan.ru/price/item83408

Share this post


Link to post
Share on other sites
В 24.07.2019 в 21:38, bornbash сказал:

Коллеги, а по конкретным микросхемам для RS-485 соориентируете?

У нас MAX485ESA для 5В и ST3485EBDR для 3.3В в серию идут. Но у них ограничение по скорости, насколько помню 250 кбит. По этому соотносите со своими требованиями.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now