This is a follow-up to my post about Transient Stability Analysis by Evaluation of the Critical Clearing Time with Python in DIgSILENT PowerFactory. While the mentioned post describes the evaluation of transient stability, this post addresses the improvement of transient stability by re-dispatching of synchronous generators. The goal of the re-dispatching is to guarantee a minimum critical clearing time (CCT) at the target (critical) buses. I have implemented the transient stability improvement in Python and it works with any DIgSILENT PowerFactory model that includes synchronous generators.
While there are many ways to improve the transient stability of power systems, in this post, I only focus on re-dispatching synchronous generators. If you are interested in other ways to improve transient stability, you can read my review paper “Transient stability improvement: a review and comparison of conventional and renewable-based techniques for preventive and emergency control“.
Important for your own analysis
Before starting the analysis you need to define the out-of-step signal for all generators under “Results for Simulation RMS/EMT” as shown below. This signal is necessary for the assessment of the CCT.
Test grid for demonstration
For the analysis, I used again the 39-bus New England system as shown below. The New England system is available in the example projects in PowerFactory.
Transient stability improvement approach
In the following, I will describe how to determine the needed re-dispatch to guarantee a certain critical clearing time at user-defined critical buses.
The block diagram below shows the different steps of the transient stability improvement approach.
Elaboration of the different steps
In this section, you can find a detailed description of the steps shown in the block diagram above. It is important to mention that the improvement approach is done sequentially on a per bus basis. That means the whole process is carried out for the first target bus (here “Bus 29”) and then continues with the next bus and so on.
Define Bus and CCTmin_target
At first, two things need to be defined. The critical bus(es) and the minimum target critical clearing time CCTmin_target in seconds. Below a screenshot of the input definition from the downloadable script. Three buses are defined and the min. target CCT is equal to 0.15 seconds.
Now you are asking yourself how to define the critical buses. I have used the advanced script from my post about Transient Stability Analysis by Evaluation of the Critical Clearing Time with Python in DIgSILENT PowerFactory to determine the critical buses. Direct link to the script.
Below you can see the results from the CCT assessment (the results here differ from the results in the previous post because I changed some of the SG setpoints). The buses 29, 26, and 28 are below 150 ms, thus, deemed critical. Therefore, I want to re-dispatch the SGs in such a way that the CCTs for these buses are equal to or above 150 ms.
Determine the CCT and associated critical SG with the current generator setpoints. The approach of the CCT determination is the same as discussed in Transient Stability Analysis by Evaluation of the Critical Clearing Time with Python in DIgSILENT PowerFactory.
Decision: CCTmin_target ≤ CCT ≤ CCTmin_target + ε
The assessment stops if the CCT is within the limits. CCTmin_target is the minimum target critical clearing time defined by the user whereas ε is the tolerance (here 1 ms).
The assessment continues, if the CCT is outside the limits.
Calculate new setpoint for SG
In the first two iterations, I assume that the SG setpoint is inversely proportional to the CCT. Therefore, the new SG setpoint is determined as follows: Pnew = Psgcrit * CCT/CCTmin_target with Psgcrit = current setpoint of critical SG, CCT = current CCT.
After the first two iterations, the new SG setpoint is calculated from the linear interpolation of the last two CCT/Psgcrit pairs.
The plot below shows the four iterations of the calculation including the CCT and Pset values during the iterations on the lower left side of the plot.
Re-distribute the dispatch to other SGs
This step is closely linked to the previous one because the difference in the setpoint from the critical SG must be distributed to the other SGs.
I have chosen to distribute the power according to the available capacity of each SG, i.e. SGs with more available capacity take over more of the re-dispatch than those with lower available capacity. In other words, SGs with lower loading take over more re-dispatch. This approach avoids bringing highly loaded generators to their stability limit, thereby reducing the overall transient stability of the system. Of course, you can adapt the code to use another re-distribution approach, e.g. according to the maximum capacity of the generators.
I have applied the approach to the New England system. Let’s have a look at the results.
Remember, the results of the initial CCT analysis showed that that the CCTs at “Bus 29”, “Bus 26” and “Bus 28” are below 150 ms. Therefore, I ran the analysis on these three buses to increase their CCT to 150 ms by re-dispatching the generators appropriately.
The results below show the re-dispatch of generator “G 09” to 624.5 MW to achieve a CCT of 0.151 seconds (which is between the desired limits) at “Bus 29”. The evaluation of the CCT at “Bus 26” and “Bus 28” shows that the CCT has already improved (through the re-dispatch of “G 09”), thus, no need for further re-dispatch.
The results further show the individual changes of the SG setpoints from the initial to the final setpoints. You can see that the active power reduction from “G 09” has been re-dispatched to the other SGs.
Now we can evaluate if the re-dispatch has improved the CCTs. For this I used again the script from Transient Stability Analysis by Evaluation of the Critical Clearing Time with Python in DIgSILENT PowerFactory.
Indeed, now all CCTs are above 150 ms and the transient stability has been improved. This also confirms that the re-dispatch approach works well.
Final remarks about the approach
As the re-dispatch approach works sequentially, it does not guarantee that the found solution is optimal. In fact, the solution differs depending on the input order of the critical buses. Generally, I suggest ordering them from lowest to highest CCT (like in the presented analysis) to reach a near-optimal solution.
It might happen that, through the re-dispatch, the CCT at other buses falls below the desired limit. This would then require another round of re-dispatch to improve the CCT of those buses. That basically means that, after the first round of re-dispatch, you need to check again the CCT of all buses to verify if none of them fell below the desired minimum CCT.
I hope you find this article insightful. Consider leaving a comment to let me know your thoughts on the topic.
More insights within power systems are to follow in the next article.