-
Notifications
You must be signed in to change notification settings - Fork 150
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sam 181 interconnection limits #1883
Conversation
…terconnection_limits
…terconnection_limits
Thanks for adding this capability. I noticed that Electricity to/from grid AC often hovers just below the grid interconnection limit with zero loss due to interconnection limit. This is for time steps with battery charging. (I compared with interconnection disabled to confirm that these are grid-limited time steps.) I see this for FOM automatic and FOM manual. For the "don't overdo discharging" case, the battery charges up to around 93.98%, compared to closer to 94.9% for the "auto_fom_charge_from_interconnection_limited" case. Maximum allowed state of charge is 95%. I'm not sure if this is the same issue as above, the sign of a different bug, or just is how the math works. For BTM retail rates, I see time steps where there are grid limit losses, but the battery is not being charged. Should the battery charge in this case even if the retail rate forecast doesn't call for it? It seems like wasting electricity. (It would be helpful to have an output for the battery dispatch price signal for this kind of analysis/troubleshooting.) For example, see Hours 132-134: Thanks, |
…terconnection_limits
Looking at the BTM retail rate example, I'm not understanding how the forecast change here is supposed to help with the curtailment: Any thoughts about applying the curtailment similar to the clipping here? |
@cpaulgilman Thanks for a detailed review! Your first error is fixed on ssc with NREL/ssc@36641dc I think the second one is "just how the math works" - I see the same SOC percentages when running without interconnection limits. For the third one, @dguittet 's idea on moving the curtail charging closer to clip charging was the right move. That's handled in NREL/ssc@710fe31
This helps properly value sending PV to the grid. If we apply the full export power, the cost forecast will assume more energy is exported to the grid than actually is with the grid limits. This is especially important for net metering. If grid limits are off, the interconnection limit is 1e+38, so the actual power is always chosen in the min function. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@brtietz Thanks for the quick response -- these latest commits address my comments.
@brtietz Gotcha, thanks for the explanation |
…terconnection_limits
…REL/SAM into sam_181_interconnection_limits
@brtietz, three items: 1. UI LabelsAre the following labels an improvement?
2. Help RevisionsAny comments on these revised descriptions for Help? Battery can charge from systemAllow the photovoltaic array or other power system to charge the battery. Battery can charge only from grid-limited system powerIf the interconnection limit is enabled and/or curtailment is specified on the Grid Limits page, allow the battery to charge from power in excess of the interconnection limit or from curtailed power. Note that if Battery can charge from system is also checked, battery charging may avoid grid limiting that would happen if it is not checked, 3. QuestionIf Battery can charge from system is checked and Battery can charge only from grid-limited power is not checked, will the battery ever charge from grid-limited power? |
I think the current behavior has it (at least for retail rates) so that if the Battery can charge from system is checked and Battery can charge from grid-limited power is not checked, the battery doesn't charge up the grid limited power... which for me begs the question of what it means to only charge from system exactly? I think the "charge only from curtailed energy" option is very useful, and perhaps the "charge from system" should presume charging curtailed power. |
Otherwise, I think the functionality of curtailed energy charging is working across all the cases-- great job Brian! |
Are you suggesting a possible change to https://github.com/NREL/ssc/blob/8be7ef0a48b4fa8f77bcd9a2874b500878917567/shared/lib_battery_dispatch_automatic_btm.cpp#L714 to run the while loop if just charge from system is checked? |
Yeah, I think the curtailment should always be reduced in any dispatch algorithm that tries to minimize cost. Unless there's a clear meaning of what it means to "charge from system without charging from curtailed power" in any BTM dispatch algorithm, since I can't see how a dispatch algorithm would decide it's preferential to curtail. If it was somehow not worth the cycling cost, then it would probably not discharge. Anyways I also ran a parametric on cycling cost for the retail rates which is kinda interesting: |
That is interesting! I think this comes down to the fact that it's really hard to trigger a battery replacement with our LFP default parameters, so encouraging cycling by turning the penalty off is a good thing. Doing a gut-check on those parameters might another GitHub issue, I'll put an item on tomorrow's agenda. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the new feature!
…terconnection_limits
…terconnection_limits
Pull Request Template
Description
Adds functionality preventing battery from discharging more than the interconnection or curtailment limit in a given timestep. Adds new variable batt_dispatch_auto_can_curtailcharge to allow the battery to only charge from curtailed energy. Charging applies to the following dispatch options:
Fixes #181
Pairs with SSC PR NREL/ssc#1224
Type of change
Please delete options that are not relevant.
Checklist:
If you have added a new compute module in a SSC pull request related to this one, be sure to check the Process Requirements.