If the goal is to control the inverter PF directly, I would not include the InvControl. It will over-ride any PF settings that the PVSystem is defined with (from your optimization routine), during the OpenDSS control loop, based on the vvar_curve and InvControl settings. For the PF sign, the OpenDSS help shows how it operates. Here's the snippet from the OpenDSS help that is in the program, for PF for the PVSystem: PF: "Setting this property will cause the inverter to operate in constant power factor...
I am performing a heuristic optimization for voltage control in an electrical distribution network through the “dispatch” of reactive power from photovoltaic inverters, in the context of distributed generation. Below is my current parameter model. To control the injection/absorption of reactive power, I need to control the inverter variable PF (power factor), where a negative value indicates reactive power absorption and a positive value indicates reactive power injection. Is that correct? If you...
I am performing a heuristic optimization for voltage control in an electrical distribution network through the “dispatch” of reactive power from photovoltaic inverters, in the context of distributed generation. Below is my current parameter model. To control the injection/absorption of reactive power, I need to control the inverter variable PF (power factor), where a negative value indicates reactive power absorption and a positive value indicates reactive power injection. Is that correct? If you...
I am performing a heuristic optimization for voltage control in an electrical distribution network through the “dispatch” of reactive power from photovoltaic inverters, in the context of distributed generation. Below is my current parameter model. To control the injection/absorption of reactive power, I need to control the inverter variable PF (power factor), where a negative value indicates reactive power absorption and a positive value indicates reactive power injection. Is that correct? If you...
OpenDSS Version 11.0.0.1 - Charlottesville - Released
Updates associated to 11.0.0.1 release
Mathworks fixed a bug that might be related or even fix our problem. https://de.mathworks.com/support/bugreports/details/3648746 Haven't tried to reproduce my original problem yet. I might do it after updating in 3 weeks or sth.
Delete stand-alone HND files for COM_Interface_help and DirectDLL_help from sourceforge. Now part of main documentation.
Delete two CHM files from sourceforge. In main documentation CHM file, now.
Pending updates in preparation for next release.
Minor fix on "units" property description. Clean up on C++ side.
Commit latest version of OpenDSS Documentation CHM file based on HND file
Update units property help string in CPP to match Delphi.
Update units property for Line to indicate value is reset to default when impedance is given.
Reverting linecode units property description change and placing description in the line units property (only place change applies).
Additional wording to units property in Linecode to clarify resetting to default value if impedances specified in-between.
Hi João, Thanks for sharing your example. Your syntax is correct. The missing aspect here is that for some OpenDSS properties, the order in which they are specified matters. In the Line case, whenever you specify or edit properties that define impedances (e.g, R1, X1, rmatrix, switch=True, etc..) the units property is reverted back to its default value. It essentially means that if you are specifying or editing per-length impedance properties, OpenDSS won't assume that previously specified units...
Hi there. I was trying to apply the commands unity to my program using a very simple example, but the units command don't recognize the synthax i am using, and I don't know why. I've looked on the help tab how to do so, but it doesn't apply, i'll attach some print all along.
Updated 2025 to 2026 in licencing topic
Updated to OpenDSS_Documentation.hnd for latest release. Numerous updates to documentation including updated HTML footer for each page (copyright statement, launch browser for links in HTML footer, etc).
Thank you both of you for this great support for this problem which took me for a while. now the simulation results are OK.
The dispatch of both Q & P are fine with me when i compared the results with the attached equations
The dispatch of both Q & P are fine with me when i compared the results with the attached equations
Thank you both of you for this great support which took me for a while. now the simulation results are OK.
In addition to the OpenDSS help, the following document goes into a lot of detail about PVSystem and also the InvControl. It's in word document format at this location: https://sourceforge.net/p/electricdss/code/HEAD/tree/trunk/Doc/PVSystem_InvControl.docx
As Wes noted, there are multiple ways to address this issue. His approach uses an internal controller to enforce the power factor regardless of the inverter’s DC/AC ratio, and that option is available for this model. However, I tested an alternative method, adjusting the DC/AC ratio to achieve the same behavior, and it worked as well. To use this approach, the declaration must be modified as follows New PVsystem.PVsystem6 pf=0.8 bus1=48 kv=4.16 Irrad=0.8 Pmpp=2000 temperature=25 VarFollowInverter=true...
The parameter to obtain constant PF mode is the PFPriority. It should be set to true as shown in the below example. Please note I changed the bus1 to be bus '48' in the IEEE123 bus test system to test things. But otherwise the example is similar to what you provided above, with minor changes. New PVsystem.PVsystem6 pf=0.8 bus1=48 kv=4.16 Irrad=0.98 Pmpp=2000 temperature=25 VarFollowInverter=true %Cutin=0.01 Vmaxpu=5 Vminpu=0.3 %Cutout=0.01 Daily=Irrad2 KVA=2000 KvarMax=2000 KvarMaxAbs=2000 PFPri...
iam also attaching another two files but in this time the priority is given for reactive power by changing the setting wattpriority=no.
Thank you for your response and apologies for being late. the below are the settings for the PV system with constant PF mode PVsystem.PVsystem6 pf=0.8 bus1=104 kv=4.16 Irrad=0.98 Pmpp=2000 temperature=25 VarFollowInverter=true %Cutin=0.01 Vmaxpu=5 Vminpu=0.3 %Cutout=0.01 %PminNoVars=0 Daily=Irrad2 KVA=2000 wattpriority=yes KvarMax=2000 KvarMaxAbs=2000 if you see here i specify PF setting to be 0.8. so i expect to have active power and reactive power following PF to be 0.8 considering the priority...
Updates to descriptions of equivalent distance line spacing properties for correctness and clarity.
Updated property descriptions for normamps and emerghamps for autotransformer. Updated HND documentation file for AutoTransformer as it had property descriptions that belonged to GICtransformer. Changes to HND documentation file to include descriptions for added and updated properties for RegControl (revTheshold, fwdThreshold), transformer (BHpoints, BHcurrent, BHflux), and autotransformer (BHpoints, BHcurrent, BHflux), as well as Global options (AllowForms, AllowProgressBar).
Adding protection around creation of TCC curves named "none". Added because when properties that normally point to TCC curves are assigned "none", no curve is assigned.
Adding missing BatchEdit conditionals page added in revision 4106 and missed in previous commit.
Updating documentation to reflect latest changes on SwtControls, Fuses, Reclosers and Relays. Fixing a few typos caught here and there.
Added support to unganged operation for relays and single-phase tripping and lockout for overcurrent relays (type=current). Added Lock, Reset, RatedCurrent and InterruptingRating properties to Relay, which is now closely aligned with Fuse, Recloser and SwtControl elements. Renamed a number of properties for more common terminology while keeping backwards compatibility (only exception is "Reset" property, where previous usage has been renamed to ResetTime and new usage forces a Reset of the co...
Hello, I'm actually impressed the model solved at all, given the inconsistencies in the load declaration. The main issue is that the load is defined with three connection nodes even though the device only has two. A single‑phase delta‑connected load should specify exactly two nodes. In your declaration, however, the load is assigned a third node (e.g., .1.2.4) that is not electrically connected to anything. This extra, unused node introduces numerical inconsistencies throughout the solution. I recommend...
Hello everyone, I am working with a distribution network model with many loads (about 63k nodes and 69k devices, so not too large). The model runs normally and the results look correct. Currently, each load is represented with two components: half as Model 2 (constant Z) and half as Model 3 (constant P). For example (this works fine): New "Load.BT_XX_M1" bus1="ZZ.1.2.4" phases=1 conn=delta model=2 kv=0.24 kw=0 pf=0.9 daily="loadshape" status=variable vmaxpu=1.5 vminpu=0.92 New "Load.BT_XX_M2" bus1="ZZ.1.2.4"...
I notice in the code that you posted that on the line where you are specifying the capacitor, the kV property is not being set. OpenDSS has default values for most every property. The kV property, in this case, defaults to a value of 12.47 (kV, line-line).
I'm trying to get the new bus voltage after adding the capacitors but something's not working properly, its a very simple code.
Hello, Before assuming the signs are incorrect, it’s important to understand what the sign convention represents in OpenDSS. The sign is not an error; it is an intentional feature that indicates the direction of power flow from one point in the model to another. As described in the OpenDSS documentation ( https://opendss.epri.com/ComputingElementsCurrentsinOpenD.html ), generators typically report negative power values. This is consistent with standard power‑system modeling practices. In OpenDSS,...
Hello Everyone, I’m running a time-series simulation in OpenDSS using PVSystem elements without smart inverter control. The load powers follow their loadshapes correctly, but the PV/inverter element powers do not match the assigned profiles. The magnitudes match, but the signs are reversed. When I model the same PVs using Generator elements with identical P/Q profiles, both magnitude and sign match as expected, so the issue seems specific to PVSystem behavior without SI control. Is this sign inversion...
Fixing load allocation algorithm to ignore disabled meters and sensors.
Simulating changing the tap of the OLTC or regulator also changes the impedance of the source as seen by the load. You wouldn't see that by just changing the pu value of the source. That would only change the voltage magnitude. We have tried to model each element closely to how it actually behaves in the power system.
Happy holidays to you too, Regarding the voltage source, keep in mind that it does not represent a physical system or device. Instead, it serves as a mathematical construct used to model the connection to a stiff power source, or infinite bus. This infinite bus represents the sub‑transmission or transmission network to which the distribution substation is connected. The substation itself is supplied through power transformers. ( https://www.nationalgrid.com/electricity-transmission/substation-configuration-and-build-types...
Hello everyone, how are you? First of all, Merry Christmas and Happy New Year to you and your families. I am currently modeling a genetic algorithm to reduce voltage variation, based on the settings of OLTCs, voltage regulators, photovoltaic inverters, etc. I would like to know what the difference is between using a transformer with regulation control (OLTC) and simply changing the system supply voltage (using the "pu" variable from our "New Circuit" object) . Is there a practical difference between...
Hello, I'm afraid not as a single command, but there are other possibilities like building your own solution using the COM/DLL interfaces. With a simple piece of code users can iterate on a circuit updating at each iteration control settings such as volt var curves. Check this out: https://opendss.epri.com/Xarray.html https://opendss.epri.com/Yarray.html https://opendss.epri.com/OpenDSSTime-basedSimulationsinMa.html Best,
Hi all, Is there a way to implement a time-varying Volt–Var droop curve in OpenDSS where the breakpoints of the XYCurve change every hour during a time-series simulation? For example, I currently have something like this in my snapshot simulation: New PVSystem.PVSite phases=1 bus1=6 kV=12.66 kVA=800 kVAr=-529.1502622 %cutin=0.1 %cutout=0.1 model=1 New XYCurve.vv_curve npts=6 YArray=(0.053, 0.053, 0, 0, -0.053, -0.053) XArray=(0.88, 0.92, 0.98, 1.02, 1.08, 1.1) New InvControl.InvPVCtrl mode=VOLTVAR...
Hello, PV systems introduce dynamics that go well beyond a simple kW–pf model. Because they interface with the grid through an inverter, their behavior can be more nuanced. For example, a constant kW–pf operating point cannot always be maintained if the inverter’s DC/AC ratio is not appropriate. In addition, other inverter‑level controls, such as those implemented through InvControls—can significantly influence the PV system’s output. With that in mind, could you share a small example of what you’re...
I am noticing when using constant power factor for my PVsyPV system, at high irradiance values the results of active power and reactive power do not respect the equations, Power=KVAPF & Q=KVA(1-PF2). I have zero active powers. how can i make proper settings for all parameters of PV system so i can obtain always active and reactive powers following constant PFPV system
Porting pending changes to Reclosers from Delphi to C++ from revision 4113.
Minor updates on Recloser for consistent usage of Ground x Gnd in the Event Log. Additionally, preventing a floating-point precision issue in the control logic.
Porting changes to Fuses, SwtControls and Reclosers from Delphi to C++ from revisions 4102-4105 and 4108-4111.
Updating Fuse CurveMultiplier property description.
Removing redundant conditional in recloser logic, fixing phase reported on debug messages that would happen on cases where monitored terminal is the 2nd terminal and fixing old bug where mechanical delay would be counted twice for instantaneous tripping.
Minor cleanup on Reclosers unit
Replacing Gr by Gnd on Recloser properties as Gnd is more commonly used as short for "Ground". Also renamed Delay to MechanicalDelay for clarity and made use of "Ph" as short for "Phase". Also updated internal variable names. Updated COM and DDLL interfaces accordingly.
Mathworks developers are looking at the problem. It says I'll be informed if a Fix is implemented. I'll report here.
Hi Davis, it's interesting you can't reproduce with 2024b.
Hello, Unfortunately, it is not possible to enforce such a condition directly with PVSystems. The irradiance profile represents only the irradiance itself, it does not dictate the active or reactive power output of the inverter-based resource (IBR). If you need to impose specific power conditions, you should instead use Generators. For photovoltaic systems, reactive power absorption or generation can be managed through InvControls. However, this requires the use of specialized control curves designed...
Hi Janis, I'm using MATLAB r2024b, no issues found at my side. Best,
Hi Davis, I just tested with Matlab 2024a and 2024b. Matlab terminates properly in Matlab 2024a Matlab 2024b behaves identically as 2025 a and b. => I guess problem was introduced in 2024b Which version are you using? 2024 a or b? I'll tell Mathworks aswell.
Hi Davis, I just tested with Matlab 2024a and 2024b. Matlab terminates properly in **Matlab 2024a ** Matlab 2024b behaves identically as 2025 a and b. => I guess problem was introduced in 2024b Which version are you using? 2024 a or b? I'll tell Mathworks aswell.
This is no Bug report. I just want to share with other people that might face the same problem. Always Terminate DSS-Matlab-COM Simulation with .ClearAll ! My System: Windows Server 2025 DSS 10.0.2.0.1 Matlab 2025 a or b Problem: Without .ClearAll Matlab is not quitting. UI closes using quit/exit or closing it (same wiht -batch or -r command line calls) but matlab.exe (nowadays at least 2 processes) don't terminate and occupy RAMemory. Solution is simple: Just call ClearAll after you're finished...
Hello everyone, I’m an undergraduate student who is fairly new to OpenDSS, and I’m currently trying to run a time-series simulation with PVs (no inverter controls). I defined separate loadshapes for pgen and qgen, but it seems that OpenDSS is not reading the qmult values. As a result, the reactive power from the PVs doesn’t change over time, and my voltage profile is different from the snapshot simulation at the same timestamp. This is how I defined the loadshape: New Loadshape.PV1 npts=96 minterval=15...
Great! Thank you and your colleagues very much.
Thanks Janis, Absolutely, I’ll add a couple of notes to the documentation. I’m no longer maintaining the web documentation myself, but I’ll coordinate with the EPRI team and they’ll take care of it. This seems to be an emerging issue, and it’s no trouble to include a note in case anyone encounters it locally. Nice catch! Best,
Hi Davis, thank you very much for your quick response again and the useful information. I'll forward this discussion to Mathworks. Still I would recommend documenting ClearAll is absolutely necessary in some cases. Maybe adding a small Matlab example from C:\Program Files\OpenDSS\Examples\Matlab here https://opendss.epri.com/TechNotesandExamplesaboutCOMInte.html and Highlighting / Commenting .ClearAll Necessity. Kind Regards Janis
I am in contact with Mathworks aswell. The developers seem interested to reproduce the problem. Maybe they'll check if there could be done something about clearing COM artefacts while quitting Matlab.
Hello, Yes, this is a known feature that emerged after OpenDSS was converted into a multithreaded system. Notably, the behavior has only been observed when using DirectDLL, and not with COM. In this multithreaded setup, by starting the engine OpenDSS creates only the command interpreter instance, which after compiling a model automatically creates and additional thread for the circuit solver, ending with 2 separate threads: the command interpreter (coordinator), and the circuit solver (actor). These...
This is no Bug report. I just want to share with other people that might face the same problem. Always Terminate DSS-Matlab-COM Simulation with .ClearAll ! My System: Windows Server 2025 DSS 10.0.2.0.1 Matlab 2025 a or b Problem: Without .ClearAll Matlab is not quitting. UI closes using quit/exit or closing it (same wiht -batch or -r command line calls) but matlab.exe (nowadays at least 2 processes) don't terminate and occupy RAMemory. Solution is simple: Just call ClearAll after you're finished...
Migrating BatchEdit conditionals into C++ version.
I'm not sure, but I am suspicious it has something to do with the Delta system and the regulator looking at L-N voltages. The Delta voltages get skewed toward one phase (probably phase 1) and changing taps won't get the voltages back to normal. This will happen with one of the IEEE Test Feeders (37-bus??) and the solution was to change the substation transformer from Delta-Delta to Delta-Wye. This puts a ground reference on the circuit. I think this can happen in real circuits. I've heard stories...
Thank you for your previous support. I would like to follow up regarding an issue I am currently facing with the SVR control behavior in OpenDSS. Summary of the Issue During a daily simulation with 30-minute steps, the regulator tap begins to behave abnormally at a certain time step: ・The tap repeatedly increases and eventually sticks at the maximum tap (1.06061). ・At the same time, the monitored voltage suddenly drops to an unrealistically low value, causing continuous “raise tap” commands. new...
Adds conditionals to the BatchEdit command for allowing users to focus the edits performed with this command to a subset of objects within the affected class. For details, see the user manual -> Basics of the OpenDSS Scripting Language -> Basic Commands -> Executive -> BatchEdit conditionals. Pending migration to C++.
Fix to constant declaration on Reclosers.
Adding change on fuse.pas unit location to OpenDSScmd project as well.
Adding missing changes on previous commit.
Adding RatedCurrent to SwtControls, Fuses and Reclosers. Adding InterruptingRating for Fuses and Reclosers. Renaming PhaseTrip and GroundTrip properties of Reclosers to Ph...Pickup where "..." can be Fast or Slow (previously using "Delayed"), but keeping the previous properties as deprecated for backwards compatibility. Same for Time Dials (TDPhDelayed -> TDPhSlow and TDGrDelayed -> TDGrSlow). Added separate pickup currents for fast and slow curves for both phase and ground elements on Reclos...
Fix to revision 4099 to match C++ with Delphi updates on Rev 4100.
Fix to revision 4094 on Reclosers - correcting indexing when executing action, typo on event log and redundancy when resetting the control.
Hello, This is one of those question regularly asked at this forum, for which there are several threads replying to it. Here are some: https://sourceforge.net/p/electricdss/discussion/beginners/thread/64090b5629/?limit=25#6ea9 https://sourceforge.net/p/electricdss/discussion/861976/thread/7579e1dd46/?limit=25#fca0 https://sourceforge.net/p/electricdss/discussion/861976/thread/8718c095/ Another way is to use the event log, which can be useful for such purpose as well. https://sourceforge.net/p/electricdss/discussion/861976/thread/cb4cd19b3a/...
I'm not sure why you are having this problem since the COM server comes with the normal Windows installation. Are you running on Windows? There are several installers you can download from here: https://sourceforge.net/projects/electricdss/files/OpenDSS/
I cannot use the version downloaded from the official website now. My code was previously programmed with a com version. Previously, the names of installation packages seemed to be 'ElectricDSS_X64_2023. exe'. Can someone provide me with the installation package for the previous old version? Thank you, thank you!My email is 598529739@qq.com
Hi everyone, I am currently working on implementing SVR (Step Voltage Regulator) control in OpenDSS and have a question regarding monitoring the voltage at which tap changes occur. The program I am using is as follows: // SVR new transformer.SVR6 phases=3 Windings=2 Xhl=0.233333333333333 wdg=1 bus=HN6 conn=Delta kv=6.6 kva=5000 %r=0 wdg=2 bus=HN7 conn=Delta kv=6.6 kva=5000 %r=0 NumTap=8 MaxTap=1.060606 MinTap=0.939393 new monitor.V1_SVR6 element=transformer.SVR6 terminal=1 mode=0 ppolar=no new monitor.P1_SVR6...