Свой протокол через CP2102 по UART

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
alex_403
Сообщения: 2
Зарегистрирован: Ср май 17, 2017 7:57 pm

Свой протокол через CP2102 по UART

Сообщение alex_403 »

Всем привет!
Хочу сделать свою сеть которая будет рулиться своими микроконтроллерами, со своими алгоритмами, в случае если упал сервер. Я не очень понял логику работы модулей. Могу я создать Совой протокол по Uart? Может ткнете меня в статейку?
Извиняюсь за глупысе вопросы, но за несколько подходов так и не смог понять как это сделать.
a_kouz
Сообщения: 40
Зарегистрирован: Вт апр 18, 2017 11:25 am

Re: Свой протокол через CP2102 по UART

Сообщение a_kouz »

alex_403 писал(а):Всем привет!
Хочу сделать свою сеть которая будет рулиться своими микроконтроллерами, со своими алгоритмами, в случае если упал сервер. Я не очень понял логику работы модулей. Могу я создать Совой протокол по Uart? Может ткнете меня в статейку?
Статейку не назову. Ни разу не встречал статьи, где все вопросы были бы разжеваны в доступном виде. Информация разбросана по разным статьям и учебникам, ее много, но время на изучение продется потратить изрядно.

Отмечу, что я как раз занят ровно тем самым - не спеша создаю свой протокол для UART, чтобы модули могли работать автономно, без центрального сервера. Использую шинные формирователи CAN, кабель - UTP Cat5/Cat6, одна витая пара - данные, одна пара - земля, одна - питание +12В, одна пара запасная. Протокол обмена двухуровневый:
- Сообщения "точка-точка" используются для настройки сети.
- Широковещательные сообщения используются модулями для обмена информацией по принципу "производитель-потребитель", так же, как это сделано в CAN, KNX, C-bus. На этом уровне используется протокол MQTT-SN.

Сейчас отлаживаю шлюз между сетью и ПК. Шлюз соединен с ПК по USB, сеть гальванически развязана. Шлюз сделан на микроконтроллере PIC24, но можно сделать и на CP2102. Разница в основном в том, как быстро шлюз реагирует на коллизии на шине. На микроконтроллере отреагирует быстрее, но существенного значения это не имеет.
alex_403
Сообщения: 2
Зарегистрирован: Ср май 17, 2017 7:57 pm

Re: Свой протокол через CP2102 по UART

Сообщение alex_403 »

Спасибо что откликнулись!
Сам работал с pic24 лет 5, сейчас перешел на stm32. CP2102 я буду использовать только как USB <-> UART. Все будет обрабатывать проц. Какая сеть особо не играет роли. Планировал rs485 со своим протоколом. Примерно похож как работает nrf24l01+. Подтверждения с полезными данными, ретрансмиты и тп.
Гальванически можно просто ADUM на UART кинуть, работает замечательно:)
Вы бы не могли помочь в какую сторону копать? Чтоб сервер мог по ком парту отправлять данные?
a_kouz
Сообщения: 40
Зарегистрирован: Вт апр 18, 2017 11:25 am

Re: Свой протокол через CP2102 по UART

Сообщение a_kouz »

alex_403 писал(а): CP2102 я буду использовать только как USB <-> UART. Все будет обрабатывать проц.
Я имел ввиду, что в моем случае в качестве шлюза можно использовать "голый" CP2102 (плюс, CAN драйвер, естественно). Тогда вся обработка ложится на ПК. Однако я делаю шлюз на PIC24, чтобы разгрузить ПК от низкоуровневой обработки. Конкретно PIC24FJ64GB004, в который встроен USB FS, так что с USB проц разговаривает напрямую.

Например, в моем протоколе предусмотрен NACK. То есть, устройство, "не расслышавшее" сообщение (скажем, CRC не совпало), может послать NACK, и тогда то же самое сообщение будет повторено еще раз. Такие нюансы реализации лучше возложить на микроконтроллер, а не на ПК.
alex_403 писал(а): Какая сеть особо не играет роли. Планировал rs485 со своим протоколом.
Увы, RS485 не позволяет строить протоколы типа "производитель-потребитель". А большинство протоколов домашней автоматизации построено именно по принципу "производитель-потребитель", и это сделано неспроста. Поэтому RS485 мне не подходит принципиально. На нем можно строить протоколы типа "мастер-слэйв" или "пир-то-пир", а это совсем другая парадигма. В домашней автоматике иногда используют Модбас ("мастер-слэйв") и LONworks ("пир-то-пир"), но у них есть серьезные ограничения, поэтому они не настолько популярны как, например, KNX, который "производитель-потребитель" ("producer-consumer").
alex_403 писал(а): Гальванически можно просто ADUM на UART кинуть, работает замечательно
Я использовал ADM3054
alex_403 писал(а): Вы бы не могли помочь в какую сторону копать? Чтоб сервер мог по ком парту отправлять данные?
Не понял. А в чем, собственно, вопрос? Просто открываете порт и отправляете данные.
Ответить