summaryrefslogtreecommitdiffstats
path: root/Project/SyncMotor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/SyncMotor.cpp')
-rw-r--r--Project/SyncMotor.cpp106
1 files changed, 103 insertions, 3 deletions
diff --git a/Project/SyncMotor.cpp b/Project/SyncMotor.cpp
index 1a5b20d..8283a25 100644
--- a/Project/SyncMotor.cpp
+++ b/Project/SyncMotor.cpp
@@ -47,9 +47,7 @@ SyncMotorElectricalData SyncMotor::GetPUElectricalData(double systemPowerBase)
{
SyncMotorElectricalData data = m_electricalData;
double machineBasePower = 1.0;
- if(data.useMachineBase) {
- machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);
- }
+ if(data.useMachineBase) { machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit); }
// Active power
double activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);
@@ -174,3 +172,105 @@ wxString SyncMotor::GetTipText() const
return tipText;
}
+
+rapidxml::xml_node<>* SyncMotor::SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode)
+{
+ auto elementNode = XMLParser::AppendNode(doc, elementListNode, "SyncMotor");
+ XMLParser::SetNodeAttribute(doc, elementNode, "ID", m_elementID);
+
+ SaveCADProperties(doc, elementNode);
+
+ auto electricalProp = XMLParser::AppendNode(doc, elementNode, "ElectricalProperties");
+ auto isOnline = XMLParser::AppendNode(doc, electricalProp, "IsOnline");
+ XMLParser::SetNodeValue(doc, isOnline, m_online);
+ auto name = XMLParser::AppendNode(doc, electricalProp, "Name");
+ XMLParser::SetNodeValue(doc, name, m_electricalData.name);
+ auto nominalPower = XMLParser::AppendNode(doc, electricalProp, "NominalPower");
+ XMLParser::SetNodeValue(doc, nominalPower, m_electricalData.nominalPower);
+ XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", m_electricalData.nominalPowerUnit);
+ auto activePower = XMLParser::AppendNode(doc, electricalProp, "ActivePower");
+ XMLParser::SetNodeValue(doc, activePower, m_electricalData.activePower);
+ XMLParser::SetNodeAttribute(doc, activePower, "UnitID", m_electricalData.activePowerUnit);
+ auto reactivePower = XMLParser::AppendNode(doc, electricalProp, "ReactivePower");
+ XMLParser::SetNodeValue(doc, reactivePower, m_electricalData.reactivePower);
+ XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", m_electricalData.reactivePowerUnit);
+ auto haveMaxReactive = XMLParser::AppendNode(doc, electricalProp, "HaveMaxReactive");
+ XMLParser::SetNodeValue(doc, haveMaxReactive, m_electricalData.haveMaxReactive);
+ auto maxReactive = XMLParser::AppendNode(doc, electricalProp, "MaxReactive");
+ XMLParser::SetNodeValue(doc, maxReactive, m_electricalData.maxReactive);
+ XMLParser::SetNodeAttribute(doc, maxReactive, "UnitID", m_electricalData.maxReactiveUnit);
+ auto haveMinReactive = XMLParser::AppendNode(doc, electricalProp, "HaveMinReactive");
+ XMLParser::SetNodeValue(doc, haveMinReactive, m_electricalData.haveMinReactive);
+ auto minReactive = XMLParser::AppendNode(doc, electricalProp, "MinReactive");
+ XMLParser::SetNodeValue(doc, minReactive, m_electricalData.minReactive);
+ XMLParser::SetNodeAttribute(doc, minReactive, "UnitID", m_electricalData.minReactiveUnit);
+ auto useMachineBase = XMLParser::AppendNode(doc, electricalProp, "UseMachineBase");
+ XMLParser::SetNodeValue(doc, useMachineBase, m_electricalData.useMachineBase);
+
+ auto fault = XMLParser::AppendNode(doc, electricalProp, "Fault");
+ auto positiveResistance = XMLParser::AppendNode(doc, fault, "PositiveResistance");
+ XMLParser::SetNodeValue(doc, positiveResistance, m_electricalData.positiveResistance);
+ auto positiveReactance = XMLParser::AppendNode(doc, fault, "PositiveReactance");
+ XMLParser::SetNodeValue(doc, positiveReactance, m_electricalData.positiveReactance);
+ auto negativeResistance = XMLParser::AppendNode(doc, fault, "NegativeResistance");
+ XMLParser::SetNodeValue(doc, negativeResistance, m_electricalData.negativeResistance);
+ auto negativeReactance = XMLParser::AppendNode(doc, fault, "NegativeReactance");
+ XMLParser::SetNodeValue(doc, negativeReactance, m_electricalData.negativeReactance);
+ auto zeroResistance = XMLParser::AppendNode(doc, fault, "ZeroResistance");
+ XMLParser::SetNodeValue(doc, zeroResistance, m_electricalData.zeroResistance);
+ auto zeroReactance = XMLParser::AppendNode(doc, fault, "ZeroReactance");
+ XMLParser::SetNodeValue(doc, zeroReactance, m_electricalData.zeroReactance);
+ auto groundResistance = XMLParser::AppendNode(doc, fault, "GroundResistance");
+ XMLParser::SetNodeValue(doc, groundResistance, m_electricalData.groundResistance);
+ auto groundReactance = XMLParser::AppendNode(doc, fault, "GroundReactance");
+ XMLParser::SetNodeValue(doc, groundReactance, m_electricalData.groundReactance);
+ auto groundNeutral = XMLParser::AppendNode(doc, fault, "GroundNeutral");
+ XMLParser::SetNodeValue(doc, groundNeutral, m_electricalData.groundNeutral);
+
+ return elementNode;
+}
+
+bool SyncMotor::OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList)
+{
+ if(!OpenCADProperties(elementNode, parentList)) return false;
+
+ auto electricalProp = elementNode->first_node("ElectricalProperties");
+ if(!electricalProp) return false;
+
+ SetOnline(XMLParser::GetNodeValueInt(electricalProp, "IsOnline"));
+ m_electricalData.name = electricalProp->first_node("Name")->value();
+ m_electricalData.nominalPower = XMLParser::GetNodeValueDouble(electricalProp, "NominalPower");
+ m_electricalData.nominalPowerUnit =
+ static_cast<ElectricalUnit>(XMLParser::GetAttributeValueInt(electricalProp, "NominalPower", "UnitID"));
+ m_electricalData.activePower = XMLParser::GetNodeValueDouble(electricalProp, "ActivePower");
+ m_electricalData.activePowerUnit =
+ static_cast<ElectricalUnit>(XMLParser::GetAttributeValueInt(electricalProp, "ActivePower", "UnitID"));
+ m_electricalData.reactivePower = XMLParser::GetNodeValueDouble(electricalProp, "ReactivePower");
+ m_electricalData.reactivePowerUnit =
+ static_cast<ElectricalUnit>(XMLParser::GetAttributeValueInt(electricalProp, "ReactivePower", "UnitID"));
+ m_electricalData.haveMaxReactive = XMLParser::GetNodeValueInt(electricalProp, "HaveMaxReactive");
+ m_electricalData.maxReactive = XMLParser::GetNodeValueDouble(electricalProp, "MaxReactive");
+ m_electricalData.maxReactiveUnit =
+ static_cast<ElectricalUnit>(XMLParser::GetAttributeValueInt(electricalProp, "MaxReactive", "UnitID"));
+ m_electricalData.haveMinReactive = XMLParser::GetNodeValueInt(electricalProp, "HaveMinReactive");
+ m_electricalData.minReactive = XMLParser::GetNodeValueDouble(electricalProp, "MinReactive");
+ m_electricalData.minReactiveUnit =
+ static_cast<ElectricalUnit>(XMLParser::GetAttributeValueInt(electricalProp, "MinReactive", "UnitID"));
+ m_electricalData.useMachineBase = XMLParser::GetNodeValueInt(electricalProp, "UseMachineBase");
+
+ auto fault = electricalProp->first_node("Fault");
+ if(!fault) return false;
+ m_electricalData.positiveResistance = XMLParser::GetNodeValueDouble(fault, "PositiveResistance");
+ m_electricalData.positiveReactance = XMLParser::GetNodeValueDouble(fault, "PositiveReactance");
+ m_electricalData.negativeResistance = XMLParser::GetNodeValueDouble(fault, "NegativeResistance");
+ m_electricalData.negativeReactance = XMLParser::GetNodeValueDouble(fault, "NegativeReactance");
+ m_electricalData.zeroResistance = XMLParser::GetNodeValueDouble(fault, "ZeroResistance");
+ m_electricalData.zeroReactance = XMLParser::GetNodeValueDouble(fault, "ZeroReactance");
+ m_electricalData.groundResistance = XMLParser::GetNodeValueDouble(fault, "GroundResistance");
+ m_electricalData.groundReactance = XMLParser::GetNodeValueDouble(fault, "GroundReactance");
+ m_electricalData.groundNeutral = XMLParser::GetNodeValueInt(fault, "GroundNeutral");
+
+ m_inserted = true;
+
+ return true;
+}