Control of Three Port DC-DC Converter

I’m implementing a three-port PV–Battery DC-DC converter with four operating modes (PV→Load, PV→Battery, Battery→Load, and PV+Battery→Load) based on the screenshot, and I need guidance on the best way to control the IGBTs in each mode. Is a supervisory state machine the recommended approach? Any suggestions or examples for implementing this in PLECS or alternative control strategies would be greatly appreciated.

@Munadir_Ahmed in this response (https://forum.plexim.com/t/three-port-converter-control/2718/2?u=ecxaa5) called my attention to the fact that State machine is slow which is a thing of concern to me. Is C-script better then?

Posting my previous response here so that others have full context:

Hi ecxaa5, sounds like a very exciting model!

There are multiple options to do this but in my opinion you’ve hit the nail on the head. I would also chose a state machine to decide the mode of operation based on input/output conditions.

Could you clarify what you mean by “What is an approach to control the IGBTs in the respective modes?”

Off the top of my head the structure I can envision is your SM would looks at inputs and outputs and decide the mode of operation. Part of this responsibility of the SM would be to set the references to the power electronics high frequency controllers, enabling/disabling power stages, etc.

NOTE: this structure assumes that your system can withstand a slow decision making process of the SM. If you need fast mode transitions then a SM might not be the way to go.

Hope this helps!

Hi @ecxaa5, I think there may be some misunderstanding, so let me clarify the controller architecture I had in mind:

  • A high-frequency power electronics controller (handling the voltage/current loops, etc.)

  • A supervisory controller that manages the operating mode of the converter

  • The supervisory controller also provides the reference voltages and currents to the high-frequency controller

So when I mentioned the state machine being “slow,” I didn’t mean that the state machine component itself is inherently slow. In my controller architecture I simply chose to run it in a slowly task because it sits in the outermost control loop in the structure I proposed.

That said, there are many valid ways to architect the control system. If you need the overall system response to be faster, then the controller architecture I suggested may not be the most optimal for your use case. It will really depend on your system requirements.

One last clarification: you can implement the state-machine based supervisory controller using the PLECS State Machine component, C-Scripts, or even standard PLECS control blocks. All approaches will work. Personally, I prefer to use C-Scripts only when their flexibility is truly needed.

Hope this helps and sorry for the confusion.

Thank you very much for your guidance.