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

Автор работы: Пользователь скрыл имя, 09 Декабря 2012 в 21:50, курсовая работа

Краткое описание

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

Вложенные файлы: 1 файл

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

— 328.50 Кб (Скачать файл)

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

 

ФГАОУ ВПО «Уральский федеральный  университет

им. первого Президента России Б.Н. Ельцина»

 

Кафедра «Информационных  технологий и автоматизации проектирования»

 

 

Оценка за курсовую работу

 

Члены комиссии

 

 

 

 

 

 

 

К У Р С О В А Я    Р А Б О Т А

 

по дисциплине «Информатика»

 

РЕШЕНИЕ ИНЖЕНЕРНО-ТЕХНИЧЕСКИХ  ЗАДАЧ

С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ  ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ

 

вариант №4

 

 

 

 

 

 

Выполнил

Студент:            Проничев И.М.

Группа:              ММ-110503

 

 

Принял(а):         Рыжкова Н.Г.

 

 

 

 

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

2012

Введение

 

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

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

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

 

Задача 1. Расчет трансформатора питания

 

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

Исходные данные приведены  в таблицу 1:

Таблица 1

U, В

S, кв.см

n

m

U1, В

I1, А

U2,В

I2,А

220

0,84

5

2

9

2,5

6

6


 

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

Габаритная мощность (P) трансформатора вычисляется по формуле

  (ватт),

где m – количество вторичных  обмоток, n – коэффициент полезного  действия; U(i) – напряжение на i-ой вторичной  обмотке (вольт); I(i) – величина тока в i-ой вторичной обмотке (ампер).

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

 где U – напряжение  сети (вольт); S – площадь сечения  сердечника (кв. см).

Диаметр провода первичной  обмотки определяется по формуле:

  (мм).

Количество витков i-ой вторичной  обмотки – по выражению:

.

Диаметр провода i – ой вторичной обмотки – по формуле:

 

(мм).

 

 

Структура программы:

 

1. Подключение библиотек

2. Ввод исходные данные

3. Написание функции  calc для вычисления K(i), D(i), Ko и Do в зависимости от введенного пользователем U, Ui, Ii, i

4.  Создание экземпляра класса Tk, отвечающего за создание окон

5.  Создание заголовка

6. Описание в окне буквенных обозначений

7. Создание виджетов

a. Создание полей для введения пользователем U, Ui, Ii, i

b. Создание  в окне ячеек для выведения конечного результата

c. Создание в окне кнопок

d. Отображение главного окна

 

 

 

Код программы:

# -*- coding: utf-8 -*-

#

from Tkinter import *

from math import *

#

S=5

n=0.84

Ui=[]

Ii=[]

# написание функции для  вычисления K(i) , D(i) , Ko и Do в зависимости от введенного пользователем U, Ui, Ii, i

def calc ():

    P=0

    x=int(x_entry.get())

    x=x-1

    U=int(U_entry.get())

    Ui.append(float(U1_entry.get()))

    Ui.append(float(U1_entry.get()))

    Ui.append(float(U2_entry.get()))

    Ii.append(float(I1_entry.get()))

    Ii.append(float(I2_entry.get()))

    Ii.append(float(I2_entry.get()))

    for i in range(x):

        P+=Ui[i]*Ii[i]

    P=P/n

    Ko=(1.83)*(10**6)*(0.95)/(U*S)

    Ko='%.3f' % Ko

    Ko_label.configure(text=('Ko=',Ko))

    Do=sqrt(P/(U*2))

    Do='%.3f' % Do

    Do_label.configure(text=('Do=',Do))

    Pk=38*Ui[x]*1.05/S

    Pk='%.3f' % Pk

    Ki_label.configure(text=('Ki=',Pk))

    Pd=sqrt(Ii[x]/2)

    Pd='%.3f' % Pd

    Di_label.configure(text=('Di=',Pd))

#        

root = Tk()

#

root.title("ЗАДАЧА 1") 

frame = Frame(root)

frame.pack()

# Создарние заголовка

t1_label = Label(frame, bg='wheat', text="Вычисление количества витков и диаметра провода i-ой вторичной обмотки трансформатора", font='arial 14')

t1_label.grid(row=0, column=1, columnspan=4, padx=25,pady=15)

t3_label = Label(frame, text="P - габаритная мощность трансформатора не более 100 ватт;")

t3_label.grid(row=1, column=0, columnspan=4, sticky=W, padx=5)

t4_label = Label(frame, text="m - количество вторичных обмоток;")

t4_label.grid(row=2, column=0, columnspan=4, sticky=W, padx=5)

t5_label = Label(frame, text="n - коэффициент полезного действия;")

t5_label.grid(row=3, column=0, columnspan=4, sticky=W, padx=5)

t6_label = Label(frame, text="U(i) - напряжение на i-ой вторичной обмотке;")

t6_label.grid(row=4, column=0, columnspan=4, sticky=W, padx=5)

t7_label = Label(frame, text="I(i) - величина тока в i-ой вторичной обмотке;")

t7_label.grid(row=5, column=0, columnspan=4, sticky=W, padx=5)

t8_label = Label(frame, text="Ko - количество витков первичной обмотки трансформатора.")

t8_label.grid(row=6, column=0, columnspan=4, sticky=W, padx=5)

t9_label = Label(frame, text="U - напряжение сети;")

t9_label.grid(row=1, column=3, columnspan=4, sticky=W, padx=5)

t10_label = Label(frame, text="S - площадь сечения сердечника;")

t10_label.grid(row=2, column=3, columnspan=4, sticky=W, padx=5)

t11_label = Label(frame, text="Do - диаметр провода первичной обмотки трансформатора;")

t11_label.grid(row=3, column=3, columnspan=4, sticky=W, padx=5)

t12_label = Label(frame, text="K(i) - количество витков i-ой вторичной обмотки трансформатора;")

t12_label.grid(row=4, column=3, columnspan=4, sticky=W, padx=5)

t13_label = Label(frame, text="D(i) - диаметр провода i-ой вторичной обмотки трансформатора;")

t13_label.grid(row=5, column=3, columnspan=4, sticky=W, padx=5)

#

x_label = Label(frame, text="Задайте параметр  i (от 1 до 3)")

x_label.grid(row=7, column=0, padx=5)

x_entry = Entry(frame, width=10)

x_entry.grid(row=7, column=1,sticky=W, pady=5, padx=15)

U_label = Label(frame, text="Введите U")

U_label.grid(row=7, column=2, )

U_entry = Entry(frame, width=10)

U_entry.grid(row=7, column=3,sticky=W, pady=5, padx=25)

U1_label = Label(frame, text="Введите U1")

U1_label.grid(row=11, column=0, padx=5)

U1_entry = Entry(frame, width=10)

U1_entry.grid(row=11, column=1,sticky=W, pady=5, padx=25)

U2_label = Label(frame, text="Введите U2")

U2_label.grid(row=12, column=0, padx=5)

U2_entry = Entry(frame, width=10)

U2_entry.grid(row=12, column=1,sticky=W, pady=5, padx=25)

I1_label = Label(frame, text="Введите I1")

I1_label.grid(row=11, column=2, padx=5)

I1_entry = Entry(frame, width=10)

I1_entry.grid(row=11, column=3,sticky=W, pady=5, padx=75)

I2_label = Label(frame, text="Введите I2")

I2_label.grid(row=12, column=2, padx=5)

I2_entry = Entry(frame, width=10)

I2_entry.grid(row=12, column=3,sticky=W, pady=5, padx=75)

#

Ko_label = Label(frame, bg='white', text=("Ko=?"))

Ko_label.grid(row=14, column=3, sticky=W, padx=2)

Ki_label = Label(frame, width=10, bg='white', text="Ki=?")

Ki_label.grid(row=14, column=1,pady=5,sticky=W)

Do_label = Label(frame, bg='white', text=("Do=?"))

Do_label.grid(row=15, column=3, sticky=W, padx=2)

Di_label = Label(frame, bg='wheat', text="Di=?")

Di_label.grid(row=15, column=1,pady=5,sticky=W)

#

eval_button = Button(frame,  bg='#DBDB70' , text="Вычислить",  command=calc)

eval_button.grid(row=16, column=1, sticky=W, pady=10)

exit_button = Button(frame, bg='red' , text="Выйти",  command=root.destroy)

exit_button.grid(row=16, column=3, padx=10,pady=10)

#

root.mainloop()

 

Результат выполнения программы:

 

 

Вывод:

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

 

 

Задача 2. Расчет и  построение амплитудно-частотной характеристики колебательного контура

 

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

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

 

,

 

Где K – коэффициент усиления, WP – резонансная частота, W – текущая  частота,

Z – относительный коэффициент  затухания, рассчитать таблицу  значений A(W) при изменении частоты  W от 0 до Wкон с шагом DW=0,1*Wкон при различных значениях относительного коэффициента затухания Z, изменяющегося от Zнач до Zкон с шагом Zшаг.

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

Исходные данные приведены  в таблицу 2:

Таблица 2

K

WP

Wкон

Zнач

Zкон

Zшаг

3,0

4,0

8,0

0,1

0,7

0,3


 

Структура программы:

 

    1. Подключение библиотек
    2. Описание функции
    3. Создание виджетов
    1.   Создание главного окна
    1.    Создание заголовка
    2.   Описание в окне буквенных обозначений
    3.   Создание таблицы значений
    4.   Введение исходных данных
    5.   Расчет значений Z
    6.   Создание кнопки закрытия приложения
    7.   Создание графика относительно исходных данных
    8.    Обозначение графиков амплитуды
    9.   Отображение главного окна

 

 

Код программы:

 

# *- coding: utf-8 -*-

#

from Tkinter import *

import math

# описание функции

def amplituda(K, WP, W0, Z):

    return ((K*WP**2)/math.sqrt((WP**2-W0**2)**2+4*Z**2*WP**2*W0**2))

#

root = Tk()

#

root.title("Расчет амплитудно-частотной характеристики колебательного контура")

frame = Frame(root)

frame.pack()

#

t1_label = Label(frame, text="Задача 2. Расчет и построение амплитудно-частотной характеристики колебательного контура", font='Arial 14')

t1_label.grid(row=0, column=0, columnspan=80, sticky=W, padx=25, pady=15)

#

t3_label = Label(frame, text="Коэффициент усиления К = 3")

t3_label.grid(row=1, column=0, columnspan=50, sticky=W, padx=2)

t4_label = Label(frame, text="Резонансная частота WP = 4")

t4_label.grid(row=2, column=0, columnspan=50, sticky=W, padx=2)

t5_label = Label(frame, text="Текущая частота W изменяется от 0 до Wкон=8 с шагом 0.8")

t5_label.grid(row=3, column=0, columnspan=50, sticky=W, padx=2)

t6_label = Label(frame, text="Относительный коэффициент затухания Z изменяется от Zнач=0.1 до Zкон=0.7 с шагом 0.3")

t6_label.grid(row=4, column=0, columnspan=50, sticky=W, padx=2)

#   

a11=Label(frame, fg="#FF00FF", text="%18s" % "W/Z")

a11.grid(row=5, column=0, pady=5, padx=5)

a12=Label(frame, fg="#FF00FF", text="%20.2f" % 0.1)

a12.grid(row=5, column=1, pady=5, padx=5)

a13=Label(frame, fg="#FF00FF", text="%20.2f" % 0.4)

a13.grid(row=5, column=2, pady=5, padx=5)

a14=Label(frame, fg="#FF00FF", text="%20.2f" % 0.7)

a14.grid(row=5, column=3, pady=5, padx=5)

 

canvas1=Canvas(frame, width = 500, height = 395)

canvas1.grid(row=5, column=4, rowspan=12, columnspan=10, padx=10, pady=10)

#

K=3

WP=4

W0=0

Информация о работе Решение инженерно-технологических задач с использованием средств визуального программирования