Перейти к содержанию

Посоветуйте, пожалуйста, открытый протокол

Добрый вечер!

Пришло время разработать некий внутренний стандарт управления приборами, и хотелось бы найти какой-нибудь открытый протокол, удовлетворяющий следующим требованиям:

- Работа через полудуплексный или полнодуплексный последовательный порт, либо через другие каналы, в том числе IP.
- Архитектура точка - точка, мастер-слейв.
- Событийная модель (то есть, возможность получать с мастера асинхронные события/данные, с возможностью настройки, как их получать, через поллинг, либо через отдельный канал)
- API для встраивания протокола в C/C++ на стороне мастера и С на стороне устройства.

Думаю, такое должно быть, просто не понимаю, как искать.

Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(megajohn @ Jan 28 2018, 20:14) <{POST_SNAPBACK}>
Да это вы описали SNMP

Я бы добавил - SNMP с кодировкой BER поверх PPP.
А то неясно как через RS232, или RS485 этот SNMP переправлять.
Реализация SNMP и PPP как раз есть в RTOS MQX под микронтроллеры Kinetis и i.MX RT
Там же можно найти реализацию VCOM. Тогда цепочка будет такая: SNMP->BER->PPP->vCOM->USB
А на PC мастер SNMP легко делается в RAD Studio.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(AlexandrY @ Jan 28 2018, 21:30) <{POST_SNAPBACK}>
Я бы добавил - SNMP с кодировкой BER поверх PPP.


да, это верно поправили

прикладываю для ТС архивчик
SNMP_Simple_Network_Management_Protocol.pdf - пример как можно организовать управление железкой
SNMP.pdf SNMP_brief_3.pdf - тоже теория
b6300a.cap - примера обмена SNMP по IP для WireShark
пакет 3 - запрос значений для обьектов 1.3.6.1.2.1.1.5.0 и 1.3.6.1.2.1.1.6.0
пакет 4 - ответ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Интересно посмотреть на PPP по полудуплексному каналу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(gosha-z @ Jan 29 2018, 11:24) <{POST_SNAPBACK}>
Интересно посмотреть на PPP по полудуплексному каналу...


да пожалуйста, этож не симплекс !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Мда. Дело конечно интересное, но вот мне пока не очень понятно, как это всё будет работать, если:

1. со стороны слейва у нас MSP430 без ОС.
2. необходимо от слейва к мастеру передавать поток данных со скоростью до 200 отсчётов в секунду.

и, кстати, там не PC мастером, а как правило, приложение под встроенный линукс.

Я смотрел на MessagePack, но он, по-моему избыточен.
Изменено пользователем kkobru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(kkobru @ Jan 29 2018, 12:41) <{POST_SNAPBACK}>
Я смотрел на MessagePack, но он, по-моему избыточен.

Это просто аналог BER. А где все остальное?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Давайте я уточню с точки зрения предметной области.
Это лабораторные приборы, которые работают по RS232/485 либо Ethernet, если нужен большой поток данных.
Набор команд простой должен быть:
1. Установить значение параметра
2. Переключить что-то
3. Считать значение с измерителя
4. Получать поток значений с метками времени с измерительного канала
5. Получать события (готовность, ошибка, и т.д.)

Самое важное, что это должна быть открытая библиотека на С, которую легко подключить к коду, работающему без ОС.
Изменено пользователем kkobru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
п. 1,2,3,5 это вполне подойдет для SNMP . Можно и Modbus использовать
п. 4 тут конечно что-то другое надо использовать. Я бы передавал как UDP over PPP и далее в UART

пример прикладываю



Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(kkobru @ Jan 28 2018, 17:17) <{POST_SNAPBACK}>
- Архитектура точка - точка, мастер-слейв.
- Событийная модель (то есть, возможность получать с мастера асинхронные события/данные, с возможностью настройки, как их получать, через поллинг, либо через отдельный канал)

Цитата(kkobru @ Jan 29 2018, 12:41) <{POST_SNAPBACK}>
2. необходимо от слейва к мастеру передавать поток данных со скоростью до 200 отсчётов в секунду.

Цитата(kkobru @ Jan 29 2018, 16:55) <{POST_SNAPBACK}>
4. Получать поток значений с метками времени с измерительного канала
5. Получать события (готовность, ошибка, и т.д.)

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

По режиму работы это больше получается мультимастер.

А получать поток значений и события нужно с какими максимальными задержками?
Может быть достаточно по запросу мастера раз в секунду получать один пакет с 200-и отсчетами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(kkobru @ Jan 28 2018, 18:17) <{POST_SNAPBACK}>
Добрый вечер!

Пришло время разработать некий внутренний стандарт управления приборами, и хотелось бы найти какой-нибудь открытый протокол, удовлетворяющий следующим требованиям:

- Работа через полудуплексный или полнодуплексный последовательный порт, либо через другие каналы, в том числе IP.
- Архитектура точка - точка, мастер-слейв.
- Событийная модель (то есть, возможность получать с мастера асинхронные события/данные, с возможностью настройки, как их получать, через поллинг, либо через отдельный канал)
- API для встраивания протокола в C/C++ на стороне мастера и С на стороне устройства.

Думаю, такое должно быть, просто не понимаю, как искать.

Заранее спасибо!


Modbus (COM port) Modbus TCP (Ethernet) Простая реализация, единый протокол и хорошо стандартизирован.
Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(kkobru @ Jan 29 2018, 16:55) <{POST_SNAPBACK}>
Самое важное, что это должна быть открытая библиотека на С, которую легко подключить к коду, работающему без ОС.

Как можно легко подключить развитую библиотеку, а вернее стек протоколов к коду без оси?
Я вот этого не понимаю.
Тот же MessagePack, он же парстит, кодит, жрет память ... в совершенно непредсказуемых количествах и качествах.
Как его можно просто так взять и вставить в код без ОС? Это же профайлинг и перекапывание всей библиотеки до потемнения в глазах.
Вот в этом главное противоречие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(AlexandrY @ Jan 29 2018, 22:21) <{POST_SNAPBACK}>
Тот же MessagePack, он же парстит, кодит, жрет память ... в совершенно непредсказуемых количествах и качествах.
Как его можно просто так взять и вставить в код без ОС? Это же профайлинг и перекапывание всей библиотеки до потемнения в глазах.


Как же далеки стали сегодняшние кодеры от классического оптимального ПО laughing.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация