The Invisible Controller

::: nBlog :::

After my presentation here in Dresden I was flattered to have evoked parallels with such giants as Alan Turing and Ray Kurzweil, in the minds of some listeners. My poetic title – The Ephemereal Soul of All Things Computing – was probably to blame.

Although Kurzweil goes a bit far by postulating that our consciousness transcends with computers in a few decades, his philosophy is sound and most inspiring.

A few presentations here touched the subject of virtualizing now physical things like mobile terminals and active network elements such as routers and switches, but nearly everything was still bound on existing frameworks, paradigms and naming conventions, with all their limitations.

Virtualization of e.g. servers is economical due to energy efficiency and thus desirable, but new innovations start stemming only after it is realized that a virtual object is living by very different rules than its physical ancestor. If already inefficient hardware is just virtualized, there’s a danger that errors and inaccuracies are just multiplied and the original programming is never improved. I’ve been fuming before about those millions of keyboard and video drivers now present in most virtual machines, just for compatibility.

Due to advances in 3D printing, there’s also some talk about anti-virtualization (materialization? or concretization?) – I’m not sure if the word has yet settled. This development is helpful in making the new paradigm complete, further blurring the demarcation point between hardware and software.

A practical example is my charge controller – a (now virtual) device that makes sure that the 50 kWh battery bank is not over- or undercharged at any moment. Those lead-acid batteries invented more than 100 years ago are not as sensitive as more modern AGM or Li-Ion ones, so some experimentation can be justified.

The battery bank is directly connected to a 2.3kW solar panel array and to a 5kW wind turbine, as well as to a continuously operating 5kW inverter providing so-called auxiliary power to always-on devices such as heating pumps and sewage treatment plant. The inverter knows the battery bank voltage and both the turbine and panels have current sensors. The auxiliary power circuit also has SNMP-controlled breakers to shut it down or to cut grid power so that the inverter powers everything.

My beta charge controller is a small Javascript-like program (we call it a filter chain) in our redundant Helsinki Platform, with all those sensors as input and circuit breakers as output. Logic gates are simple – when battery voltage drops below 224 volts, enable grid chargers for a couple of hours. At 280 volts and chargers off (sunny and windy), increase the inverter load by first cutting off-grid, then enable water heating resistors for even more load. If voltage doesn’t keep within these limits, send me an text message.

After implementing this first version of the virtual controller, I suddenly realized that grid charging needs to happen during the night, when price is lower. In this case, some pre-emptive charging is needed to keep the voltage over 224 during the ‘expensive’ period.

So what does this require? In this case, about ten lines of code.

If the charge controller were a physical box (which nearly all panel suppliers zealously tried to sell me as mandatory), this timing function would have required a new controller with respective inputs and outputs. For this voltage and load, such a controller doesn’t even exist, so it would have been necessary to custom build it.

A few lines of code, or an electrical overhaul of 1-2 days? Even with my feeble programming skills, I’ll opt for the virtual controller and 15 minutes of thinking!

When this kind of virtualizations gain momentum, it’ll be a seismic shift for companies like ABB, Schneider, Omron and Johnson Controls who now supply advanced logic controllers. Will they become SaaS providers?


Leave a Reply

Your email address will not be published. Required fields are marked *