Menu

Solar Simulation for australia

2015-11-10
2015-11-11
  • Isfand Khan

    Isfand Khan - 2015-11-10

    I am trying to simulate a three phase node with a solar object for location in Sydney Australia.
    I am using a CSV reader for climate data and an area of 6.1m^2 (1 kW) for the solar object.
    Using a recorder i am recording hourly values for measured_real_power at the node.
    I am not sure if the problem is with the model or the CSV reader but i am encoutering the following problems:

    WARNING:Southern hemisphere solar position model may have issues
    I am not sure what kindof issues and how to fix them.

    The maximum output for measured_real_power for a year is 9.2kW when there is 0 load on the node specified, which seems too high for a 1 kw system area?

    The recorder object output is almost one day after the start time of the simulation?

    If i were to use a player object to update load values how would a specify that given that i have a three phase yearly load data?

    GLM code and CSV snippet below.
    thanks,

    GLM

    clock {
                  starttime '2015-01-01 15:00:00';
                  stoptime '2016-01-01 0:00:00';
                  timezone AU/NSW/Sydney;
    }
    
    module tape;
    module generators;
    module climate;
    module residential;
    module powerflow {
                  solver_method NR;
                  default_maximum_voltage_error 1e-6;
                  nominal_frequency 50;
    }
    object csv_reader{
        name CsvReader;
        filename XXXX.csv;
    };
    
    object climate{
        name MyClimate;
        tmyfile XXXX.csv;
        reader CsvReader;
    }
    
    object transformer {
         name distribution_transformer;
         from N1;
         to N2;
         phases ABCN;
         configuration transformer_configuration_1;
    }       
    
    object transformer_configuration {     
          name transformer_configuration_1;     
          connect_type DELTA_GWYE;     
          install_type POLETOP;     
          power_rating 63;     
          primary_voltage 11000;     
          secondary_voltage 433;     
          resistance 0.011;     
          reactance 0.039;     
    }
    //NODE
    
    object node {
         name N1;
         bustype SWING;
         nominal_voltage 11000;
         phases ABC;
    }
    
     object meter {
        name N2;
        phases ABC;
        nominal_voltage 433;
        }
    object line_spacing{
        name line_spacing_433V;
        distance_AC 0.91;     
            distance_AB 0.61;     
            distance_BC 0.31;     
            distance_AN 0.31;     
            distance_CN 1.21;     
            distance_BN 0.91; 
    }
    
    object overhead_line {     
          name N2toNL1;
          phases ABCN;     
          from N2;     
          to NL1;     
          length 30;      
          configuration line_configuration_1;     
    }  
    object line_configuration {     
          name line_configuration_1;     
          conductor_A overhead_line_conductor_1;     
          conductor_B overhead_line_conductor_1;     
          conductor_C overhead_line_conductor_1;     
          conductor_N overhead_line_conductor_1;     
          spacing line_spacing_433V;     
    }       
    
    object overhead_line_conductor {     
          name overhead_line_conductor_1;     
          geometric_mean_radius 3.12;     
          resistance 3.93;   
    }   
    
    object load {
        phases "ABCD";
        name LOAD_1;
        parent NL1;
        constant_power_A 000;
        constant_power_B 000;
        constant_power_C 000;
        nominal_voltage 433;
        }
    
    object meter {
        name NL1;
        phases ABC;
        nominal_voltage 433;
        }
    object inverter {
        //phases AS;
        name inverter_1;
        generator_mode CONSTANT_PF;
        generator_status ONLINE;
        inverter_type PWM;
        power_factor 1;
        inverter_efficiency 0.94;
        parent NL1;
        rated_power 5kVA;
    
    }
    object solar {
        name solar1;    
        generator_mode SUPPLY_DRIVEN;
        generator_status OFFLINE;
        panel_type SINGLE_CRYSTAL_SILICON;
        efficiency 0.15;
        P_Out 1;
        parent inverter_1;
        area 6.1 m^2;
        }
    
    object multi_recorder {
        property NL1:measured_real_power,solar1:Insolation,inverter_1:phaseA_V_Out;
        file "Test_solar.csv";
        interval 3600;
        }
    

    This is how the CSV file looks likes

    # Climate data - XXXX                   
    $state_name=NSW                 
    $city_name=Sydney                   
    $lat_deg=-33                    
    $lat_min=54                 
    $long_deg=151                   
    $long_min=13                    
    $timezone_offset=10                 
    temperature humidity    wind_speed  solar_dir   solar_diff  
    1:01:00 67.64   69  5.083333333 0   0
    1:01:01 70.16   65  5.083333333 0   0
    1:01:02 67.1    67  5   0   0
    1:01:03 69.08   65  4.388888889 0   0
    1:01:04 70.34   73  3.777777778 0   0
    1:01:05 69.62   77  3.194444444 -3  -2
    1:01:06 67.46   74  2.833333333 161 83
    1:01:07 68.18   71  2.583333333 273 146
    1:01:08 67.46   68  2.527777778 268 288
    1:01:09 71.42   58  2.361111111 185 399
    1:01:10 72.5    68  2.194444444 432 362
    1:01:11 73.58   60  2.055555556 944 175
    1:01:12 74.12   50  3.138888889 832 225
    1:01:13 74.84   53  4.083333333 874 242
    1:01:14 74.84   45  5.055555556 1001    126
    
     
    • Frank Tuffner

      Frank Tuffner - 2015-11-10

      Hello Isfand,

      The primary cause of your model woes appears to be units. Unfortunately, the csv_reader object expects to read things in at the default climate object units. For insolation values, this is unfortunately in W/ft^2. It looks like your values are in W/m^2 (so 1001 W/m^2 is roughly 93 W/ft^2). Therefore, your solar array is receiving about 10x as much energy as it should, hence the ~10x value that you are seeing. If you convert these to W/ft^2, your results will probably look better.

      As I was looking at your files, I also noticed a couple other things. They aren't related to your issue, but I wanted to mention them:

      First off, you need to arrange the clock section of your file a little. If you don't put the timezone variable first, GridLAB-D starts doing some very odd things (like running this in Eastern Standard Time and failing).

      Secondly, the CSV file you posted seems to have been formatted funny. Assuming your version has the commas and everything it needs, I also noticed there is a negative solar_dir and solar_diff term. While it isn't causing the issues you see, there's just something that bugs me about a solar panel emitting direct and diffuse solar radiation -- it's supposed to absorb it!

      -Frank

       
  • Isfand Khan

    Isfand Khan - 2015-11-11

    Hi Frank,

    Thanks for the reply, I fixed the issues with the CSV and results look better.

    Is it possible to use a player object to update load values at the node, how would I specify that given that i have a three phase hourly load data for a year?

    Can i use this command with a player, how would i specify the phase loads.

    object load {
    phases "ABCD";
    name LOAD_1;
    parent NL1;
    constant_power_A X;
    constant_power_B X;
    constant_power_C X;
    nominal_voltage 433;
    }

    thanks,

     

Log in to post a comment.