ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.06.2020

Просмотров: 104

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


3 ОПИСАНИЕ ПРОГРАММНОГО ПРОДУКТА И СРЕДЫ РАЗРАБОТКИ

3.1 Описание программы, назначение и требования к программе


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

При создании продукта следует учесть такие факторы как:

- достоверность полученных результатов;

- интуитивно понятный для использования программного продукта интер-

фейс;

- представление результатов моделирования как в графическом так и в тек-

стовом виде;

- наглядность полученных результатов;

- возможность усовершенствования и обновления программного продукта.

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

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


3.2 Выбор языка программирования


В настоящее время насчитывается несколько десятков различных языков программирования, которые можно классифицировать по тем или иным признакам. Наиболее общей является классификация по степени зависимости языка программирования от ЭВМ. По этому признаку все языки делят на две большие группы: машинно-зависимые и машинно-независимые (рисунок 1.3).

































Рисунок 3.1 – Классификация языков программирования

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


Различают два уровня машинно-ориентированных языков. К первому уровню относят мнемокоды, а ко второму – автокоды.

Мнемокоды являются языками первого уровня, они наиболее близки к машинным языкам. Однако мнемокод отличается от машинного языка тем, что в нем коды операций заменены соответствующими буквенными (мнемоническими) обозначениями, а цифровые адреса операндов – буквенными или буквенно-цифровыми. Вместе с тем между операторами мнемокода и машинными командами сохраняется взаимно однозначное соответствие. Это соответствие обычно отражается символом 1:1 («один к одному»), который записывается после наименования языка. Естественная форма записи обозначений мнемокода облегчает составление программ, однако чрезмерная детализация машинных операций делает эти программы достаточно громоздкими и маловыразительными.

Автокод сохраняет основные черты мнемокода, однако в нем наряду с символическими аналогами машинных команд допускается использование так называемых макрокоманд, не имеющих прямых аналогов в машинном языке. Автокод утратил приставку 1:1, так как каждая макрокоманда автокода транслируется в группу команд машинного языка («один в несколько»). Программа, записанная на автокоде, становится более компактной и приобретает наглядность.

Машинная ориентированность мнемокодов и автокодов означает, что в их основе продолжает лежать система команд конкретной ЭВМ, поэтому использование таких языков предполагает знание особенностей применяемой ЭВМ, что ограничивает их практическое распространение. От указанного недостатка свободны машинно-независимые языки.

Машинно-независимые языки также делятся на две группы: к первой группе относятся процедурно-ориентированные языки, а ко второй – проблемно-ориентированные.

Процедурно-ориентированные языки предназначены для описания алгоритмов (процедур) решения различных задач, поэтому их часто называют просто алгоритмическими языками. Процедурно-ориентированные языки полностью учитывают особенности решаемых задач и не зависят от конкретной ЭВМ.

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

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


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

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

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

управления, конструкторы, технологи.

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

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

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

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

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


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

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

- использование в Паскале простых и гибких структур управления: ветвлений, циклов;

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

На основе языка Паскаль в данным момент активно развивается независимый проект FreePascal, который в данный момент представил среду разработки Lazarus, использующую компилятор данного проекта. Среда разработки предназначена для визуального программирования, когда разработчик видит большую часть результатов непосредственно на экране монитора уже в процессе своей работы по созданию программы. Визуальное программирование позволяет быстрее создать интерфейс программы, сделать его более качественным за счет наилучшего расположения на экране монитора, избежать многих ошибок уже на этапе проектирования. В отличие от коммерческих продуктов, среда Lazarus разрабатывается под лицензией GPL/LGPL (General Public License), что позволяет использовать создаваемые программы как для личного пользования, так и в коммерческих целях.

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

Таким образом, для создания программного продукта, моделирующего распределение нагрузок от изгиба и кручения по элементам устройств тяжелого машиностроения будем использовать среду разработки Lazarus. В данном проекте использовалась сборка Lazarus 0.9.22 (бета).


3.3 Выбор графической библиотеки для построения 3D моделей


В настоящее время широко используются две стандартизированные графические библиотеки для построения 3D графики, исключая системной обработки

команд: OpenGL и DirectX. До 80-х годов были широко распространено большое количество различных графических библиотек (в основном векторных). В последствии трехмерная графика стала столь же распространенной как двухмерная, поскольку появились быстро совершенствующиеся видеоплаты с графическими ускорителями и z-буфером. Для стандартизации различного графического обеспечения в середине 90-х была разработана Открытая Графическая Библиотека (OpenGL).

OpenGL является одним из самых популярных прикладных программных интерфейсов (APIApplication Programming Interface) для разработки приложений в области двумерной и трехмерной графики.

Стандарт OpenGL (Open Graphics Library – открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc. /3/


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

На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ. Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свободно распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux.

Характерные особенности OpenGL обеспечивают распространение и развитие этого графического стандарта.

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

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

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

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

Другим вариантом отображения 3D объектов является DirectX API – доминирующее средство для разработки игр под операционную систему Windows. В настоящее время 90% компьютерных игр для Windows пишутся под эту технологию. DirectX – это набор драйверов, служащий для работы программы напрямую с устройствами, минуя операционную систему, которая задерживает всю работу программы с оборудованием, используя неоптимальные механизмы и алгоритмы, и, осуществляя ненужные проверки. DirectX состоит из компонентов (модулей), каждый из которых предназначен для реализации определённой задачи: вывода двухмерной и трёхмерной графики, создания управления, воспроизведения звуков и музыки и так далее. Реализовав в программе возможности модулей DirectX, они создают интерфейс между программой-клиентом и драйвером устройства, поддерживающим DirectX. Благодаря этому, DirectX позволяет создавать быстрые мультимедийные приложения, в частности быстродействующие игры. Если в других приложениях (отличных от игр) быстродействия Windows хватает, то с играми ситуация иная. Для программиста использование возможностей библиотеки DirectX сводится к использованию высокоуровневых интерфейсов.