Skip to content

Commit

Permalink
add new VSG_MODEL2 and VSGCONTROL2 with different structure from VSG_…
Browse files Browse the repository at this point in the history
…MODEL and VSGCONTROL0. Pass test. Add WT3GX and need more work
  • Loading branch information
changgang committed Jan 25, 2024
1 parent 71c8ac9 commit d41e2bd
Show file tree
Hide file tree
Showing 20 changed files with 1,838 additions and 275 deletions.
16 changes: 11 additions & 5 deletions code/steps/STEPS.cbp
Original file line number Diff line number Diff line change
Expand Up @@ -345,9 +345,11 @@
<Unit filename="header/model/vsc_hvdc_model/vsc_hvdc_network_model/vsc_hvdc_network_model.h" />
<Unit filename="header/model/vsc_hvdc_model/vsc_hvdc_network_model/vsc_hvdc_network_models.h" />
<Unit filename="header/model/vsg_model/vsg_model.h" />
<Unit filename="header/model/vsg_model/vsg_model2.h" />
<Unit filename="header/model/vsg_model/vsg_model_test.h" />
<Unit filename="header/model/vsg_model/vsgcontrol0.h" />
<Unit filename="header/model/vsg_model/vsgcontrol0_test.h" />
<Unit filename="header/model/vsg_model/vsgcontrol2.h" />
<Unit filename="header/model/vsg_model/vsgcontrol2_test.h" />
<Unit filename="header/model/wtg_models/wind_speed_model/filewind.h" />
<Unit filename="header/model/wtg_models/wind_speed_model/filewind_test.h" />
<Unit filename="header/model/wtg_models/wind_speed_model/wind_speed_model.h" />
Expand All @@ -374,6 +376,7 @@
<Unit filename="header/model/wtg_models/wt_generator_model/wt3g1_test.h" />
<Unit filename="header/model/wtg_models/wt_generator_model/wt3g2.h" />
<Unit filename="header/model/wtg_models/wt_generator_model/wt3g2_test.h" />
<Unit filename="header/model/wtg_models/wt_generator_model/wt3gx.h" />
<Unit filename="header/model/wtg_models/wt_generator_model/wt_generator_model.h" />
<Unit filename="header/model/wtg_models/wt_generator_model/wt_generator_model_test.h" />
<Unit filename="header/model/wtg_models/wt_generator_model/wt_generator_models.h" />
Expand Down Expand Up @@ -754,16 +757,18 @@
<Unit filename="source/model/vsc_hvdc_model/vsc_hvdc_model_test.cpp" />
<Unit filename="source/model/vsc_hvdc_model/vsc_hvdc_network_model/VSCHVDCP0.cpp" />
<Unit filename="source/model/vsc_hvdc_model/vsc_hvdc_network_model/vsc_hvdc_network_model.cpp" />
<Unit filename="source/model/vsg_model/vsg_model.cpp" />
<Unit filename="source/model/vsg_model/vsg_model_test.cpp">
<Unit filename="source/model/vsg_model/vsg_model.cpp">
<Option compile="0" />
<Option link="0" />
</Unit>
<Unit filename="source/model/vsg_model/vsgcontrol0.cpp" />
<Unit filename="source/model/vsg_model/vsgcontrol0_test.cpp">
<Unit filename="source/model/vsg_model/vsg_model2.cpp" />
<Unit filename="source/model/vsg_model/vsg_model_test.cpp" />
<Unit filename="source/model/vsg_model/vsgcontrol0.cpp">
<Option compile="0" />
<Option link="0" />
</Unit>
<Unit filename="source/model/vsg_model/vsgcontrol2.cpp" />
<Unit filename="source/model/vsg_model/vsgcontrol2_test.cpp" />
<Unit filename="source/model/wtg_models/wind_speed_model/filewind.cpp" />
<Unit filename="source/model/wtg_models/wind_speed_model/filewind_test.cpp" />
<Unit filename="source/model/wtg_models/wind_speed_model/wind_speed_model.cpp" />
Expand All @@ -787,6 +792,7 @@
<Unit filename="source/model/wtg_models/wt_generator_model/wt3g1_test.cpp" />
<Unit filename="source/model/wtg_models/wt_generator_model/wt3g2.cpp" />
<Unit filename="source/model/wtg_models/wt_generator_model/wt3g2_test.cpp" />
<Unit filename="source/model/wtg_models/wt_generator_model/wt3gx.cpp" />
<Unit filename="source/model/wtg_models/wt_generator_model/wt_generator_model.cpp" />
<Unit filename="source/model/wtg_models/wt_generator_model/wt_generator_model_test.cpp" />
<Unit filename="source/model/wtg_models/wt_pitch_model/wt3p0.cpp" />
Expand Down
71 changes: 68 additions & 3 deletions code/steps/STEPS.depend
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@
"header/basic/utility.h"
"header/data_imexporter/psse_imexporter.h"

1706157211 source:d:\steps\code\steps\main_tests.cpp
1706186518 source:d:\steps\code\steps\main_tests.cpp
<istream>
<cstdlib>
<cstring>
Expand Down Expand Up @@ -670,6 +670,7 @@
"header/model/hvdc_model/vdcol_test.h"
"header/model/hvdc_model/CDC4T_test.h"
"header/model/hvdc_model/CDC6T_test.h"
"header/model/vsg_model/vsgcontrol2_test.h"
"header/model/wtg_models/wt_generator_model/wt3g1_test.h"
"header/model/wtg_models/wt_generator_model/wt3g0_test.h"
"header/model/wtg_models/wt_aerodynamic_model/aerd0_test.h"
Expand Down Expand Up @@ -5620,7 +5621,7 @@
<utility>
"internal/stack.h"

1664187911 source:d:\steps\code\steps\source\power_system_database_test.cpp
1706180726 source:d:\steps\code\steps\source\power_system_database_test.cpp
"header/basic/test_macro.h"
"header/power_system_database_test.h"
"header/basic/utility.h"
Expand Down Expand Up @@ -56598,7 +56599,7 @@
"header/block/integral_block.h"
<complex>

1706070254 d:\steps\code\steps\header\model\vsg_model\vsg_model.h
1706182634 d:\steps\code\steps\header\model\vsg_model\vsg_model.h
"header/model/model.h"
"header/device/bus.h"
<complex>
Expand All @@ -56620,3 +56621,67 @@
"header/block/integral_block.h"
<complex>

1706187999 source:d:\steps\code\steps\source\model\vsg_model\vsgcontrol2_test.cpp
"header/basic/test_macro.h"
"header/model/vsg_model/vsgcontrol2_test.h"
"header/basic/utility.h"
"header/steps_namespace.h"
<cstdlib>
<cstring>
<istream>
<iostream>
<cstdio>
<cmath>

1706186415 d:\steps\code\steps\header\model\vsg_model\vsgcontrol2_test.h
<istream>
<cstdlib>
<cstring>
<iostream>
"header/model/vsg_model/vsg_model_test.h"
"header/model/vsg_model/vsgcontrol2.h"
"header/power_system_database.h"
"header/STEPS.h"

1706185366 d:\steps\code\steps\header\model\vsg_model\vsg_model_test.h
<istream>
<cstdlib>
<cstring>
<iostream>
"cpptest.h"
"header/power_system_database.h"
"header/STEPS.h"
"header/model/vsg_model/vsg_model2.h"

1706187830 d:\steps\code\steps\header\model\vsg_model\vsg_model2.h
"header/STEPS.h"

1706185850 d:\steps\code\steps\header\model\vsg_model\vsgcontrol2.h
"header/model/vsg_model/vsg_model2.h"
"header/block/integral_block.h"

1706188110 source:d:\steps\code\steps\source\model\vsg_model\vsg_model_test.cpp
"header/basic/test_macro.h"
"header/model/vsg_model/vsg_model_test.h"
"header/basic/utility.h"
"header/steps_namespace.h"
<cstdlib>
<cstring>
<istream>
<iostream>
<cstdio>
<cmath>

1706187859 source:d:\steps\code\steps\source\model\vsg_model\vsgcontrol2.cpp
"header/model/vsg_model/vsgcontrol2.h"
"header/basic/utility.h"
"header/power_system_database.h"
"header/STEPS.h"

1706188481 source:d:\steps\code\steps\source\model\vsg_model\vsg_model2.cpp
"header/model/vsg_model/vsg_model2.h"
"header/basic/utility.h"
"header/power_system_database.h"
"header/STEPS.h"
<iostream>

1 change: 1 addition & 0 deletions code/steps/header/data_imexporter/steps_imexporter.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ class STEPS_IMEXPORTER : public DATA_IMEXPORTER
void add_WT3G1_model(vector<string>& data);
void add_WT3G0_model(vector<string>& data);
void add_WT3G2_model(vector<string>& data);
void add_WT3GX_model(vector<string>& data);
void add_AERD0_model(vector<string>& data);
void add_WT3T0_model(vector<string>& data);
void add_WT3E0_model(vector<string>& data);
Expand Down
26 changes: 0 additions & 26 deletions code/steps/header/model/vsg_model/vsg_model.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,6 @@ class VSG_MODEL : public MODEL
virtual ~VSG_MODEL();
virtual string get_model_type() const;

SOURCE* get_source_pointer() const;
WT_GENERATOR* get_wt_generator_pointer() const;
PV_UNIT* get_pv_unit_pointer() const;
ENERGY_STORAGE* get_enerage_storage_pointer() const;

double get_mbase_in_MVA() const;
double get_one_over_mbase_in_one_over_MVA() const;

complex<double> get_terminal_complex_power_in_pu_based_on_mbase() const;
double get_terminal_voltage_in_pu() const;
complex<double> get_terminal_complex_voltage_in_pu() const;
double get_terminal_voltage_angle_in_rad() const;
double get_bus_base_frequency_in_Hz() const;
double get_bus_base_angle_speed_in_radps() const;
complex<double> get_source_impedance_in_pu_based_on_mbase() const;

void set_Pref_in_pu_based_on_mbase(double P);
void set_Qref_in_pu_based_on_mbase(double Q);
Expand Down Expand Up @@ -68,17 +53,6 @@ class VSG_MODEL : public MODEL
virtual void save() = 0;
virtual string get_standard_psse_string(bool export_internal_bus_number=false) const = 0;

virtual void prepare_model_data_table() = 0;
virtual double get_model_data_with_name(string par_name) const = 0;
virtual void set_model_data_with_name(string par_name, double value) = 0;
virtual double get_minimum_nonzero_time_constant_in_s() = 0;

virtual void prepare_model_internal_variable_table() = 0;
virtual double get_model_internal_variable_with_name(string var_name)= 0;

virtual string get_dynamic_data_in_psse_format() const = 0;
virtual string get_dynamic_data_in_bpa_format() const = 0;
virtual string get_dynamic_data_in_steps_format() const = 0;
private:
double Pref, Qref, Vref;
};
Expand Down
64 changes: 64 additions & 0 deletions code/steps/header/model/vsg_model/vsg_model2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#ifndef VSG_MODEL2_H
#define VSG_MODEL2_H

#include "header/STEPS.h"

class BUS;

class VSG_MODEL2
{
public:
VSG_MODEL2(STEPS& toolkit);
~VSG_MODEL2();
void set_toolkit(STEPS& toolkit);
STEPS& get_toolkit() const;

void set_bus(unsigned int bus);
BUS* get_bus_pointer() const;

void set_Pref_in_pu_based_on_mbase(double P);
void set_Qref_in_pu_based_on_mbase(double Q);
void set_Vref_in_pu(double V);
void set_P_in_pu_based_on_mbase(double P);
void set_Q_in_pu_based_on_mbase(double Q);
void set_V_in_pu(double V);

double get_Pref_in_pu_based_on_mbase() const;
double get_Qref_in_pu_based_on_mbase() const;
double get_Vref_in_pu() const;
double get_P_in_pu_based_on_mbase() const;
double get_Q_in_pu_based_on_mbase() const;
double get_V_in_pu() const;

void set_initial_virtual_voltage_in_pu(double V);
void set_initial_virtual_angle_in_rad(double angle);
double get_initial_virtual_voltage_in_pu() const;
double get_initial_virtual_angle_in_rad() const;

double get_virtual_frequency_deviation_in_pu() const;
double get_virtual_frequency_in_pu() const;
double get_virtual_frequency_in_Hz() const;
double get_virtual_angle_in_deg() const;

void initialize_base_frequency_and_base_angle_speed();
double get_base_frequency_in_Hz() const;
double get_base_angle_speed_in_radps() const;
public:
virtual string get_model_name() const = 0;

virtual void initialize() = 0;
virtual void run(DYNAMIC_MODE mode) = 0;

virtual double get_virtual_frequency_deviation_in_Hz() const = 0;
virtual double get_virtual_angle_in_rad() const = 0;
virtual double get_virtual_voltage_in_pu() const = 0;
virtual string get_standard_psse_string() const = 0;
private:
STEPS* toolkit;
BUS* busptr;
double P, Pref, Q, Qref, V, Vref;
double angle0, V0;
double fbase_Hz, wbase_radps;
};

#endif // VSG_MODEL2_H
33 changes: 11 additions & 22 deletions code/steps/header/model/vsg_model/vsg_model_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,36 +14,26 @@

#include "header/power_system_database.h"
#include "header/STEPS.h"
#include "header/model/vsg_model/vsg_model.h"
#include "header/model/wtg_models/wt_generator_model/wt3g0.h"
#include "header/model/vsg_model/vsg_model2.h"
using namespace std;

class VSG_MODEL_TEST : public Test::Suite
{
public:
VSG_MODEL_TEST();

WT_GENERATOR* get_test_wt_generator();
VSG_MODEL* get_test_model();
void set_test_model(VSG_MODEL* model);


void test_get_mbase_in_MVA();
void test_get_one_over_mbase_in_one_over_MVA();

void test_get_terminal_complex_power_in_pu_based_on_mbase();
void test_get_terminal_voltage_in_pu();
void test_get_terminal_complex_voltage_in_pu();
void test_get_terminal_voltage_angle_in_rad();
void test_get_bus_base_frequency_in_Hz();
void test_get_bus_base_angle_speed_in_radps();
void test_get_source_impedance_in_pu_based_on_mbase();
VSG_MODEL2* get_test_model();
void set_test_model(VSG_MODEL2* model);

void test_set_get_Pref_in_pu_based_on_mbase();
void test_set_get_Qref_in_pu_based_on_mbase();
void test_set_get_Vref_in_pu();

void test_get_virtual_speed_in_pu();
void test_set_get_P_in_pu_based_on_mbase();
void test_set_get_Q_in_pu_based_on_mbase();
void test_set_get_V_in_pu();
void test_set_get_initial_virtual_voltage_in_pu();
void test_set_get_initial_virtual_angle_in_rad();

void test_active_power_step_response_of_vsg_model();
void test_reactive_power_step_response_of_vsg_model();
Expand All @@ -53,11 +43,10 @@ class VSG_MODEL_TEST : public Test::Suite
void export_meter_title();
void export_meter_values(double time);
protected:
virtual setup();
virtual tear_down();
virtual void setup();
virtual void tear_down();
private:
VSG_MODEL* model;
WT3G0* wtg_model;
VSG_MODEL2* model;
};

#endif//VSG_MODEL_TEST_H
40 changes: 40 additions & 0 deletions code/steps/header/model/vsg_model/vsgcontrol2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#ifndef VSGCONTROL2_H
#define VSGCONTROL2_H

#include "header/model/vsg_model/vsg_model2.h"
#include "header/block/integral_block.h"

class VSGCONTROL2 : public VSG_MODEL2
{
public:
VSGCONTROL2(STEPS& toolkit);
virtual ~VSGCONTROL2();
VSGCONTROL2(const VSGCONTROL2& model);
virtual VSGCONTROL2& operator=(const VSGCONTROL2& model);
void clear();
void copy_from_const_model(const VSGCONTROL2& model);
public:
void set_Tj_in_s(double Tj);
void set_D(double D);
void set_Ku(double Ku);
void set_Te_in_s(double Ke);

double get_Tj_in_s() const;
double get_D() const;
double get_Ku() const;
double get_Te_in_s() const;
public:
virtual string get_model_name() const;
virtual void initialize();
virtual void run(DYNAMIC_MODE mode);

virtual double get_virtual_frequency_deviation_in_Hz() const;
virtual double get_virtual_angle_in_rad() const;
virtual double get_virtual_voltage_in_pu() const;
virtual string get_standard_psse_string() const;
private:
double D, Ku;
INTEGRAL_BLOCK virtual_frequency_deviation_block, virtual_angle_block, virtual_voltage_block;
};

#endif // VSGCONTROL2_H
Loading

0 comments on commit d41e2bd

Please sign in to comment.