Emulation setup
Setup and purpose:
Setup Eclipse Edge project as per link below and by starting by chapter 2: https://openems.github.io/openems.io/openems/latest/gettingstarted.html
Once the project is running, go in the Apache server under http://localhost:8080/system/console/configMgr and disable the following: - Simulator DataSource. - Simulator GridMeter acting. - Simulator EssSymmetric Reacting
Instead create an existing meter and an existing ESS by selecting a new off the shelve meter and BESS system.
1. Meter:
"Meter Phoenix contact", we will call it meter1 (component-ID = meter1).
We have to specify a modbus link: Modbus-ID = modbus0 and modbus unit-id=1
Set the meter type to Grid.
Since the meter is expecting a modbus link called modbus0, we need to create one, so in apache felix, we can select "Bridge Modbus/tcp":
Component-id=modbus0
Ip-address=
[Obsolete] To simulate a real phoenix contact meter, one can setup a modbus slave on a raspberry pi (or any computer) in the same local network and by running the script attached called python3 meter_modbus_slave.py (python 3.5.3). The modbus map of the meter is located under: io.openems.edge.meter.phoenixcontact/src/io/openems/edge/meter/phoenixcontact/PhoenixContactMeterImpl.java There one can find the modbus register (Addresses) for all the required commmands.
2. Energy Storage System:
Add "ESS FENECON Commercial 40". Component-id: ess3 Modbus-id: modbus1 Note: make sure the modbus target filter reflects the modbus1 change: (&(enabled=true)(!(service.pid=Ess.Fenecon.Commercial40.6201db44-7078-4b9e-9ca4-c4fe63ff0c6d))(|(id=modbus1)))
Now that the energy storage is added, its modbus link needs to be added.
Add a "Bridge modbus/tcp",
component-id: modbus1
ip-address:
port=1503 Now, ess3 has been added and a modbus link defined, we then need to assign the energy storage system to the controller (in this case, "Controller ESS Balancing"), set in the field ESS-ID=ess3. OBS: make sure this is reflected in the meter target filter field: (&(enabled=true)(!(service.pid=Controller.Symmetric.Balancing.c7ff529b-6d5f-4ff7-ae63-ebdca5e8907f))(|(id=ess3))) The setup for the fenecon commercial 40 is done.
[Obsolete] To simulate a fenecon commercial 40 unit on a rpi (or a computer) run the attached script called ess_modbus_slave.py by calling: python3 ess_modbus_slave.py --port 1503 --unit 100
The modbus map of the meter is located under: io.openems.edge.ess.fenecon.commercial40/src/io/openems/edge/ess/fenecon/commercial40/EssFeneconCommercial40Impl.java There one can find the modbus register (Addresses) for all the required commmands.
3. Simulation:
In order to simulate a realistic scenario, one can run the "ess_meter_modbus_slave.py" script that will simulate both a phoenix contact meter and a fenecon commercial40 battery system. It will emulate a load (house consumption) of 5000W for 60s and then 0W for 60s periodically. This profile can be changed for other scenarios.
Other units (meter, ess):
One can add units that are not defined yet in openEMS by following this tutorial: https://openems.github.io/openems.io/openems/latest/edge/implement.html