Skip to content

Softwarepaket „Netz Analyse Tool“, kurz NAT: Dieses Simulationstool kombiniert Last- und Einspeiseprofile mit einer probabilistischen Monte-Carlo-Lastfluss-Simulation und führt dabei Berechnungen für beliebige Netzstrukturen und unterschiedlichste Last- und Einspeiseszenarien durch, wodurch die Netzspannungsprofile, die Belastungssituationen der…

Notifications You must be signed in to change notification settings

FXaverZ/NetworkAnalysisTool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

177 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Network Analysis Tool

Detailed description under Wiki

Link to Datenstructuredocument (Google Tabellen).

For more information see also my Phd Thesis (in German, Chapter 4).

System Requirements

Needed Software:

  • MATLAB Version: 9.7.0.1190202 (R2019b) with following toolboxes
    • Curve Fitting Toolbox, Version 3.5.10
    • Data Acquisition Toolbox, Version 4.0.1
    • Database Toolbox, Version 9.2
    • Optimization Toolbox, Version 8.4
    • Parallel Computing Toolbox, Version 7.1
    • Spreadsheet Link, Version 3.4.2
    • Statistics and Machine Learning Toolbox
  • PSS(R)SINCAL 14.0

Changelogs

Changelog NAT

Changelog documentation in NAT, v1.1b, date of changes: 11/04/2013

All changes are preceeded by "% -- changelog v1.1b ##### (start) // 20130411" and ended by "% -- changelog v1.1b ##### (end) // 20130411"

File changed: network_load.m

  • --Added a table with all nodes in system in SINCAL.Tables.Node

  • --Added a table with all voltage levels in system in SINCAL.Tables.VoltageLevel

    • Line 30: sin.table_data_load('Node');
    • Line 31: sin.table_data_load('VoltageLevel');
  • --Copied the table to NAT_Data_class.Grid.All_Node.ids

    • Line 45-47: data_o.Grid.All_Node.ids =…
  • --Added a all node class Connection_All_Point

    • Line 62 – 68: data_o.Grid.All_Node.Points
    • Used a method to define voltage limits for all nodes, line 67
  • -- Added a class** Connection_All_Points.m**

  • --File similar to Connection_Points.m, except it checks all nodes regardless of load connected

    • Used in NAT_data_class.Grid.All_Node.Points <Connection_All_Points object>
    • Object includes (Node_ID, Node_Obj, Node_Name, VoltLevel_ID, Rated_Voltage_phase_phase, Rated_Voltage_phase_earth, Voltage_Limits and Voltage>
  • --Defined all nodes, matched voltage levels with nodes to define actual voltage level (bug in SINCAL?) and defined rated voltages for phase-phase and phase-earth

    • function obj = Connection_All_Point(sin_ext, node_id_ext)
  • --Defined voltage limits for all nodes, default values at 90 % and 110 % if none specified in model. Can observe two voltage limit levels

    • function voltage_limits = define_voltage_limits (obj)
  • --Update voltage node for unsymmetric and symmetric load flows (same as Connection_Point class)

    • function voltage = update_voltage_node_LF_USYM (obj)
    • function voltage = update_voltages_node_LF_NR (obj)

Added on-line function on_line_voltage_analysis.m

  • --Ex-Analyzing_function1. The function checks voltage violations for two voltage limit levels.
  • --I added several possible operating conditions:
    • If the model will experience on-line voltage-limit changes (smart grids?), the function can recheck the voltage limits for each node at every iteration.
      • Currently this is disabled, it only checks the values once.
    • All nodal voltages are compared to voltage limits
      • If two voltage limit levels are defined, both are checked, if only one voltage limit level is defined, only one is checked.
      • The results return conditional values of 0 (voltage limits not exceeded), 1 (voltage limits exceeded at first limit level) and 2 (voltage limits exceeded at second limit level)
    • Voltages can also be stored either as V or in % for each phase or not at all (to be discussed)
  • --Currently, the NR symmetrical load flow voltage checking is not working, as I have yet to convince the program to use LF_NR setting for the calculation method.

File changed: network_calculation.m

  • --File changed to properly call the on-line voltage violation check function.
    • Line 126: on_line_voltage_analysis(handles); %%CH_MA

Changelog documentation in NAT, v1.1b, date of changes: 15/04/2013

All changes are preceeded by "% -- changelog v1.1b ##### (start) // 20130415" and ended by "% -- changelog v1.1b ##### (end) // 20130415"

File changed: network_load.m

  • --Added transformers into analysis in order to test if they are overloaded
  • --Changed NAT-data structure with the following changes:
    • data_o.Grid.Branches.id is now separated into transformer and line data: data_o.Grid.Branches.line_ids and data_o.Grid.Branches_tran_ids
    • Objects for lines and transformers are separated in the data_o.Grid.Branches.Lines and data_o.Grid.Branches.Transf
  • --Added two lines where branch limits (lines, two-winding transformers) are defined. Used a function within branch.m class (define_branch_limits).
    • All above changes in lines 75-92 and line 98-106

File changed: branch.m

  • --Defined Rated_Voltage1_phase_phase and Rated_Voltage1_phase_earth (from node), Rated_Voltage2_phase_phase and Rated_Voltage2_phase_earth, Current_Limits, App_Power_Limits
  • --Modified Branch function to read rated voltages for lines and transformers
    • function obj = Branch(sin_ext, branch_id_ext)
  • --Added function to define branch limits (current and apparent power limits) for lines and transformers. The function checks for all possible limit values from SINCAL
    • function current_limits = define_branch_limits (obj)
  • --Added function that reads active, reactive and apparent power load-flow results for unsymmetrical calculations
    • function power = update_power_branch_LF_USYM (obj)
  • --All above changes in lines 1-304

File changed: Connection_Point.m

  • --Modified the way load values are saved into SINCAL model (bug? Where L123 loads are not updated with single phase values) – the fix I used is to sum all phases and write the value into 'P' and 'Q' field.
    • Possibility of adding a subfunction that checks the load type
    • Line 156: obj_s(i).P_Q_Obj.set('Item','P',p_q(1)+p_q(3)+p_q(5));
    • Line 157: obj_s(i).P_Q_Obj.set('Item','Q',p_q(2)+p_q(4)+p_q(6));

File changed: Connection_All_Point.m

  • --Fixed a bug where voltage level search did not work due to untrimmed node names
  • --Bug fix in lines 73-86

Changed name of on-line function on_line_voltage_analysis.m to online_voltage_analysis.m

Added on-line function online_branch_violation_analysis.m

  • --The function checks branch (line, two winding transformers) limit violations. SINCAL offers 4 limit values per element, so the function is capable of checking all limits
  • --I added several possible operating conditions:
    • If the model will experience on-line thermal limit changes (smart grids), the function can recheck the branch limits for each branch at every iteration.
      • Currently this is disabled, it only checks the values once.
    • All branch currents/apparent power is compared to the maximum/thermal limits
      • If more than one branch limit is defined, all branch limits are checked, if only one limit is defined, only one is checked (for increased speed of calculation?).
      • The results return conditional values of 0 (branch limits not exceeded), 1 (branch limits exceeded at base level), 2 (branch limits exceeded at first thermal/maximum limit), 3 (branch limits exceeded at second thermal/maximum limit) and 4 (branch limits exceeded at third thermal/maximum limit)
    • Branch values can also be stored as SI units for each phase or not at all (to be discussed). The result of the branch values are given in a n x 16 array (P,Q,S,I) for L1,L2,L3 and LE.
  • --Currently, the NR symmetrical load flow branch violation checking is not working, as I have yet to convince the program to use LF_NR setting for the calculation method.
    • Line 130 of network calculation.m: nline_branch_violation_analysis(handles)

Changelog documentation in NAT, v1.1b, date of changes: 18/04/2013

All changes are preceeded by "% -- changelog v1.1b ##### (start) // 20130418" and ended by "% -- changelog v1.1b ##### (end) // 20130418"

File changed: network_load.m

Changelog documentation in NAT, v1.1b, date of changes: 18/04/2013

Changelog documentation in NAT, v1.1c, date of changes: 02/05/2013

All changes are preceeded by "% -- changelog v1.1b ##### (start) // 20130502" and ended by "% -- changelog v1.1b ##### (end) // 20130502"

Modified file: write_scenario_log.m

  • -- Fixed typo: fprintf(fid, '##CALCULATION SUCCESSFULLY FINISHED');

Modified file: network_scenario_calculation.m

  • -- Fixed typo: fprintf('CALCULATION SUCCESSFULLY FINISHED! \n');

Modified file: network_calculation.m

Modified file: online_voltage_violation_analysis.m

Removed file: save_node_values.m

  • -- Moved save node results into online_voltage_violation_analysis.m function. The reason for this was that the online voltage violation function reads the voltages for its operation. By merging the two and separating them by the existing if "Current_Settings.Simulation.Save_Voltage_Results" there is no need to access the database twice for the voltages. This is similar to the power loss analyzing function.
  • -- The branch result saving is still separated, as the online branch violation function only requires currents to work, so we only need to read the currents. If we want to save the branch results, additional values must be read, therefore we separate the branch functions.
    • Line 237 -245
    • First simulations show a speed improvement of a 5-10 seconds per dataset.
  • --** Modified file: **** online_voltage_violation_analysis.m**
  • --** Removed file: **** save_node_values.m**
    • Line 103 - 107

Changelog documentation in NAT, v1.1c, date of changes: 02/05/2013

All changes are preceeded by "% -- changelog v1.1b ##### (start) // 20130502" and ended by "% -- changelog v1.1b ##### (end) // 20130502"

Modified file: write_scenario_log.m

  • -- Fixed typo: fprintf(fid, '##CALCULATION SUCCESSFULLY FINISHED');

Modified file: network_scenario_calculation.m

  • -- Fixed typo: fprintf('CALCULATION SUCCESSFULLY FINISHED! \n');

Modified file: network_calculation.m

Modified file: online_voltage_violation_analysis.m

Removed file: save_node_values.m

  • -- Moved save node results into online_voltage_violation_analysis.m function. The reason for this was that the online voltage violation function reads the voltages for its operation. By merging the two and separating them by the existing if "Current_Settings.Simulation.Save_Voltage_Results" there is no need to access the database twice for the voltages. This is similar to the power loss analyzing function.
  • -- The branch result saving is still separated, as the online branch violation function only requires currents to work, so we only need to read the currents. If we want to save the branch results, additional values must be read, therefore we separate the branch functions.
    • Line 237 -245
    • First simulations show a speed improvement of a 5-10 seconds per dataset.
  • --** Modified file: **** online_voltage_violation_analysis.m**
  • --** Removed file: **** save_node_values.m**
    • Line 103 - 107

About

Softwarepaket „Netz Analyse Tool“, kurz NAT: Dieses Simulationstool kombiniert Last- und Einspeiseprofile mit einer probabilistischen Monte-Carlo-Lastfluss-Simulation und führt dabei Berechnungen für beliebige Netzstrukturen und unterschiedlichste Last- und Einspeiseszenarien durch, wodurch die Netzspannungsprofile, die Belastungssituationen der…

Resources

Stars

Watchers

Forks

Packages

No packages published