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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    271,02 Кб
  • Опубликовано:
    2012-11-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Министерство образования и науки Украины

ПРИАЗОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Факультет Информационных Технологий

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





Пояснительная записка

к смешанной курсовой работе по дисциплинам:

«Современные методы программирования»

И «Теоретические основы электротехники»


Выполнил:

студент группы МА-10

Михайленко А.С.

Проверили:

доцент, к.т.н.

Добровольская Л.А.,

старший преподаватель

Щербаков С.В.

Мариуполь, ПГТУ 2012г.

РЕФЕРАТ

Пояснительная записка объемом 52 с., 4 рис., 1 блок - схема.

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

Ключевые слова: коммутация цепи, закон изменения во времени тока, законы коммутации, классический метод расчёта, операторный метод расчёта, переходные процессы, электродвигатель, асинхронный электродвигатель, повторно-кратковременный режим работы, среда разработки, Builder 6, интерфейс, дистрибутив, методы, свойства, объект.


СОДЕРЖАНИЕ

ВВЕДЕНИЕ

. ПОСТАНОВКА ЗАДАЧИ

. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

. ВЫБОР АЛГОРИТМА И МЕТОДОВ РЕШЕНИЯ ЗАДАЧ ПРОЕКТИРОВАНИЯ

.1 МЕТОД РАСЧЕТА ИНТЕГРАЛА ДЮАМЕЛЯ

.2 ЭЛЕКТРИЧЕСКИЕ МАШИНЫ ПОСТОЯННОГО ТОКА

.3 ТРЕХФАЗНЫЕ АСИНХРОННЫЕ ДВИГАТЕЛИ

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

.1 C++BUILDER 6

.2 ОПИСАНИЕ ФУНКЦИЙ

.3 КОД ПРОГРАММЫ

.4 БЛОК - СХЕМА ВЫВОДА ГРАФИКОВ

ЗАКЛЮЧЕНИЕ

ЛИТЕРАТУРА

ВВЕДЕНИЕ

Целью данного курсового проекта является получение законов изменения электрических величин во времени, расчет машин в режиме двигателя и генератора, а так же асинхронных двигателей. Для этого необходимо изучить методику расчета электрических цепей и расчетов двигателей. Решение должно быть получено в результате выполнения соответствующей программы для ЭВМ, составленной самим студентом.++Builder 6 - это мощная система визуального объектно-ориентированного программирования, позволяющая решать множество задач, в частности:

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

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

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

1.  ПОСТАНОВКА ЗАДАЧИ

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

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

рассчитывать параметры схем МПТ в режиме генератора и в режиме двигателя;

рассчитывать и подбирать асинхронные двигатели в зависимости от входных параметров;

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

2. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

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

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

3. ВЫБОР АЛГОРИТМА И МЕТОДОВ РЕШЕНИЯ ЗАДАЧ ПРОЕКТИРОВАНИЯ

.1 МЕТОД РАСЧЕТА ИНТЕГРАЛА ДЮАМЕЛЯ

Расчет переходных процессов с помощью интеграла Дюамеля

При использовании интеграла Дюамеля переменную, по которой производится интегрирование, обозначают , а момент времени, в который надо найти ток в цепи, обозначают через t. Пусть к цепи с нулевыми начальными условиями в момент времени t = 0 подключается напряжение  (рис. 54).

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

Напряжение u(0) в момент времени t вызовет в цепи ток u(0) g(t), где g(t)- переходная проводимость. В момент времени возникает скачок напряжения . Чтобы найти составляющую тока в момент времени t, вызываемую этим скачком напряжения , необходимо умножить на значение переходной проводимости с учетом времени действия скачка до момента времени t.τΣ

Рис. 1 - К выводу интеграла Дюамеля

Это время равно , следовательно, приращение тока от этого скачка равно .

Полный ток в момент времени t получим, если просуммируем все частичные токи от отдельных скачков и прибавим их к току u(0) g(t):


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

 (9)

Формулу ( 9 ) называют интегралом Дюамеля.

Порядок выполнения расчетов с помощью интеграла Дюамеля

.Определяем переходную проводимость g(t) при определении тока в соответствующей ветви ( или переходную функцию по напряжению k(t) при определении напряжения, приложенного к рассматриваемой ветви) для исследуемой цепи.

.Определяем g(t-τ). С этой целью в формуле для g(t) заменяют t на . Аналогично поступают с k(t),заменяя её на k(t- τ).

. Определяем . Для этого находим производную от заданного напряжения u(t) по времени и в полученном выражении заменяют t на .

. Подставляем найденные на этапах 1, 2, 3 функции в формулу (9), интегрируем по переменной  с учётом установленных пределов.

Рассмотрим применение интеграла Дюамеля для расчёта переходного процесса в схеме (рис. 55б) при подаче на её вход импульса напряжения, изображённого на рис.55а.

Значения параметров схемы примем, как в рассмотренном ранее примере:= 1 кОм, C= 100 мФ. Параметры сигнала: А=1 В, b = 10, t - время, сек.

 

а) б)

Рис. 2 К расчёту переходного процесса с помощью интеграла Дюамеля

Переходная функция по напряжению для рассматриваемой схемы была определена ранее и равна

(t) = 1 - e - 10 t .

Интеграл Дюамеля в этом случае запишется в видевых = Uвх (0) k (t) + ∫ U’(τ) k (t - τ) d τ .

Значения величин, входящих в интеграл Дюамеля:

Uвх (0)=А=1; U’(τ) =-b=-10; k (t - τ)= 1 - e - 10 ( t- τ).

Подставляя эти величины в интеграл Дюамеля, имеем:вых =1(1 - e - 10 t) + ∫ (-10)( 1 - e - 10 ( t- τ)) d τ =

t t

=1 - e - 10 t - 10 ∫ d τ+ 10 e-10 t ∫e10 τ d τ = 1 - e - 10 t - 10 t+ 10 e-10 t(0.1e10 τ| )=

0 0

= 1 - e - 10 t - 10 t+ e-10 t(e10 t-1)= 1 - e - 10 t - 10 t+1 - e- 10 t= 2 - 2e- 10 t-10 t.

Окончательно имеем, что в результате действия импульса заданной формы напряжение на выходе электрической цепи будет изменяться в интервале 0 ≤ t ≤ 0.1 c по законувых = 2 - 2e- 10 t-10 t.

Рис. 3 Зависимости U вых (t) при воздействии на схему различных импульсов напряжения

На рис. 56 показаны построенные с помощью ЭВМ зависимости U вых (t) при воздействии на схему единичного скачка напряжения (1) и при воздействии на схему импульса напряжения рис. 45а (2).

Видно, что на ёмкости С в первом случае напряжение будет равно ≈ 0.63 В, а во втором случае остаточное напряжение будет равно ≈ 0.27 В после окончания действия импульса.

.2 ЭЛЕКТРИЧЕСКИЕ МАШИНЫ ПОСТОЯННОГО ТОКА. ОБЩИЕ ПОЛОЖЕНИЯ И ФОРМУЛЫ

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

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

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

Основные формулы, описывающие электромагнитные процессы в МПТ как в генераторном, так и двигательном режимах работы, следующие.

ЭДС якоря (ЭДС параллельной ветви обмотки якоря)

 , (1.1)

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

Магнитный, поток на полюс

, (1.2)

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

Электромагнитная мощность

Рж = ЕЯ1Я=  (1.3)

Электромагнитный момент

 (1.4)

где  - ток якоря.

Мощность потерь в МПТ

, (1.5)

где, ,, - мощность механических, магнитных (мощность потерь в стали сердечника якоря) и электрических (в обмотке якоря) потерь соответственно, причем , где  - внутреннее сопротивление цепи якоря; - мощность потерь на возбуждение в МПТ с электромагнитным возбуждением, где Iв и UВ - ток в цепи возбуждения и напряжение на ее зажимах, a  - эквивалентное сопротивление этой цепи; Рпд = 0,01РНОМI* - - мощность добавочных потерь, а I* = I/Iном - относительное значение тока МПТ.

Коэффициент полезного действия (КПД)

, (1.6)

где - мощность энергии, подведенной к МПТ, Р2 -полезная мощность МПТ.

Генераторы постоянного тока (основные положения и формулы)

Уравнение напряжения генератора

= Ея- IЯRЯ (1.7)

Полезная электрическая мощность

= UI, (1.8)

где ток генератора

-- параллельном или смешанном возбуждении,

- при других способах возбуждения.

Мощность подведенной механической энергии

 , (1.9)

где - вращающий момент на валу первичного двигателя.

Характеристики генератора:

холостого хода U0= Ея = f(IB) при I = 0 и п = const;

внешняя U = f (I) при = RB + RpB = const и п = const;

регулировочная 1В = f(I) при U = const и п = const, где Rрв - - сопротивление обмотки возбуждения, Дрв -сопротивление регулировочного реостата в цепи возбуждения.

Двигатели постоянного тока ( основные положения и формулы)

Уравнение напряжения

= Ея +  (1.10)

Уравнение движения

М-(М0 + М2) = J,  (1.11)

где М0 - момент холостого хода, обусловленный магнитными и механическими потерями в двигателе, М2 - полезный момент на валу, J - момент инерции вращающихся масс.

В установившемся режиме работы двигателя (при п = const)

М = (М0 + М2) = СоIяФ. (1.12)

Полезная механическая мощность на валу

Р2 -= М2. (1.13)

Мощность электрической энергии, потребляемой из сети

UI+- при независимом возбуждении,

= (1.14)

при других способах возбуждения,

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

Ток двигателя

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

Ток якоря в установившемся режиме

, (1.15)

где IОя - ток якоря в режиме холостого хода.

Угловая скорость вращения в установившемся режиме

 (1.16)

Начальный пусковой ток якоря

 , (1.17)

где Rп - сопротивление пускового реостата в момент пуска.

Начальная кратность пускового тока

 , (1.18)

где - пусковой ток.

ЭДС якоря Ея, электромагнитный момент М, мощность потерь  и КПД определяют по приведенным выше формулам .

3.3 ТРЕХФАЗНЫЕ АСИНХРОННЫЕ ДВИГАТЕЛИ

Общие положения и формулы

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

Конструктивное исполнение: с короткозамкнутым и с фазным ротором (с контактными кольцами).

Режимы, работы асинхронных машин: двигательный (основной), генераторный и тормозной. Наиболее распространены трехфазные асинхронные двигатели (АД).

Номинальные (паспортные) данные двигателя: механическая мощность РНОм напряжение обмотки статора  и ток статора , частота напряжения сети f, частота вращения ротора, КПД ном, коэффициент мощности соsном, напряжение между контактными кольцами при разомкнутой обмотке ротора U20 = Е2 и номинальный ток в обмотке ротора 1ном - для АД с фазным ротором.

В каталогах на двигатели, кроме того, указывают начальную кратность пускового тока Iп* = 1n/1ном , начальную кратность пускового момента Мп* = МП/МНОМ, кратность максимального момента (перегрузочную способность двигателя) Ммах* = Ммах/Мном.

В паспортных данных АД обычно указывают два значения напряжения, например, 380/220 В. Меньшее значение напряжения (220 В) - это фазное напряжение обмотки статора. Если линейное напряжение сети равно этому напряжению, то обмотки статора необходимо соединить треугольником, если линейное напряжение сети равно большему значению UlHOM (380 В), то обмотки статора соединяют звездой. Соответственно указывают и два значения линейного тока I1ном при соединении обмоток звездой и треугольником.

Частота вращения магнитного поля

 (2.1)

где f - частота напряжения сети, р - число пар полюсов в машине. При промышленной частоте f = 50 Гц частота вращения магнитного поля определяется как , n1 = 3000/р.

Скольжение - это относительная разность частот вращения или угловых скоростей магнитного поля и ротора

 , (2.2)

где п2 - частота вращения ротора,  и  - угловые скоростивращения магнитного поля и ротора.

Частота вращения ротора п2=n1(1-s). (2.3)

Частота ЭДС, индуцированной в обмотке статора вращающимся магнитным потоком, равна частоте напряжения в сети

= f2 . (2.4)

Частота ЭДС и тока в обмотке ротора

 (2. 5)

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

, (2.6)

где w1 и w2 - числа витков фазных обмоток статора и ротора, k1 и k2 - их обмоточные коэффициенты.

Из уравнений (2.6) следует, что Е2s = sE2

Коэффициент трансформации ЭДС с учетом (6):

. (2.7)

ЭДС рассеяния обмоток статора и ротора:

, ,

где , ,  индуктивные сопротивления, a  и - индуктивности фазных обмоток статора и ротора, обусловленные потоками рассеяния, причем с учетом уравнения (6) X2s = sX2

Ток ротора

 , (2.8)

где  - комплексное сопротивление фазной обмотки вращающегося ротора, rz - активное сопротивление фазной обмотки вращающегося ротора, r2 - то же неподвижного ротора.

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

 , (2.9)

где - коэффициент трансформации по току» ,и m2 - число фаз обмоток статора и ротора. Для двигателя с фазным ротором m1 = m2 и ki = ke.

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

Рис.4 - Схема замещения асинхронного двигателя

Активная мощность подведенной электрической энергии

р1 = ЗU1фI1ф cos = = U1лI1л cos. (2.10)

Механическая мощность на валу:

Р2 = М22 = 0,105 М2n2 . (2.11)

КПД двигателя

. (2.12)

Мощность потерь в двигателе

 = P пэ1 + Рпэ2 + Рпм1 + Рпмх + Рпд , (2.13)

где РПЭ1 = = 3 и Рпэ2 = = З - мощность электрических потерь в обмотках статора и ротора, Pпм1 - мощность магнитных потерь в сердечнике статора, Рпмх и Рпд = 0,005, Рном - мощности механических и добавочных потерь.

Электромагнитный (вращающий) момент

 , (2.14)

где I2а = I2 cos активная составляющая тока в обмотке ротора, cos= cos (E2^I2), Хк = X1 + Х2’ - индуктивное сопротивление двигателя, а постоянные С и С' соответственно равны

С  С' =.

Критическое скольжение, соответствующее максимальному моменту Mmax

 , (2.15)

где - приведенное добавочное сопротивление реостата в цепи ротора.

Максимальный момент

 . ..... (2.16)

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

 . (2.17)

Критическое скольжение  может быть найдено на основании уравнения (15) по известным параметрам обмотки ротора или из уравнения (17) по известным значениям моментов и скольжения для какого-либо характерного режима работы АД (пуск, номинальный режим). Например, критическое скольжение, соответствующее естественной механической характеристике, может быть найдено по известным для номинального режима скольжению sиом и вращающему моменту М* = 1

 (2.18)

Рабочие характеристики двигателя - это зависимости n2 (Р2), s (P2), М2 (Р2), р1 (P2), (Р2), I1 (Р2), соs (Р2). Или в относительных единицах: n2* (Р2*), s (P2*), М2* (Р2*), р1* (P2*), (Р2*), I1* (Р2*), соs (Р2*) при U = const и f = const.

4. ПРОГРАМНАЯ РЕАЛИЗАЦИЯ

.1 C++BUILDER 6

++Builder - одна из самых мощных систем, позволяющих на самом современном уровне создавать как отдельные прикладные программы Windows, так и разветвленные комплексы, предназначенные для работы в корпоративных сетях и в Интернете. С++Builder - это среда объектно-ориентированного программирования.

Объектно-ориентированное программирование.

Объектно-ориентированное программирование (сокращенно ООП) - это в наше время совершенно естественный подход, к построению сложных (и не очень сложных) программ и систем.

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

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

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

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

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

Основы визуального программирования интерфейса.

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

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

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

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

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

4.2 ОПИСАНИЕ ФУНКЦИЙ

. __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)

Главная функция приложения. В ней происходит запуск базы данных и ini файла.

2. void __fastcall TForm1::ColorButton1Click(TObject *Sender)

Функция для расчёта асинхронных двигателей

. void __fastcall TForm1::ColorButton2Click(TObject *Sender)

Функция для вывода значений расчёта асинхронных двигателей по умолчанию

4. void __fastcall TForm1::ColorButton3Click(TObject *Sender)

Функция для вывода дополнительных графиков для асинхронных двигателей

5. void __fastcall TForm1::BitmapButton6Click(TObject *Sender)

Функция для вывода выходных параметров МПТ в режиме генератора

6. void __fastcall TForm1::ColorButton4Click(TObject *Sender)

Функция для вывода выходных параметров МПТ в режиме генератора по умолчанию

7. void __fastcall TForm1::BitmapButton5Click(TObject *Sender)

Функия для вывода выходных параметров МПТ в режиме двигателя

8. void __fastcall TForm1::ColorButton5Click(TObject *Sender)

Функия для вывода выходных параметров МПТ в режиме двигателя по умолчанию

9. void __fastcall TForm1::BitmapButton7Click(TObject *Sender)

Функция вывода выходных параметров четырёхполюсника

. void __fastcall TForm1::ColorButton6Click(TObject *Sender)

Функция вывода выходных параметров четырёхполюсника по умолчанию

11. void __fastcall TForm1::ColorButton7Click(TObject *Sender)

Функция для вывода графиков четырёхполюсника

4.3 КОД ПРОГРАММЫ.

UNIT1.CPP

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#include "Unit9.h"

//#include <parametru.h>;

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "BitmapButton"

#pragma link "ColorButton"

#pragma link "AdvProgressBar"

#pragma link "GradientLabel"

#pragma link "AdvPageControl"

#pragma resource "*.dfm"

#include <IniFiles.hpp>

#include <bass.h>

#include <math.h>

#include <System.hpp>

//#include <jpeg.hpp>

//#include<complex>chan;samp;*Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

//-------------------------------------------------------------------------;

//Забивание значений в ini файлы;

char WinDirChar[255];(WinDirChar,255);IniFile = (String)WinDirChar +"\\INIin1.ini";

(FileExists(IniFile))

{*Ini = new TIniFile(IniFile);

//Для асинхронных двигателей;->Text = Ini->ReadString("Edits","Edit1","50"); //f частота;->Text = Ini->ReadString("Edits","Edit2","2"); //P- полюса;->Text = Ini->ReadString("Edits","Edit8","1475"); // n2 nom;->Text = Ini->ReadString("Edits","Edit9","4500"); //P nom;->Text = Ini->ReadString("Edits","Edit10","380"); // U1 nom;

//Для МПТ в режиме генератора;

Edit11->Text = Ini->ReadString("Edits","Edit11","10000"); //P nom;->Text = Ini->ReadString("Edits","Edit12","230"); //U nom;->Text = Ini->ReadString("Edits","Edit13","1450"); //n nom;->Text = Ini->ReadString("Edits","Edit14","0.3"); //R якоря;->Text = Ini->ReadString("Edits","Edit15","150"); //R в;

//Для МПТ в режиме двигателя;

Edit21->Text = Ini->ReadString("Edits","Edit21","4200"); //P nom;->Text = Ini->ReadString("Edits","Edit22","210"); //U nom;->Text = Ini->ReadString("Edits","Edit23","1500"); //n nom;->Text = Ini->ReadString("Edits","Edit24","0.20"); //R якоря;->Text = Ini->ReadString("Edits","Edit25","0.78"); //КПД ном;

//Для четырехполюсников;->Text = Ini->ReadString("Edits","Edit31","15"); //A;->Text = Ini->ReadString("Edits","Edit32","1.2"); //tи;->Text = Ini->ReadString("Edits","Edit33","22000"); //R;->Text = Ini->ReadString("Edits","Edit34","0.000125"); //C;

// Для самой формы;->Left = Ini->ReadInteger("Position","left",437);->Top = Ini->ReadInteger("Position","top",139);

->Height = Ini->ReadInteger("Size","Height",600);->Width = Ini->ReadInteger("Size","Width",800);

}

//К заданию асинхроные двигатели таблица;

TStringList *list = new TStringList;>LoadFromFile("d://1.txt");(int i=0;i<list->Count;i++)

{->Rows[i]->Delimiter=' ';->Rows[i]->DelimitedText= list->Strings[i];

}

// проверка корректности загруженной BASS.dll;

if (HIWORD(BASS_GetVersion()) != BASSVERSION)

{>MessageBoxA(0,"Не корректная версия BASS.DLL",MB_ICONERROR);

};

//Инициализвция аудио - по умолчанию ,44100 hz,stereo 16 bits;(!BASS_Init( -1,44100, BASS_DEVICE_3D,0,NULL))

{>MessageBoxA(0,"Ошибка инициализации аудио",MB_ICONERROR);

}_ChannelGetData(chan,fft,BASS_DATA_FFT1024);

}

//---------------------------------------------------------------------------__fastcall TForm1::BitmapButton1Click(TObject *Sender)

{

//Освобождаем объекты перед закрытием;_Stop();//останавливаем проигрывание;_StreamFree(chan);//освобождаем звуковой канал;_Free();//освобождаем ресурсы используемые BASS;

Close();

}

//---------------------------------------------------------------------------

__fastcall TForm1::Image1MouseDown(TObject *Sender,Button, TShiftState Shift, int X, int Y)

{

//Передвижение картинки по экрану;int SC_DRAGMOVE = 0xF012;

if (WindowState!=wsMaximized)

{();(WM_SYSCOMMAND, SC_DRAGMOVE, 0);

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::BitmapButton2Click(TObject *Sender)

{==0;=0;(flag==2)

{=1;

// BASS_ChannelSetPosition(chan,BASS_POS_BYTE);_ChannelPlay(chan,FALSE);=1;

}

{(OpenDialog1->Execute())//пользователь выбирает файл

{

//povtor++;(povtor==2)

{("Вы не можете два раза подряд нажимать плей!!!");

}b=OpenDialog1->FileName;//считываем имя файла*a=b.c_str();//переводим тип AnsiString в char

//создаем поток для нашего MP3 файла

chan=BASS_StreamCreateFile(FALSE, a, 0, 0, 0);

//Запускаем звучание песни_ChannelPlay(chan,FALSE);++;

}

}=1;

}

//---------------------------------------------------------------------------

__fastcall TForm1::FormCreate(TObject *Sender)

{_Init( -1,44100, BASS_DEVICE_3D,0,NULL);

}

//---------------------------------------------------------------------------

__fastcall TForm1::BitmapButton4Click(TObject *Sender)

{(flag==1)

{_ChannelPause(chan);=2;

//return;

}

//---------------------------------------------------------------------------

__fastcall TForm1::BitmapButton3Click(TObject *Sender)

{(flag==1)

{_ChannelStop(chan); // останавливаем звучание_StreamFree(chan); // освобождаем ресурсы=1;

}("Нажмите Play!!!");

//return;

}

//---------------------------------------------------------------------------

__fastcall TForm1::Timer1Timer(TObject *Sender)

{

//Бегущая строка;String InitialCaption = GradientLabel1->Caption;->Caption = GradientLabel1->Caption.SubString(2,(GradientLabel1->Caption.Length() - 1))+ GradientLabel1->Caption.SubString(1,1);(!Caption.Length())->Caption = InitialCaption;

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton1Click(TObject *Sender)

{n1,I1nom,Snom,Nnom=0.795,cosF1nom=0.46;

double P1nom,Mnom;

//Частота вращения магнитного поля;

float f=Edit1->Text.ToDouble();p=Edit2->Text.ToInt();n2nom=Edit8->Text.ToDouble();Pnom=Edit9->Text.ToDouble();U1nom=Edit10->Text.ToDouble();=60*f/p;->Edit3->Text=FloatToStr(n1)+" об/мин";

//Скольжение в номинальном режиме;=1-n2nom/n1;

Form1->Edit7->Text=FloatToStrF(Snom,ffFixed,8,4);

//Номинальный момент двигателя;=Pnom*9.55/n2nom;

Form1->Edit4->Text=FloatToStrF(Mnom,ffFixed,8,3)+" Нм";

//Активная мощность подведенная к двигателю;

P1nom=Pnom/Nnom;//Nnom-КПД;->Edit5->Text=FloatToStrF(P1nom,ffFixed,8,3)+" Вт";

//Номинальный ток двигателя;nom=P1nom/(sqrt(3)*U1nom*cosF1nom);->Edit6->Text=FloatToStrF(I1nom,ffFixed,8,3)+" A";

//Построение графиков;

->Chart1->Series[0]->Clear();->Chart1->Series[1]->Clear();->Chart1->Series[0]->Clear();->Chart2->Series[0]->Clear();

g=0;

// for(int i = 1; i<StringGrid1->RowCount; i++)(int j = 1; j<StringGrid1->ColCount; j++)

{

//StringGrid1->Cells[i][j]=random(10);[g]=StrToFloat(StringGrid1->Cells[j][0].c_str());[g]=StrToFloat(StringGrid1->Cells[j][1].c_str());[g]=StrToFloat(StringGrid1->Cells[j][2].c_str());->Chart1->Series[0]->AddXY((x[g]),(y[g]));->Chart1->Series[1]->AddXY((x[g]),(z[g]));nom=Pnom/y[g];//Nnom-КПД;->Chart1->Series[0]->AddXY((x[g]),P1nom);nom=P1nom/(sqrt(3)*U1nom*z[g]);->Chart2->Series[0]->AddXY((x[g]),I1nom);++;

}(int i=0; i<g; i++)

{->Lines->Add(FloatToStrF(x[i] ,ffFixed,5,3));->Lines->Add(FloatToStrF(y[i] ,ffFixed,5,3));->Lines->Add(FloatToStrF(z[i] ,ffFixed,5,3));->Lines->Add("\n");

}

}

//---------------------------------------------------------------------------__fastcall TForm1::ColorButton2Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)

{->Text="50";->Text="2";->Text="1475";->Text="4500";->Text="380";

}

}

//---------------------------------------------------------------------------__fastcall TForm1::ColorButton3Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите посмотреть графики?","внимание!!!", MB_YESNO) == mrYes)

{->Visible=true;

}

}

//---------------------------------------------------------------------------__fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{WinDirChar[255];(WinDirChar,255);IniFile = (String)WinDirChar +"\\INIin1.ini";

*Ini = new TIniFile(IniFile);

// Запись в ini файл;

//Асинхронные двигатели;

Ini->WriteString("Edits","Edit1",Edit1->Text);>WriteString("Edits","Edit2",Edit2->Text);>WriteString("Edits","Edit8",Edit8->Text);>WriteString("Edits","Edit9",Edit9->Text);>WriteString("Edits","Edit10",Edit10->Text);

//МПТ в режиме генератора;

>WriteString("Edits","Edit11",Edit11->Text);>WriteString("Edits","Edit12",Edit12->Text);>WriteString("Edits","Edit13",Edit13->Text);>WriteString("Edits","Edit14",Edit14->Text);>WriteString("Edits","Edit15",Edit15->Text);

//МПТ в режиме двигателя;>WriteString("Edits","Edit21",Edit21->Text);>WriteString("Edits","Edit22",Edit22->Text);>WriteString("Edits","Edit23",Edit23->Text);>WriteString("Edits","Edit24",Edit24->Text);>WriteString("Edits","Edit25",Edit25->Text);

//Для четырехполюсников;>WriteString("Edits","Edit31",Edit31->Text);>WriteString("Edits","Edit32",Edit32->Text);>WriteString("Edits","Edit33",Edit33->Text);>WriteString("Edits","Edit34",Edit34->Text);

//Для самой формы;->Left = Ini->ReadInteger("Position","left",437);->Top = Ini->ReadInteger("Position","top",139);

->Height = Ini->ReadInteger("Size","Height",600);->Width = Ini->ReadInteger("Size","Width",800);

}

//---------------------------------------------------------------------------__fastcall TForm1::BitmapButton6Click(TObject *Sender)

{

//Загрузка параметров;

// загрузка (-------)->AdvProgressBar1->Max=100;->AdvProgressBar1->Position=0;(char g=0;g<=100;g++)

{->AdvProgressBar1->Position=g;(10);//Делаем задержку;

}

//МПТ в режиме генератра;Pnom=Edit11->Text.ToDouble();Unom=Edit12->Text.ToDouble();nnom=Edit13->Text.ToDouble();Ria=Edit14->Text.ToDouble();Rv=Edit15->Text.ToDouble();

Inom,Iv,Iianom,Eia,Pem,w,n,Pm,Pne,Pnv,Pob,P1,kpd;

//3.1 Номинальный ток генератора;=Pnom/Unom;

Form1->Edit16->Text= FloatToStrF(Inom,ffFixed,8,3)+" A";

//3.2 Ток возбуждения;=Unom/Rv;

//3.3 Ток якоря в номинальном режиме;

Iianom=Inom+Iv;

//3.4 ЭДС якоря;=Unom+(Iianom*Ria);->Edit17->Text= FloatToStrF(Eia,ffFixed,8,3)+" В";

//3.5 Электромагнитная мощность;=Eia*Iianom;

//3.5 Электромагнитный момент;float pi=3.14;

w=(pi*nnom)/30;=Pem/w;->Edit19->Text= FloatToStrF(n,ffFixed,8,3)+" Нм";

//3.7 Мощность механических,магнитных и добавочных потерь;=0.06*Pnom;

//3.8 Мощность электрических потерь в цепи якоря;=Ria*pow(Iianom,2);

//3.9 Мощность электрических потерь в цепи возбуждения;=pow(Iv,2)*Rv;

//3.10 Мощность потерь в генераторе;=Pm+Pne+Pnv;

//3.11 Мощность первичного двигателя;

P1=Pnom+Pob;->Edit20->Text= FloatToStrF(P1,ffFixed,8,3)+" Вт";

//3.12 КПД генератора;=(P1-Pob)/P1;

Form1->Edit18->Text= FloatToStrF(kpd,ffFixed,8,3)+"";("Загрузка параметров завершена!!!");

}

//---------------------------------------------------------------------------__fastcall TForm1::ColorButton4Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)

{->Text=10000;->Text=230;->Text=1450;->Text=0.3;->Text=150;->AdvProgressBar1->Max=100;->AdvProgressBar1->Position=0;(char g=0;g<=100;g++)

{->AdvProgressBar1->Position=g;(10);//Делаем задержку;

}("Загрузка параметров завершена!!!");

}

}

//---------------------------------------------------------------------------__fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)

{(MessageBox(0,"вы действительно хотите выйти из программы?","внимание!!!", MB_YESNO) == mrYes)

CanClose=true;CanClose=false;

}

//---------------------------------------------------------------------------

__fastcall TForm1::BitmapButton5Click(TObject *Sender)

{

//Загрузка параметров;

// загрузка (-------)->AdvProgressBar2->Max=100;->AdvProgressBar2->Position=0;(char g=0;g<=100;g++)

{->AdvProgressBar2->Position=g;(10);//Делаем задержку;

}

//МПТ в режиме двигателя;Pnom1=Edit21->Text.ToDouble();Unom1=Edit22->Text.ToDouble();nnom1=Edit23->Text.ToDouble();Ria1=Edit24->Text.ToDouble();kpd2=Edit25->Text.ToDouble();

P1nom,Inom1,Iianom1,Ip,Iiap,Rp,Rv,w1,Eia1,CoF,Mp,Mnom,Mpol;Mo,Ioia,Io,w2,no;

//1.Потребляемая из сети мощность в номинальном режиме;nom=Pnom1/kpd2;

//2.Номинальный ток двигателя;

Inom1=P1nom/Unom1;->Edit26->Text= FloatToStrF(Inom1,ffFixed,8,3)+" A";

//3.Номинальный ток якоря;float Iv1=3.44;=Inom1-Iv1;

//4.Начальный пусковой момент при заданной начальной пусковой кратности;=Inom1*2;

//5.Начальный пусковой ток якоря;=Ip-Iv1;

//6.Начальное сопротивление якорной цепи в момент пуска;=Unom1/Iiap;

//7.Пусковое сопротивление;

Rv=Rp-Ria1;->Edit27->Text= FloatToStrF(Rv,ffFixed,8,3)+" Ом";

//8.Номинальная угловая скорость врщения;float pi=3.14;=(pi*nnom1)/30;

//9.ЭДС якоря при номинальной нагрузке;=Unom1-Iianom1*Ria1;

//10.Постоянная машина при постоянном магнитном потоке;=Eia1/w1;

//11.Электромагнитный начальный пусковой момент;

// Mp=CoF*Iiap;

//12.Электромагнитный момент в номинальном режиме;=CoF*Iianom1;

//13.Полезный вращающий момент на валу двигателя;=Pnom1/w1;

//14.Момент холостого хода;

Mo=Mnom-Mpol;->Edit29->Text= FloatToStrF(Mo,ffFixed,8,3)+" Нм";

//15.Ток якоря в режиме холостого хода;=Mo/CoF;

//16.Ток холостого двигателя;

Io=Ioia+Iv1;->Edit30->Text= FloatToStrF(Io,ffFixed,8,3)+" A";

//17.Частота вращения в режиме холостого хода;

w2=(Unom1-(Ioia*Ria1))/CoF;=30*w2/pi;->Edit28->Text= FloatToStrF(no,ffFixed,8,3)+" об/мин";("Загрузка параметров завершена!!!");

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton5Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)

{->Text=4200;->Text=220;->Text=1450;->Text=0.15;->Text=0.78;->AdvProgressBar2->Max=100;->AdvProgressBar2->Position=0;(char g=0;g<=100;g++)

{->AdvProgressBar2->Position=g;(10);//Делаем задержку;

}("Загрузка параметров завершена!!!");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton6Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)

{->Text=15;->Text=1.2;->Text=22000;->Text=0.000125;->AdvProgressBar3->Max=100;->AdvProgressBar3->Position=0;(char g=0;g<=100;g++)

{->AdvProgressBar3->Position=g;(10);//Делаем задержку;

}("Загрузка параметров завершена!!!");

}

}

//---------------------------------------------------------------------------__fastcall TForm1::BitmapButton7Click(TObject *Sender)

{

//Загрузка параметров;

// загрузка (-------)->AdvProgressBar3->Max=100;->AdvProgressBar3->Position=0;(char g=0;g<=100;g++)

{->AdvProgressBar3->Position=g;(10);//Делаем задержку;

}

//Очистка графиков;->Chart1->Series[0]->Clear();->Chart2->Series[0]->Clear();->Chart1->Series[1]->Clear();->Chart2->Series[1]->Clear();

X=Edit33->Text.ToDouble();Y=Edit34->Text.ToDouble();r;.Set( X, Y);.Run();

//M(p)=0;

// float p1=-2.75/2;

// float p2=p1;

//Решение квадратного уравнения;

double x1,x2,x3,x4;A=pow(X,2)*pow(Y,2);R11=22000;double C11=0.000125;A1=pow(R11,2)*pow(C11,2);B=4*X*Y;B1=4*R11*C11;C=4;C1=4;D;D1;double t=1e-8;Np1=1;Np2=1;Mp1,Mp2;Mp3,Mp4;q=0;(abs(A1)<t && abs(B1)<t && abs(C1)<t )

{("Уравнение выраждено!!");

}

{=pow(B1,2)-4*A1*C1;

}(D1>-t)

{(abs(D1)<t)

{=0;=(-B1)/(2*A1);=x3;=2.0*7.56*x3+11.0;=2.0*7.56*x4+11.0;("2 одинаковых корня!!");=1;

}

{=(-B1+sqrt(D1))/(2*A1);=(-B1-sqrt(D1))/(2*A1);=2.0*7.56*x3+11.0;=2.0*7.56*x4+11.0;(" 2 разных корня!");=1;

}

}

{("Действительных корней нет!!!");

}

Mp33=Np1/Mp3;Mp44=Np2/Mp4;

->Edit35->Text= FloatToStrF(x3,ffFixed,6,4);->Edit36->Text= FloatToStrF(x4,ffFixed,6,4);

//-------------------------------------------------------;z=0;(abs(A)>t && abs(B)>t )

{=pow(B,2)-4*A*C;

}

{("Уравнение выраждено!!!");=1;

}(z!=1)

{(D>-t)

{(abs(D)<t)

{=0;=(-B)/(2*A);=x1;=(2.0*7.56*x1+11.0);=2.0*7.56*x2+11.0;

ShowMessage("2 одинаковых корня");=0;=1;

}

{=(-B+sqrt(D))/(2*A);=(-B-sqrt(D))/(2*A);=(2.0*7.56*x1+11.0);=(2.0*7.56*x2+11.0);=1;=0;("2 разных корня");

}

}

{("Действительных корней нет!!!");

z=1;

};

};Mp11=Np1/Mp1;Mp22=Np2/Mp2;(z!=1)

{->Edit37->Text= FloatToStrF(x1,ffFixed,6,4);->Edit38->Text= FloatToStrF(x2,ffFixed,6,4);

};

//---------------------------------------------------;Uvix1,Uvix2;(float l=0;l<=5;l+=0.2)

{(q==1)

{(z!=1)

{=(Np1*exp(x1*l)/Mp1)+(Np2*exp(x2*l)/Mp2);->Chart3->Series[0]->AddXY(l,Uvix1);

}=(Np1*exp(x3*l)/Mp3)+(Np2*exp(x4*l)/Mp4);->Chart3->Series[1]->AddXY(l,Uvix2);

}

{(z!=1)

{=(Np1*exp(x1*l)/Mp1)+(Np2*exp(x2*l)/Mp2);->Chart3->Series[0]->AddXY(l,Uvix1);

}

}

}(z!=1)

{>Caption="Uâûõ(t)="+FloatToStrF(Mp11,ffGeneral,4,2)+"exp("+FloatToStrF(x1,ffGeneral,5,2)+"t)"+"+"+FloatToStrF(Mp22,ffGeneral,5,2)+"exp("+FloatToStrF(x2,ffGeneral,5,2)+"t)";

};>Caption="Uâûõ(t)="+FloatToStrF(Mp33,ffGeneral,4,2)+"exp("+FloatToStrF(x3,ffGeneral,5,2)+"t)"+"+"+FloatToStrF(Mp44,ffGeneral,5,2)+"exp("+FloatToStrF(x4,ffGeneral,5,2)+"t)";

("Загрузка параметров завершена!!!");

}

//---------------------------------------------------------------------------__fastcall TForm1::ColorButton7Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите посмотреть графики?","внимание!!!", MB_YESNO) == mrYes)

{->Visible=true;

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton8Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите распечатать?","внимание!!!", MB_YESNO) == mrYes)

{

// Асинхронные двигатели;

->QRLabel1->Caption=Edit1->Text+" Гц";->QRLabel2->Caption=Edit2->Text+"";->QRLabel3->Caption=Edit8->Text+" об/мин";->QRLabel4->Caption=Edit9->Text+" Вт";->QRLabel5->Caption=Edit10->Text+" В";

->QRLabel6->Caption=Edit3->Text;->QRLabel7->Caption=Edit4->Text;->QRLabel8->Caption=Edit5->Text;->QRLabel9->Caption=Edit6->Text;->QRLabel10->Caption=Edit7->Text;

->QRDBChart1->Series[0]->DataSource = Form1->Chart1->Series[0];->QRDBChart1->Series[1]->DataSource = Form1->Chart1->Series[1];->QRDBChart5->Series[0]->DataSource = Form2->Chart1->Series[0];->QRDBChart13->Series[0]->DataSource = Form2->Chart2->Series[0];

->QuickRep1->Preview();

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton9Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите распечатать?","внимание!!!", MB_YESNO) == mrYes)

{

//МПТ в режиме генератора;

->QRLabel1->Caption=Edit11->Text+" Вт";

Form5->QRLabel2->Caption=Edit12->Text+" В";->QRLabel3->Caption=Edit13->Text+" об/мин";->QRLabel4->Caption=Edit14->Text+" Ом";->QRLabel5->Caption=Edit15->Text+" Ом";

->QRLabel6->Caption=Edit16->Text;->QRLabel7->Caption=Edit17->Text;->QRLabel8->Caption=Edit18->Text;->QRLabel9->Caption=Edit19->Text;->QRLabel10->Caption=Edit20->Text;

->QuickRep1->Preview();

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton10Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите распечатать?","внимание!!!", MB_YESNO) == mrYes)

{

//титульный лист;

->QuickRep1->Preview();

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton11Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите распечатать?","внимание!!!", MB_YESNO) == mrYes)

{

//МПТ в режиме двигателя;

->QRLabel1->Caption=Edit21->Text+" Вт";->QRLabel2->Caption=Edit22->Text+" В";->QRLabel3->Caption=Edit23->Text+" об/мин";->QRLabel4->Caption=Edit24->Text+" Ом";->QRLabel5->Caption=Edit25->Text+"";

->QRLabel6->Caption=Edit26->Text;->QRLabel7->Caption=Edit27->Text;->QRLabel8->Caption=Edit28->Text;->QRLabel9->Caption=Edit29->Text;->QRLabel10->Caption=Edit30->Text;

->QuickRep1->Preview();

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::ColorButton12Click(TObject *Sender)

{(MessageBox(0,"вы действительно хотите распечатать?","внимание!!!", MB_YESNO) == mrYes)

{

//Четырехполюсники;

->QRLabel1->Caption=Edit31->Text+" В";->QRLabel2->Caption=Edit32->Text+" с";->QRLabel3->Caption=Edit33->Text+" Oм";->QRLabel4->Caption=Edit34->Text+" Ф";

->QRLabel9->Caption=Edit37->Text;->QRLabel10->Caption=Edit38->Text;

->QRLabel15->Caption=GradientLabel55->Caption;

->QRDBChart5->Series[0]->DataSource = Form3->Chart1->Series[0];->QRDBChart5->Series[1]->DataSource = Form3->Chart1->Series[1];

->QRDBChart33->Series[0]->DataSource = Form3->Chart2->Series[0];->QRDBChart33->Series[1]->DataSource = Form3->Chart2->Series[1];

->QRDBChart1->Series[0]->DataSource = Form3->Chart3->Series[0];->QRDBChart1->Series[1]->DataSource = Form3->Chart3->Series[1];

->QuickRep1->Preview();

}

}

//---------------------------------------------------------------------------__fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit8KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit9KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit10KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit11KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit12KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit13KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit14KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit15KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit21KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit22KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit23KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit24KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit31KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit32KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit33KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}

//---------------------------------------------------------------------------

__fastcall TForm1::Edit34KeyPress(TObject *Sender, char &Key)

{( (!(isdigit(Key))) && (!(Key ==VK_BACK)) && (!(Key ==',')) )

{= 0;("Недопустимый символ\nЗдесь нельзя вводить буквы \nМожно вводить цифры и \nнажимать BackSpace");

}

}.H

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include "BitmapButton.h"

#include "ColorButton.h"

#include "AdvProgressBar.hpp"

#include "GradientLabel.hpp"

#include <ExtCtrls.hpp>

#include <Graphics.hpp>

#include <ComCtrls.hpp>

#include "AdvPageControl.hpp"

#include <Dialogs.hpp>

#include <Chart.hpp>

#include <Series.hpp>

#include <TeEngine.hpp>

#include <TeeProcs.hpp>

#include <Grids.hpp>

#include <jpeg.hpp>

#include <math.h>

#include <unit3.h>

//---------------------------------------------------------------------------TForm1 : public TForm

{

__published:// IDE-managed Components*Image1;*BitmapButton1;*AdvPageControl1;*AdvTabSheet1;*AdvTabSheet2;*BitmapButton2;*BitmapButton3;*BitmapButton4;*OpenDialog1;*Timer1;*GradientLabel1;*GradientLabel2;*Edit1;*GradientLabel3;*Edit2;*GradientLabel4;*GradientLabel5;*GradientLabel6;*GradientLabel7;*Edit3;*Edit4;*Edit5;*Edit6;*GradientLabel8;*Edit7;*ColorButton1;*Chart1;*GradientLabel9;*Edit8;*Edit9;*GradientLabel10;*Edit10;*GradientLabel11;*Label1;*Label2;*StringGrid1;*ColorButton2;*SaveDialog1;*Memo1;*ColorButton3;*AdvTabSheet3;*GradientLabel12;*GradientLabel13;*GradientLabel14;*GradientLabel15;*GradientLabel16;*Edit11;*GradientLabel17;*GradientLabel18;*Edit12;*Edit13;*Edit14;*Edit15;*GradientLabel19;*GradientLabel20;*GradientLabel21;*GradientLabel22;*GradientLabel23;*GradientLabel24;*Image2;*Label3;*GradientLabel25;*GradientLabel26;*GradientLabel27;*GradientLabel28;*GradientLabel29;*GradientLabel30;*GradientLabel31;*GradientLabel32;*GradientLabel33;*GradientLabel34;*GradientLabel35;*GradientLabel36;*GradientLabel37;*Label4;*Image3;*AdvProgressBar1;*AdvProgressBar2;*Edit16;*Edit17;*Edit18;*Edit19;*Edit20;*Edit21;*Edit22;*Edit23;*Edit24;*Edit25;*Edit26;*Edit27;*Edit28;*Edit29;*Edit30;*BitmapButton5;*BitmapButton6;*AdvTabSheet4;*AdvTabSheet5;*GradientLabel38;*GradientLabel39;*ColorButton4;*Timer2;*ColorButton5;*Image4;*GradientLabel40;*GradientLabel41;*GradientLabel42;*Image5;*GradientLabel43;*BitmapButton7;*GradientLabel44;*Edit31;*GradientLabel45;*Edit32;*GradientLabel46;*Edit33;*Edit34;*GradientLabel47;*ColorButton6;*AdvProgressBar3;*GradientLabel48;*ColorButton7;*ColorButton8;*ColorButton9;*ColorButton10;*ColorButton11;*ColorButton12;*Series1;*Series2;*Edit35;*Edit36;*GradientLabel49;*GradientLabel50;*GradientLabel51;*GradientLabel52;*GradientLabel53;*GradientLabel54;*Edit37;*Edit38;*GradientLabel55;__fastcall BitmapButton1Click(TObject *Sender);__fastcall Image1MouseDown(TObject *Sender,Button, TShiftState Shift, int X, int Y);__fastcall BitmapButton2Click(TObject *Sender);__fastcall FormCreate(TObject *Sender);__fastcall BitmapButton4Click(TObject *Sender);__fastcall BitmapButton3Click(TObject *Sender);__fastcall Timer1Timer(TObject *Sender);__fastcall ColorButton1Click(TObject *Sender);__fastcall ColorButton2Click(TObject *Sender);__fastcall ColorButton3Click(TObject *Sender);__fastcall FormClose(TObject *Sender, TCloseAction &Action);__fastcall BitmapButton6Click(TObject *Sender);__fastcall ColorButton4Click(TObject *Sender);__fastcall FormCloseQuery(TObject *Sender, bool &CanClose);__fastcall BitmapButton5Click(TObject *Sender);__fastcall ColorButton5Click(TObject *Sender);__fastcall ColorButton6Click(TObject *Sender);__fastcall BitmapButton7Click(TObject *Sender);__fastcall ColorButton7Click(TObject *Sender);__fastcall ColorButton8Click(TObject *Sender);__fastcall ColorButton9Click(TObject *Sender);__fastcall ColorButton10Click(TObject *Sender);__fastcall ColorButton11Click(TObject *Sender);__fastcall ColorButton12Click(TObject *Sender);__fastcall Edit1KeyPress(TObject *Sender, char &Key);__fastcall Edit2KeyPress(TObject *Sender, char &Key);__fastcall Edit8KeyPress(TObject *Sender, char &Key);__fastcall Edit9KeyPress(TObject *Sender, char &Key);__fastcall Edit10KeyPress(TObject *Sender, char &Key);__fastcall Edit11KeyPress(TObject *Sender, char &Key);__fastcall Edit12KeyPress(TObject *Sender, char &Key);__fastcall Edit13KeyPress(TObject *Sender, char &Key);__fastcall Edit14KeyPress(TObject *Sender, char &Key);__fastcall Edit15KeyPress(TObject *Sender, char &Key);__fastcall Edit21KeyPress(TObject *Sender, char &Key);__fastcall Edit22KeyPress(TObject *Sender, char &Key);__fastcall Edit23KeyPress(TObject *Sender, char &Key);__fastcall Edit24KeyPress(TObject *Sender, char &Key);__fastcall Edit25KeyPress(TObject *Sender, char &Key);__fastcall Edit31KeyPress(TObject *Sender, char &Key);__fastcall Edit32KeyPress(TObject *Sender, char &Key);__fastcall Edit33KeyPress(TObject *Sender, char &Key);__fastcall Edit34KeyPress(TObject *Sender, char &Key);:// User declarations:// User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------function

{:R1,C1;Set(double X=NULL,double Y=NULL);Run(void);

};function::Set(double X,double Y)

{=X;=Y;

};function::Run()

{double R11=22000;double C11=0.000125;(float w=0;w<=5;w+=0.25)

{Im=(-4*R1*C1*w)/pow((pow(R1,2)*pow(C1,2)*pow(w,2)+4),2);Re=(4-(pow(R1,2)*pow(C1,2)*pow(w,2)))/pow((pow(R1,2)*pow(C1,2)*pow(w,2)+4),2);A=sqrt((pow(Im,2)+pow(Re,2)));F=(atan(Im/Re));->Chart1->Series[0]->AddXY(w,A);->Chart2->Series[0]->AddXY(w,F);

Im1=(-4*R11*C11*w)/pow((pow(R11,2)*pow(C11,2)*pow(w,2)+4),2);Re1=(4-(pow(R11,2)*pow(C11,2)*pow(w,2)))/pow((pow(R11,2)*pow(C11,2)*pow(w,2)+4),2);A1=sqrt((pow(Im1,2)+pow(Re1,2)));F1=(atan(Im1/Re1));

//Вывод стандаотных значений(черная линия);

Form3->Chart1->Series[1]->AddXY(w,A1);->Chart2->Series[1]->AddXY(w,F1);

};

};

#endif

4.4 БЛОК - СХЕМА ВЫВОДА ГРАФИКОВ

 

ЗАКЛЮЧЕНИЕ

приложение электрический параметр программа

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


ЛИТЕРАТУРА

ГОСТ 19.701-90 Схемы алгоритмов, программ данных и систем.

Бессонов Л.А. Теоретические основы электротехники. Электрические цепи. - М.: Гардарики, 2002. - 638 с.

Архангельский А.Я. C++ Builder 6. Справочное пособие. Книга 1. Язык C++. -- М.: Бином-Пресс, 2002 г. --- 544 ил.

А.Я. Архангельский, М.А. Тагин Программирование в C++ Builder 6 и 2006. - М.: ООО «Бином-Пресс», 2007 г. -1184 с.: ил.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!