понедельник, 26 сентября 2011 г.

Протокол обмена для аква-контроллера

Прошедшие дни были заняты различной суетой, включая поездку в Донецк на семинар по аквариумистике (семинар, однако, удался!). За это время я еще почитал-посмотрел на другие реализации, и обдумал конструкцию акваконтроллера и его протокол общения. Всё более склоняюсь к модульной архитектуре, описанной ранее, вплоть до того, чтобы блок АЦП вынести в отдельный модуль (видел вполне здравые рекомендации иметь аналоговый кабель как можно короче).



Предполагаемый протокол будет основан на MODBUS ASCII, с использованием 4х полей ADU:

адрес ведомого устройстваномер функцииданныеблок обнаружения ошибок

Однако, в отличие от классического MODBUS, данные у нас будут более сложные чем одно и двухбайтовые целые.

Для упрощения процесса отладки и ручного формирования пакетов я планирую добавить такие фишки, как:
  • отладочная замена контрольной суммы на служебные символы = =
  • передачу сложных параметров в виде обычных строк с использованием двойных кавычек.
  • передачу пакетов с опциональными пробелами между парами ascii-hex значений.
Структура протокола будет одинакова как для общения между центральной платой контроллера и компьютером, так и для общения между центральной платой и дополнительными блоками.

В своих рабочих изделиях я предпочитаю использовать бинарные протоколы, в частности SLIP. Его огромное достоинство в четком разделении пакетов по специальным символам. Однако бинарные протоколы немного сложнее отлаживать и требуются специальные утилиты-терминалки. Для ASCII протокола отладка должна стать полегче, плюс тут также четко разделяется начало и конец каждого пакета. Для ручного формирования пакетов вышеописанные дополнительные фишки должны еще более упростить работу, хотя конечно специализированная терминалка будет только плюсом.

Скорости обмена предполагаются 57600 или 115200 бит/сек (с компьютером), и 19200 бит/сек с дополнительными блоками (берем стандартную скорость шины LIN).

Для формирования LIN-сигнала используем простой открытый коллектор, на приемном конце компаратор типа LM311 с гистерезисом.

Касательно программы для контроллера. Из различных описаний контроллеров я вынес для себя такую мысль: каждый аквариумист делает для себя контроллер с той или иной вариацией исполнения. Поэтому программная среда для формирования прошивки контроллера должна быть гибкой и также модульной. Т.е. на этапе формирования прошивки нужно иметь возможность выбрать тип используемого процессора, вариант модуля и из имеющихся вариантов сформировать внутреннюю начинку программы из готовых кубиков. Подобную идею формирования программы для AVR я вынашиваю уже определенное время, так что аква-контроллер должен стать удобным полигоном для отработки этой идеи.

Комментариев нет:

Отправить комментарий