Судовая информационная измерительная система типа "звезда". База данных
Судовая информационная измерительная система типа "звезда". База данных
Министерство образования и науки Украины Курсовая работа по дисциплине "Информационные измерительные системы" на тему: Судовая информационная измерительная система типа "звезда". База данных 2006 Содержание Введение Постановка задачи Судовая система - Обзор Описание проектного решения Анализ проекта Взаимодействие объектов 3. Пути реализации критериев качества 3.1 Среда разработки 4. Руководство пользователя 4.1 Руководство по программе-серверу Назначение Графическое отображение показаний датчиков Вычисление минимакса Ведение отчета Соединение с датчиками Команды главного меню Ведение отчета Временные интервалы 4.2 Руководство по программам-клиентам Назначение Соединение с сервером Настройка Ведение отчета Заключение Приложение А - Текст программы Введение Концепция организации информации в виде баз данных является значимым фактором при создании систем автоматизированной обработки информации различного назначения и типов организации. Проектирование подобных программно-технических компонентов информационных систем является комплексной задачей, включающей широкий спектр вопросов, начиная от адекватного моделирования предметной области, до выбора необходимых технических и программных средств, написания эргономических интерфейсов и т.д. Как показывает анализ производственной деятельности выпускников кафедры информационных систем, значительное число специалистов работает или в немалой степени связано с разработкой и эксплуатацией всевозможного рода баз данных или средств автоматизации документооборота. Данная информационная система призвана систематизировать постоянно используемую информацию. В широком смысле информационная система представляет собой программный комплекс, функции которого состоят в поддержке надежного хранения информации в памяти компьютера, выполнении специфических для данного приложения преобразований информации или вычислений, предоставлении пользователям удобного и легко осваиваемого интерфейса. Наиболее совершенным, удобным и эффективным средством исследования океана является судовая информационно-измерительная система. Она позволяет проводить комплексные исследования поверхности моря, метеоусловий, подводной среды и многих других параметров, проанализировав которые мы можем получить подробную картину о море, его структуре и особенностях данного региона. На основании полученных данных можно принять решение о дальнейшем практическом применении природных ресурсов. Постановка задачи В данном курсовом проекте была поставлена задача разработать судовую информационно-измерительную систему сбора данных. Система должна состоять из датчиков скорости и направления ветра, температуры, давления и влажности воздуха, обеспечивать снятие показаний через заданные промежутки времени, выводить результаты на экран, сохранять в файле, выводить данные, усредненные по заданному промежутку времени. Целью разработки данной системы является облегчить работу персонала по сбору, обработке, представлению и хранению информации, а так же для более удобного и наглядного представления состояний датчиков. Условия работы данного комплекса -- наличие компьютера-сервера, на котором происходит обработка всей информации, ее наглядное отображение и хранение, а также датчиков в роли которых могут выступать как отдельные компьютеры так и метеорологические зонды. Системные требования для работы системы: для компьютера-сервера - наличие IBM PC совместимого компьютера, с операционной системой Windows 9х/2000, наличие сетевой карты в том случае, если датчики расположены на удаленных машинах, в случае наличия локальных датчиков необходимо наличие на компьютере-сервере интерфейсной части для подключения датчиков; для удаленных датчиков системные требования сохраняются. Для наиболее быстрого, точного и полного исследования измерительная система должна состоять из нескольких комплексов, основными из которых являются метеокомплекc, навигационный комплекс, буксируемый комплекс, измеритель течений, АБС и многое другие. Все эти комплексы должны осуществлять непосредственный обмен между собой. Вся полученная информация должна накапливаться на сервере с распределенной базой данных. Все комплексы должны быть объединены между собой в локальную вычислительную сеть. 1 Судовая система. Обзор Любая судовая ИИС состоит из нескольких комплексов, представляющих собой сложные приборы для изменения параметров водной среды. Каждый элемент такой системы представляет собой ПЭВМ, оснащенную специфическим ПО и системой датчиков. Измерения поступают на блок датчиков, преобразовываются в цифровую форму и затем отображаются на экране дисплея комплекса. Для того, чтобы информация комплекса стала доступной другим комплексам, как внутри корабля, так и за его пределами - организуется специальная база данных с возможностью выхода в Интернет. Благодаря такому способу организации, БД существенно упрощается доступ к исследованиям, проведенными другими судами в разные годы. Каждая система оснащается комплексом GPS -- комплексом спутниковой навигации, позволяющим определить местоположение объекта в любой точке земного шара с точностью до 5 метров. Буксируемый комплекс используется для определения солености, прозрачности и т п. параметров водной среды. Автономный буйковый комплекс служит для длительного измерения в автономном режиме без участия судна. 2 Описание проектного решения 2.1 Анализ проекта На первом этапе анализа необходимо сформулировать требования к системе. Система должна обеспечивать автоматический мониторинг следующих первичных параметров: скорость и направление ветра; - температура воды; - барометрическое давление; - влажность воздуха. Система также должна обеспечивать следующие дополнительные функции: - снятие показаний через заданные промежутки времени; - вывод результатов на экран; - сохранение измерений в файле; - вывод данных, усредненных по заданному промежутку времени; - отображать хронологию показаний датчиков, а так же визуально отображает усредненные значения. Должна быть предусмотрена возможность определения текущего времени и даты, которые будут использоваться при генерации сообщении о максимальных и минимальных значениях первичных параметров за определенный промежуток времени, а также определение времени запуска системы. Необходимо обеспечивать постоянный вывод на дисплей текущих значений всех первичных и производных параметров, а также текущее время и дату. Пользователь должен иметь возможность увидеть максимальные и минимальные значения любого из первичных параметров за заданный интервал времени, сопровождаемые информацией о времени произведения соответствующего замера, проводить калибровку датчиков по известным опорным значениям, а также устанавливать текущие время и дату. Теперь, представив все требования, приступим к моделированию. Разработка данной системы может показаться довольно простой задачей, решение которой позволяет обойтись всего несколькими классами и можно сделать поспешный вывод о том, что в данном случае наиболее простым и эффективным будет отказ от объектно-ориентированного подхода. Но, тем не менее, применение объектно-ориентированного подхода позволит в сжатые сроки расширить или модернизировать систему в случае необходимости. В начале анализа рассмотрим аппаратную часть системы. Это задача системного анализа. Она включает в себя такие вопросы, как технологичность и стоимость системы, которые выходят за рамки данного курсового проекта. Для того, чтобы сузить проблему, ограничимся анализом и проектированием только программных средств, сделаем следующие стратегические предположения об аппаратной части: Используются компьютера-сервера с одним процессором i486 и интерфейсная часть, в роли которой может выступать либо сетевая карта (для удаленных датчиков), либо порты для подключения контроллеров датчиков (порты СОМ или LТР). Системные время и дата поддерживаются встроенными часами, соответствующие значения отображаются в оперативную память. Температура, барометрическое давление и влажность определяются встроенными контроллерами, которые соединены с соответствующими датчиками, а те в свою очередь подключаются к серверу через его интерфейсную часть; показания контроллеров также отображены в оперативную память. Направление ветра измеряется с точностью до одного из 8 направлений. Ввод команд пользователем осуществляется с помощью интерфейса программы - сервера. Экраном служит обычный дисплей. Встроенные таймеры и датчики посылают результаты измерений на компьютер-сервер через заданный промежуток времени. На рис. 2.1 приведена диаграмма, иллюстрирующая состав аппаратной части системы. Рисунок 2.1 -- Аппаратное обеспечение системы мониторинга погоды. На этом этапе анализа абстрагируемся от аппаратной части, чтобы сконцентрировать внимание на программной части системы. Одной из особенностей объектно-ориентированного подхода является стремление говорить на языке проблемной области, что облегчает проведение параллелей между программными абстракциями и ключевыми понятиями исходной задачи. Изменения в аппаратной части оказывают влияние лишь на некоторые нижние уровни системы. Имеет смысл создать простой класс TemperatureSensor (температурный датчик) служит аналогом аппаратного температурного датчика нашей системы. Изолированный анализ поведения этого класса дает в первом приближении следующий результат: Имя: TemperatureSensor Ответственность: Поддержание информации о текущей температуре. Операции: CurrentTemperature - текущая температура SetLowTemperature - установка минимальной температуры setHighTemperature -- установка максимальной температуры Атрибуты: temperature - температура Название операции CurrentTemperature (текущая температура) говорит само за себя. Назначение двух других операций (установка минимальной и максимальной температур) прямо определяется требованием к системе, а именно необходимостью проведения калибровки датчиков. Сигнал от каждого датчика - это число с фиксированной точкой из некоторого рабочего диапазона, граничные значения которого должны быть заданы. Промежуточные значения температуры вычисляются простой линейной интерполяцией между этими двумя точками, как показано на рис. 2.2. Можно задать закономерный вопрос: зачем мы создается специальный класс для данной абстракции, когда в требованиях к системе ясно сказано, что температурный датчик может быть только один? Это верно, но в целях обеспечения возможности повторного использования абстракции мы все же выделяем ее в отдельный класс. На самом деле количество температурных датчиков не должно влиять на архитектуру нашей системы, и, выделяя отдельный класс TemperatureSensor, мы открываем возможность его использования в других программах подобного типа. Абстракция для датчика барометрического давления может выглядеть следующим образом: Имя: Pressuresensor Ответственность: Поддержание информации о текущем барометрическом давлении. Операции: currentPressure - текущее давление setLowPressure - установка минимального давления setHighPressure - установка максимального давления Атриуты: pressure - давление Абстракцию, соответствующую датчику влажности, можно определить следующим образом: Имя: Humiditysensore Ответственность: Поддержание информации о текущей влажности, выраженной в процентах от 0% до 100%. Операции: CurretnHumidity - текущая влажность SetLowHumidity - установка минимальной влажности SetHighHumidity - установка максимальной влажности Атрибуты: Humidity - влажность Абстракция для датчика скорости ветра может выглядеть следующим образом; Имя: WindSpeedSensore Ответственность: Поддержание информации о текущей скорости ветра. Операции: CurrentSpeed - текущая скорость SetLowSpeed - установка минимальной скорости SetHighSpeed - установка максимальной скорости Атрибуты: speed - скорость Требования к системе не предполагают возможности получения скорости непосредственно от датчика; текущая скорость ветра должна определяться как отношение числа оборотов на счетчике к величине интервала времени, за которое производились измерения. Полученное число затем надо умножить на калибровочный коэффициент, значение которого определяется конструкцией измерительного устройства. Этот алгоритм должен быть, естественно, реализован внутри класса. Клиенты не должны заботиться о том, каким образом посчитана текущая скорость ветра. Последний рассматриваемый датчик - датчик определения направления ветра - несколько отличается от всех остальных, так как он не нуждается в вычислении минимальных и максимальных значений. Мы можем определить данную абстракцию следующим образом: Имя: WindDirectionSensor Ответственность: Поддержание информации о текущем направлении ветра, указываемом как точка на розе ветров. Операции: currentDirection - текущее направление Атрибуты: direction - направление Чтобы объединить все классы, относящиеся к датчикам, в одну иерархию, имеет смысл создать еще один абстрактный базовый класс TDatchic, который является непосредственным суперклассом для всех классов. Рис. 2.3 иллюстрирует полную иерархию классов датчиков. Рис.2.3 - Иерархия классов датчиков Однако требования к системе подразумевают наличие общего поведения для всех трех вышеперечисленных классов. В частности, мы должны обеспечить показ текущих значений датчиков в графической форме. Дня этого имеет смысл создать простой класс WindIndicator для графического представления направления ветра. Изолированный анализ поведения этого класса дает в первом приближении следующий результат: Имя: Ответственность: Графическое представления направления ветра. Операции: Update - отображение текущего направления ветра. Абстракций для индикатора температуры TemperatureIndicator может выглядеть следующим образом: Имя: TemperatureIndicator Ответственность: Графическое представления величины температуры. Update -- отображение текущей температуры. Абстракция для индикатора атмосферного давлении PressureIndicator может выглядеть следующим образом: Имя: PressureIndicator Ответственность: Графическое представления величины атмосферного давления. Операции: Update - отображение текущего значения атмосферного давления. Абстракция для индикатора влажности воздуха HumidityIndicator может выглядеть следующим образом: Имя: HumidityIndicator Ответственноcть: Графическое представления величины влажности воздуха. Операции: Update - отображение текущего значения влажности воздуха. Чтобы объединить все классы, относящиеся к индикаторам, в одну иерархию, имеет смысл создать еще один абстрактный базовый класс Indicator, который является непосредственным суперклассом для всех классов. Рисунок 2.4 иллюстрирует иерархию классов индикаторов. Рисунок 2.4 - Иерархия классов индикаторов 2.2 Взаимодействие объектов В системе имеется глобальный объект-сервер и четыре объекта-датчика. Их взаимодействие заключается в следующем. Датчик отсылает показания на сервер в несколько этапов. Сначала полученное значение записывает в динамический список, затем по истечении заданного момента времени он берет первое значение из очереди и суммирует его с предыдущим. Потом проверяется заданное число на осреднение значения. Если мы накопили это число, то отсылается усредненное число, если же нет, то отсылается полученное значение. После вышеперечисленных действий значение из очереди удаляется. Очередь была введена затем, что интервал времени считывания значения, и его отсылки на сервер может не совпадать. Сервер в свою очередь определяет, получил ли он текущее или усредненное значение датчика. Если он получил усредненное значение, тогда он проверяет заданный на сервере интервал времени, обновления минимакса. Если интервал времени истек, тогда значение минимакса за заданный промежуток времени сохраняется в файле отчета и пришедшее значение с датчика присваивается как текущее. Если пришедшее значение с датчика не усредненное, а текущее, тогда обновляется диаграмма текущих показаний. Взаимодействие сервера с датчиками можно представить схемой, представленной на Рис.2.5. Рис.2.5 -- Схема взаимодействия объектов в системе Цикл жизни датчика можно представить схемой представленной на рис. 2.6. Рисунок 2.6 -- Схема жизненного цикла датчика 3. Пути реализации критериев качества 3.1 Среда разработки Чтобы максимально использовать преимущества объектно-ориентированного подхода программа была реализована в среде разработки Delphi 5.5 с использованием дополнительных компонент: DinamicSkinForm v1.6 for Delphi RX Library 2.75 Delphi была выбрана для реализации системы по следующим причинам: Высокопроизводителъный компилятор в машинный код. Объектно-ориентированная модель компонент. Визуальное (а, следовательно и скоростное) построение приложений изпрограммных прототипов. С целью улучшения интерфейса программы с пользователем и более удобного представления показаний датчиков были применены графические компоненты. 4. Руководство пользователя 4.1 Руководство по программе-серверу 4.1.2 Назначение Программа-сервер (далее сервер) предназначена для обработки и отображение информации полученной от датчиков. Сервер может располагаться как на отдельном компьютере, так и на одном компьютере вместе с датчиками. В основные функции сервера входит: Графическое отображение показаний датчиков; Вычисление минимакса за заданный промежуток времени; Ведение отчета 4.1.3 Графическое отображение показаний датчиков Для каждого датчика отображается хронологическая диаграмма, в которой представлено последние несколько измерений, причем при приеме очередного показания датчика все остальные показания смещаются влево. Кроме этого присутствуют индикаторы для наглядного представления усредненных значений по каждому датчику. Эти индикаторы вынесены в отдельное окно, которое можно вызвать, поставив флажок в поле индикаторы в главном окне сервера. 4.1.4 Вычисление минимакса Сервер, по каждому датчику производит мониторинг максимального и минимального значения параметра. Временной диапазон обновления этих значений может быть настроен в диалоговом окне Настройки интервалов, которое можно вызвать из основного меню Настройки --> Интервалы или нажав кнопку «Настроить» на панели инструментов внизу главного окна сервера. 4.1.5 Ведение отчета Сервер может вести отчет, в котором содержится время приема и значения датчиков. Кроме того, через указанные промежутки времени в отчет выводится значение минимумов и максимумов. Кроме показаний датчиков в отчете отображается сведения о подключении и отключения датчиков. Для более удобного просмотра отчета можно нажать на кнопку Просмотреть лог. 4.1.6 Соединение с датчиками Соединение датчиков с сервером осуществляется средствами самих датчиков. Сервер, при успешном соединении с датчиком, помещает в отчет сведения следующего содержания: <Время > Connected: <имя компьютера с датчиком> (<ID-адрес>) При отключении датчика сервер помещает в отчет сведения следующего содержания: <Время > Disconnected: <имя компьютера с датчиком> (<ID-адрес>) О том как подсоединить датчик к серверу указанно в руководстве пользователя по клиентам в разделе Соединение с сервером. 4.1.7 Команды главного меню Главное меню программы сервера расположено в верхней области окна программы и состоит из следующих пунктов меню: Файл Открыть -- открытие существующего файла отчета; Выход -- выход из программы. Настройки * Интервалы -- вызов диалогового окна Настройка интервалов. Справка - вызов справочной системы 4.1.8 Ведение отчета Сервер может вести отчет (отключить или включить отчет можно поставив флажок Enable Log в нижней части окна сервера), в который заносится время и значения датчиков. Кроме того через указанные промежутки времени в отчет заносится значение минимумов и максимумов. Кроме показаний датчиков в отчете отображается сведения о подключении и отключения датчиков. Формат сообщении имеет следующий вид: <Дата> <Время> <Температура> <Влажность> <Давление> <Скорость ветра> Формат состояния подключения датчиков: <Время> <Состояние> < имя компьютера с датчиком > (<ID адрес>) Формат отображения минимакса: <Время> Минимакс за последние <Время обновления минимакса> Температура min <3начение> max <3начение> Влажность min <3пачение> max <3начение> Давление min <3начение>max <3начепие> Ветер min <3начение>max<3пачение> Содержимое отчета отображается в нижней части главного окна сервера. Для более удобного просмотра отчета можно нажать на кнопку Просмотреть лог, Отчет можно сохранить в txt файле (кнопка Сохранить на панели инструментов) или открыть уже существующий (кнопка Открыть лог) или очистить (кнопка Очистить лог). Поведение отчета легко настраивается. Отчет можно либо вести либо не вести. Переключение между этими состояниями производится установкой либо снятия флажка Enable Log в нижней части окна сервера. В диалоговом окне Настройка интервалов производится настройка временных интервалов Обновления отчета и Интервал обновления минимакса. Это диалоговое окно вызывается из основного меню Настройки Интервалы или нажав кнопку Настроить на панели инструментов. Подробнее о настройке этих интервалов описано ниже. 4.1.9 Временные интервалы Временные интервалы - это интервалы Обновления отчета и Интервал обновления минимакса. Эти интервалы влияют на частоту внесения показаний датчиков в отчет и обновление минимальных и максимальных значений соответственно. Их можно настроить в диалоговом окне Настройка интервалов. Это диалоговое окно вызывается из основного меню Настройки - Интервалы или нажав кнопку Настроить на панели инструментов. 4.2 Руководство по программам-клиентам 4.2.1 Назначение Программы-клиенты (далее датчики) предназначены для сбора или генерации различных природных явлений, их обработке (вычисления среднего значения за определенный промежуток времени) и отправки данных на сервер. Датчики делятся на; Датчик температуры Датчик атмосферного давления Датчик скорости и направления ветра Датчик влажности Каждый датчик генерирует в определенном диапазоне и с определенной скоростью значения. Кроме того датчик вычисляет среднее значение параметра по нескольким значениям. В датчике так же присутствует очередь, в которую помещаются не отосланные значения. Каждый датчик ведет отчет измерений, в котором отображается текущее состояние датчика. 4.2.2 Соединение с сервером После запуска датчика необходимо соединится с сервером. Существует два способа соединения: * по IP-адресу сервера (для удаленного соединения с сервером). Для этого необходимо поставить флажок НОSТ or ТСР/IР и ввести в поле IР-адрес машины с сервером и нажать на кнопку Connect. * по имени сервера. Для этого необходимо убрать флажок НОSТ ог ТСР/IР и ввести имя сервера и нажать кнопку Connect. При успешном соединении с сервером в отчет сервера будет добавлена соответствующая запись. Для начала снятия (генерации) датчиком показаний необходимо нажать кнопку §1ап. Однако эта кнопка блокируется, пока датчик не будет успешно соединен с сервером. 4.2.3 Настройка Датчик может быть настроен в соответствии с требованиями пользователя. Настройке подлежат следующие параметры: Time: время генерации датчиком нового значения; Time send: время отправки на сервер сгенерированного значения датчика; Cound: число, определяющее количество отправок после которого будет произведен расчет и отправка на сервер среднего значения. Эти параметры можно настроить в верхней части окна датчика, где содержатся соответствующие поля для их настройки. 4.2.4 Ведение отчета Каждый датчик ведет отчет. Чтобы разрешить ведение отчета необходимо установить флажок Enable Log. В отчете, в зависимости от флага LSD Log, будет выводиться состояние датчика. Флаг LSD Log разрешает добавление в отчет информации о среднем значении датчика за период указанный в поле Count. Отчет можно сохранить на диске (кнопка Сохранить отчет) или очистить (кнопка Очистить лог). Заключение Данный курсовой проект разработан в соответствии с постановкой задачи на курсовое проектирование на тему "Судовая информационно измерительная система" по курсу "Информационно измерительные системы". При написании программы была использована технология OLE Automatic и клиент-серверная структура приложения, которая позволила максимально облегчить написание приложения и использование современных технологий в реализации поставленной задачи. В системе предусмотрена возможность масштабирования и удаленного расположения составных частей системы с помощью локальной и глобальной сети Internet, применен графический интерфейс для облегчения работы пользователя с программой и лучшей визуализации показаний датчиков. Система была проверена в локальной сети. Это свидетельствует о том, что разработанную систему можно внедрять в сферу ее применения. Использование данной системы позволит максимально эффективно проводить обмен информации между рабочими комплексами.
|