one question about volt_var_control

  • Xiaodong Li

    Xiaodong Li - 2014-04-19

    Hello,GridLAB-D team!
    I do have a question for the 'object volt_var_control'. There is only one regulator named 'Reg1' in it, and I want to change the 'desired_voltages' value at a certain time in 'object volt_var_control'.

    object volt_var_control {
    name CVVC;
    control_method ACTIVE
    capacitor_delay 60.0;
    regulator_delay 60.0;
    desired_pf 0.99;
    d_max 0.8;
    d_min 0.1;
    substation_link "Reg1";
    regulator_list "Reg1";
    capacitor_list "CAP1,CAP2";
    voltage_measurements "652,680";
    maximum_voltages 3500;
    minimum_voltages 2200;
    max_vdrop 50;
    high_load_deadband 30;
    desired_voltages 2401;
    low_load_deadband 30;

    I want to change'desired_voltages' with time and I have tried using 'player' to realize that, but it doesn't work. Could you please tell me how can I achieve that function ? I will appreciate you very very much if you can give me some help! :)

    Best regards

    • Frank Tuffner

      Frank Tuffner - 2014-04-21

      Hello Xiaodong,
      Unfortunately, the simple volt-var control implemented does not support the ability to change the desired voltages during run-time. Right now, the desired_voltage field is only parsed during the initialization of the object, so any changes made after that are ignored.

      The best bet for achieving this type of functionality is one of two approaches. The first is to control all of the individual regulators and capacitors directly with a player (and use their local control logic), but that isn't always an ideal solution. There are also some known issues with regulators that we're fixing for version 3.1 (no time delays and not being full, three-phase regulators sometimes causes problems).

      The other approach is to edit the source code and implement the function yourself. All you should really need to do is take the portions of the init function (around lines 235-780 in volt_var_control.cpp in branch 3.1 -- version 3.0 should be similar). If you encapsulate those in a function, you should be able to call the update and "reparse" the voltage set points. Knowing when to reparse can be difficult, so it has been done with a separate, player-driven flag (see generator_controller.cpp inside the market module as an example).

      The second approach would be the one that would be ideal, but it involves going in, editing the source code, recompiling the program, and just generally dealing with the development aspects of using GridLAB-D. You're highly encouraged to take such an approach, but some people don't like to mess with source code.

      Outside of basically implementing the functionality yourself, the next best bet is to put all of the devices in a local control mode and adjust their voltage settings, but that doesn't quite behave the same as an overall volt-var optimization device.

      Hopefully some of this is helpful. The short answer to your original question is "there really isn't any way to do this with the volt_var_control object, as implemented right now."


      • Xiaodong Li

        Xiaodong Li - 2014-04-22

        Hello Frank,
        Tkank you very much for your detailed reply.I 'll try according to your valuable suggestions.Thank you again!


Log in to post a comment.