blob: 3f5009ac82805a0340f1a5cae6e659717dee878a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/*
* Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef INDMOTOR_H
#define INDMOTOR_H
#include "Machines.h"
class IndMotorForm;
struct IndMotorElectricalData {
wxString name;
double ratedPower = 100.0;
ElectricalUnit ratedPowerUnit = UNIT_MVA;
double activePower = 100.0;
ElectricalUnit activePowerUnit = UNIT_MW;
double reactivePower = 0.0;
ElectricalUnit reactivePowerUnit = UNIT_MVAr;
bool useMachinePowerAsBase = true;
// Stability
double inertia = 1.0; // Motor and load inertia
double s0; // Initial slip
double q0; // Initial reactive power
double r1 = 0.0; // Stator resistence data
double x1 = 1.0; // Stator reactance data
double r2 = 1.0; // Rotor resistence data
double x2 = 0.0; // Rotor reactance data
double xm = 100.0; // Magnetizing reactance data
// Transient values
double xt = 1.0; // Transient reactance
double x0 = 1.0; // Open-circuit reactance
double r1t = 0.0; // Stator resistence in system power base
double x1t = 1.0; // Stator reactance in system power base
double r2t = 1.0; // Rotor resistence in system power base
double x2t = 0.0; // Rotor reactance in system power base
double xmt = 100.0; // Magnetizing reactance in system power base
double t0 = 1.0; // Open-circuit time constant
double aw = 1.0; // Velocity constant torque
double bw = 0.0; // Velocity linear dependent torque
double cw = 0.0; // Velocity quadratic dependent torque
double as = 0.0; // Slip constant torque
double bs = 0.0; // Slip linear dependent torque
double cs = 0.0; // Slip quadratic dependent torque
// Internal machine variables
double tranEr;
double tranEm;
double te;
double ir;
double im;
// Variables to extrapolate
double oldIr;
double oldIm;
double oldTe;
// Integration constants
IntegrationConstant icSlip;
IntegrationConstant icTranEr;
IntegrationConstant icTranEm;
// Machine state variables
std::complex<double> terminalVoltage;
std::vector<double> terminalVoltageVector;
double slip = 1.0; // Machine slip
std::vector<double> slipVector;
std::complex<double> electricalPower;
std::vector<std::complex<double> > electricalPowerVector;
};
/**
* @class IndMotor
* @author Thales Lima Oliveira <thales@ufu.br>
* @date 06/10/2017
* @brief Induction motor power element.
* @file IndMotor.h
*/
class IndMotor : public Machines
{
public:
IndMotor();
IndMotor(wxString name);
~IndMotor();
virtual Element* GetCopy();
virtual void DrawSymbol() const;
virtual bool GetContextMenu(wxMenu& menu);
virtual wxString GetTipText() const;
virtual bool ShowForm(wxWindow* parent, Element* element);
virtual IndMotorElectricalData GetElectricalData() { return m_electricalData; }
virtual IndMotorElectricalData GetPUElectricalData(double systemPowerBase);
virtual void SetElectricalData(IndMotorElectricalData electricalData) { m_electricalData = electricalData; }
virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode);
virtual bool OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList);
protected:
IndMotorElectricalData m_electricalData;
};
#endif // INDMOTOR_H
|