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

 

СОДЕРЖАНИЕ


ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

ПРИЛОЖЕНИЕ


ВВЕДЕНИЕ


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

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

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

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


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


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


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

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

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


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


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


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


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


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


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


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


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


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

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

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

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


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


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
















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


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

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


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


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

  • спиральные
  • перовые
  • шнековые
  • ружейные

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


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

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

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


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

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


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


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


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

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

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

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


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


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


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

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

ЗАКЛЮЧЕНИЕ


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


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


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

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

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


ПРИЛОЖЕНИЕ


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

using System;System.Collections.Generic;System.Globalization;System.Drawing;System.Linq;System.Windows.Forms;System.Reflection;System.IO;System.Threading;System.Text.RegularExpressions;HoleMachining {partial class MainForm : Form {enum EnMode {,,,,,,,,K,,,,,,,,,,,

}Thread ThreadMain; bool ExitEvent;

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

public string VersionString = Assembly.GetExecutingAssembly().GetName().Version.ToString();double Input;EnMode Mode;Keys Inkey;ManualResetEvent mreInkey;ManualResetEvent mreInput;Logger Log;Terminal terminal;MainMenu mainMenu;ID41 id41;ID1 id1;ID9 id9;ID10 id10;ID23 id23;ID578 id578;IDS568 ids568;TAB1K tab1k;OTV01 otv01;OTV02 otv02;OTV03 otv03;OTV04 otv04;OTV05 otv05;OTV06 otv06;OTV07 otv07;OTV08 otv08;OTV09 otv09;OTV10 otv10; UU uu;

/// <summary>

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

/// </summary>

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

// Get all Title attributes on this assembly[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes( typeof( AssemblyTitleAttribute ), false );

// If there is at least one Title attribute( attributes.Length > 0 ) {

// Select the first onetitleAttribute = ( AssemblyTitleAttribute ) attributes[ 0 ];

// If it is not an empty string, return it( titleAttribute.Title != "" )titleAttribute.Title;

}

// If there was no Title attribute, or if the Title attribute was the empty string, return the .exe namePath.GetFileNameWithoutExtension( Assembly.GetExecutingAssembly().CodeBase );

}

} MainForm() {

InitializeComponent();

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

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

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

// Экземпляры модулей программы.= new MainMenu( this );= new ID1( this );= new ID9( this );= new ID10( this );= new ID23( this );= new ID41( this );= new ID578( this );= new IDS568( this );k = new TAB1K( this );= new OTV01( this );= new OTV02( this );= new OTV03( this );= new OTV04( this );= new OTV05( this );= new OTV06( this );= new OTV07( this );= new OTV08( this );= new OTV09( this );= new OTV10( this );= new UU( this );

}void ExitToolStripMenuItem_Click( object sender, EventArgs e ) {

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

ExitEvent = true;

Inkey = Keys.Q;.Set();.Set();

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

if ( ThreadMain != null ) {.Abort();.Join();

}

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

Close();

}void MainForm_Load( object sender, EventArgs e ) {

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

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

// делёное пополам.build = Assembly.GetExecutingAssembly().GetName().Version.Build;revision = Assembly.GetExecutingAssembly().GetName().Version.Revision;bdate = new DateTime( 2000, 1, 1 );= bdate.AddDays( build );= bdate.AddSeconds( 2 * revision );

// Создаём экземпляр журнала ошибок.= new Logger( String.Format( "{0}\\{1}.log", Application.StartupPath, AssemblyTitle ), true );.StartLogging( Logger.EnLogMode.lmLogToFile );.info( String.Format( "{0}, версия {1} от {2} {3}", AssemblyTitle, VersionString, bdate.ToLongDateString(), bdate.ToLongTimeString() ) );

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

Mode = EnMode.ModeMainMenu;

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

ExitEvent = false;

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

mreInkey = new ManualResetEvent( false );= new ManualResetEvent( false );

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

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

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

terminal.SetColor( Color.Black, Color.LightGray );.ClearScreen();.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 );

}void pictureBox1_Paint( object sender, PaintEventArgs e ) {

// Перерисвываем окно терминала.img = new Bitmap( pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height );g = Graphics.FromImage( img );.DrawScreen(g);.Graphics.DrawImage( img, pictureBox1.ClientRectangle );

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

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

Graphics g = pictureBox1.CreateGraphics();

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

StringFormat strfmt = StringFormat.GenericTypographic;.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;sz = g.MeasureString( "A", new Font( "Consolas", 10 ), Point.Empty, strfmt );.Dispose();.Left = ( int ) ( ( X - 1 ) * sz.Width );.Top = pictureBox1.Top + ( int ) ( ( Y - 1 ) * sz.Height );.Width = ( int ) ( Length * sz.Width );.Text = Text;.Visible = Visible;= textBoxInput;

}void NotImplemented() {( new Action<int>( terminal.Screen ), 0 );( new Action<Color, Color>( terminal.SetColor ), Color.Black, Color.LightGray );( new Action( terminal.ClearScreen ) );.Print( " ", 10, 30, Color.Black, Color.Red );( int i = 11; i < 14; i++ ) {.Print( " ", i, 30 );.Print( " ", i, 47 );

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

}

// Симуляция Inkey$.void MainForm_KeyDown( object sender, KeyEventArgs e ) {

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

Inkey = e.KeyCode;

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

mreInkey.Set();

}void textBoxInput_KeyDown( object sender, KeyEventArgs e ) {( e.KeyCode == Keys.Return ) {.SuppressKeyPress = true;provider = new NumberFormatInfo() { NumberDecimalSeparator = "." };

Input = 0;

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

if ( ( new Regex( @"^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$" ) ).IsMatch( textBoxInput.Text ) ) {= Convert.ToDouble( textBoxInput.Text, provider ); ( Input == 0 ) {

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

} else {.Visible = false;= pictureBox1;

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

mreInput.Set();

}

} else {

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

}

}

}void textBoxInput_Leave( object sender, EventArgs e ) {

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

this.ActiveControl = textBoxInput;

}void Scheduler() { {

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

do {

switch ( Mode ) {EnMode.ModeMainMenu: { mainMenu.MainThreadProcedure(); break; }EnMode.ModeID1: { id1.MainThreadProcedure(); break; }EnMode.ModeID9: { id9.MainThreadProcedure(); break; }EnMode.ModeID10: { id10.MainThreadProcedure(); break; }EnMode.ModeID23: { id23.MainThreadProcedure(); break; }EnMode.ModeID41: { id41.MainThreadProcedure(); break; }EnMode.ModeIDS568: { ids568.MainThreadProcedure(); break; }EnMode.ModeOTV01: { otv01.MainThreadProcedure(); break; }EnMode.ModeOTV02: { otv02.MainThreadProcedure(); break; }EnMode.ModeOTV03: { otv03.MainThreadProcedure(); break; }EnMode.ModeOTV04: { otv04.MainThreadProcedure(); break; }EnMode.ModeOTV05: { otv05.MainThreadProcedure(); break; }EnMode.ModeOTV06: { otv06.MainThreadProcedure(); break; }EnMode.ModeOTV07: { otv07.MainThreadProcedure(); break; }EnMode.ModeOTV08: { otv08.MainThreadProcedure(); break; }EnMode.ModeOTV09: { otv09.MainThreadProcedure(); break; }EnMode.ModeOTV10: { otv10.MainThreadProcedure(); break; }

} while ( !ExitEvent );( new Action<int>( terminal.Screen ), 0 );( new Action<Color, Color>( terminal.SetColor ), Color.Black, Color.LightGray );( new Action( terminal.ClearScreen ) );( new Action<string, int, int, Color, Color>( terminal.Print ),

" ", 10, 30, Color.Black, Color.Blue );( int i = 11; i < 14; i++ ) {( new Action<string, int, int>( terminal.Print ), " ", i, 30 );( new Action<string, int, int>( terminal.Print ), " ", i, 47 );

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

" ", 14, 30 );( new Action<string, int, int, Color, Color>( terminal.Print ),

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

} catch ( ThreadAbortException ) { }

}void MainMenuItem_Click( object sender, EventArgs e ) {g = pictureBox1.CreateGraphics();

// Узнаём размеры символа для выбранного шрифта.strfmt = StringFormat.GenericTypographic;.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;sz = g.MeasureString( "A", new Font( "Consolas", 10 ), Point.Empty, strfmt );.Dispose();= new Size( ( int ) ( 80 * sz.Width ) + panel1.Padding.Horizontal,

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

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

MainMenuItem.Enabled = false;

ExitEvent = false;= Keys.None;= 0;.Reset();.Reset();

// Режим главного меню.= EnMode.ModeMainMenu;( ThreadMain != null ) {.Abort();.Join();= null;

}= new Thread( Scheduler );.Start();.Enabled = true;

}

}


СОДЕРЖАНИЕ ВВЕДЕНИЕ . АНАЛИЗ ПОСТАВЛЕННОЙ ЗАДАЧИ .1 Постановка задачи .2 Данные для реализации .3 Выбор языка и среды программирования . Р

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ