parent
417626d442
commit
f989ff57fa
@ -0,0 +1,499 @@
|
||||
Advanced Usage
|
||||
==============
|
||||
|
||||
1. Customize analysis with settings file/struct
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
PowerSAS.m lets you customize your simulation by providing a simulation
|
||||
settings interface to specify the events and scenarios to be analyzed.
|
||||
To use the customized simulation, call the ``runPowerSAS`` function as
|
||||
follows:
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
res=runPowerSAS('dyn',data,options,settings,snapshot)
|
||||
|
||||
Details are explained as follows: #### 1.1 Settings file The input
|
||||
argument ``settings`` can be a string specifying the settings file name,
|
||||
or a struct containing all the simulation settings.
|
||||
|
||||
When ``settings`` is a string, it should be a valid file name of an .m
|
||||
script file containing the settings. Some examples of the settings files
|
||||
can be found in the directory ``/data``. The settings file should have
|
||||
the following variables:
|
||||
|
||||
- ``eventList``: A gross list of events. (`more
|
||||
details <#variable-eventlist>`__)
|
||||
- ``bsBus``: (for black start simulation only) Black start bus
|
||||
information. (`more details <#variable-bsbus>`__)
|
||||
- ``bsSyn``: (for black start simulation only) Generator information on
|
||||
black start bus. (`more details <#variable-bssyn>`__)
|
||||
- ``bsInd``: (for black start simulation only) Inductin motor on black
|
||||
start bus. (`more details <#variable-bsind>`__)
|
||||
- ``Efstd``: Excitation potential of synchronous generators. (`more
|
||||
details <#variable-efstd>`__)
|
||||
- ``evtLine``: List of line addition/outage events. (`more
|
||||
details <#variables-evtline-and-evtlinespec>`__)
|
||||
- ``evtLineSpec``: Specifications of line addition/outage events.
|
||||
(`more details <#variables-evtline-and-evtlinespec>`__)
|
||||
- ``evtZip``: List of static load addition/shedding events. (`more
|
||||
details <#variables-evtzip-evtzipspec-and-evtzipspec2>`__)
|
||||
- ``evtZipSpec``: Specifications of static load addition/shedding
|
||||
events. (`more
|
||||
details <#variables-evtzip-evtzipspec-and-evtzipspec2>`__)
|
||||
- ``evtZipSpec2``: Alternative specifications of static load
|
||||
addition/shedding events. (`more
|
||||
details <#variables-evtzip-evtzipspec-and-evtzipspec2>`__)
|
||||
- ``evtInd``: List of induction motor addition/outage events. (`more
|
||||
details <#variables-evtind-and-evtindspec>`__)
|
||||
- ``evtIndSpec``: Specifications of induction motor addition/outage
|
||||
events. (`more details <#variables-evtind-and-evtindspec>`__)
|
||||
- ``evtSyn``: List of synchronous generator addition/outage events.
|
||||
(`more details <#variables-evtsyn-and-evtsynspec>`__)
|
||||
- ``evtSynSpec``: Specifications of synchronous generator
|
||||
addition/outage events. (`more
|
||||
details <#variables-evtsyn-and-evtsynspec>`__)
|
||||
- ``evtFault``: List of fault occurrence/clearing events. (`more
|
||||
details <#variables-evtfault-and-evtfaultspec>`__)
|
||||
- ``evtFaultSpec``: Specifications of fault occurrence/clearning
|
||||
events. (`more details <#variables-evtfault-and-evtfaultspec>`__)
|
||||
- ``evtDyn``: List of dynamic ramping events. (`more
|
||||
details <#variable-evtdyn>`__)
|
||||
- ``evtDynPQ``: Specifications of PQ bus ramping. (`more
|
||||
details <#variable-evtdynpq>`__)
|
||||
- ``evtDynPV``: Specifications of PV bus ramping. (`more
|
||||
details <#variable-evtdynpv>`__)
|
||||
- ``evtDynInd``: Specifications of induction motor mechanical load
|
||||
ramping. (`more details <#variable-evtdynind>`__)
|
||||
- ``evtDynZip``: Specifications of ZIP load ramping. (`more
|
||||
details <#variable-evtdynzip>`__)
|
||||
- ``evtDynSh``: Specifications of shunt compensator ramping. (`more
|
||||
details <#variable-evtdynsh>`__)
|
||||
- ``evtDynZipRamp``: Alternative specifications of ZIP load ramping.
|
||||
(`more details <#variable-evtdynramp>`__)
|
||||
- ``evtDynTmech``: Specifications of generator mechanical torque
|
||||
ramping. (`more details <#variable-evtdyntmech>`__)
|
||||
- ``evtDynPm``: Specifications of generator input active power ramping.
|
||||
(`more details <#variable-evtdynpm>`__)
|
||||
- ``evtDynEf``: Specifications of generator excitation potential
|
||||
ramping. (`more details <#variable-evtdynef>`__)
|
||||
- ``evtDynVref``: Specifications of exciter reference voltage ramping.
|
||||
(`more details <#variable-evtdynvref>`__)
|
||||
- ``evtDynEq1``: Specifications of generator transient excitation
|
||||
potential ramping. (`more details <#variable-evtdyneq1>`__)
|
||||
|
||||
1.2 Settings struct
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Alternatively, the ``settings`` can be a struct containing all the
|
||||
previous variables as its fields.
|
||||
|
||||
Example 1: Transient stability analysis (TSA) using settings file
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
In this example, we want to perform transient stability analysis on
|
||||
2383-bus system. Here is the scenario of the TSA: \* The total
|
||||
simulation period is 10 seconds. \* At 0.5 s, apply faults on the
|
||||
starting terminals of lines 74 and 114, the fault resistance is 0.0 and
|
||||
the reactance is 0.02. At 0.75 s, clear the faults. \* At 1.5 s, apply
|
||||
fault on the starting terminal of line 1674, the fault resistance is 0.0
|
||||
and the reactance is 0.1. At 1.95 s, clear the faults.
|
||||
|
||||
The settings file for this simulation is shown below. Other variables
|
||||
irrelevant to the fault events are omitted here for the sake of clarity.
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
eventList=[...
|
||||
1 0.0000 0.0000 0 1 0.0 0.0000
|
||||
1.1 0.5000 0.0000 6 1 0.0 0.0000
|
||||
1.2 0.7500 0.0000 6 2 0.0 0.0000
|
||||
1.3 1.5000 0.0000 6 3 0.0 0.0000
|
||||
1.4 1.9500 0.0000 6 4 0.0 0.0000
|
||||
3 10.00 0.0000 99 0 0.0 0.0000
|
||||
];
|
||||
|
||||
% Fault event data
|
||||
evtFault=[...
|
||||
1 1 2
|
||||
2 3 4
|
||||
3 5 5
|
||||
4 6 6
|
||||
];
|
||||
|
||||
evtFaultSpec=[...
|
||||
114, 0.00, 0, 0.02, 0;
|
||||
74, 0.00, 0, 0.02, 0;
|
||||
114, 0.00, 0, 0.02, 1;
|
||||
74, 0.00, 0, 0.02, 1;
|
||||
1674, 0.00, 0, 0.1, 0;
|
||||
1674, 0.00, 0, 0.1, 1;
|
||||
];
|
||||
|
||||
Assume the settings file is ``settings_polilsh_tsa.m`` and the system
|
||||
data file is ``d_dcase2383wp_mod2_ind_zip_syn.m``. We can run the TSA as
|
||||
follows:
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
res_2383_st=runPowerSAS('pf','d_dcase2383wp_mod2_ind_zip_syn.m'); % Run steady-state
|
||||
res_2383_tsa=runPowerSAS('dyn','d_dcase2383wp_mod2_ind_zip_syn.m',setOptions('hotStart',1),'settings_polilsh_tsa',res_2383_st.snapshot); % Hot start from existing steady-state
|
||||
|
||||
plotCurves(1,res_2383_tsa.t,res_2383_tsa.stateCurve,res_2383_tsa.SysDataBase,'v'); % plot the voltage magnitude curves
|
||||
|
||||
2. Extended-term simulation using hybrid QSS and dynamic engines
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To accelerate computation — especially for extended-term simulation —
|
||||
PowerSAS.m provides an adaptive way to switch between QSS and dynamic
|
||||
engines in the course of a simulation. With this feature enabled,
|
||||
PowerSAS.m can switch to QSS simulation for better speed on detecting
|
||||
the fade-away of transients and switch back to dynamic simulation upon
|
||||
detecting transient events.
|
||||
|
||||
For more details on the technical approach, please refer to our paper:
|
||||
\* Hybrid QSS and Dynamic Extended-Term Simulation Based on Holomorphic
|
||||
Embedding, arXiv:2104.02877
|
||||
|
||||
Example 2 illustrates the use of PowerSAS.m to perform extended-term
|
||||
simulation.
|
||||
|
||||
Example 2: Extended-term simulation
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
We want to study the response of a 4-bus system under periodic
|
||||
disturbances. The entire simulated process is 500 seconds. Starting at
|
||||
60 s and continuing until 270 s, the system undergoes events of
|
||||
adding/shedding loads every 30 s.
|
||||
|
||||
The key settings of the simulation are:
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
% settings_d_004_2a_agc.m
|
||||
|
||||
eventList=[...
|
||||
1 0.0000 0.0000 0 1 0.0 0.0100
|
||||
6 60.0000 0.0000 2 1 0.0 0.0100
|
||||
7 90.0000 0.0000 2 2 0.0 0.0100
|
||||
8 120.0000 0.0000 2 3 0.0 0.0100
|
||||
9 150.0000 0.0000 2 4 0.0 0.0100
|
||||
10 180.0000 0.0000 2 1 0.0 0.0100
|
||||
11 210.0000 0.0000 2 2 0.0 0.0100
|
||||
12 240.0000 0.0000 2 3 0.0 0.0100
|
||||
13 270.0000 0.0000 2 4 0.0 0.0100
|
||||
18 500.0000 0.0000 99 0 0.0 0.0100
|
||||
];
|
||||
|
||||
% Static load event data
|
||||
evtZip=[...
|
||||
1 1 1 1
|
||||
2 1 2 2
|
||||
3 1 3 3
|
||||
4 1 4 4
|
||||
];
|
||||
|
||||
evtZipSpec2=[...
|
||||
3 100.0000 100.0000 60.0000 0.0648 0.0648 0.0648 0.0359 0.0359 0.0359 0 1
|
||||
2 100.0000 100.0000 60.0000 0.0648 0.0648 0.0648 0.0359 0.0359 0.0359 0 1
|
||||
3 100.0000 100.0000 60.0000 -0.0648 -0.0648 -0.0648 -0.0359 -0.0359 -0.0359 0 1
|
||||
2 100.0000 100.0000 60.0000 -0.0648 -0.0648 -0.0648 -0.0359 -0.0359 -0.0359 0 1
|
||||
];
|
||||
|
||||
First we run the simulation in full-dynamic mode and record time:
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
% Full dynamic simulation
|
||||
tagFullDynStart=tic;
|
||||
res_004_fulldyn=runPowerSAS('dyn','d_004_2a_bs_agc.m',[]],'settings_d_004_2a_agc');
|
||||
timeFullDyn=toc(tagFullDynStart);
|
||||
|
||||
Then we run the simulation in hybrid QSS & dynamic mode and record time:
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
% Hybrid simulation with dynamic-QSS switching
|
||||
tagHybridStart=tic;
|
||||
res_004=runPowerSAS('dyn','d_004_2a_bs_agc.m',setOptions('allowSteadyDynSwitch',1),'settings_d_004_2a_agc');
|
||||
timeHybrid=toc(tagHybridStart);
|
||||
|
||||
Compare the results:
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
plotCurves(1,res_004_fulldyn.t,res_004_fulldyn.stateCurve,res_004_fulldyn.SysDataBase,'v');
|
||||
plotCurves(2,res_004.t,res_004.stateCurve,res_004.SysDataBase,'v');
|
||||
|
||||
And compare the computation time:
|
||||
|
||||
.. code:: matlab
|
||||
|
||||
disp(['Full dynamic simulation computation time:', num2str(timeFullDyn),' s.']);
|
||||
disp(['Hybrid simulation computation time:', num2str(timeHybrid),' s.']);
|
||||
|
||||
The complete example can be found in
|
||||
``/example/ex_extended_term_dyn.m``. And the results can also be found
|
||||
in our paper: \* Hybrid QSS and Dynamic Extended-Term Simulation Based
|
||||
on Holomorphic Embedding, arXiv:2104.02877
|
||||
|
||||
Appendix: Variables in settings
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
variable ``eventList``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) ##### Table 1. Definition of
|
||||
``eventList`` Column \| Content ——-\| ————- 1 \| Event index (can be an
|
||||
integer or a real number) 2 \| Event start time 3 \| Event end time (no
|
||||
effect for instant event) 4 \| Type of event (see `Table
|
||||
2 <#table-2-event-types>`__) 5 \| Index of event under its type 6 \|
|
||||
Simulation method (default 0.0) (see below `Simulation
|
||||
methods <#simulation-methods>`__) 7 \| Timestep (default 0.01)
|
||||
|
||||
Table 2. Event types
|
||||
''''''''''''''''''''
|
||||
|
||||
(`back to top <#11-settings-file>`__) Value \| Event type ——-\| ————- 0
|
||||
\| Calculate steady-state at start 1 \| Add line 2 \| Add static load 3
|
||||
\| Add induction motor load 4 \| Add synchronous generator 6 \|
|
||||
Applying/clearing faults 7 \| Cut line 8 \| Cut static load 9 \| Cut
|
||||
motor load 10\| Cut synchronous generator 50\| Dynamic process 99\| End
|
||||
of simulation
|
||||
|
||||
Simulation methods
|
||||
''''''''''''''''''
|
||||
|
||||
Simulation methods can be specified for each event on the 6th column of
|
||||
``eventList``. It is encoded as a number ``x.yz``, where: \* ``x`` is
|
||||
the method for solving differential equation, where 0 - SAS, 1 -
|
||||
Modified Euler, 2 - R-K 4, 3 - Trapezoidal rule. \* ``y`` is the method
|
||||
for solving algebraic equation, where 0 - SAS, 1 - Newton-Raphson. \*
|
||||
``z`` is whether to use variable time step scheme for numerical
|
||||
integration (``x`` is 1, 2 or 3). 0 - Fixed step, 1 - Variable step.
|
||||
|
||||
Note that when ``x=0``, ``y`` and ``z`` are not effective, it
|
||||
automatically uses SAS and variable time steps.
|
||||
|
||||
variable ``bsBus``
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Current version only support one
|
||||
black start bus and therefore only the first line will be recognized.
|
||||
Will expand in the future versions. Column \| Content ——-\| ————- 1 \|
|
||||
Bus index 2 \| Active power of Z component load 3 \| Active power of I
|
||||
component load 4 \| Active power of P component load 5 \| Reactive power
|
||||
of Z component load 6 \| Reactive power of I component load 7 \|
|
||||
Reactive power of P component load
|
||||
|
||||
variable ``bsSyn``
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of synchronous generator 2 \| Excitation potential 3 \| Active
|
||||
power 4 \| Participation factor for power balancing
|
||||
|
||||
variable ``bsInd``
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of induction motor 2 \| Mechanical load torque
|
||||
|
||||
variable ``Efstd``
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) When there are synchronous
|
||||
generators in the system model, ``Efstd`` is needed to compute steady
|
||||
state. The ``Efstd`` is a column vector specifying the excitation
|
||||
potential of every synchronous generator, or it can also be a scalar
|
||||
assigning the excitation potentials of all the generator as the same
|
||||
value.
|
||||
|
||||
variables ``evtLine`` and ``evtLineSpec``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) In ``eventList``, when the 4th
|
||||
column (event type) equals 1 or 7 (add or cut line, respectively), the
|
||||
index of the line events in ``evtLine`` corresponds to the 5th column of
|
||||
``eventList``. ##### variable ``evtLine`` (`back to
|
||||
top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \| Index of
|
||||
line events (from 5th column of ``eventList``) 2 \| Start index in
|
||||
``evtLineSpec`` 3 \| End index in ``evtLineSpec``
|
||||
|
||||
variable ``evtLineSpec``
|
||||
''''''''''''''''''''''''
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of line 2 \| Add/cut mark, 0 - add line, 1 - cut line 3 \|
|
||||
Reserved 4 \| Reserved 5 \| Reserved
|
||||
|
||||
variables ``evtZip``, ``evtZipSpec`` and ``evtZipSpec2``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) In ``eventList``, when the 4th
|
||||
column (event type) equals 2 or 8 (add/cut static load), the index of
|
||||
the load events in ``evtZip`` corresponds to the 5th column of
|
||||
``eventList``. ##### variable ``evtLine`` (`back to
|
||||
top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \| Index of
|
||||
load events (from 5th column of ``eventList``) 2 \| Choose
|
||||
``evtZipSpec`` (0) or ``evtZipSpec2`` (1) 3 \| Start index in
|
||||
``evtZipSpec`` or ``evtZipSpec2`` 4 \| End index in ``evtZipSpec`` or
|
||||
``evtZipSpec2``
|
||||
|
||||
variable ``evtZipSpec``
|
||||
'''''''''''''''''''''''
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of zip loads in system base state 2 \| Add/cut mark, 0 - add load,
|
||||
1 - cut load
|
||||
|
||||
variable ``evtZipSpec2`` (recommended)
|
||||
''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
(`back to top <#11-settings-file>`__) ``evtZipSpec2`` has the same
|
||||
format as PSAT ZIP load format, which represents the change of ZIP load.
|
||||
Whether the event is specified as add/cut load does not make difference.
|
||||
|
||||
variables ``evtInd`` and ``evtIndSpec``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) In ``eventList``, when the 4th
|
||||
column (event type) equals 3 or 9 (add or cut induction motors,
|
||||
respectively), the index of the induction motor events in ``evtInd``
|
||||
corresponds to the 5th column of ``eventList``. ##### variable
|
||||
``evtInd`` (`back to top <#11-settings-file>`__) Column \| Content ——-\|
|
||||
————- 1 \| Index of induction motor events (from 5th column of
|
||||
``eventList``) 2 \| Start index in ``evtIndSpec`` 3 \| End index in
|
||||
``evtIndSpec``
|
||||
|
||||
variable ``evtIndSpec``
|
||||
'''''''''''''''''''''''
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of induction motor 2 \| Event type, 0 - add motor, 1 - change
|
||||
state, 2 - cut motor 3 \| Designated mechanical torque 4 \| Designated
|
||||
slip
|
||||
|
||||
variables ``evtSyn`` and ``evtSynSpec``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) In ``eventList``, when the 4th
|
||||
column (event type) equals 4 or 10 (add or cut synchronous generators,
|
||||
respectively), the index of the synchronous generator events in
|
||||
``evtSyn`` corresponds to the 5th column of ``eventList``. #####
|
||||
variable ``evtSyn`` Column \| Content ——-\| ————- 1 \| Index of
|
||||
synchronous generator events (from 5th column of ``eventList``) 2 \|
|
||||
Start index in ``evtSynSpec`` 3 \| End index in ``evtSynSpec``
|
||||
|
||||
variable ``evtSynSpec``
|
||||
'''''''''''''''''''''''
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of synchronous generator 2 \| Event type, 0 - add generator, 1 -
|
||||
cut generator 3 \| Designated rotor angle (only effective when adding
|
||||
generator, NaN means the rotor angle is the same with voltage angle). 4
|
||||
\| Designated mechanical power (only effective when adding generator). 5
|
||||
\| Designated excitation potential (only effective when adding
|
||||
generator).
|
||||
|
||||
variables ``evtFault`` and ``evtFaultSpec``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) In ``eventList``, when the 4th
|
||||
column (event type) equals 6 (apply or clear faults, respectively), the
|
||||
index of the fault events in ``evtFault`` corresponds to the 5th column
|
||||
of ``eventList``. In the current version, we only consider three-phase
|
||||
grounding faults. ##### variable ``evtFault`` Column \| Content ——-\|
|
||||
————- 1 \| Index of fault events (from 5th column of ``eventList``) 2 \|
|
||||
Start index in ``evtFaultSpec`` 3 \| End index in ``evtFaultSpec``
|
||||
|
||||
variable ``evtFaultSpec``
|
||||
'''''''''''''''''''''''''
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of fault line 2 \| Position of fault, 0.0 stands for starting
|
||||
terminal and 1.0 stands for ending terminal. 3 \| Resistance of fault. 4
|
||||
\| Reactance of fault. 5 \| Event type: 0 - add fault; 1 - clear fault.
|
||||
|
||||
variable ``evtDyn``
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) The ``evtDyn`` variable specifies
|
||||
the indexes of ramping events involving various types of components.
|
||||
Column \| Content ——-\| ————- 1 \| Index of event 2 \| Start index in
|
||||
``evtDynPQ`` 3 \| End index in ``evtDynPQ`` 4 \| Start index in
|
||||
``evtDynPV`` 5 \| End index in ``evtDynPV`` 6 \| Start index in
|
||||
``evtDynInd`` 7 \| End index in ``evtDynInd`` 8 \| Start index in
|
||||
``evtDynZip`` 9 \| End index in ``evtDynZip`` 10\| Start index in
|
||||
``evtDynSh`` 11\| End index in ``evtDynSh`` 12\| Start index in
|
||||
``evtDynZipRamp`` 13\| End index in ``evtDynZipRamp`` 14\| Start index
|
||||
in ``evtDynTmech`` 15\| End index in ``evtDynTmech`` 16\| Start index in
|
||||
``evtDynPm`` 17\| End index in ``evtDynPm`` 18\| Start index in
|
||||
``evtDynEf`` 19\| End index in ``evtDynEf`` 20\| Start index in
|
||||
``evtDynVref`` 21\| End index in ``evtDynVref`` 22\| Start index in
|
||||
``evtDynEq1`` 23\| End index in ``evtDynEq1``
|
||||
|
||||
variable ``evtDynPQ``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of bus 2 \| Active power ramping rate 3 \| Reactive power ramping
|
||||
rate
|
||||
|
||||
variable ``evtDynPV``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of bus 2 \| Active power ramping rate
|
||||
|
||||
variable ``evtDynInd``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of induction motor 2 \| Mechanical load torque ramping rate
|
||||
|
||||
variable ``evtDynZip``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of bus 2 \| ZIP load ramping rate
|
||||
|
||||
variable ``evtDynSh``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of bus 2 \| Shunt admittance ramping rate
|
||||
|
||||
variable ``evtDynZipRamp``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) ``evtDynZipRamp`` has the same
|
||||
format as PSAT ZIP load format, which represents the ramping direction
|
||||
of ZIP load.
|
||||
|
||||
variable ``evtDynTmech``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of synchronous generator 2 \| Ramping rate of mechanical power
|
||||
reference value (TG required)
|
||||
|
||||
variable ``evtDynEf``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of synchronous generator 2 \| Ramping rate of excitation potential
|
||||
|
||||
variable ``evtDynVref``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of synchronous generator 2 \| Ramping rate of exciter reference
|
||||
voltage
|
||||
|
||||
variable ``evtDynEq1``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
(`back to top <#11-settings-file>`__) Column \| Content ——-\| ————- 1 \|
|
||||
Index of synchronous generator 2 \| Ramping rate of transient excitation
|
||||
potential
|
@ -0,0 +1,21 @@
|
||||
Data and Models
|
||||
===============
|
||||
|
||||
1. Supported data formats
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Currently PowerSAS.m supports extended PSAT (Matlab) data format.
|
||||
Support for other formats and data format conversion features will be
|
||||
added in future versions.
|
||||
|
||||
2. Extension of PSAT (Matlab) format
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
2.1 Automatic generation control (AGC) model
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Here PowerSAS provides a simple AGC model. It is named as ``Agc.con`` in
|
||||
data files and it is a :math:`\text{N}\times \text{4}` matrix. Each
|
||||
column is defined as below: Column \| Content ——-\| ————- 1 \| Bus index
|
||||
2 \| Reciprocal of turbine governor gain on bus 3 \| Effective damping
|
||||
ratio on bus 4 \| Reciprocal of AGC control time constant
|
@ -0,0 +1,41 @@
|
||||
Installation
|
||||
============
|
||||
|
||||
1. System requirements
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Matlab (7.1 or later) or GNU Octave (4.0.0 or later).
|
||||
|
||||
.. _installation-1:
|
||||
|
||||
2. Installation
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
- Extract source code to a directory.
|
||||
- Enter the directory in Matlab or GNU Octave.
|
||||
- Execute command ``setup``. You will see the following
|
||||
sub-directories:
|
||||
|
||||
- ``/data``: Stores test system data, simulation settings data, etc.
|
||||
- ``/example``: Some examples of using PowerSAS.m.
|
||||
- ``/output``: Stores test result data.
|
||||
- ``/internal``: Internal functions of PowerSAS.m computation core.
|
||||
- ``/util``: Auxiliary functions including data I/O, plotting, data
|
||||
conversion, etc.
|
||||
- ``/logging``: Built-in logging system.
|
||||
- ``/doc``: Documentation.
|
||||
|
||||
3. Test
|
||||
~~~~~~~
|
||||
|
||||
- Execute command ``initpowersas`` to initialize the environment, then
|
||||
execute ``test_powersas`` to run tests. You should expect all tests
|
||||
to pass.
|
||||
|
||||
4. Initialization
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
To initialize PowerSAS.m, add the main directory of PowerSAS.m to your
|
||||
Matlab or GNU Octave path and run the command ``initpowersas``. This
|
||||
will ensure that all the functions of PowerSAS.m are added to the path
|
||||
and thus callable.
|
Loading…
Reference in new issue