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

    

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

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

 

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

 

- Работа через полудуплексный или полнодуплексный последовательный порт, либо через другие каналы, в том числе IP.

- Архитектура точка - точка, мастер-слейв.

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

- API для встраивания протокола в C/C++ на стороне мастера и С на стороне устройства.

 

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
Да это вы описали 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.

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


Ссылка на сообщение
Поделиться на другие сайты
Я бы добавил - 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 - ответ

snmp.zip

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


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

Интересно посмотреть на PPP по полудуплексному каналу...

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


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

 

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

ppp_lcp_ipcp.zip

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


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

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

 

1. со стороны слейва у нас MSP430 без ОС.

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

 

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

 

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

Изменено пользователем kkobru

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


Ссылка на сообщение
Поделиться на другие сайты
Я смотрел на MessagePack, но он, по-моему избыточен.

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

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


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

Давайте я уточню с точки зрения предметной области.

Это лабораторные приборы, которые работают по RS232/485 либо Ethernet, если нужен большой поток данных.

Набор команд простой должен быть:

1. Установить значение параметра

2. Переключить что-то

3. Считать значение с измерителя

4. Получать поток значений с метками времени с измерительного канала

5. Получать события (готовность, ошибка, и т.д.)

 

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

Изменено пользователем kkobru

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


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

п. 1,2,3,5 это вполне подойдет для SNMP . Можно и Modbus использовать

п. 4 тут конечно что-то другое надо использовать. Я бы передавал как UDP over PPP и далее в UART

 

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

 

 

 

udp_over_ppp_uart.zip

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


Ссылка на сообщение
Поделиться на другие сайты
- Архитектура точка - точка, мастер-слейв.

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

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

4. Получать поток значений с метками времени с измерительного канала

5. Получать события (готовность, ошибка, и т.д.)

Ваше ТЗ выглядит несколько противоречивым.

Наверное, все же получение от слейва асинхронных событий и данных?

 

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

 

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

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

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


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

 

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

 

- Работа через полудуплексный или полнодуплексный последовательный порт, либо через другие каналы, в том числе IP.

- Архитектура точка - точка, мастер-слейв.

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

- API для встраивания протокола в C/C++ на стороне мастера и С на стороне устройства.

 

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

 

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

 

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

Изменено пользователем mantech

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


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

Как можно легко подключить развитую библиотеку, а вернее стек протоколов к коду без оси?

Я вот этого не понимаю.

Тот же MessagePack, он же парстит, кодит, жрет память ... в совершенно непредсказуемых количествах и качествах.

Как его можно просто так взять и вставить в код без ОС? Это же профайлинг и перекапывание всей библиотеки до потемнения в глазах.

Вот в этом главное противоречие.

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


Ссылка на сообщение
Поделиться на другие сайты
Тот же MessagePack, он же парстит, кодит, жрет память ... в совершенно непредсказуемых количествах и качествах.

Как его можно просто так взять и вставить в код без ОС? Это же профайлинг и перекапывание всей библиотеки до потемнения в глазах.

 

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

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


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

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

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

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

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

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

Войти

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

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