Разработка прикладного программного обеспечения для многоканального измерительного прибора Ш9327

Современные инструменты разработки программного обеспечения для СУТП. Универсальные языки программирования и сравнение их со SCADA-системами. Разработка программного обеспечения с использованием многоканальных измерительных преобразователей Ш9327.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 13.07.2011
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования Российской Федерации

Российский государственный профессионально-педагогический университет

Электроэнергетический факультет

Кафедра микропроцессорной управляющей вычислительной техники

Пояснительная записка к дипломной работе

Разработка прикладного программного обеспечения для многоканального измерительного прибора Ш9327

Екатеринбург

2003

РЕФЕРАТ

программирование многоканальный измерительный прибор

Дипломная работа содержит 105 страниц машинописного текста, 12 таблиц, 40 рисунков, список из 13 использованных источников, 2 приложения (7 страниц).

Ключевые слова: Программное обеспечение, система управления, технологический процесс, программирование, универсальный язык программирования, С++ Builder, интерфейс, м форма.

В работе проведен анализ современных инструментов разработки программного обеспечения для систем управления технологическими процессами.

Разработано прикладное программное обеспечение для управления многоканальным измерительным преобразователем Ш9327.

СОДЕРЖАНИЕ

  • Введение
  • 1. Анализ современных инструментов для разработки программного обеспечения СУТП
    • 1.1 Обзор характеристик SCADA-пакетов, применяемых для разработки ПО СУТП
    • 1.2 Основные характеристики универсальных языков программирования и сравнение их со SCADA-системами
  • 2. Описание разработанного программного обеспечения
    • 2.1 Описание работы программы
    • 2.2 Структурная схема разработанного программного обеспечения
    • 2.3 Главная форма
    • 2.4 Формы текущей диагностики
    • 2.5 Формы работы с протоколами и архивами
    • 2.6 Формы интерфейсов управления
    • 2.7 Блок-схема работы разработанного ПО
  • 3. Методическая часть
    • 3.1 Планирование проведения лабораторных работ
    • 3.2 Лабораторная работа № 1
    • 3.3 Лабораторная работа № 2.
  • 4. БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ
    • 4.2 Краткая характеристика технологического процесса
    • 4.3 Объемно-планировочное решение. Эргономические требования к рабочему месту
    • 4.4 Освещенность
    • 4.5 Санитарно-гигиенические требования. Микроклимат
    • 4.6 Шум
    • 4.7 Неионизирующие излучения
    • 4.8 Требования к организации режима труда и отдыха
    • 4.9 Требования техники безопасности
  • 5. Экологичность проекта
  • 6. Экономическая часть
  • Заключение
  • Библиографический список
  • Приложение 1
  • Приложение 2

Введение

В настоящее время идет постоянное усовершенствование технологии и усложнение систем управления технологическими процессами и поэтому проблемы эффективного и рационального управления технологическими процессами становятся сегодня весьма актуальны.

Современные разработчики систем управления стараются использовать в СУТП приборы, которые позволяют измерять и контролировать большое количество различных параметров. Эти приборы имеют, как правило, большое число измерительных каналов с настраиваемым нормированием входных сигналов, а также аналоговые и релейные выходы, позволяющие управлять вспомогательными устройствами. Также у них имеются стандартные порты для наладки связи приборов друг с другом и с ЭВМ (RS-232 и RS-485). Это открывает широкие возможности их применения в СУТП. Одним из таких приборов является многоканальный измерительный преобразователь Ш9327 производства НПФ “Сенсорика”.

Учитывая, что современные СУТП реализуются с использованием ПЭВМ в качестве верхнего уровня управления, необходимо, чтобы интерфейс оператора современной системы управления был разработан в операционной среде Windows, имел удобное оконное представление с хорошим графическим оформлением данных и широкими возможностями использования баз данных.

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

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

Были поставлены следующие задачи:

- анализ современных средств разработки СУТП и выбор оптимальной среды для разработки;

- создание программного интерфейса для управления МИП Ш9327;

- разработка внутренних программных механизмов;

- отладка разработанного программного обеспечения.

Система управления технологическим процессом, построенная с использованием МИП Ш9327 имеет следующую структуру (Рис. 1):

Рис 1. Структура СУТП с использованием Ш9327

На рис. 1 обозначены:

- ПЭВМ - управляющая персональная ЭВМ;

- МИП 1, МИП 2 … МИП 32 - Многоканальные измерительные преобразователи Ш9327 производства НПФ “Сенсорика”;

- РП 1, РП 2 … РП 7 - приборы расширения (увеличивают число входов-выходов приборов);

- RS-485 - вид порта, используемого для организации связи между приборами и ПЭВМ. Интерфейс RS-485 позволяет использовать до 32 приборов.

Программа должна соответствовать следующим исходным требованиям:

- работа под управлением ОС Windows, удобный пользовательский интерфейс, хорошее оконное и графическое решение, наглядность представления данных;

- эффективный контроль технологического процесса;

- обеспечение управления и получения информации с многоканальных измерительных преобразователей Ш9327, разработанных фирмой “Сенсорика”;

- производить текущую диагностику оборудования для выявления неисправностей и отклонений в технологическом процессе;

- осуществлять анализ показаний приборов на предмет отклонений в технологическом процессе;

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

Все вышеперечисленные требования были взяты за основу при разработке программного обеспечения для СУТП.

1. Анализ современных инструментов для разработки программного обеспечения СУТП

Существуют две ветви средств для разработки программного обеспечения систем управления технологическим процессом:

1. SCADA-системы;

2. Универсальные средства разработки (современные объектно-ориентированные языки программирования).

Проведем сравнительный анализ этих средств.

1.1 Обзор характеристик SCADA-пакетов, применяемых для разработки ПО СУТП

В настоящее время номенклатура SCADA-систем, применяемых в промышленных системах управления (СУ), весьма широка. При построении СУ используются как отечественные (VNS, Trace Mode-5, СКАТ, “Имидж”, MIKSys), так и импортные (Factory Link, In Touch, Genesis, RealFlex, FIX Dynamix и др.) SCADA-пакеты.

С точки зрения использования SCADA-систем в СУ важны следующие их характеристики:

- качество документации;

- техническая поддержка в России;

- открытость;

- масштабируемость;

- полнофункциональность;

- надежность;

- ресурсоемкость;

- цена.

Качество сопроводительной документации - ее полнота, язык, на котором поставляется.

Техническая поддержка в России - качество поддержки со стороны поставщика SCADA-системы при решении проблем, возникающих у пользователей.

Открытость - возможность сопряжения системы с пакетами других фирм (ПО технологических контроллеров, СУБД, другие SCADA, языки программирования)

Масштабируемость - возможность увеличения/уменьшения числа характеристик управляемых объектов и самих объектов в больших пределах.

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

Надежность - отсутствие ошибок в программном коде самого пакета, а также устойчивость к ошибкам во внешних компонентах и некорректным действиям обслуживающего персонала.

Ресурсоемкость - насколько мощный компьютер требуется для разработки и эксплуатации данной системы.

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

Такие характеристики, как качество документации и техническая поддержка в России, наиболее высоки у отечественных SCADA-систем. Среди импортных SCADA-пакетов данные характеристики высоки у систем Ginesis и FIX Dynamix. С другой стороны, такие характеристики, как открытость, масштабируемость, полнофункциональность и надежность лучше у импортных SCADA-систем. Ресурсоемкость существенно колеблется у разных SCADA-пакетов. Наиболее оптимальной ресурсоемкостью характеризуются из импортных пакетов - Ginesis, а из отечественных - Trace Mode-5.

Цена импортных SCADA-систем колеблется от $10000 до $20000, а отечественных от $600 до $5000 без учета средств на адаптацию пакета к конкретной автоматизированной системе управления. При этом, импортные SCADA-системы на порядок превосходят отечественные по характеристикам открытость, масштабируемость, полнофункциональность и надежность. В этом смысле импортные SCADA-системы внедрять более удобно и надежно, чем отечественные.

1.2 Основные характеристики универсальных языков программирования и сравнение их со SCADA-системами

Современные языки программирования, такие как Borland C++ Builder 5.0, являясь универсальными средствами разработки, составляют конкуренцию SCADA-системам.

Рассмотрим SCADA-системы в сравнении с Borland C++ Builder 5.0.

1. SCADA-системы при разработке выгодны большим числом заготовок, компонентов, которые с высокой степенью вероятности могут быть использованы в любой СУ. Но при этом, работе требуется разработка конкретных мнемосхем оборудования - ни в одной SCADA-системе нет заготовок для специализированных элементов схемы. Их придется разрабатывать вручную, возможно на том же Builder 5.0. Отображение неисправностей на мнемосхемах предусмотрено не во всех SCADA-системах.

В отличие от SCADA-систем, C++ Builder не имеет большого набора компонентов и заготовок, которые сразу же можно применить для построения СУ, однако при этом есть возможность создавать только те компоненты и с теми характеристиками, которые потребуются для конкретной системы управления. Размещение компонентов на формах для отображения выполняется в C++ Builder аналогичным образом, как и в большинстве SCADA-систем. Отображение неисправностей на мнемосхемах формируется разработчиком так, как этого требует техническое задание на СУ.

Таким образом, трудоемкость разработки мнемосхем и экранов отображения примерно одинакова как в SCADA-системе, так и в Builder.

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

В С++ Builder 5.0 специальных средств для работы с диагностикой не предусмотрено. Предусмотрены универсальные средства для работы с базами данных (БД), которые позволяют организовать БД любой структуры, в которых можно хранить большие объемы информации и работать с этой информацией на любых разработанных для этой цели интерфейсах. Критерии для занесения информации в диагностику также формируются разработчиком под конкретную СУ.

Таким образом, в SCADA-системах, как правило, потребуется доработка или адаптация пакета, отвечающего за формирование, регистрацию и просмотр диагностики, а в Builder потребуется разработка модуля, отвечающего за формирование, регистрацию и просмотр диагностики.

3. В SCADA-системах для получения информации с контроллеров, устройств, приборов требуется, чтобы драйверы к ним были выполнены в определенном формате, что далеко не всегда имеет место. Наиболее часто приборы, имеющие приемлемое соотношение цена/качество, не имеют драйверов, подходящих для использования напрямую в SCADA-системе. Кроме того, формат обменов, подходящий для SCADA-систем, отличается медлительностью.

В Builder 5.0 легко интегрировать любой драйвер для любого устройства и также легко разработать драйвер для любого прибора, контроллера и устройства.

Таким образом, в SCADA-системах могут возникнуть сложности и существенные разработки при стыковке с приборами, контроллерами и устройствами, а в С++ Builder 5.0 таких сложностей не будет.

4. В SCADA-системах для организации работы ядра разрабатываемой программы используется язык программирования Microsoft Visual Basic (как правило). Этот язык имеет достаточно бедные возможности в плане программирования, и в процессе создания программы возможно потребуется из-за этого интегрировать в нее модули, написанные на других языках. А это в целом понижает надежность и устойчивость системы.

В С++ Builder 5.0 возможности программирования практически неограниченны.

Таким образом, для организации внутреннего ядра программы Builder выгоден, больше чем SCADA-система.

5. В процессе эксплуатации, если возникает необходимость изменения исходного проекта, то в SCADA-системе отдельные коррекции - по форме отображения результатов, или сортировке данных - делать намного проще, чем в проекте, выполненном на Builder (возможно, даже не потребуется привлечение разработчиков). Но, если возникает необходимость сделать принципиальные коррекции по изменению количества или сути характеристик технологических объектов, то трудоемкость изменений примерно сопоставима как в Builder , так и в SCADA, и эти коррекции требуют привлечения специалистов, выполнявших разработку проекта.

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

Таким образом, выполнение коррекции сопоставимо по времени и трудоемкости как в SCADA-системах, так и в Builder.

6. Стоимость SCADA-систем весьма высока (порядка 10000$-20000$) и зависит от количества точек съема информации, количества приборов и компьютеров, задействованных в СУ.

При этом степень отработанности SCADA-системы зависит от предшествующего опыта практической реализации систем управления на определенное максимальное количество точек съема информации. Например, если с помощью конкретной SCADA-системы разрабатывались СУ с максимальным количеством точек не более 500-1000 штук и, соответственно, разработчики SCADA-системы устранили все выявленные ошибки, переход на проектирование СУ с 2000-5000 и более точек съема информации может вызвать новые вопросы к разработчикам SCADA-системы.

Таким образом, для проектируемых СУ с высокой степенью ответственности (под конкретные цели и сравнительно небольшим бюджетом), которые будут поддерживаться, обслуживаться и дорабатываться внешним разработчиком, больше подходит пакет программного обеспечения Builder, учитывая, что стоимость пакета Builder порядка 1000$-3000$ (в зависимости от комплекта поставки) и не зависит от количества компьютеров, на которые установлено данное программное обеспечение, а трудоемкость разработки мнемосхем и экранов отображения примерно одинакова как в SCADA-системе, так и в Builder.

Выводы:

1. Использование SCADA-систем при разработке программного обеспечения СУ требует больших финансовых затрат, связанных с ее приобретением, которые в 4-10 раз выше, чем при использовании универсальных языков программирования.

2. Трудоемкость разработки проектов в SCADA-системе и в универсальных языках программирования примерно одинакова.

3. С точки зрения экономической эффективности и трудозатрат, целесообразно для разработки программного обеспечения СУ использовать пакет программного обеспечения С++ Builder 5.0, как универсальный язык программирования.

2. Описание разработанного программного обеспечения

2.1 Описание работы программы

Разработанная в ходе дипломной работе программа предназначена для управления многоканальным измерительным преобразователем Ш9327 с помощью персонального компьютера из операционной среды Windows. Программа осуществляет постоянный контроль технологического процесса с целью удержания определенных параметров (температуры, давления и т.д.) в заданных интервалах. Программа также производит постоянный опрос оборудования на предмет обнаружения неисправностей и слежение за параметрами технологического процесса. Если проявляется неисправность или происходит существенное отклонение в ТП, то программа сигнализирует об этом загоранием соответствующего табло на панели инструментов и регистрирует неисправность/отклонение в базе соответствующей данных.

Программа написана с использованием MDI-технологии и состоит из нескольких интерфейсов. Существует главная форма (MDI-form), на которой расположены средства управления программой и в пределах которой открываются дочерние интерфейсы (MDI-child) - интерфейсы управления. К ним относятся:

- Техническое состояние приборов;

- Показания и управление;

- Состояние релейных выходов.

Также существуют еще два вида интерфейсов, Работа с архивами и Текущая диагностика.

К интерфейсам работы с архивами относятся:

- Архив диагностики АСУ;

- Архив Диагностики ТП;

- Архив команд оператора.

К архивам текущей диагностики относятся:

- Диагностика оборудования;

- Диагностика отклонений в техпроцессе.

На рис. 2.1 представлена структурная схема разработанного программного обеспечения.

2.2 Структурная схема разработанного программного обеспечения

Рис. 2.1. Структурная схема разработанного ПО

2.3 Главная форма

MainForm - основная форма. Здесь расположены все средства управления программой. (Рис. 2.2).

Рис.2.2. Главная форма

На рис. 2.2 обозначены:

1. Текущая диагностика оборудования. Программа постоянно диагностирует оборудование и при обнаружении неполадки панель начинает сигнализировать (загорается красным цветом);

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

3. Кнопка дает доступ к текущей таблице и архиву неисправностей. При обнаружении неисправности программа сигнализирует об этом и заносит неисправность в протокол (текущую таблицу неисправностей). При завершении работы текущая таблица архивируется, доступ к ней можно получить с помощью кнопки Работа с архивами интерфейса Архив диагностики оборудования;

4. Кнопка дает доступ к текущей таблице и архиву отклонений в техпроцессе. При обнаружении отклонения программа сигнализирует об этом и заносит неисправность в протокол (текущую таблица отклонений). При завершении работы текущая таблица архивируется, доступ к ней можно получить с помощью кнопки Работа с архивами интерфейса Архив отклонений в работе тепловых зон;

5. Кнопка дает возможность просмотреть текущую таблицу и архив команд оператора;

6. Открывает интерфейс Техническое состояние приборов;

7. Открывает интерфейс Показания и управление;

8. Открывает интерфейс Состояние релейных выходов);

9. Выход из программы;

10. В этой панели выводится информация о текущем состоянии АСУ (сообщение об ошибках);

11. В этой панели выводится информация о текущем состоянии ЭТ (сообщение об отклонениях в техпроцессе);

12. В этой панели отображается название текущей операции;

13. В этой панели отображается индикатор, который показывает процент выполнения текущей операции.

2.4. Формы текущей диагностики

1. Текущая диагностика оборудования. (Рис. 2.3).

Рис. 2.3. Форма Диагностика оборудования

Данная форма недоступна для вызова пользователя до тех пор, пока программа не получит от какого-либо прибора сообщения о неисправности. Если это произойдет, то оператор будет предупрежден цветовым сигналом на кнопке АСУ (см. рис. 2.2), а нажатие на этой кнопке даст доступ к интерфейсу Диагностика оборудования (см. рис. 2.3), где отобразятся данные об оборудовании, характере неисправности, дате и времени.

2. Текущая диагностика отклонений в технологическом процессе. (Рис. 2.4).

Рис. 2.4. Форма Отклонения в работе

Данная форма недоступна для вызова пользователя до тех пор, пока программа не обнаружит значительного отклонения в технологическом процессе. Если это произойдет, то оператор будет предупрежден цветовым сигналом на кнопке ЭТ (см. рис. 2.2), а нажатие на этой кнопке даст доступ к интерфейсу Отклонения в работе (см. рис. 2.4), где отобразятся данные об измерительном входе, характере отклонения в работе, дате и времени.

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

2.5 Формы работы с протоколами и архивами

1. Архив АСУ.

В этой форме представлена текущая таблица и архив неисправностей. (Рис 2.5).

Рис. 2.5. Форма Архив диагностики оборудования

Все неисправности, зафиксированные с момента последнего запуска программы, заносятся в текущую таблицу неисправностей. При завершении работы программы, данные из текущей таблицы заносятся в архив неисправностей, доступ к которому можно получить с помощью нажатия кнопки Работа с архивами. (См. рис. 2.5).

2. Архив ТП

В этой форме представлена текущая таблица и архив отклонений в технологическом процессе. (Рис. 2.6).

Рис. 2.6. Форма Архив отклонений в работе тепловых зон

Все отклонения, зафиксированные с момента последнего запуска программы, заносятся в текущую таблицу отклонений в работе. При завершении работы программы, данные из текущей таблицы заносятся в архив, доступ к которому можно получить с помощью нажатия кнопки Работа с архивами. (См. рис. 2.6).

3. Архив команд оператора

В этой форме представлена текущая таблица и архив команд оператора. (Рис. 2.7).

Рис. 2.7. Форма Архив команд оператора

В текущую таблицу заносятся все команды оператора, произведенные с момента последнего запуска программы. При завершении работы программы, данные из текущей таблицы заносятся в архив, доступ к которому можно получить с помощью нажатия кнопки Работа с архивами. (См. рис. 2.7).

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

2.6 Формы интерфейсов управления

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

1. Интерфейс Техническое состояние приборов.

С помощью этого интерфейса оператор может выбрать любой прибор, участвующий в технологическом процессе и изменить его состояние. Каждый прибор идентифицируется и имеет свой адрес, также отображается текущее состояние прибора. С помощью панели управления оператор может выбрать определенный прибор и изменить текущее состояния с помощью одной из клавиш (Измерение, Ожидание, Программирование, Самопроверка). (Рис. 2.8).

Рис. 2.8. Интерфейс Техническое состояние приборов

2. Интерфейс Показания и управление

С помощью этого интерфейса оператор управляет приборами и оценивает показания, поступающие с приборов. На рис. 2.9 обозначены:

1. Позволяет изменить состояние выбранного прибора (Включено/Выключено);

2. Позволяет изменить уставки для каждой точки съема;

3. Позволяет построить график изменения параметра (задается период регистрации параметра). Возможен выбор использования данных для построения графика, текущие или архивные;

4. Начало выполнения задания;

5. Сброс данных задания

Рис. 2.9. Интерфейс Показания и управление

3. Интерфейс Состояние релейных выходов

С помощью этого интерфейса оператор может выбрать любой прибор из используемых в технологическом процессе и поменять режим управления и состояние его релейных выходов. (Рис. 2.10).

Рис. 2.10. Интерфейс Состояние релейных выходов

2.7 Блок-схема работы разработанного ПО

После запуска программы производится постоянный циклический опрос приборов на предмет обнаружения неисправностей, а также контроль технологического процесса с целью обнаружения отклонений. Если зафиксирована неполадка в оборудовании или отклонение в технологическом процессе, программа заносит сведения в протокол. Параллельно программа сообщает об отклонениях и неполадках пользователю, высвечивая красным цветом соответствующую панель (см. рис. 2.2).

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

Блок-схема работы программы приведена на рис. 2.11.

Рис. 2.11. Блок схема работы ПО

3. Методическая часть

3.1 Планирование проведения лабораторных работ

Основная функция, которую выполняют лабораторные работы при изучении электротехники - это практическое овладение учащихся умениями.

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

Планирование лабораторных работ осуществляется с помощью методических рекомендаций по выполнению лабораторных работ. Рассмотрим традиционную структуру методики проведения лабораторных работ.

В методических рекомендациях даются:

- тема лабораторной работы;

- цель лабораторной работы;

- краткие теоретические положения (в этой части руководство к проведению лабораторной работы дублирует содержание учебника);

- перечень оборудования и аппаратуры для проведения лабораторной работы;

- порядок выполнения, краткое описание приемов деятельности учащихся;

- контрольные вопросы.

Приведенная структура методических рекомендаций в настоящее время используется во всех типах учебных заведений (училищах, техникумах, вузах).

3.2 Лабораторная работа № 1

Тема: “Изучение основных правил и принципов программирования в среде С++ Builder. Создание простейшего приложения”.

Цель: “Научить основным правилам и принципам программирования в среде программирования С++ Builder”.

Материально-техническое обеспечение:

ПК AMD Athlon 900, CD-ROM, дисковод 3,5”,Kb,Mouse, монитор.

Теоретические сведения

Borland C++ Builder - выпущенное недавно компанией Borland средство быстрой разработки приложений, позволяющее создавать приложения на языке C++, используя при этом среду разработки и библиотеку компонентов Delphi. В настоящей статье рассматривается среда разработки C++ Builder и основные приемы, применяемые при проектировании пользовательского интерфейса.

C++ Builder представляет собой SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель (слева) и палитру компонентов (справа). Помимо этого, по умолчанию при запуске C++ Builder появляются окно инспектора объектов (слева) и форма нового приложения (справа). Под окном формы приложения находится окно редактора кода, рис. 3.1.

Формы являются основой приложений C++ Builder. Создание пользовательского интерфейса приложения заключается в добавлении в окно формы элементов объектов C++ Builder, называемых компонентами. Компоненты C++ Builder располагаются на палитре компонентов, выполненной в виде многостраничного блокнота. Важная особенность C++ Builder состоит в том, что он позволяет создавать собственные компоненты и настраивать палитру компонентов, а также создавать различные версии палитры компонентов для разных проектов.

Рис. 3.1. Среда разработки C++ Builder

Компоненты C++ Builder

Компоненты разделяются на видимые (визуальные) и невидимые (невизуальные). Визуальные компоненты появляются во время выполнения точно так же, как и во время проектирования. Примерами являются кнопки и редактируемые поля. Невизуальные компоненты появляются во время проектирования как пиктограммы на форме. Они никогда не видны во время выполнения, но обладают определенной функциональностью (например, обеспечивают доступ к данным, вызывают стандартные диалоги Windows и др.), рис. 3.2.

Для добавления компонента в форму можно выбрать мышью нужный компонент в палитре и щелкнуть левой клавишей мыши в нужном месте проектируемой формы. Компонент появится на форме, и далее его можно перемещать, менять размеры и другие характеристики.

Рис. 3.2. Пример использования видимых и невидимых компонентов

Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы.

Если выбрать компонент из палитры и добавить его к форме, инспектор объектов автоматически покажет свойства и события, которые могут быть использованы с этим компонентом. В верхней части инспектора объектов имеется выпадающий список, позволяющий выбирать нужный объект из имеющихся на форме, рис. 3.3.

Рис.3.3. Инспектор объектов

Свойства компонентов

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Многие свойства компонента в колонке свойств имеют значение, устанавливаемое по умолчанию (например, высота кнопок). Свойства компонента отображаются на странице свойств (Properties). Инспектор объектов отображает опубликованные (published) свойства компонентов. Помимо published-свойств, компоненты могут и чаще всего имеют общие (public), опубликованные свойства, которые доступны только во время выполнения приложения. Инспектор объектов используется для установки свойств во время проектирования. Список свойств располагается на странице свойств инспектора объектов. Можно определить свойства во время проектирования или написать код для видоизменения свойств компонента во время выполнения приложения.

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

События

Страница событий (Events) инспектора объектов показывает список событий, распознаваемых компонентом (программирование для операционных систем с графическим пользовательским интерфейсом, в частности для Windows, предполагает описание реакции приложения на те или иные события, а сама операционная система занимается постоянным опросом компьютера с целью выявления наступления какого-либо события). Каждый компонент имеет свой собственный набор обработчиков событий. В C++ Builder следует писать функции, называемые обработчиками событий, и связывать события с этими функциями. Создавая обработчик того или и ого события, вы поручаете программе выполнить написанную функцию, если это событие произойдет.

Для того чтобы добавить обработчик событий, нужно выбрать на форме с помощью мыши компонент, которому необходим обработчик событий, затем открыть страницу событий инспектора объектов и дважды щелкнуть левой клавишей мыши на колонке значений рядом с событием, чтобы заставить C++ Builder сгенерировать прототип обработчика событий и показать его в редакторе кода. При этом автоматически генерируется текст пустой функции, и редактор открывается в том месте, где следует вводить код. Курсор позиционируется внутри операторных скобок {...}. Далее нужно ввести код, который должен выполняться при наступлении события. Обработчик событий может иметь параметры, которые указываются после имени функции в круглых скобках. Рис. 3.4.

Рис. 3.4. Прототип обработчика событий.

Методы

Метод является функцией, которая связана с компонентом, и которая объявляется как часть объекта. Создавая обработчики событий, можно вызывать методы, используя следующую нотацию: ->, например:

Edit1->Show( );

Отметим, что при создании формы связанные с ней модуль и заголовочный файл с расширением *.h генерируются обязательно, тогда как при создании нового модуля он не обязан быть связан с формой (например, если в нем содержатся процедуры расчетов). Имена формы и модуля можно изменить, причем желательно сделать это сразу после создания, пока на них не появилось много ссылок в других формах и модулях.

Важным элементом среды разработки C++ Builder является контекстное меню, появляющееся при нажатии на правую клавишу мыши и предлагающее быстрый доступ к наиболее часто используемым командам.

Создание приложений в С++ Builder

Первым шагом в разработке приложения C++ Builder является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт меню File/New Application.

C++ Builder создает файл проекта с именем по умолчанию Project1.cpp, а также make-файл с именем по умолчанию Project1.mak. При внесении изменений в проект, таких, как добавление новой формы, C++ Builder обновляет файл проекта. Рис. 3.5.

Проект или приложение обычно имеют несколько форм. Добавление формы к проекту создает следующие дополнительные файлы:

файл формы с расширением *.dfm, содержащий информацию о ресурсах окон для конструирования формы;

файл модуля с расширением *.cpp, содержащий код на C++;

заголовочный файл с расширением *.h, содержащий описание класса формы.

Рис. 3.5. Файл проекта

Когда вы добавляете новую форму, файл проекта автоматически обновляется.

Для того чтобы добавить одну или более форм к проекту, выберите пункт меню File/New Form. Появится пустая форма, которая будет добавлена к проекту. Можно воспользоваться пунктом меню File/New, выбрать страницу Forms и выбрать подходящий шаблон из репозитория объектов. Рис. 3.6.

Рис. 3.6. Шаблоны форм

Для того чтобы просто откомпилировать текущий проект, из меню Compile нужно выбрать пункт меню Compile. Для того, чтобы откомпилировать проект и создать исполняемый файл для текущего проекта, из меню Run нужно выбрать пункт меню Run. Компоновка проекта является инкрементной (перекомпилируются только изменившиеся модули).

Если при выполнении приложения возникает ошибка времени выполнения, C++ Builder делает паузу в выполнении программы и показывает редактор кода с курсором, установленным на операторе, являющемся источником ошибки. Прежде чем делать необходимую коррекцию, следует перезапустить приложение, выбирая пункт меню Run из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows.

Ход работы:

Создание простейшего приложения

Теперь попробуем создать простейшее приложение, позволяющее вводить текст в редактируемое поле и добавлять этот текст к списку при нажатии мышью на кнопку.

Шаг 1. Создание формы, размещение объектов на форме.

Выберем пункт меню File/New Application для создания проекта и сохраним его главную форму под именем samp1.cpp, а сам проект под именем samp.mak. Поместим на форму компоненты Button, Edit и ListBox со страницы Standard палитры компонент. Рис. 3.7.

Рис. 3.7. Размещение компонентов на форме

После этого выберем на форме компонент Edit и удалим текущее значение свойства Text. Затем установим свойство Caption для Button1 равным "Добавить".

Шаг 2. Написание обработчика события для объекта Button.

Чтобы добавить обработчик события OnClick для кнопки Добавить, нужно выбрать эту кнопку на форме, открыть страницу событий в инспекторе объектов и дважды щелкнуть мышью на колонке справа от события OnClick. В соответствующей строке ввода появится имя функции. C++ Builder сгенерирует прототип обработчика событий и покажет его в редакторе кода. После этого следует ввести следующий код в операторные скобки { ... } тела функции:

void __fastcall TForm1::Button1Click(TObject *Sender) { if (!(Edit1->Text == "")) { ListBox1->Items->Add(Edit1->Text); Edit1->Text = "" ; } }

Шаг 3. Компиляция и запуск приложения. Проверка работоспособности программы.

Для компиляции приложения в меню Run выберем пункт Run. Теперь можно что-нибудь ввести в редактируемое поле, нажать мышью на кнопку Добавить и убедиться, что вводимые строки добавляются к списку. Рис. 3.8.

Рис. 3.8. Так выглядит готовое приложение.

Шаг 4. Модификация приложения путем добавления кнопок Добавить и Удалить и написание соответствующего им кода.

Теперь модифицируем приложение, добавив кнопки Удалить и Выход. Для этого добавим еще две кнопки, изменим их свойство Caption и создадим обработчики событий, связанных с нажатием на эти кнопки. Рис. 3.9.

Рис. 3.9. Модифицированное приложение

Для кнопки Удалить:

void __fastcall TForm1::Button2Click(TObject *Sender) { if (!(ListBox1->ItemIndex == -1)) ListBox1->Items->Delete(ListBox1->ItemIndex); }

Для кнопки Выход:

Close();

Шаг 5. Сохранение, компиляция и запуск готового приложения.

Сохраним и скомпилируем приложение, а затем протестируем его.

Итак, мы познакомились со средой разработки Borland C++ Builder и создали простое приложение. В следующих уроках будут описаны приемы манипуляции компонентами на форме и более подробно рассмотрены особенности поведения различных компонентов в приложении.

3.3 Лабораторная работа № 2

Тема: “Изучение компонентов, их свойств и средств управления компонентами в среде С++ Builder. Создание сложного приложения на примере текстового редактора ”.

Цель: “Изучение компонентов, их свойств и средств управления компонентами в среде С++ Builder. Создание сложного приложения на примере текстового редактора ”.

Материально-техническое обеспечение:

ПК AMD Athlon 900, CD-ROM, дисковод 3,5”,Kb,Mouse, монитор.

Теоретические сведения

В этом уроке рассматриваются приемы манипуляции компонентами на форме и рассматривается пример применения некоторых наиболее часто используемых компонентов. Также будет создано сложное приложение с использованием основных компонентов среды Borland C++ Builder.

Выбор компонентов для групповых операций

Для эффективной разработки пользовательских интерфейсов приложений C++ Builder нередко возникает необходимость в манипулировании компонентами на формах. Большинство операций для манипулирования компонентами находятся в меню Edit. К различным опциям этого меню следует обращаться после того, как на форме вы ран один или несколько компонентов, свойства которых требуется изменить.

Выбрать один компонент можно следующими способами:

- выбрав с помощью мыши компонент на форме;

- выбрав имя компонента в селекторе объектов;

- переходом к компоненту на форме, нажимая клавишу Tab.

Выбрать несколько компонентов можно следующими способами:

- удерживая нажатой клавишу Shift, щелкнуть мышью на каждом компоненте;

- нажать левую клавишу мыши и окружить нужные компоненты прямоугольным контуром.

Установка разделяемых свойств компонентов

Большинство визуальных компонентов имеют общие свойства, (например, Visible, Width, Left). Для установки одинаковых значений общих свойств для нескольких компонентов необходимо выполнить следующие действия:

Выбрать несколько настраиваемых компонентов (Рис. 3.10). При этом страница свойств инспектора объектов будет отображать только те свойства, которые имеются у всех выбранных компонентов;

Рис. 3.10. Выбор нескольких компонентов для групповых операций

Установить значения свойств, общих для выделенных компонентов. Рис. 3.12 показывает результаты изменения свойства Font и Left . Все выбранные компоненты приобрели одинаковые значения этих свойств.

Рис. 3.12. Установка разделяемых свойств компонентов

Изменение размера компонентов

Изменение размера компонента можно проводить как при добавлении его на форму, так и после этого.

При добавлении компонента следует выбрать его на палитре компонентов. Далее нужно поместить курсор мыши на форму, нажать левую клавишу и перемещать мышь, в результате чего на форме появится прямоугольник, изображающий границы будущего компонента. Когда прямоугольник приобретет необходимые размеры, нужно отпустить кнопку мыши (рис. 3.13).

Рис. 3.13. Изменение размера компонента при его добавлении на форму

Если перевести курсор мыши на один из появившихся вокруг компонента маленьких черных квадратиков, курсор мыши изменяет форму. Перемещая этот курсор и вместе с ним границу компонента, можно изменять его размеры.

Для изменения размеров нескольких компонентов следует выбрать их одним из описанных выше способов. Далее нужно выбрать пункт меню Edit/Size. Появится диалоговое окно Size (рис. 3.14). Выберите опции размера. Для точной установки размера в пикселах можно ввести числа в поля Width и Height. Далее нужно нажать кнопку OK.

Рис. 3.14. Установка свойств компонентов c использованием меню EDIT/SIZE

Можно добавить несколько копий компонента одного типа, выбирая компонент из палитры при нажатой клавише Shift. В этом случае вокруг компонента появляется прямоугольник, окружающий этот компонент. После этого каждый щелчок мышью на форме приводит к появлению на ней копии компонента. Закончив режим многократного копирования, следует щелкнуть мышью на инструменте выбора курсора (первая кнопка на палитре компонентов с изображением стрелки).

Выравнивание компонентов

Для выравнивания компонентов на форме можно использовать следующие комбинации клавиш (Табл. 3.1).

Таблица 3.1 Комбинации клавиш, используемые для выравнивания компонентов

Shift + стрелки

Изменяет размер компонента на один пиксел в направлении выбранной стрелки

Shift + Ctrl + стрелки

Перемещает компонент на одну единицу сетки в направлении выбранной стрелки

Ctrl + стрелки

Перемещает компонент на один пиксел в направлении выбранной стрелки

Можно также выровнять компоненты, используя пункт меню View/Alignment Palette. Для этого нужно:

выбрать компоненты для выравнивания;

выбрать пункт меню View/Alignment Palette;

выбрать нужную кнопку (см. рис. 3.15).

Рис. 3.15. Выравнивание компонентов с помощью View/Alignment Palette

Можно выровнять компоненты, используя пункт меню Edit/Align. Для этого нужно:

1. выбрать компоненты для выравнивания;

2. выбрать пункт меню Edit/Align. Появится диалоговое окно Alignment;

3. выбрать нужную опцию и нажать на кнопку OK (рис 3.16).

Рис. 3.16. Выравнивание компонентов с помощью меню Edit/Align

Можно изменить условия выравнивания компонент, используя пункт меню Options/Environment (рис. 3.17). Для этого нужно:

1. Выбрать пункт меню Options/Environment. Диалоговое окно Environment появится открытым на странице Preferences.

2. В группе Form designer можно выбрать следующие опции:

3. Display grid - сделать сетку из точек на форме видимой для выравниваемых компонентов;

4. Snap to grid - заставить левые и верхние стороны компонентов расположиться а линиях сетки.

5. Для того, чтобы изменить расстояние между узлами сетки, нужно ввести новые значения вместо имеющихся. Значение по умолчанию -- 8 пикселей по оси X (по горизонтали) и по оси Y (по вертикали).

6. Нажать OK.

Рис. 3.17. Выравнивание компонентов с помощью страницы Preferences диалоговой панели Environment

Ход работы:

Создание сложного приложения на примере текстового редактора

Шаг 1. Создание главной формы и расположение на ней необходимых компонентов.

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

На пустой форме разместим компонент TPanel - будущую инструментальную панель нашего редактора. Свойству Align полученного компонента Panel1 присвоим значение alTop, а свойству Caption - пустую строку.

Далее разместим на форме компонент TMemo и присвоим его свойству Align значение alClient, свойству ScrollBars - значение ssVertical, а свойству Lines - пустой массив строк (редактор свойств, являющихся строковыми массивами, как правило, представляет собой обычный текстовый редактор).

Вспомним о том, что наш будущий текстовый редактор должен открывать и сохранять файлы. Для этой цели воспользуемся стандартными диалогами Windows. Для этого поместим на форму два диалога со страницы Dialogs: TOpenDialog и TSaveDialog. Изменим свойство Filter созданного только что компонента OpenDialog1, внеся две строки в диалоговую панель Filter Editor и нажав кнопку OK (рис. 3.18).

Рис. 3.18. Установка свойства Filter компонента OpenDialog1

Теперь можно взять в буфер обмена строку, образовавшуюся в колонке значений напротив свойства Filter, выбрать компонент SaveDialog1 и вставить содержимое буфера обмена в строку напротив свойства Filter. Этим самым мы установим такое же значение свойства Filter для второго диалога. При желании можно изменить заголовки диалоговых панелей (свойство Caption) и другие параметры (свойство Options).

Обратите внимание на то, что языковая версия библиотеки может быть в общем случае как русской, так и английской, так как это ресурс Windows, а не вашего приложения. Поэтому, если вашим пользователям нужно, чтобы стандартные диалоги Windows были русскоязычными, рекомендуйте им установить русскую версию Windows, либо попробуйте заменить на компьютерах пользователей имеющуюся версию comdlg32.dll на русскоязычную. Впрочем, на странице System имеется достаточное количество компонент для создания "самодельных" диалогов для работы с файлами.

И, наконец, разместим на форме компонент StatusBar со страницы Win. Отредактируем его свойство Panels (это свойство представляет собой набор компонентов-панелей, на которых выводится необходимая пользователю информация). Редактор этого свойства представляет собой диалог (рис.9). Создадим панель, на которой будет появляться имя редактируемого файла. Для этого нажмем кнопку New и изменим параметр Width созданной панели, сделав его равным 100. В поле Text введем значение "Без имени". Затем нажмем кнопку ОК (рис. 3.19).

Рис. 3.19. Установка свойства Panels компонента StatusBar1

Далее выберем с помощью мыши компонент Panel1 и разместим на нем девять компонентов типа TSpeedButton. Сделать это проще всего, нажав клавишу Shift и выбрав SpeedButton со страницы Additional палитры компонентов.

Оснастим наши кнопки рисунками. Для этого присвоим значения свойствам Glyph этих кнопок. С этой целью можно воспользоваться обширным набором картинок, входящих в состав С++ Builder (каталог CBuilder\images\Buttons). Для нашего примера из этого каталога были выбраны файлы Doorshut.bmp,Filenew.bmp, Fileopen.bmp, Fileclose.bmp, Filesave.bmp, Cut.bmp, Copy.bmp, Paste.bmp, Help.bmp (рис.3.20).

Рис. 3.20. Установка свойства Glyph компонентов SpeedButton1,...,SpeedButton9

Шаг 2. Группировка компонентов и создание всплывающих подсказок.

Далее, используя описанные выше приемы манипуляции компонентами, разместим кнопки группами, как показано на рис. 3.21.

Рис. 3.21. Вид главной формы приложения

Присвоим свойству ShowHint этих кнопок значение True, а свойству Hint - значения "Выход", "Создать", "Открыть", "Сохранить", "Сохранить как...", "Вырезать", "Копировать", "Вставить", "О программе". Это приведет к появлению желтых ярлычков с комментариями под кнопками, когда на кнопке находится курсор мыши.

Шаг 3. Создание обработчиков событий.

Кнопка SpeedButton3 отвечает за открытие файла для редактирования и отображение имени файла на панели состояния:

void __fastcall TForm1::SpeedButton3Click(TObject *Sender) { if (OpenDialog1->Execute()) Memo1->Lines->LoadFromFile(OpenDialog1->FileName); StatusBar1->Panels->Items[0]->Text=OpenDialog1->FileName; }

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

void __fastcall TForm1::SpeedButton5Click(TObject *Sender) { if (SaveDialog1->Execute()) Memo1->Lines->SaveToFile(SaveDialog1->FileName); StatusBar1->Panels->Items[0]->Text=SaveDialog1->FileName; }

Кнопка SpeedButton2 отвечает за очистку окна редактирования. Однако в случае, когда в редакти уемом буфере содержится набранный текст, следует спросить пользователя, желает ли он сохранить текст. Для этой цели не имеет смысла создавать отдельную форму, содержащую всего-навсего текст вопроса и две кнопки. Более удобно воспользоваться функцией Windows API MessageBox,имеющей четыре параметра (табл. 3.2).

Таблица 3.2 Параметры функции Windows API MessageBox

Параметр

Объяснение

hWnd

Идентификатор окна-владельца (число, может быть равным 0)

lpText

Текст сообщения (символьная строка)

lpCaption

Заголовок панели сообщения (символьная строка)

uType

Стиль панели сообщения (целая именованная константа, например, MB_OK, MB_ABORTRETRYIGNORE и др.) - полный список стилей можно найти в справочной системе Borland C++ Builder

Возвращаемое значение функции MessageBox - целая именованная константа, указывающая на тип нажатой пользователем кнопки: IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY или IDYES. В нашем случае удобно предложить пользователю выбрать о ну из кнопок "Да" или "Нет" и сохранять набранный текст в виде файла, если пользователь нажмет кнопку "Да" (что именно окажется написанным на кнопке - "Да" и и "Yes" - зависит от языковой версии операционной системы).

Для сохранения набранного текста можно использовать готовую функцию SpeedButton5Click. В соответствии с этим обработчик события при нажатии на кнопку SpeedButton2 будет выглядеть следующим образом:

void __fastcall TForm1::SpeedButton2Click(TObject *Sender) { if (Memo1->Lines->Count>0) { if (MessageBox(0,"Сохранить содержимое окна редактирования? ", "Подтвердите сохранение",MB_YESNO)==IDYES) { SpeedButton5Click(Sender) } }; Memo1->Clear(); StatusBar1->Panels->Items[0]->Text="Без имени"; }

Кнопка SpeedButton1 закрывает окно приложения. В этом случае нужно также предложить пользователю сохранить набранный текст, воспользовавшись только что созданной функцией SpeedButton2Click:

void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { SpeedButton2Click(Sender); Close(); }

Кнопка SpeedButton4 отвечает за сохранение редактируемого файла:

void __fastcall TForm1::SpeedButton4Click(TObject *Sender) { if (StatusBar1->Panels->Items[0]->Text=="Без имени") SpeedButton5Click(Sender); else Memo1->Lines->SaveToFile(StatusBar1->Panels->Items[0]->Text) }

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

Кнопки SpeedButton6 и SpeedButton7 отвечают за перенос и копирование выделенного в окне редактирования фрагмента текста в буфер обмена.

void __fastcall TForm1::SpeedButton6Click(TObject *Sender) { Memo1->CutToClipboard(); } //-------------------------------------------------------- void __fastcall TForm1::SpeedButton7Click(TObject *Sender) { Memo1->CopyToClipboard(); }


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.