Small Hydro Power Plants with Elixir

Part 1 - Introduction We have been exploring methods for using Elixir in industrial applications and challenging ourselves to use it to control several small hydroelectric power plants. In the latest project, we explored the appropriate industrial approach, not just using Elixir. In this presentation, we will first provide an overview of the control system for small hydroelectric power plants, followed by an explanation of the system architecture with Nerves. We will then discuss the issues encountered during the on-site installation. The subsequent presentation by KINUKAWA Ryota, also known as @pojiro, will introduce details of the technical methods applied. Part 2 - Implementation This session dives into the technical design and real-world challenges of building a distributed control system for a small hydroelectric power plant using Nerves and Elixir. We will first present a system map, showing how an Erlang cluster was formed over a fiber-optic network and how different nodes interface with industrial devices. Next, we will introduce "Modbuzz," a custom Modbus communication library for our needs, and explain how we implemented plant operations using GenServer-based control sequences. Special focus will be given to safety considerations, such as fault monitoring processes and failure handling strategies when the processes or the Nerves device itself go down. We will also share insights on what can be prepared in advance versus what can only be resolved on-site. Specifically, we will introduce how we used `Mox` for testing to prepare in advance, and how we effectively used `mix upload.hotswap` for on-site troubleshooting. This session will share practical insights and perspectives for engineers interested in applying Nerves to production-critical and field-deployed systems.

Yutaka Kikuchi

He is a manager of a renewable energy startup besides a professor at Kochi University of Technology. One of his interests is to develop a new platform for developing distributed industrial systems with Nerves. He received his Ph.D. from Science Tokyo (ex. Tokyo Institute of Technology) for his work on non-imperative languages in 1996.

Ryota Kinukawa

Ryota Kinukawa is a programmer at Tombo Works G.K., a one-person company based in Japan. He is passionate about Elixir and Nerves, and enjoys building systems that connect software with the real world. He also has a strong interest in physics and dreams of combining physical experiments with Elixir and Nerves to confirm the laws of nature through hands-on experience.