Разработка программного обеспечения автоматизированной системы проектирования операций сверления отверстий

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

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык русский
Дата добавления 22.05.2013
Размер файла 295,9 K

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. АНАЛИЗ ПОСТАВЛЕННОЙ ЗАДАЧИ

1.1 Постановка задачи

1.2 Данные для реализации

1.3 Выбор языка и среды программирования

2. РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

2.1 Структура автоматизированной системы

2.2 Разработка алгоритма подготовки и ввода данных

2.2.1 Ввод данных метода обработки и инструмента

2.2.2 Ввод данных о материале инструмента

2.2.3 Ввод данных о материале детали

2.2.4 Проверка и корректировка данных

ЗАКЛЮЧЕНИЕ

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

ПРИЛОЖЕНИЕ

ВВЕДЕНИЕ

Местом прохождения практики студента пятого курса металлургического факультета группы ЗлМ-507 Бейцешвили Г.С. являлась кафедра “Технологии машиностроения, станки и инструменты” (ТМСИ) Южно-Уральского государственного университета (ЮУрГУ).

Производственная практика проходила с 28.01.2012 по 28.02.2012.

Руководитель-преподаватель - доктор технических наук, профессор Дерябин Игорь Петрович.

Цель практики: разработка программного обеспечения автоматизированной системы проектирования операций сверления отверстий.

1. АНАЛИЗ ПОСТАВЛЕННОЙ ЗАДАЧИ

1.1 Постановка задачи

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

- Изучение и разработка алгоритмов сверления.

- Разработка программного обеспечения автоматизированной системы проектирования операций сверления отверстий.

1.2 Данные для реализации

Для реализации поставленных задач была выдана программа, написанная на языке Turbo Basic.

1.3 Выбор языка и среды программирования

Для реализации программного обеспечения выбор был сделан в пользу объектно-ориентированного языка C#, так как язык прост в обращении и достаточно гибок. Среда разработки - Visual Studio 2010, Net Framework 3.5.

2. РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

2.1 Структура автоматизированной системы

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

Рисунок 1. Структура системы компьютерного моделирования

Этап 1. Ввод исходных данных о материале детали и режущей части инструмента; геометрии, погрешности заточки и размерах инструмента; об условиях обработки (осевая подача, точность оборудования, размеры и погрешность заготовки и др.).

Этап 2. Выбор компьютерной модели расчета параметров точности. Сначала рассчитывается положение на режущих лезвиях точки М. В зависимости от положения точки М и наличия отверстия в заготовке (D0 = 0 или D00) выбирается соответствующая компьютерная модель. После выбора модели рассчитываются коэффициенты.

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

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

2.2 Разработка алгоритма подготовки и ввода данных

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

Рисунок 2. Структура системы компьютерного моделирования

2.2.1 Ввод данных метода обработки и инструмента

При запуске программы выводится диалоговое окно (рисунок 3.) типа обработки, по умолчанию сразу загружается окно выбора сверления:

Рисунок 3. Выбор перехода

в котором можно выбрать режим сверления "в сплошном материале" или "по предварительно просверленному отверстию". На вкладке "сверление" можно выбрать тип сверла:

спиральные

перовые

шнековые

ружейные

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

2.2.2 Ввод данных о материале инструмента

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

Рисунок 4. Выбор материала инструмента

2.2.3 Ввод данных о материале детали

Ввод данных о материале детали (рисунок 5.) происходит после выбора материала инструмента. Далее также выбирается группа материала детали и марка стали. База данных также реализована в формате .xml.

Рисунок 5. Выбор материала детали

2.3 Проверка и корректировка данных

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

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

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

На втором этапе ввода данных по нажатию кнопки "ОК" происходит проверка на согласованность данных, например: при сверлении по предварительно просверленному отверстию нельзя ввести диаметр инструмента < диаметра отверстия, или допуски инструмента = 0. Если параметры модели нереальны, программа выдает сообщение об ошибке с указанием рекомендаций по исправлению ошибки (рисунок 6.).

Рисунок 6. Сообщение об ошибке.

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

Рисунок 7. Визуальная проверка данных

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

ЗАКЛЮЧЕНИЕ

Я проходил практику в течение 6-и недель на кафедре ТМСИ Южно-Уральского Государственного Университета. В ходе прохождения практики я достиг поставленной цели - изучил различные типы сверления, разработал алгоритмы для их реализации и написал программу, рассчитывающую параметры точности и позволяющую скорректировать исходные данные для наиболее приемлемых параметров точности.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Джейсон, Прайс; Майк, Гандэрлой - Visual C# .NET. Полное руководство; КОРОНА принт, 2004. - 960 c.

2. Рихтер, Джефри - Программирование на платформе Microsoft .NET Framework 3.5 на языке C#; Питер, 2007. - 656 c.

3. Робинсон, С.; Корнес, О.; Глинн, Д. и др. C# для профессионалов; М.: Лори, 2005. - 306 c.

ПРИЛОЖЕНИЕ

Пример исходного кода главного меню программы

using System;

using System.Collections.Generic;

using System.Globalization;

using System.Drawing;

using System.Linq;

using System.Windows.Forms;

using System.Reflection;

using System.IO;

using System.Threading;

using System.Text.RegularExpressions;

namespace HoleMachining {

public partial class MainForm : Form {

public enum EnMode {

ModeMainMenu,

ModeID1,

ModeID9,

ModeID10,

ModeID23,

ModeIDS568,

ModeID578,

ModeID41,

ModeTAB1K,

ModeOTV01,

ModeOTV02,

ModeOTV03,

ModeOTV04,

ModeOTV05,

ModeOTV06,

ModeOTV07,

ModeOTV08,

ModeOTV09,

ModeOTV10,

ModeUU

}

private Thread ThreadMain;

public bool ExitEvent;

// Строка с версией программы.

public string VersionString = Assembly.GetExecutingAssembly().GetName().Version.ToString();

public double Input;

public EnMode Mode;

public Keys Inkey;

public ManualResetEvent mreInkey;

public ManualResetEvent mreInput;

public Logger Log;

public Terminal terminal;

public MainMenu mainMenu;

public ID41 id41;

public ID1 id1;

public ID9 id9;

public ID10 id10;

public ID23 id23;

public ID578 id578;

public IDS568 ids568;

public TAB1K tab1k;

public OTV01 otv01;

public OTV02 otv02;

public OTV03 otv03;

public OTV04 otv04;

public OTV05 otv05;

public OTV06 otv06;

public OTV07 otv07;

public OTV08 otv08;

public OTV09 otv09;

public OTV10 otv10;

public UU uu;

/// <summary>

/// Чтение заголовка сборки.

/// </summary>

/// <value>Заголовок сборки.</value>

public string AssemblyTitle {

get {

// Get all Title attributes on this assembly

object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes( typeof( AssemblyTitleAttribute ), false );

// If there is at least one Title attribute

if ( attributes.Length > 0 ) {

// Select the first one

AssemblyTitleAttribute titleAttribute = ( AssemblyTitleAttribute ) attributes[ 0 ];

// If it is not an empty string, return it

if ( titleAttribute.Title != "" )

return titleAttribute.Title;

}

// If there was no Title attribute, or if the Title attribute was the empty string, return the .exe name

return Path.GetFileNameWithoutExtension( Assembly.GetExecutingAssembly().CodeBase );

}

}

public MainForm() {

InitializeComponent();

// Создаём экземпляр класса, передавая в качестве параметра компонент,

// на котором будем отображать данные.

terminal = new Terminal( pictureBox1, 80, 25 );

// Экземпляры модулей программы.

mainMenu = new MainMenu( this );

id1 = new ID1( this );

id9 = new ID9( this );

id10 = new ID10( this );

id23 = new ID23( this );

id41 = new ID41( this );

id578 = new ID578( this );

ids568 = new IDS568( this );

tab1k = new TAB1K( this );

otv01 = new OTV01( this );

otv02 = new OTV02( this );

otv03 = new OTV03( this );

otv04 = new OTV04( this );

otv05 = new OTV05( this );

otv06 = new OTV06( this );

otv07 = new OTV07( this );

otv08 = new OTV08( this );

otv09 = new OTV09( this );

otv10 = new OTV10( this );

uu = new UU( this );

}

private void ExitToolStripMenuItem_Click( object sender, EventArgs e ) {

// Завершаем работу потока.

ExitEvent = true;

Inkey = Keys.Q;

mreInkey.Set();

mreInput.Set();

// Ожидаем завершения потока.

if ( ThreadMain != null ) {

ThreadMain.Abort();

ThreadMain.Join();

}

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

Close();

}

private void MainForm_Load( object sender, EventArgs e ) {

// Третья цифра сборки (build) будет равна числу дней начиная с 1 января 2000 года по местному времени.

// Четвертая цифра ревизии (revision) будет установлена в количество секунд от полуночи по местному времени,

// делёное пополам.

int build = Assembly.GetExecutingAssembly().GetName().Version.Build;

int revision = Assembly.GetExecutingAssembly().GetName().Version.Revision;

DateTime bdate = new DateTime( 2000, 1, 1 );

bdate = bdate.AddDays( build );

bdate = bdate.AddSeconds( 2 * revision );

// Создаём экземпляр журнала ошибок.

Log = new Logger( String.Format( "{0}\\{1}.log", Application.StartupPath, AssemblyTitle ), true );

Log.StartLogging( Logger.EnLogMode.lmLogToFile );

Log.info( String.Format( "{0}, версия {1} от {2} {3}", AssemblyTitle, VersionString, bdate.ToLongDateString(), bdate.ToLongTimeString() ) );

// Первоначальные настройки.

Mode = EnMode.ModeMainMenu;

// Событие для выхода из потока.

ExitEvent = false;

// Событие для работы с клавиатурой в потоке.

mreInkey = new ManualResetEvent( false );

mreInput = new ManualResetEvent( false );

// Выводим текст в заголовке формы.

Text = String.Format( "{0}, версия {1} от {2}", AssemblyTitle, VersionString, bdate.ToLongDateString() );

// Выводим текст с описанием работы.

terminal.SetColor( Color.Black, Color.LightGray );

terminal.ClearScreen();

terminal.Print( "ЭМУЛЯТОР КОНСОЛИ (РЕЖИМ ОТЛАДКИ)", 4, 22 );

terminal.Print( "1. Выход из программы: Alt + X (если зависло, то через Диспетчер задач)", 6, 2 );

terminal.Print( "2. Работу меню, списков, базы, ввода проверять при помощи пути:", 8, 2 );

terminal.Print( " Сверление\\в сплошном материале\\Спиральные", 9, 2 );

terminal.Print( "3. Клавиша Q завершает работу эмулируемой программы. Клавиша ESC позволяет", 11, 2 );

terminal.Print( " вернуться по иерархическому меню или закрыть текущее окно выбора.", 12, 2 );

terminal.Print( "4. Файл data.xml обязательно должен присутствовать в текущей папке.", 14, 2 );

}

private void pictureBox1_Paint( object sender, PaintEventArgs e ) {

// Перерисвываем окно терминала.

Image img = new Bitmap( pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height );

Graphics g = Graphics.FromImage( img );

terminal.DrawScreen(g);

e.Graphics.DrawImage( img, pictureBox1.ClientRectangle );

}

public void SetInput( string Text, int Y, int X, int Length, bool Visible ) {

// Вычисление координат для поля редактирования.

Graphics g = pictureBox1.CreateGraphics();

// Узнаём размеры символа для выбранного шрифта.

StringFormat strfmt = StringFormat.GenericTypographic;

strfmt.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;

SizeF sz = g.MeasureString( "A", new Font( "Consolas", 10 ), Point.Empty, strfmt );

g.Dispose();

textBoxInput.Left = ( int ) ( ( X - 1 ) * sz.Width );

textBoxInput.Top = pictureBox1.Top + ( int ) ( ( Y - 1 ) * sz.Height );

textBoxInput.Width = ( int ) ( Length * sz.Width );

textBoxInput.Text = Text;

textBoxInput.Visible = Visible;

ActiveControl = textBoxInput;

}

public void NotImplemented() {

Invoke( new Action<int>( terminal.Screen ), 0 );

Invoke( new Action<Color, Color>( terminal.SetColor ), Color.Black, Color.LightGray );

Invoke( new Action( terminal.ClearScreen ) );

terminal.Print( " ", 10, 30, Color.Black, Color.Red );

for ( int i = 11; i < 14; i++ ) {

terminal.Print( " ", i, 30 );

terminal.Print( " ", i, 47 );

}

terminal.Print( " ", 14, 30 );

terminal.Print( " НЕ РЕАЛИЗОВАНО ", 12, 31, Color.Red, Color.LightGray );

}

// Симуляция Inkey$.

private void MainForm_KeyDown( object sender, KeyEventArgs e ) {

// Запоминаем нажатую клавишу.

Inkey = e.KeyCode;

// Устанавливаем состояние триггера.

mreInkey.Set();

}

private void textBoxInput_KeyDown( object sender, KeyEventArgs e ) {

if ( e.KeyCode == Keys.Return ) {

e.SuppressKeyPress = true;

NumberFormatInfo provider = new NumberFormatInfo() { NumberDecimalSeparator = "." };

Input = 0;

// Проверяем, является ли введённое число типом double.

if ( ( new Regex( @"^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$" ) ).IsMatch( textBoxInput.Text ) ) {

Input = Convert.ToDouble( textBoxInput.Text, provider );

if ( Input == 0 ) {

MessageBox.Show( "Число должно быть отличным от 0." );

} else {

textBoxInput.Visible = false;

ActiveControl = pictureBox1;

// Устанавливаем состояние триггера.

mreInput.Set();

}

} else {

MessageBox.Show( "Число должно иметь тип double." );

}

}

}

private void textBoxInput_Leave( object sender, EventArgs e ) {

// Возвращаем фокус обратно на поле ввода.

this.ActiveControl = textBoxInput;

}

private void Scheduler() {

try {

// Переключение программ.

do {

switch ( Mode ) {

case EnMode.ModeMainMenu: { mainMenu.MainThreadProcedure(); break; }

case EnMode.ModeID1: { id1.MainThreadProcedure(); break; }

case EnMode.ModeID9: { id9.MainThreadProcedure(); break; }

case EnMode.ModeID10: { id10.MainThreadProcedure(); break; }

case EnMode.ModeID23: { id23.MainThreadProcedure(); break; }

case EnMode.ModeID41: { id41.MainThreadProcedure(); break; }

case EnMode.ModeIDS568: { ids568.MainThreadProcedure(); break; }

case EnMode.ModeOTV01: { otv01.MainThreadProcedure(); break; }

case EnMode.ModeOTV02: { otv02.MainThreadProcedure(); break; }

case EnMode.ModeOTV03: { otv03.MainThreadProcedure(); break; }

case EnMode.ModeOTV04: { otv04.MainThreadProcedure(); break; }

case EnMode.ModeOTV05: { otv05.MainThreadProcedure(); break; }

case EnMode.ModeOTV06: { otv06.MainThreadProcedure(); break; }

case EnMode.ModeOTV07: { otv07.MainThreadProcedure(); break; }

case EnMode.ModeOTV08: { otv08.MainThreadProcedure(); break; }

case EnMode.ModeOTV09: { otv09.MainThreadProcedure(); break; }

case EnMode.ModeOTV10: { otv10.MainThreadProcedure(); break; }

} while ( !ExitEvent );

Invoke( new Action<int>( terminal.Screen ), 0 );

Invoke( new Action<Color, Color>( terminal.SetColor ), Color.Black, Color.LightGray );

Invoke( new Action( terminal.ClearScreen ) );

Invoke( new Action<string, int, int, Color, Color>( terminal.Print ),

" ", 10, 30, Color.Black, Color.Blue );

for ( int i = 11; i < 14; i++ ) {

Invoke( new Action<string, int, int>( terminal.Print ), " ", i, 30 );

Invoke( new Action<string, int, int>( terminal.Print ), " ", i, 47 );

}

Invoke( new Action<string, int, int>( terminal.Print ),

" ", 14, 30 );

Invoke( new Action<string, int, int, Color, Color>( terminal.Print ),

" ЗАВЕРШЕНО ", 12, 33, Color.Blue, Color.LightGray );

Thread.Sleep( 2000 );

} catch ( ThreadAbortException ) { }

}

private void MainMenuItem_Click( object sender, EventArgs e ) {

Graphics g = pictureBox1.CreateGraphics();

// Узнаём размеры символа для выбранного шрифта.

StringFormat strfmt = StringFormat.GenericTypographic;

strfmt.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;

SizeF sz = g.MeasureString( "A", new Font( "Consolas", 10 ), Point.Empty, strfmt );

g.Dispose();

Size = new Size( ( int ) ( 80 * sz.Width ) + panel1.Padding.Horizontal,

( int ) ( 25 * sz.Height ) + pictureBox1.Location.Y + panel1.Padding.Top );

// Запускаем основной поток программы.

MainMenuItem.Enabled = false;

ExitEvent = false;

Inkey = Keys.None;

Input = 0;

mreInkey.Reset();

mreInput.Reset();

// Режим главного меню.

Mode = EnMode.ModeMainMenu;

if ( ThreadMain != null ) {

ThreadMain.Abort();

ThreadMain.Join();

ThreadMain = null;

}

ThreadMain = new Thread( Scheduler );

ThreadMain.Start();

MainMenuItem.Enabled = true;

}

}

Размещено на Allbest.ru


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

  • Анализ информационных потоков. Разработка структуры таблиц базы данных. Выбор CASE-средства для проектирования информационной системы и среды программирования. Разработка программных модулей (программного обеспечения). Подготовка справочных баз данных.

    дипломная работа [6,8 M], добавлен 19.11.2013

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

    дипломная работа [1,7 M], добавлен 13.06.2017

  • Разработка вычислительной структуры, реализующей заданный набор операций для обработки запросов в реляционной базе данных (БД). Описание общей структуры системы с машиной баз данных. Разработка схем исполнительных процессоров и алгоритмов их операций.

    реферат [140,3 K], добавлен 27.10.2010

  • Трехмерное моделирование: улучшение алгоритмов рендеринга и просчета трехмерных изображений. Обоснование выбора алгоритмов. Выбор языка программирования и среды разработки. Структура данных и программного комплекса. Системные требования для работы.

    курсовая работа [263,8 K], добавлен 24.06.2009

  • Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и выбор структур данных для ее хранения, разработка основных алгоритмов. Проектирование интерфейса пользователя. Выбор стратегии тестирования и разработка тестов.

    курсовая работа [332,3 K], добавлен 09.12.2014

  • Построение информационно-логической модели базы данных. Корректировка данных средствами запросов. Проектирование алгоритмов обработки данных. Реализация пользовательского интерфейса средствами форм. Разработка запросов для корректировки и выборки данных.

    курсовая работа [680,9 K], добавлен 19.10.2010

  • Автоматизация учета складских операций с целью организации компьютеризации документооборота и учетных операций с помощью Microsoft Visual FoxPro 6.0. Описание структуры базы данных. Этапы проектирования БД. Выбор программного и технического обеспечения.

    курсовая работа [1,1 M], добавлен 26.12.2011

  • Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и оценка структур данных для ее хранения. Разработка основных алгоритмов решения и структурной схемы программного продукта. Проектирование интерфейса пользователя.

    курсовая работа [449,8 K], добавлен 14.01.2011

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

    дипломная работа [2,4 M], добавлен 10.07.2017

  • Автоматизация учёта поступления и обучения детей в "Доме детского творчества". Проектирование программного продукта ИС; выбор системы управления базы данных, языка программирования. Разработка концептуальной, логической и физической моделей данных.

    дипломная работа [1,5 M], добавлен 10.10.2015

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