Блок для связи и навигации на железной дороге

Обзор проекта

Заказчик

Государственная железнодорожная компания.

 


Задача

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


Решение

Мы предложили заказчику аппаратное решение на базе трех модулей (блоков), которые соединяются кабелями. Наши инженеры разработали программную платформу устройства на базе ОС Linux, включая графический интерфейс.

Были реализованы следующие функциональные возможности:

  • Прием координат спутников системы GPS и ГЛОНАСС с точностью до 1 метра.
  • Работа с двумя СИМ-картами в роуминге.
  • Ввод данных о состоянии энергоресурсов через встроенную клавиатуру.
  • Ввод личных данных машиниста (ФИО) через встроенную клавиатуру.
  • Прием данных от сторонних систем по шине CAN.
  • Вывод информации на дисплей.
  • Передача введенной информации на сервер заказчика. В случае отсутствия связи с сервером заказчика информация должна храниться во внутренней памяти устройства и передаваться при первом же выходе на связь с сервером.
  • Передача информации о состоянии устройства на планшет заказчика по сети Wi-Fi.
  • Возможность питания от встроенной батареи во время длительного простоя поезда.

 


Результат

Заказчик получил рабочий прототип устройства, все необходимое программное обеспечение и документацию для запуска серийного производства.

Как это сделано

1. Аппаратное обеспечение

Мы разработали три блока (модуля):

1. Блок определения координат для приема данных спутниковых систем и передачи информации на сервер заказчика по сети GPRS. Эта плата используется в качестве модема, она разработана на базе контроллера STM32, GPS/GLONASS- модуля GMM3301 и GPRS-модуля серии Sara G3.

 

2. Блок терминала для подключения клавиатуры, дисплея и внешних источников данных по шине CAN. Эта плата разработана на базе процессора IMX-6UL серии Ultralight и модуля Wi-Fi компании Laird.

3. Блок питания для организации питания плат блока 1 и 2. Он разработан на базе DC/DC-преобразователя с диапазоном входных напряжений от 24 до 110 В.

Также в устройстве реализовано подключение 3G-модулей с интерфейсом Mini-PCI-E любых производителей, установка дисплея с параллельным интерфейсом и пленочной клавиатуры для ввода информации о машинисте и плановых рейсах. К устройству могут подключаться сторонние датчики по интерфейсу Ethernet, RS-485, CAN. Настройка и контроль работы — по технологии Wi-Fi.


2. Программное обеспечение

Мы разработали программную платформу устройства на базе ОС Linux, включая графический интерфейс.


ПО блока терминала

Основная функция блока терминала — взаимодействие с пользователем, его программное обеспечение реализовано в соответствии с многоуровневой структурой:

Преимущества такой архитектуры:

  • Нижний уровень ПО на ядре ОС Linux представляет разработчику все преимущества этой ОС: открытый исходный код, огромное число уже реализованных драйверов устройств, документированная архитектура, активная поддержка сообщества и др.
  • В качестве инструмента сборки файловой системы мы предложили использовать Buildroot – простой в использовании, масштабируемый и эффективный инструмент для построения встраиваемых Linux-систем c использованием кросс-компиляции.
  • ПО верхнего уровня строится на основе Qt — кроссплатформенного инструмента для разработки приложений. Ot — это не только графическая библиотека, но и набор готовых модулей для ускорения разработки приложений. Например, модулей для работы с сетью, для ускорения графики, для работы с различными форматами файлов, базами данных и т.п. Фреймворк хорошо документирован, имеет модульную структуру и удобную систему конфигурирования под конкретные требования.
  • В связке с Qt мы предложили использовать язык QML и модуль QtQuick. QML — это декларативный язык для описания пользовательского интерфейса программы. QtQuick включает QML и C++-модуль QtDeclarative для связки QML и объектов C++.

Преимущества QML и модуля QtQuick:

  • интеграция с C++ кодом;
  • прямой вызов javascript функций;
  • возможность создавать свои QML-компоненты, используя QML/C++;
  • локализация (QtLinguist);
  • можно использовать WebKit при помощи QML-элемента WebView;
  • тесная интеграция с IDE QtCreator;
  • графический дизайнер QML.

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


ПО блока определения координат

Аппаратная платформа блока определения координат построена на основе малопотребляющего микроконтроллера, поэтому мы предложили использовать многозадачную ОС реального времени FreeRTOS. Структура ПО также разделена на несколько уровней, где выделены логические блоки и интерфейсы взаимодействия:
  • уровень драйверов периферийных устройств;
  • уровень задач операционной системы;
  • уровень описания бизнес-логики;
  • вспомогательные программные модули.

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


3. Дизайн и конструкция корпуса

В рамках проекта мы также разработали дизайн и конструкцию корпуса устройства.