Tools for EMS Testing and Algorithm Development

Dear OpenEMS community,

I’d like to gather some insights from the OpenEMS community:
Which tools do you mainly use for testing EMS and developing control algorithms?

  • Physical laboratory equipment (battery, inverter, load, etc.)
  • HIL testbench from global providers (dSPACE, Speedgoat, Typhoon, etc.)
  • Custom-built HIL setup
  • Pure software simulations (Software-in-the-Loop, without hardware)

Please feel free to share your experience, setups, and lessons learned in the discussion below.

Regards,

Oleksandr

Dear Oleksandr,

  • We start off with pure software simulations using JUnit-Tests. OpenEMS provides a nice test framework for JUnit tests that can simulate the process cycle.
  • We then take the algorithms to our labs, which are fully equiped with physical laboratory equipment. Because all battery inverters, batteries, etc. behave differently in production.

Regards,
Stefan

Dear Stefan,

thank you for pointing to the JUnit - I also tried running OpenEMS simulations this way and it works very well.

It made me think that it could be valuable to run a full-featured EMS instance on a Linux PC and test operating modes via Modbus TCP/RTU against a virtual microgrid (battery, inverter, PV, loads, etc.) as a separate unit.

Such a setup could open the door for testing complex scenarios that are difficult to reproduce in the lab:

- testing corner cases and fault scenarios that are risky or costly to reproduce on real hardware,

- accelerating algorithm validation before moving to the laboratory stage,

- experimenting with new control strategies.

In other words, a kind of Hardware-in-the-Loop test environment tailored for EMS development.

We are currently working with dedicated HIL setups for EMS development and would be glad to exchange experiences with the community. In some cases, HIL turned out to be a very efficient complement even for well-established EMS labs.

Has anyone in the community already experimented with such setups – or would be interested in doing so?

Regards,

Oleksandr