Skip to main content

PID Regulation of Electrolyser Production Rate Based on Outlet Pressure

What We Control?

Electrolysers can control production rate in the range of 60% to 100%.

Objective of Automation

Reduce amount of starts and stops of electrolyser to increase stack life.

Requirements

At least one Enapter electrolyser required. Enapter Dryer is optional.

Rule

Due to the fact that we need to measure output pressure on output we should measure it on electrolyser or on the dryer if we have one.

Electrolyser automatically stop at 35 bar. We will will try to keep pressure on outlet close to 30 bar by reducing production rate.

Without Enapter Dryer

electrolysers.pid_output_pressure_manager({
electrolysers = {
'FAB1D8F747BCF71E48E2FBB6DDEDAFCF',
'60570E9A0D53B0C3A24D450A11A0B28D',
},
p = 2.0,
i = 0.001,
d = 1.0,
target_pressure = 30,
})

With the Enapter Dryer

electrolysers.pid_output_pressure_manager({
electrolysers = {
'FAB1D8F747BCF71E48E2FBB6DDEDAFCF',
'60570E9A0D53B0C3A24D450A11A0B28D',
},
dryer = "0A8D26ABD5731E85F1A44B749ED0B09F",
p = 2.0,
i = 0.001,
d = 1.0,
target_pressure = 30,
})

With the Enapter Dryer and Dynamic Variables Values

It is also possible to use dynamic values in the storage. This values can be changed over MQTT interface.

electrolysers.pid_output_pressure_manager({
electrolysers = {
'FAB1D8F747BCF71E48E2FBB6DDEDAFCF',
'60570E9A0D53B0C3A24D450A11A0B28D',
},
dryer = "0A8D26ABD5731E85F1A44B749ED0B09F",
p = storage.public.read('electrolysers_group_pid_p'),
i = storage.public.read('electrolysers_group_pid_i'),
d = storage.public.read('electrolysers_group_pid_d'),
target_pressure = storage.public.read('electrolysers_group_pid_target_pressure')),
})

If you decided to use variables then you will need to setup Public MQTT as described in tutorial

Enapter Public MQTT API allows to set variables values. In this example mosquitto_pub command-line tool from mosquitto MQTT broker package used to send MQTT message.

mosquitto_pub -p 9883 -h 127.0.0.1 -u public -P password -t 'variables/v1/set/electrolysers_group_pid_p' -m '{ "value": "2.0" }'
mosquitto_pub -p 9883 -h 127.0.0.1 -u public -P password -t 'variables/v1/set/electrolysers_group_pid_i' -m '{ "value": "0.001" }'
mosquitto_pub -p 9883 -h 127.0.0.1 -u public -P password -t 'variables/v1/set/electrolysers_group_pid_d' -m '{ "value": "1.0" }'
mosquitto_pub -p 9883 -h 127.0.0.1 -u public -P password -t 'variables/v1/set/electrolysers_group_pid_target_pressure' -m '{ "value": "30" }'

References

Hardware diversity is welcome. Integrate any device into a unified energy network.
© 2024 Enapter
Developer toolkit
DocumentationReference