Курсовая работа
Вид материала | Курсовая |
- Методические рекомендации по выполнению курсовых работ курсовая работа по «Общей психологии», 54.44kb.
- Курсовая работа Социокультурные лакуны в статьях корреспондентов, 270.94kb.
- Курсовая работа, 30.27kb.
- Курсовая работа тема: Развитие международных кредитно-финансовых отношений и их влияние, 204.43kb.
- Курсовая работа+диск + защита, 29.4kb.
- Курсовая работа+диск + защита, 118.7kb.
- Курсовая работа на математическом, 292.45kb.
- Методические указания к выполнению курсовой работы курсовая работа по курсу «Менеджмент», 159.91kb.
- Курсовая работа по предмету "Бухгалтерский учёт" Тема: "Учёт поступления и выбытия, 462.23kb.
- Курсовая работа по управлению судном, 128.72kb.
Министерство образования РФ
Дальневосточный государственный университет
Институт математики и компьютерных наук
Кафедра информатики
Разработка программного обеспечения распределенной системы сбора данных электро- и магнитометрических измерений.
курсовая работа
студента 246 группы
Олейникова Игоря Сергеевича
руководитель:
зав. лаб. анализа океанологической информации
ТОИ ДВО РАН
к.т.н. Фищенко Виталий Константинович
Владивосток, 2008
Содержание
Аннотация 4
Введение 4
1.1. Глоссарий 4
1.2. Описание предметной области 4
1.3. Неформальная постановка задачи 6
1.4. Обзор существующих методов решения 7
Требования к окружению 8
1.5. Требования к аппаратному обеспечению 8
1.6. Требования к программному обеспечению 8
1.7. Требования к пользователям 8
Архитектура системы 8
Спецификация данных 11
1.8. Формат файла инициализации 11
1.9. Формат файла сохраненных данных 12
1.10. Формат сохраненных данных (автономная система наблюдения) 12
1.11. Протокол обмена данными между мобильной и автономной подсистемами 13
Функциональные требования 15
1.12. Стационарная подсистема 15
1.13. Мобильная подсистема кратковременного наблюдения 15
1.14. Мобильная подсистема автономного наблюдения 16
Требования к интерфейсу 16
1.15. Стационарная подсистема 16
1.16. Мобильная подсистема кратковременного наблюдения 17
1.17. Мобильная подсистема автономного наблюдения 17
Проект 17
1.18. Средства реализации 17
1.19. Модули и алгоритмы 17
Драйверы устройств E24 и E20-10 для COM DB9 и USB 18
Подсистема работы с внешними устройствами 18
Подсистема проверки корректности 19
Графический интерфейс 19
Хранение данных 19
Ядро 20
Драйвер устройства E24 для RS232 20
Подсистема работы с GPS и системными часами 20
Модуль управления автономной подсистемой 21
Подсистема графического отображения в КПК 21
Ядро мобильной подсистемы 21
Мобильная подсистема автономного наблюдения 21
1.20. Проект интерфейса 22
Реализация и тестирование 24
Заключение 24
Список литературы 25
Аннотация
В работе описана реализация программной части системы регистрации измерений теллурического поля, проводимых лабораторией магнитометрии ТОИ ДВО РАН. В соответствии с требованиями заказчика, программная часть системы поддерживает работу регистрирующего оборудования и передачу данных в единый центр обработки. Помимо этого система обеспечивает работу, как стационарных наблюдательных пунктов, так и передвижных измерительных станций, расположенных в районах, удаленных от источников промышленных помех. Реализована и опробована стационарная регистрирующая система, включающая средства получения, обработки и пересылки данных, а также мобильная система, предполагающая непосредственную работу с устройствами получения данных.
Введение
1.1.Глоссарий
Геоэлектрическое поле – Электрическое поле, создаваемое токами естественного происхождения, протекающими в Земле
МТзондирование – Процесс измерения теллурического поля в определенной точке Земли, либо по прямой линии от точки А до точки Б
Теллурическое поле – Электромагнитное поле, создаваемое токами естественного происхождения, протекающими в Земле
Электрический диполь – Два разноименных заряда, находящиеся на относительно малой дистанции друг от друга (для измерения геоэлектрического поля требуется расстояние порядка 10 – 40 км)
JTAG – аппаратный интерфейс, предназначенный для загрузки в микроконтроллер программного кода и его отладки в различных режимах работы
SD – формат карт флэш памяти для переноса информации
SPI (serial peripheral interface) – интерфейс для низкоуровнего обмена данными между различными модулями устройства
I2C – интерфейс обмена данными и их синхронизации по тактовому генератору
1.2.Описание предметной области
Данные магнито- и электрометрии являются одним из основных источников информации о процессах, происходящих в различных слоях земной коры. Для их объективной интерпретации желательно оперативно получать и анализировать данные из нескольких географически разнесенных мест наблюдения, по возможности, удаленных от источников промышленных помех. Подобные исследования проводятся специалистами ТОИ ДВО РАН в сети из 4-х стационарных станций в Приморском и Хабаровском краях. Наблюдения ведутся в магнитных обсерваториях “Владивосток” (код по международной классификации VLA) и “Хабаровск” (KHB), на концах морского кабеля Находка – Наоэцу в рамках проекта “Japan Sea Cable” и континентального кабеля связи “РОСТЕЛЕКОМ” в Уссурийске. Планируется также проводить регистрацию вариаций геоэлектрического поля на проложенных стационарных электрических диполях в режиме автономного длительного наблюдения в районах, удаленных от стационарных станций, посылая туда группы научных специалистов с оборудованием. В результате этих измерений появится возможность оценить природу временного хода геоэлектрического сопротивления по результатам мониторинга теллурического поля и уточнить схемы геоэлектрических районов Приморского и Хабаровского краев. Немаловажной задачей также является пополнение банка данных по МТзондированиям Дальневосточного региона. Таким образом, актуальной становится задача автоматизации процесса сбора информации о теллурическом поле в сети стационарных и мобильных станций с возможностью ее оперативной доставки в центр репликации данных (FTP сервер) океанологической информационно-аналитической системы (ОИАС) ДВО РАН. Основной сервер баз данных ОИАС с заданной периодичностью опрашивает все центры репликации и забирает новые данные. Таким образом, через 20 – 30 минут после регистрации данных на удаленной стационарной станции они становятся доступны всем пользователям ОИАС. При работе с мобильными станциями файлы, по возможности, отправляются на главный сервер ОИАС, используя технологию GPRS.
Разделение программной системы на стационарную и мобильную обусловлено тем, что в условиях удаленности от источников промышленных помех отсутствует электроснабжение и программа должна работать на устройствах с малым энергопотреблением (от аккумуляторов), таких как КПК. Также передвижная измерительная станция должна осуществлять географическую привязку данных, вычисление магнитного склонения и временную привязку посредствам системы GPS.
Мобильная система была разделена на две подсистемы:
- Для ведения кратковременных замеров и оценки необходимости длительных наблюдений в этой местности
- Для долговременного наблюдения в автономном режиме
Для реализации первой подсистемы был использован КПК с непосредственно подключенным к нему оборудованием. Такой подход позволяет специалистам проводить наблюдение в режиме реального времени с возможностью моментальной визуализации полученных данных, а также является не требовательным к энергопотреблению.
Для реализации второй подсистемы лабораторией магнитометрии было разработано специальное устройство на основе программируемого микроконтроллера AVR ATmega 164P с возможностями получения, первичной обработки и сохранения полученных данных на карты флеш памяти необходимой емкости, а также передачи этих данных на подключаемое устройство без прекращения работы. В качестве такого устройства используется первая подсистема.
В дополнение к этому требуется обеспечить взаимодействие программной системы с различными устройствами получения данных, подключаемыми к различным интерфейсам, по различным протоколам и оперативную отправку данных в центр обработки посредством GPRS. А также длительную безотказную работу автономного измеряющего устройства с использованием его внутренних интерфейсов.
В качестве альтернативных следует рассмотреть несколько подходов. Самым простым является запись полученной информации на бумажные носители с последующей обработкой полученных данных человеком. Основными недостатками данного подхода являются: необходимость в постоянном контроле таких приборов специально-обученными людьми, а также очень низкое разрешение полученных данных и большая погрешность (порядка 20%). Возможно, также использовать драйверы измерительных устройств, поставляемые производителями. Но такой подход не позволяет обеспечивать работу мобильной части системы в связи с отсутствием таких драйверов для КПК и не позволяет работать с устройствами на низком уровне, что необходимо для организации долговременного автономного измерительного пункта.
1.3.Неформальная постановка задачи
Цель курсовой – спроектировать и реализовать программный комплекс для получения данных стационарных и мобильных (кратковременных и долговременных) измерений с последующей их отправкой в центр обработки с использованием сети Интернет
Стационарный программный комплекс должен обеспечивать возможность:
- Получать данные с устройств измерения геоэлектрического и магнитного полей
- Оперативно передавать данные через сеть Интернет
Мобильный программный комплекс кратковременных измерений должен:
- Работать на устройствах с малым энергопотреблением
- Обеспечивать получение данных с измерительных устройств посредством интерфейсов COM, USB, IRDA
- Производить географическую, магнитную и временную привязку полученных данных посредством системы GPS
- Поддерживать протоколы NMEA, NMEA HP RX
- Обеспечивать оперативную передачу данных с мобильного устройства в центр обработки
Мобильный программный комплекс автономного наблюдения должен:
- Поддерживать подключение различных измерительных устройств на основе интерфейсов SPI (измеритель) и I2C (управляющие часы)
- Сохранение полученных данных на карты памяти формата SD
- Обеспечивать передачу данных на контролирующее устройство посредством интерфейса COM
- Производить временную привязку полученных данных посредством интегрированной системы GPS
1.4.Обзор существующих методов решения
Ниже приводится таблица сравнения нескольких методов, которые можно рассматривать как альтернативные подходы к решению данной задачи.
Таблица 1 Сравнение методик, применяемых при решении подобных задач
| Самописцы | Использование ПО, поставляемого с устройством ввода | Написание спец. программы | Аппаратная реализация |
Стоимость сопровождения | Высокая | Низкая | низкая | Низкая |
Удобство пользователя | – | – | + | + |
Возможность обработки полученных данных | + | + | + | + |
Поддержка необходимых протоколов | – | – | + | + |
Поддержка необходимых форматов файлов | – | – | + | + |
Открытость исходного кода, спецификаций | – | – | + | + |
Кратко опишем особенности этих методик.
Самописцы: требуют введения специальной должности для обработки данных, обладают низкой производительностью. Использовались до появления автоматизированных систем
Драйверы, поставляемые с устройствами измерения и ввода данных: Не поддерживают необходимых форматов сохранения и протоколов передачи данных, как правило, исходный код закрыт. Непереносимы на другие платформы.
Ни одна из существующих систем не удовлетворяет в полной мере поставленной задаче. Это происходит вследствие большого разнообразия используемого оборудования и несогласованных интерфейсов обмена данными.
Требования к окружению
1.5.Требования к аппаратному обеспечению
Для стационарного программного комплекса требуется:
- Компьютер с процессором не ниже Pentium II
- COM порт (DB9) или USB порт, в зависимости от подключаемого устройства
Для мобильного программного комплекса требуется:
- Аналого-цифровой преобразователь LCard E24 (COM порт) или LCard E20-10 (USB)
- КПК, тестировалось на Acer n35 и HP IPAQ rx5700
- Внешний модуль GPS или встроенный в КПК модуль GPS
Для мобильного программного комплекса автономного наблюдения требуется:
- Микроконтроллер AVR ATmega 164P или ATmega 324P или ATmega 644P (тестировалось на 164P)
- Maxim Realtime Clock DS3231 или DS3231S (тестировалось на DS3231)
- Модуль АЦП, поддерживающий интерфейс SPI
- SD Карта памяти
1.6.Требования к программному обеспечению
Для мобильного программного комплекса требуется:
- Интерпретатор языка MortScript [13]
- Операционная система Windows Mobile 5.0+
1.7.Требования к пользователям
Предполагается, что пользователями данной системы являются ученые и инженеры ТОИ ДВО РАН, квалификация которых позволяет производить настройку системы, такую как калибровка Аналого-цифрового преобразователя, оценка погрешности GPS приемника и выбор параметров запуска программы, таких как режим дискретизации данных, коэффициент усиления сигнала, частоту дискретизации и т.д.
Архитектура системы
Система сбора данных электро- и магнитометрических измерений разделена на три, слабо взаимодействующие между собой подсистемы. Стационарная и мобильная подсистема отправляют данные напрямую в центр репликации, автономная подсистема передает данные сначала на мобильную часть. Архитектура стационарной подсистемы представлена на рисунке 1. Она представляет собой обычный персональный компьютер с подключенным к нему, посредством одного из интерфейсов, измерительным устройством. В задачи данной подсистемы, в отличие от остальных, не входит осуществление координатной и магнитной привязки данных, поскольку эти данные заранее известны. Основная задача данной подсистемы состоит в обеспечении работы стационарной магнитной обсерватории с постоянным электроснабжением.
Рисунок 1 Архитектура стационарной подсистемы
Архитектура мобильной подсистемы кратковременного наблюдения представлена на рисунке 2. Она представляет собой КПК, с подключенным или встроенным GPS приемником, к которому подключено устройство измерения, В этом качестве может выступать либо непосредственно измерительное устройство, либо мобильная подсистема долговременного наблюдения. Задачей данной подсистемы является обеспечение работы групп научных специалистов с оборудованием в местах удаленных от источников промышленных помех, и, как следствие, электричества. Также в список задач можно включить настройку автономной мобильной подсистемы и получение данных с нее, при необходимости продолжения измерений. Пересылка данных через интернет в центр репликации осуществляется отдельным скриптом, написанным на языке MortScript [13]. Который должен запускаться пользователем при наличии GPRS соединения.
Архитектура мобильной подсистемы автономного наблюдения представлена на рисунке 3. Она представляет собой устройство на базе контроллера AVR ATmega 164P, к которому подключены все необходимые компоненты. Подробное описание компонентов содержится в [7,8,11,12]. Основной задачей данной подсистемы является обеспечение бесперебойной работы наблюдательной системы в течение длительного времени, без присутствия специалистов, с последующей передачей данных в мобильную подсистему, без прекращения наблюдений. С этой целью устройство оборудуется источником питания большой емкости и двумя картами памяти типа SD.
Рисунок 2 Архитектура мобильной подсистемы кратковременного наблюдения
Рисунок 3 Архитектура мобильной подсистемы автономного наблюдения
Спецификация данных
Основными типами данных для подобных медиальных систем являются протоколы обмена данными. Протокол обмена данными с АЦП, использующийся в стационарной и мобильной подсистеме описан в технической документации к ним [1] и [2], с АЦП в автономной системе в [12]. Протокол обмена данными с GPS – NMEA, является открытым и описан в [3], аппаратные интерфейсы микроконтроллера описаны в соответствующих документах [7,9,10]. Интерфейс карты памяти в спецификации [8], часов реального времени в [11]. Нестандартные спецификации приведены ниже:
1.8.Формат файла инициализации
Файл инициализации – это текстовый файл, предназначенный для запуска стационарной и мобильной подсистем с предустановленными параметрами
Таблица 2 Формат файла инициализации
Номер строки | Описание |
1 | Последовательность символов 0 и 1, указывающих включен или выключен соответствующий канал данных |
2 | Частота дискретизации, измеряется в Гц |
3 | Адрес рабочего каталога, куда система будет сохранять свои файлы |
4 | Номер порта, к которому подключен АЦП |
5 | Номер порта, к которому подключен GPS |
6 | Идентификатор места измерения (строка) |
7 | Длительность записи в один файл, измеряется в минутах |
1.9.Формат файла сохраненных данных
Файл сохранения данных – это двоичный файл, предназначенный для длительного хранения файлов на сервере репликации, а также устройстве, на котором они получены при отсутствии соединения с интернетом. Такие файлы могут быть часовыми, суточными или большего периода времени. Названия файлов генерируются по схеме: имя каталога/имя файла – дд_мм_гггг/чч_мм_сс – дата и время начала записи.
Таблица 3 Формат файла сохраненных данных
Описание | Тип данных | Байт |
Заголовок: | | |
Описание станции (код по классификации) | char[5] | 5 |
Версия регистрирующей программы (на данный момент 9) | byte | 1 |
День начала записи | int | 4 |
Месяц начала записи | int | 4 |
Год начала записи | int | 4 |
Время начала записи с начала суток в секундах | int | 4 |
Количество каналов данных (одновременно получаемые наборы данных) | byte | 1 |
Частота получения данных (Гц) | double | 8 |
Разрядов в единице данных (в битах) | byte | 1 |
Причина начала записи | char[8] | 8 |
Данные | | |
Блоки двоичных данных, размерности Число каналов*Разрядность | | |
Блоки, целиком состоящие из нолей, за которыми следуют специальные данные: например, данные GPS приемника, магнитное склонение, время или коды ошибок оборудования. | | |
Конец файла | | |
Описание станции (код по классификации) | char[5] | 5 |
Версия регистрирующей программы (на данный момент 9) | byte | 1 |
День конца записи | int | 4 |
Месяц конца записи | int | 4 |
Год конца записи | int | 4 |
Время конца записи с начала текущих суток в секундах | int | 4 |
Широта | double | 8 |
Долгота | double | 8 |
Магнитное склонение | double | 8 |
Были ли ошибки при записи | bool | 1 |
Причина завершения записи | char[8] | 8 |
1.10.Формат сохраненных данных (автономная система наблюдения)
Поскольку организация файловой системы на Flash памяти посредством микроконтроллера является требовательной ко времени операцией, было решено использовать всю карту памяти под область данных с сохранением данных о текущем месте записи во внутренней памяти контроллера с последующей передачей этих данных в мобильную подсистему. При окончании записи на карту памяти ставится специальная ESC последовательность. Блоки данных идут подряд, порядок блоков может быть произвольным. Гарантируется, что значения ESC последовательностей не встречается в данных.
Таблица 4 Формат сохраненных данных во Flash памяти
Описание | Количество байт |
Код устройства, с которого получали данные | 2 |
ESC последовательность начала блока данных АЦП | 2 |
Последовательность блоков значений, полученных с АЦП | разрядность*число каналов*число блоков |
ESC последовательность конца блока данных АЦП | 2 |
ESC последовательность блока данных GPS | 2 |
Значение времени полученное с GPS | 16 |
ESC последовательность блока данных часов реального времени | 2 |
Значение с часов реального времени | 4 |
ESC последовательность ошибки | 2 |
Код ошибки | 1 |
ESC последовательность отчета о самотестировании | 2 |
Отчет о самотестировании | Не определено |
ESC последовательность конца отчета о самотестировании | 2 |
ESC последовательность конца записи | 4 |
1.11.Протокол обмена данными между мобильной и автономной подсистемами
Передача данных и команд, ведется по The Universal Synchronous and Asynchronous serial Receiver and Transmitter (USART) со сторону контроллера и COM (DB9) порта со стороны КПК (на выходе контроллера стоит преобразователь сигнала в RS232). Все тайминги соответствуют стандарту RS232. При этом задействованными являются только 3 контакта TxD, RxD, Dry_ComOn. Соответственно передача, прием и сигнал наличия устройства (должен быть установлен в 1 на протяжении всего времени передачи). Команды представляют собой 8-ми битные последовательности с логической 1 = 2.3-2.5V, 0 = 0.4-0.8V. Ответы на запросы идут в виде 8 бит – код команды, на которую подан ответ, затем сам ответ, длина которого определяется видом команды.
Таблица 5 Команды, понимаемые устройством автономного наблюдения
Команда с COM порта (RxD) | Интерпретация |
128 (0x80) | Перезагрузка устройства, с параметрами из внутренней памяти, на Flash карту поставить ESC последовательность стандартного окончания записи |
192 (0xС0) | Синхронизировать время по GPS, выдать время на Flash память и на TxD |
194 (0xC2) | Работать по возможности с GPS (если он подключен) |
196 (0xC4) | Работать только с часами реального времени (GPS отключить) |
198 (0xC6) | Переключить запись на Flash_2, начать отдавать данные с Flash_1 по TxD непрерывным потоком. |
160 (0xA0) | Установка частоты дискретизации АЦП, затем идут два байта (младший|старший) – частота АЦП (коды частот определены в [12]) |
162 (0xA2) | Установить режим непрерывного преобразования |
164 (0xA4) | Установить режим дискретного преобразования |
168 (0xA8) | Переключить чтение/запись Flash на адрес. Адрес задается следующими 4-мя байтами |
176 (0xB0) | Получение текущей частоты дискретизации АЦП по TxD |
178 (0xB2) | Провести самотестирование, отчет сбросить на Flash и выдать на TxD |
180 (0xB4) | Выдать время с часов реального времени и счетчик разницы с временем GPS по TxD |
182 (0xB6) | Переключится на Flash2, на Flash1 поставить признак конца записи |
184 (0xB8) | Выдать код последней произошедшей ошибки |
186 (0xBA) | Выдать адрес, с которого начата запись на текущий Flash накопитель |
Первым байтом ответа является код команды-вопроса, вторым код ошибки, либо 0. Если вторым байтом идет 0, то затем может следовать ответ на вопрос. Ответы поступают на любой запрос, в таблице 6 приведены только нетривиальные ответы.
Таблица 6 Ответы, которые возможно получить от устройства автономного наблюдения
Ответы с устройства (TxD) | Прикрепленная информация |
192 (0xС0) | 16 байт – время с GPS, записанное на Flash |
198 (0xC6) | Поток байт, оканчивающийся последовательностью 0 255 0 255 |
176 (0xB0) | Два байта – код частоты дискретизации, код можно найти в [12] |
178 (0xB2) | Поток байт, заканчивающийся последовательностью 0 255 |
180 (0xB4) | Шесть байт: первые 4 – данные с часов, следующие 2 – счетчик смещения, относительно GPS либо 0 если включен режим работы без GPS |
184 (0xB8) | 1 байт – код последней ошибки, либо 0 если ошибок не было |
186 (0xBA) | 4 байта – адрес начала записи |
Коды ошибок являются однобайтовыми числами от 0 до 8. Соответствие кодов и ошибок дано в таблице 7. Отчет о самотестировании представляет собой последовательность кодов обнаруженных ошибок, либо 0, если все в порядке.
Таблица 7 коды ошибок оборудования
Код | Описание ошибки |
0 | Нет ошибок |
1 | GPS не подключен, выбран режим работы по возможности с GPS (данная ошибка не является критической и может игнорироваться) |
2 | Часы реального времени отсутствуют |
3 | Flash карта отсутствует |
4 | АЦП отсутствует |
5 | Предполагаемая частота дискретизации АЦП не соответствует реальной частоте дискретизации |
6 | АЦП проигнорировал команду изменения режима работы |
7 | Во внутренней памяти отсутствуют параметры по умолчанию, либо они не верны |
8 | Неизвестная ошибка |
Функциональные требования
1.12.Стационарная подсистема
Стационарная подсистема (см. рис. 1) должна
Подсистема работы с внешними устройствами должна
- Обеспечивать подключение измерительных устройств с использованием драйверов этих устройств
- Предоставлять единый (не зависящий от выбранного устройства) интерфейс доступа к данным подсистеме проверки корректности
- Предоставлять единый интерфейс посылки команд устройствам
Подсистема проверки корректности должна
- Проверять полученные данные на корректность и соответственно реагировать на ошибки
- Проверять полученные команды на корректность и в случае обнаружения ошибок отклонять их
Подсистема хранения и передачи данных должна
- Сохранять полученные данные на носитель в соответствии с форматом 4.2
- Пересылать сохраненные, законченные файлы по протоколу FTP на сервер репликации по команде пользователя, либо по расписанию
Подсистема графического отображения должна
- Обеспечивать корректное и удобное пользователю отображение получаемых данных
- Обеспечивать визуальное оповещение пользователя об ошибках в работе всех подсистем
Ядро должно
- Организовать корректное взаимодействие подсистем
- Обеспечить правильное формирование команд к устройствам
1.13.Мобильная подсистема кратковременного наблюдения
Мобильная подсистема (см. рис. 2) должна
Подсистема работы с GPS и системными часами должна
- Обеспечить прием данных с GPS по протоколам NMEA
- Проверять корректность полученных данных
- Производить синхронизацию системных часов КПК по GPS
Подсистема проверки корректности должна
- Проверять полученные данные на корректность
- Проверять полученные команды на корректность
Подсистема хранения данных должна
- Сохранять полученные данные на носитель в соответствии с форматом 4.2
- Считывать данные с носителя
Интерфейс управления автономной подсистемой должен
- Обеспечивать взаимодействие с внешним устройством по протоколу 4.4
Подсистема графического отображения должна
- Обеспечивать корректное и удобное пользователю отображение получаемых данных
- Обеспечивать визуальное оповещение пользователя об ошибках в работе всех подсистем
Ядро должно
- Организовать корректное взаимодействие подсистем
- Обеспечить правильное формирование команд к устройствам
1.14.Мобильная подсистема автономного наблюдения
Мобильная подсистема (см. рис. 3) должна
Модуль обмена данными с АЦП должен
- Обеспечивать получение данных с АЦП посредством интерфейса SPI
- Настраивать параметры АЦП при запуске системы
Модуль работы с GPS должен
- Обеспечить обнаружение GPS приемника
- Обеспечить получение сигнала времени с GPS
- Подавать команды на синхронизацию часов реального времени
Модуль работы с часами реального времени должен
- Получать время с часов и настраивать их посредством интерфейса I2C
Модуль работы с КПК должен
- Обеспечивать работу с КПК по протоколу 4.4
Модуль работы с внешней Flash памятью должен
- Обеспечить запись и чтение данных с Flash карт посредством интерфейса SPI
Модуль взаимодействия с внутренней Flash памятью должен
- Устанавливать параметры работы по умолчанию при перезагрузке устройства
- Переустанавливать параметры в процессе работы, при получения команды от ядра
Ядро должно
- Обеспечивать корректное взаимодействие модулей
- Диагностировать ошибки в процессе работы и обрабатывать их
- Поддерживать отправку сохраненных данных в мобильную подсистему кратковременного наблюдения
Требования к интерфейсу
1.15.Стационарная подсистема
Интерфейс должен обеспечивать визуальное отображение получаемых данных в привычной, для пользователей системы, форме. Кроме этого интерфейс должен давать пользователям возможность определять параметры работы оборудования и изменять их. Также требуется обеспечить визуальное оповещение пользователя об ошибках с тем, чтобы он предпринял действия по их устранению (переподключение измерительного оборудования и т.д.)
1.16.Мобильная подсистема кратковременного наблюдения
Интерфейс должен обеспечивать комфортное визуальное отображение данных и элементов управления измерительным устройством на экране с малым разрешением. Также требуется сигнализация ошибок и состояния подключенных устройств.
1.17.Мобильная подсистема автономного наблюдения
Интерфейс должен включать систему оповещения пользователя о критических неисправностях в виде включения светодиода красного цвета на корпусе устройства.
Проект
1.18.Средства реализации
В качестве возможных средств реализации для стационарной подсистемы рассматривались языки Паскаль, Си, и C++, для мобильной подсистемы кратковременного наблюдения альтернативами были Си и С++. Обе подсистемы были реализованы на языке Си. В первую очередь это обусловлено наличием в этом языке хороших средств работы с различными устройствами на низком уровне. Эти преимущества компенсируют недостатки, при реализации графического интерфейса, поскольку графический интерфейс является лишь вспомогательной частью и не представляет собой критически важной подсистемы. Скрипт для отправки данных на сервер репликации является отдельной программой, написанной на языке MortScript, что обусловлено выбором в качестве платформы КПК. Поскольку данный скрипт был реализован другим участником проекта, далее он рассматриваться не будет. Программная часть мобильной подсистемы автономного наблюдения была написана на языке Ассемблера ATmega 164P. Выбор обусловлен платформой, на которой работает программная система и отсутствием приемлемых альтернатив.
1.19.Модули и алгоритмы
Система состоит из трех мало взаимодействующих подсистем, которые в свою очередь подразделяются на несколько модулей
- Стационарная подсистема
- Драйвер устройства E24 для COM порта DB9
- Драйвер устройства Е20-10 для USB
- Подсистема работы с внешними устройствами
- Подсистема проверки корректности
- Графический интерфейс
- Хранение данных
- Ядро
- Драйвер устройства E24 для COM порта DB9
- Мобильная подсистема кратковременного наблюдения
- Драйвер устройства E24 для RS232
- Подсистема работы с GPS и системными часами
- Подсистема проверки корректности
- Подсистема управления автономной подсистемой
- Подсистема графического отображения
- Ядро
- Драйвер устройства E24 для RS232
- Мобильная подсистема автономного наблюдения
- Модуль обмена данными с АЦП
- Модуль работы с GPS
- Модуль работы с часами реального времени
- Модуль работы с КПК
- Модуль работы с внешней Flash памятью
- Модуль взаимодействия с внутренней Flash память
- Ядро
- Модуль обмена данными с АЦП
Драйверы устройств E24 и E20-10 для COM DB9 и USB
Функции:
- get_fDtrControl( DCB ) – получить параметры лининии DTR
- set_fDtrControl( DCB, DWORD ) – установить параметры линии DTR
- get_fRtsControl(DCB) – получить параметры линии RTS
- set_fRtsControl( DCB, DWORD ) – установить параметры линии RTS
- open_Port( int PORT ) – открыть порт
- SendCommand(BYTE cmd, BYTE par1, BYTE par2, DWORD leng) –отправить команду c двумя параметрами на АЦП
- SendCommand(BYTE cmd, WORD par, DWORD leng) –отправить команду с одним параметром на АЦП
- ConfigE24COM() – сконфигурировать E24 с заданными параметрами
- StopE24() – остановить E24
- InitE24() – включить E24
- ConfigE20-10USB() – сконфигурировать E20-10 с заданными параметрами
- StopE20-10() – остановить E20-10
- InitE20-10() – включить E20-10
Описание работы подсистемы:
Подсистема представляет собой набор функций, обеспечивающих корректную работу с внешними устройствами. Функции Init и Stop предназначены для включения и выключения соответствующих устройств, линии DTR и RTS для оповещения устройств об отсылке им данных или о получении данных с них. Функции Config используются для конфигурирования устройств согласно параметрам, выбранным пользователем. Функция open_Port используется для выбора устройства и типа подключения, переменная PORT это не номер порта, а его внутренний код в программе.
Подсистема работы с внешними устройствами
Функции:
- Read_block() – читать блок сформированных данных с внешнего устройства, посредством драйвера
- Read_com_data() – читать данные с устройства, подключенного к COM порту
- Read_usb_data() – читать данные с устройства, подключенного к USB порту
- Set_active_chan() – установить активные каналы
- Get_active_chan() – считать активные каналы с текущего устройства
Описание работы подсистемы:
Подсистема объединяет функции работы с внешними устройствами, такие как, чтение данных с них, посылка команд управления и в дополнение является оберткой для драйверов устройств. Работа остальных подсистем с устройствами происходит только через эту подсистему. Передача параметров “в” и “из” этих функций происходит через глобальные переменные, что усложняет работу, но делает обращение на нижние уровни более быстрыми.
Подсистема проверки корректности
- test_E() – запуск процедуры тестирования аппаратного обеспечения с выдачей отчета пользователю
- LZero() – проверка получаемых данных на 0
- FindDataErr() – остальные проверки данных на корректность
Описание работы подсистемы:
Данная подсистема является важнейшей частью всей системы получения данных, поскольку ошибки, не замеченные на этом этапе, позже могут привести к труднообнаруживаемым ошибкам в расчетах. Поэтому общение с внешними устройствами идет только через нее (см. рис. 1). Дополнительно эта подсистема включает процедуру самотестирования и исправления простейших ошибок, таких как смещение ноля и т.д. путем внутренней калибровки устройств и других похожих методов.
Графический интерфейс
- Re_Draw() – перерисовка данных на экране, при получении новых
- Init_Plot() – начальная инициализация графического интерфейса
Описание работы подсистемы:
Данная подсистема обеспечивает пользовательский интерфейс и отображение данных в виде графика для удобства представления данных. Данные с разных каналов обозначаются разными цветами.
Хранение данных
- File_Block() – запись накопленного в памяти блока данных в файл
- Init_File(BYTE kl) – инициализация нового файла, kl – причина инициализации
- Start_prog_file() – сохранение текущей конфигурации в файл формата 4.1
Описание работы подсистемы:
Подсистема хранения и передачи данных осуществляет сохранение полученного с устройства блока данных в файл формата 4.2, и загрузку начальных параметров работы из файла 4.1
Ядро
- GetTimeI()
- SetTimeI( TIME )
- initAll()
- stopAll()
- closeAll()
- main()
Описание работы подсистемы:
Ядро является центральной подсистемой включающей в себя функцию main, содержащую главный цикл программы. И процедуры запуска загрузки и инициализации устройств и файлов. Помимо этого для стационарной подсистемы процедуры работы с часами компьютера внесены в ядро.
Драйвер устройства E24 для RS232
- SendCommand( HANDLE hCom, BYTE cmd, WORD par, DWORD length )
- SendCommand(HANDLE hCom, BYTE cmd, BYTE par1, BYTE par2, DWORD length)
- ReadComData(HANDLE hCom, void* data, DWORD count)
- ReadBlock(HANDLE hCom)
Описание работы подсистемы:
В отличие от стационарной подсистемы линии RTS и DTR устанавливаются автоматически, но при этом устройству требуется внешнее питание. Также в отличие от стационарной подсистемы в КПК usb порт работает как преобразователь сигнала RS232 в линии TxD и RxD, поэтому для устройств подключаемых к COM порту и к USB порту можно использовать один и тот же драйвер
Подсистема работы с GPS и системными часами
- InitGPS(LPCWSTR GPSname) – процедура запуска GPS модуля
- ReadBlockGPS(HANDLE hCom) – прочитать блок данных с GPS
- parseGPS(unsigned char * str) – процедура преобразования данных полученных с GPS во внутренний формат программы
- SinchronizeClock(HANDLE hCom) – синхронизировать часы КПК по GPS
Описание работы подсистемы:
Подсистема представляет собой набор процедур для получения данных с модуля GPS по протоколам NMEA. Подсистема определяет наличие GPS, получает с него данные о точном времени, синхронизирует по ним системные часы. Также подсистема записывает в файл данные о географической и магнитной привязке (долгота, широта, магнитное склонение)
Модуль управления автономной подсистемой
- SendCommand(HANDLE hCom, BYTE cmd, WORD par) – послать команду автономной подсистеме код и параметры согласно протоколу 4.4
- ReadAns(HANDLE hCom) – получить данные с линии TxD устройства
- ParseAns() – обработать ответ полученный от автономной подсистемы
Описание работы подсистемы:
Механизм работы данной подсистемы похож на работы с GPS приемником, с той разницей, что изменился протокол обмена данными.
Подсистема графического отображения в КПК
- initCl(HINSTANCE hInstance) – инициализация нужных графических режимов КПК
- drawFon(HINSTANCE hdc) – рисование самого окна для отображаемых данных на нужном устройстве
- drawGraph(MSG msg) – отображение сообщения пользователю на экране
- ReDraw(HINSTANCE hdc) – перерисовка графика функции при получении новых данных
Подсистема графического отображения в КПК значительно отличается от аналогичной стационарной подсистемы. Это обусловлено отличием в графической подсистеме Windows Mobile по сравнению с обычным Windows.
Ядро мобильной подсистемы
- main() – вызывает все перечисленные процедуры в нужном порядке и обеспечивает контроль ошибок с оповещением пользователя
Мобильная подсистема автономного наблюдения
Эта подсистема представляет собой набор реакций на прерывания, получаемые от различных внешних устройств, для их обработки. Каждый модуль реализован в виде одной или нескольких процедур
- ReadIntUSART0 – получить секундный сигнал с GPS
- ReadIntUSART1 – получить команду с КПК
- WriteUSART1 – послать ответ на КПК
- ChangeSlaveSPI – переключить текущее SPI устройство (2=Flash1, 1=Flash2, 0=АЦП)
- ReadIntSPI – прочитать данные с устройства SPI
- WriteSPI – записать данные на устойство SPI
- ReadIntClock – получить сигнал с часов реального времени
- WriteI2C – настроить часы реального времени
USART0 – GPS
USART1 – КПК
Приведенные названия указываются в комментариях к ассемблерному коду рядом с настоящими названиями. Настоящие названия процедур соответствуют номеру прерывания, на которое они реагируют.
1.20.Проект интерфейса
Интерфейс стационарной подсистемы приведен на рисунке 4 Центральную часть экрана занимает график, необходимый специалистам для быстрой оценки поступающих данных, в верхней части экрана находятся описание каналов устройства и текущее время. Справа расположена информационная панель, на которую выводятся текстовые сообщения.
Рисунок 4 Интерфейс стационарной подсистемы наблюдения
Интерфейс мобильной подсистемы представлен на рисунке 5. При работе на КПК требуется включить режим Landscape (Альбомный). Информация о рабочих каналах представлена ниже графика, кнопки + и – позволяют быстро установить усиление для выбранного канала. Справа находится информационная панель, на которую выводятся дата, время и данные GPS когда он подключен. Оповещение об ошибках производится мигающей надписью красного цвета с описанием ошибки, также на динамик КПК подается непрерывный звуковой сигнал.
Рисунок 5 Интерфейс мобильной подсистемы наблюдения
Реализация и тестирование
Объем написанного кода на языке Си составляет примерно 3000 строк кода или 115Кб. Автономная подсистема написана на языке ассемблера AVR ATmega 164P и занимает около 900 строк или 25кб кода. Система состоит из 14-ти файлов и разделена на 3 крупные части, которые подробно описаны в разделе “проект”.
Тестирование системы проводилось в различных режимах работы регистрирующего оборудования. При частоте измерений от 0.2 Гц до 100Гц система работала без сбоев. Рабочими частотами регистрации считаются частоты от 1 до 20 Гц. Конфигурация оборудования, на котором проводилось тестирование, указано в требованиях к аппаратному обеспечению.
Фактическое количество пользователей системы 2 человека, специалисты лаборатории магнитометрии ТОИ ДВО РАН, которые занимаются обработкой поступающих данных и созданием моделей геомагнитного поля по этим данным.
Заключение
Таким образом, в процессе курсовой работы мною было сделано:
- Рассмотрены существующие методики решения подобных задач
- Изучены методики написания низкоуровневых программ
- Изучен инструментарий написания программ для КПК
- Изучен инструментарий написания программ для микроконтроллеров фирмы Atmel
- Изучены низкоуровневые протоколы обмена данными между различными устройствами
- Разработаны и реализованы: архитектура программной системы, ее интерфейс, форматы файлов и протокол обмена данными между подсистемами
- Изучены основы и принципы магнитотеллурических исследований земной коры
Сейчас разработана 9-я версия системы, обнаруженные ошибки были устранены при содействии конечных пользователей.
Список литературы
- Модуль E-24 “Техническое описание и инструкция по эксплуатации” 2004 г.
- Модуль E20-10 “Техническое описание” 2006 г.
- описание протокола NMEA, ссылка скрыта
- сайт фирмы LCard, производитель АЦП, ссылка скрыта
- описание аппаратных интерфейсов, ссылка скрыта
- Erickson R. W, Fundamentals of Power Electronics Colorado University 2001
- ATmega164P/V Low-power AVR® 8-bit Microcontroller 2007 г. – спецификация контроллера AVR
- SD Card specification Simplified Version 1.00 October 2001 г
- The I2C Bus Protocol Interface (с) Philips 2002 г. – спецификация протокола I2C
- Serial Peripheral Interface (SPI) Summary (с) Atmel 2004 г.
- Realtime_Clock_DS3231-DS3231S (с) Maxim Integrated Products 2005 г.
- ADC AD7792-7793 (с) Analog Devices 2007 г. – спецификация встроенного АЦП
- описание языка MortScript, ссылка скрыта