PWM Opportunity load - Aux2 is used for Wizbang Jr - Using a PLC instead

Started by unique3, April 11, 2020, 11:47:15 AM

Previous topic - Next topic

unique3

I know opportunity loads have been discussed at great length already. I've read through many posts and I think my situation is different. If there is a post similar please link it as I haven't found it.

I have a Classic 150 that is setup with a Wizbang Jr. Most days my solar production far exceeds my needs so I would like to dump that power into hot water for domestic use as well as space heating (this is super common I know). I've read about both options using PMW from aux2 and using a on off from Aux1. I would like to do the PWM method but of course Aux2 is used by the WizbangJr.

I have an advantage most basic setups don't, I am using a PLC and communicating by modbus to the Classic 150 and reading the registers that are available. I'm already using this to turn on and off a couple space heaters when in absorb and float. They are just AC heaters and I'm just using similar logic to the on off that Aux1 does.

I'd like to setup my water heater with an SSR and send it a PWM signal. I can probably replicate the logic to vary the PMW and hold the battery voltage just below the classics setpoint but I'm wondering if there is a better way.

1. Is the PWM signal that would be sent out on aux2 available in a register? If so I could just use the PLC to send that signal to my SSR.
2. There is a register in the classic called PMW (4141). I assume this is for when the charger is not in MPPT mode?

Assuming there are not registers that will work for me this is my plan. Please feel free to poke holes in it.

To maximize my power production I should try to keep the charger in MPPT mode correct? I'm thinking that If I set my absorb setpoint in the classic a little higher and then use my PLC to control my SSR to hold the battery voltage at my desired absorb setpoint therefore keeping the charger in bulk and in MPPT.
I have access to the battery amps from the wizbang so I can then use battery amps to determine when absorb is completed and changed my PLC setpoint to bulk.

During this the classic will stay in bulk mode all day and every available watt will be dumped into my heater. If my heater cant take all the power available when the SSR hits 100% on then the voltage should rise and the midnite logic will take over again so there is no risk to my batteries if my system fails.

I also have a 1600gal thermal storage tank and I'll be monitoring the temperature of the hot water tank, when it gets to desired temp I'll be running a pump to dump some of the heat into my thermal tank so I should never actually get to the point where my hot water tank can't take any more heat except in the summer when the thermal tank is disabled.

Another advantage of doing it this way is I should know how approximately many watts are being diverted, IE is SSR is at 50% of a 4000w heater I'm diverting 2000watts. I can then use this to determine if there is enough solar power available to run other loads that are not variable. For instance I have large water tanks that are filled from the lake, I plan only ever run the lake pump when there is enough sun power available instead of running from my batteries, at the moment the only way I know if there is enough power is to turn on a load and then check.

Feel free to ask questions or poke holes in this plan, I'd rather find out I'm an idiot now then after spending money setting this up.


boB


From what I can tell, you have this all correct and so is your thinking about settings for Absorb V etc...

Register 4141 is  PWM_ReadOnly   but that is not for the Aux2 output.  That is the PWM duty cycle that the Classic is using to convert input voltage to output voltage.   The higher the PWM, then the closer the PV input voltage is pulled towards the output battery voltage.  i.e.  Absorb or Float would typically be a smaller PWM value.

What you might do in your PLC is to read the temperature compensate charge set point voltage (Absorb, Float, EQ V) and make your diversion operate just below that value...  A few tenths of a volt or more to make sure that the Classic stays in MPPT mode. 

Try register 4244  for  VbattRegSetPTmpComp   value.

Maybe letting it go to Absorb or Float once in a while is OK as long as your average mode is MPPT ?

How often are you reading these registers ?  I am thinking that 10 times per second might be enough but your PWM frequency can be as high as needed to get the job done and battery voltage as smooth as necessary as well.


K7IQ 🌛  He/She/Me

unique3

Thanks for the reply boB

I figured thats what 4141 was, I was experimenting with using it to estimate how much power is available but realized its not practical as other variables such as irradiance change it. This was before I had a variable load and only on/off loads.

4244 is perfect, I'm not sure why I didn't see that before, I've actually been calculating the temp compensated setpoint for absorb and float in my plc myself but haven't been using them for anything yet except knowing what the classic setpoint is. I think having my own float setpoint will be useful as the classic will never update 4244 to float if I don't let it get into absorb and then float. My plan was to change my setpoint to float one the battery amps is down to 2% of capacity

Quote from: boB on April 11, 2020, 05:22:12 PM
Maybe letting it go to Absorb or Float once in a while is OK as long as your average mode is MPPT ?
I don't have a problem with the classic going into float or absorb but if I'm replicating the battery voltage for absorb and float the batteries should be fine and not even notice a difference. By leaving the controller in bulk regulating my opportunity load I think I get the best of both worlds am I not?

How does the WizbangJr logic work? Will it ever read 100% if I don't let it get to float or is going to float how it knows its at 100%? If that is the case what I can do is when hit my battery amps setpoint I can turn down my opportunity load, let the controller get to float mode then start regulating it again.
Does the charge controller switch back to MPPT if the load increases while in float? If that's the case letting the controller get to float is probably best.

Quote from: boB on April 11, 2020, 05:22:12 PM
How often are you reading these registers ?  I am thinking that 10 times per second might be enough but your PWM frequency can be as high as needed to get the job done and battery voltage as smooth as necessary as well.

At the moment I am reading 2 or 3 groups of registers once a second but I can turn it up if needed. I was originally reading a lot more smaller groups of registers a lot for frequently but I kept having communication lock up so I slowed it down and grouped it into a couple bigger groups. I probably didn't need to slow down to 1 second but for now it was fast enough for everything I am doing.

I do still occasionally get communication lock ups. I get around it by monitoring a register that is always changing and if I notice it stop I disable my modbus read command for a few seconds then start it again and it comes back.

boB

Quote from: unique3 on April 12, 2020, 10:42:26 AM
Thanks for the reply boB

I figured thats what 4141 was, I was experimenting with using it to estimate how much power is available but realized its not practical as other variables such as irradiance change it. This was before I had a variable load and only on/off loads.

4244 is perfect, I'm not sure why I didn't see that before, I've actually been calculating the temp compensated setpoint for absorb and float in my plc myself but haven't been using them for anything yet except knowing what the classic setpoint is. I think having my own float setpoint will be useful as the classic will never update 4244 to float if I don't let it get into absorb and then float. My plan was to change my setpoint to float one the battery amps is down to 2% of capacity

I don't have a problem with the classic going into float or absorb but if I'm replicating the battery voltage for absorb and float the batteries should be fine and not even notice a difference. By leaving the controller in bulk regulating my opportunity load I think I get the best of both worlds am I not?

Here is the only problem I see when using the Waste-Not mode and ALWAYS being in MPPT mode...

If you do not get your batteries to at least do an Absorb for a couple hours to a few hours (whatever they need)  once in a while, then they will sulfate.  Lead Acid will anyway.  So, a PLC is a great way to get that done. 

Maybe every few days or once a week or something like that you could let it Absorb for a while.  OR, possibly accumulating some time each day or two ?  That might work also but I'm not sure about accumulated Absorb time and battery life.  Sounds like a good question for Steve Higgins from Rolls, Surrette Battery.



Quote from: unique3 on April 12, 2020, 10:42:26 AM
How does the WizbangJr logic work? Will it ever read 100% if I don't let it get to float or is going to float how it knows its at 100%? If that is the case what I can do is when hit my battery amps setpoint I can turn down my opportunity load, let the controller get to float mode then start regulating it again.
Does the charge controller switch back to MPPT if the load increases while in float? If that's the case letting the controller get to float is probably best.


Yes, the State of Charge percentage does NOT rely on Absorb or Float.  BUT it does re-calibrate to 100% whenever it goes from Absorb TO Float...

i.e.  You can rack-up the necessary Amp-Hours to replenish the battery  Amp-Hours removed from the battery PLUS the inefficiency factor.  Typically in the 90% range.

But it still does not get that Absorb cycle once in a while...

Also, when in Float, if the solar power cannot keep the battery at the Float set-point voltage, then it goes to Float-MPPT.  So, yes on that one.

Depending on the battery, you may not want to always keep the temp-compensated charge voltage at Absorb because it could possibly wear out the battery early.  But that depends on the battery of course.


Quote from: unique3 on April 12, 2020, 10:42:26 AM
At the moment I am reading 2 or 3 groups of registers once a second but I can turn it up if needed. I was originally reading a lot more smaller groups of registers a lot for frequently but I kept having communication lock up so I slowed it down and grouped it into a couple bigger groups. I probably didn't need to slow down to 1 second but for now it was fast enough for everything I am doing.

I do still occasionally get communication lock ups. I get around it by monitoring a register that is always changing and if I notice it stop I disable my modbus read command for a few seconds then start it again and it comes back.

Interesting that you get lockups.  Hopefully you never have to actually physically go to the Classic and reboot it.  If you do, then maybe it should have Auto-Restart (at midnight) so that it recovers.

Are you using modbus over TCP/IP  ??   That is fairly reliable but IF stuck, should fix itself after a 2 second timeout.



K7IQ 🌛  He/She/Me

unique3

Thanks boB

Quote from: boB on April 12, 2020, 03:35:32 PM
If you do not get your batteries to at least do an Absorb for a couple hours to a few hours (whatever they need)  once in a while, then they will sulfate.

I think I'm missing something here? How is me controlling the voltage to just below the absorb voltage any different to the batteries than letting the classic do it. Especially if I increase the classics absorb set-point by .1 and then control to the correct one. The batteries will see the same voltage for the same amount of time either way. Is there something else the classic does in absorb that I'm not aware of?

Quote from: boB on April 12, 2020, 03:35:32 PM
Yes, the State of Charge percentage does NOT rely on Absorb or Float.  BUT it does re-calibrate to 100% whenever it goes from Absorb TO Float...

Also, when in Float, if the solar power cannot keep the battery at the Float set-point voltage, then it goes to Float-MPPT.  So, yes on that one.

Ok this is perfect, once my battery amps are down to 2% of capacity I'll shut down the opportunity load, let the classic go through absorb (which will already be full so it will be super short) and then go to float. Then I can turn back on my opportunity load and hold the voltage just below the float set-point and in Float-MPPT.

Quote from: boB on April 12, 2020, 03:35:32 PM
Depending on the battery, you may not want to always keep the temp-compensated charge voltage at Absorb because it could possibly wear out the battery early

I don't plan on holding it at the absorb set-point any longer then the classic would, I can monitor when its full it using the wizbang battery amps.


Quote from: boB on April 12, 2020, 03:35:32 PM
Interesting that you get lockups.  Hopefully you never have to actually physically go to the Classic and reboot it.  If you do, then maybe it should have Auto-Restart (at midnight) so that it recovers.

Are you using modbus over TCP/IP  ??   That is fairly reliable but IF stuck, should fix itself after a 2 second timeout.

I'm using modbus over TCP/IP. I've never had to reset the classic, disabling comms for a few seconds has always worked. My logic that does it automatically has been working perfectly for months, I'm not even sure if or how often its happening anymore.

Thanks again for all your help!

boB


"How is me controlling the voltage to just below the absorb voltage any different to the batteries than letting the classic do it. Especially if I increase the classics absorb set-point by .1"

Yeah, NO different.  However, you may find that you have to make that 0.1 volt more like 0.2 or even 0.3V depending on whatever is the lower voltage needed so that your system can keep the Classic in MPPT mode.   i.e.  there is a small amount of slop below the absolute Absorb set point AFTER that voltage reaches the absolute absorb voltage.  This is because it is difficult to keep the battery voltage right dead on the absolute absorb voltage.

But if something happens to your dump load and it can't keep the battery voltage at your remote absorb setting for whatever reason, the battery voltage won't run away to some sky-high voltage value.

Good too that you don't have to reboot the Classic.  Appreciate that bit of information.

Keep us posted on how your PLC system is working.


K7IQ 🌛  He/She/Me

bee88man

For anyone grid-tied, either with or without batteries, there is a stand alone solution to divert surplus AC iproduction into heated water storage by using an Aurdino driven SSR.
No customary selling of AC surplus to the grid and only limited by system's total amount produced that can then be diverted and stored in hot water on location.

openenergymonitordotorg

unique3

Just an update to my post from a year ago if anyone is reading this.

I've got the dump load working from the PLC, I had to increase the classics voltage setpoint by a full volt to allow more room for minor fluctuations without going into absorb. I originally had it 0.5v higher but I found it would go in and out of absorb constantly as the batteries got closer to the end amps.

My logic updates the dump load 25 times per second based on the battery voltage, I take the difference from the voltage set point and add that to my dump load percentage. So if I am over by .2 volts I add .2% to by dump load, if under its a negative so it subtracts from the setpoint. This happens ever ~40ms which is how often I read the voltage from the classic. The control works great, It reacts and stabilizes almost instantly when the load changes even a large load like my water pump.

My only remaining problem is dealing with going into float when end amps is reached. I've posted a new topic about that.


Also Bob if you read this my issue with the modbus comms locking up has been solved I was doing multiple reads without monitoring my plcs comm port ready bit. Added some sequencing based on ready bit and the problem went away.