diff --git a/.github/workflows/paper.yaml b/.github/workflows/paper.yaml
new file mode 100644
index 000000000..8a0981a28
--- /dev/null
+++ b/.github/workflows/paper.yaml
@@ -0,0 +1,32 @@
+# SPDX-FileCopyrightText: 2025 OPAL-RT Germany GmbH
+# SPDX-License-Identifier: Apache-2.0
+
+---
+name: Draft PDF
+
+on:
+ push:
+ paths:
+ - paper/**
+ - .github/workflows/paper.yaml
+
+jobs:
+ paper:
+ runs-on: ubuntu-latest
+ name: Paper Draft
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Build draft PDF
+ uses: openjournals/openjournals-draft-action@v1.0
+ with:
+ journal: joss
+ paper-path: paper/paper.md
+
+ - name: Upload
+ uses: actions/upload-artifact@v4
+ with:
+ name: paper
+ path: paper/paper.pdf
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index c7baf4508..785facb72 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -8,7 +8,7 @@ repos:
rev: v5.0.0
hooks:
- id: trailing-whitespace
- exclude: \.patch$
+ exclude: \.patch$|^paper\.md$
- id: end-of-file-fixer
exclude: \.(svg|patch)$
- id: check-ast
@@ -19,6 +19,7 @@ repos:
exclude: .devcontainer/devcontainer\.json
- id: check-toml
- id: check-added-large-files
+ exclude: ^paper\.md$
- id: pretty-format-json
# black has its own mind of formatting Jupyter notebooks
exclude: \.ipynb$|^.devcontainer/devcontainer\.json$|package-lock\.json$
@@ -54,4 +55,5 @@ repos:
rev: "v0.13.0"
hooks:
- id: markdownlint
+ exclude: ^paper\.md$
args: [-r, "~MD013,~MD033,~MD024"]
diff --git a/README.md b/README.md
index 31ef8adaa..3e20b0a60 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# VILLASnode
[](https://git.rwth-aachen.de/acs/public/villas/node/-/pipelines/)
+[](https://joss.theoj.org/papers/37c2509d36586f4cec2885d5c2088e8f)
This is VILLASnode, a gateway for processing and forwarding simulation data between real-time simulators.
VILLASnode is a client/server application to connect simulation equipment and software such as:
diff --git a/REUSE.toml b/REUSE.toml
index 47f97d039..e3507eccf 100644
--- a/REUSE.toml
+++ b/REUSE.toml
@@ -24,6 +24,9 @@ path = [
"etc/labs/lab3.pcap",
"tests/valgrind.supp",
"packaging/archlinux/villas-node.install",
+ "paper/figures/**",
+ "paper/paper.md",
+ "paper/paper.bib",
]
precedence = "aggregate"
SPDX-FileCopyrightText = "2018-2023, Institute for Automation of Complex Power Systems, RWTH Aachen University"
diff --git a/paper/figures/VILLASnode_paths.svg b/paper/figures/VILLASnode_paths.svg
new file mode 100644
index 000000000..c1f54a913
--- /dev/null
+++ b/paper/figures/VILLASnode_paths.svg
@@ -0,0 +1,1219 @@
+
+
+
+
diff --git a/paper/paper.bib b/paper/paper.bib
new file mode 100644
index 000000000..91358f106
--- /dev/null
+++ b/paper/paper.bib
@@ -0,0 +1,88 @@
+@article{hardy_helics_2024,
+ title = {{HELICS}: A Co-Simulation Framework for Scalable Multi-Domain Modeling and Analysis},
+ volume = {12},
+ issn = {2169-3536},
+ url = {https://ieeexplore.ieee.org/document/10424422},
+ doi = {10.1109/ACCESS.2024.3363615},
+ shorttitle = {{HELICS}},
+ abstract = {As both the generation resources and load types have changed and grown over the past few decades, there is a growing need for analysis that spans traditional simulation boundaries; for example, evaluating the impact of distribution-level assets (e.g. rooftop solar, {EV} chargers) on bulk-power system operation. Co-simulation is a technique that allows simulators to trade information during run-time, effectively creating larger and more complex models. {HELICS} is a co-simulation platform that has been developed to enable these kinds of power system analysis, incorporating tools from a variety of domains including the electrical power grid, natural gas, transportation, and communications. This paper summarizes the technical design of {HELICS}, describes how tools can be integrated into the platform, and reviews a number of analyses that have been performed using {HELICS}. A short video summary of this paper can be found at https://youtu.be/{BIUiR}\_K87Wc.},
+ pages = {24325--24347},
+ journaltitle = {{IEEE} Access},
+ author = {Hardy, Trevor D. and Palmintier, Bryan and Top, Philip L. and Krishnamurthy, Dheepak and Fuller, Jason C.},
+ urldate = {2025-07-10},
+ date = {2024},
+ keywords = {co-simulation, energy system analysis, Government, {HELICS}, multi-domain analysis, multi-energy analysis, natural gas, Natural gas, Power system analysis computing, Power system dynamics, power system simulation, Power system stability, Renewable energy sources, Scalability, Simulation, Transactive energy, transportation},
+}
+
+@inproceedings{rohjans_mosaik_2013,
+ title = {mosaik - A modular platform for the evaluation of agent-based Smart Grid control},
+ url = {https://ieeexplore.ieee.org/document/6695486},
+ doi = {10.1109/ISGTEurope.2013.6695486},
+ abstract = {Smart Grids rely on the use of {ICT} for managing large numbers of active components and sensors to keep demand and generation of electricity at equilibrium while operating multiple resources within their operational limits. Due to the distributed nature of these resources, their heterogeneity as well as their sheer number, is a challenging task. Control strategies as well as novel paradigms need to be developed and thoroughly evaluated through extensive simulations. In order to yield scientifically sound and reliable results, these simulations have to rely on valid and (ideally) established models, e.g., from industry. Therefore, it is desirable to reuse these models as often as possible by combining them into new, potentially large-scale test scenarios. The introduced mosaik framework presents a flexible architecture as well as a powerful modeling and specification language to automate the process of composing existing models and simulation platforms into large-scale simulation scenarios.},
+ eventtitle = {{IEEE} {PES} {ISGT} Europe 2013},
+ pages = {1--5},
+ booktitle = {{IEEE} {PES} {ISGT} Europe 2013},
+ author = {Rohjans, S. and Lehnhoff, S. and Schütte, S. and Scherfke, S. and Hussain, S.},
+ urldate = {2025-07-10},
+ date = {2013-10},
+ note = {{ISSN}: 2165-4824},
+ keywords = {Biological system modeling, Composition, Computational modeling, {ICT}, Integration, Load modeling, Mathematical model, Modeling, Simulation, Smart Grid Control, Smart grids, Topology},
+}
+
+@misc{villasnode_docs,
+ author = {Vogel, Steffen and Bach, Alexandra and Potter, Dennis and Stevic, Marija and Pitz, Manuel and Mirz, Markus},
+ title = {VILLASnode Documentation},
+ howpublished = {\url{https://villas.fein-aachen.org/docs/node/}},
+ note = {Accessed: 2025-05-20},
+ year = {2025}
+}
+
+@article{monti_global_2018,
+ title = {A Global Real-Time Superlab: Enabling High Penetration of Power Electronics in the Electric Grid},
+ volume = {5},
+ issn = {2329-9215},
+ url = {https://ieeexplore.ieee.org/document/8458285},
+ doi = {10.1109/MPEL.2018.2850698},
+ shorttitle = {A Global Real-Time Superlab},
+ abstract = {The Global Real-Time Superlaboratory (Global {RT} Superlab) represents a vendor-neutral distributed platform based on the virtual interconnection of digital real-time simulators ({DRTSs}) and hardware-in-the-loop ({HIL}) setups hosted at eight geographically distributed laboratories in the United States and Europe (Figure 1). This article describes the efforts toward the realization of this largescale virtual infrastructure and explains a demonstration of the multilab setup for simulation and testing of next-generation global power grids.},
+ pages = {35--44},
+ number = {3},
+ journaltitle = {{IEEE} Power Electronics Magazine},
+ author = {Monti, Antonello and Stevic, Marija and Vogel, Steffen and De Doncker, Rik W. and Bompard, Ettore and Estebsari, Abouzar and Profumo, Francesco and Hovsapian, Rob and Mohanpurkar, Manish and Flicker, Jack David and Gevorgian, Vahan and Suryanarayanan, Siddharth and Srivastava, Anurag K. and Benigni, Andrea},
+ urldate = {2023-10-10},
+ date = {2018-09},
+ note = {Conference Name: {IEEE} Power Electronics Magazine},
+ keywords = {Real-time systems, Internet, Power system stability, Laboratories, Distributed databases, Power electronics, Power grids}
+}
+
+@inproceedings{Pitz2024,
+ author = {Manuel Pitz and Felix Wege and Niklas Eiling and Steffen Vogel and Vincent Bareis and Antonello Monti},
+ title = {Automated Deployment of Single-Board Computer Based Grid Measurement and Co-Simulation Equipment},
+ booktitle = {2024 Open Source Modelling and Simulation of Energy Systems (OSMSES)},
+ year = {2024},
+ location = {Vienna, Austria},
+ pages = {1--6},
+ doi = {10.1109/OSMSES62085.2024.10668996}
+}
+
+@article{Mehlmann2023,
+ author = {Gert Mehlmann and Uwe Kühnapfel and Felix Wege and Alexander Winkens and Christian Scheibe and Steffen Vogel},
+ title = {The Kopernikus ENSURE Co-Demonstration Platform},
+ journal = {IEEE Open Journal of Power Electronics},
+ volume = {4},
+ pages = {987--1002},
+ year = {2023},
+ doi = {10.1109/OJPEL.2023.3332515}
+}
+
+@article{Bach2025,
+ author={Bach, Alexandra and Monti, Antonello},
+ journal={IEEE Access},
+ title={Remote Real-Time Testing of Physical Components Using Communication Setup Automation},
+ year={2025},
+ volume={13},
+ number={},
+ pages={39066-39075},
+ keywords={WebRTC;Testing;Protocols;Delays;Control systems;Automation;Security;Interoperability;Emulation;Containers;Communication automation;geographically distributed facilities;real-time experiment;remote coupling;remote physical component testing},
+ doi={10.1109/ACCESS.2025.3546311}
+}
diff --git a/paper/paper.md b/paper/paper.md
new file mode 100644
index 000000000..0800aaaa1
--- /dev/null
+++ b/paper/paper.md
@@ -0,0 +1,100 @@
+---
+title: 'VILLASnode: An Open-Source Real-time Multi-protocol Gateway'
+tags:
+
+- C/C++
+- Real-time
+- Distributed experiments
+- Electrical grid simulation
+
+authors:
+
+- name: Steffen Vogel
+ orcid: 0000-0003-3384-6750
+ affiliation: "1, 3"
+- name: Niklas Eiling
+ orcid: 0000-0002-7011-9846
+ affiliation: 1
+- name: Manuel Pitz
+ orcid: 0000-0002-6252-2029
+ affiliation: 1
+- name: Alexandra Bach
+ orcid: 0009-0005-7385-4642
+ affiliation: 1
+- name: Marija Stevic
+ affiliation: "1, 3"
+- name: Prof. Antonello Monti
+ orcid: 0000-0003-1914-9801
+ affiliation: "1, 2"
+
+affiliations:
+
+- name: Institute for Automation of Complex Power Systems, RWTH Aachen University, Germany
+ index: 1
+- name: Fraunhofer Institute for Applied Information Technology, Aachen, Germany
+ index: 2
+- name: OPAL-RT Germany GmbH
+ index: 3
+
+date: 20 June 2025
+bibliography: paper.bib
+---
+
+# Summary
+
+VILLASnode is a multi-protocol gateway, designed to facilitate real-time data exchange between various components of geographically distributed real-time experiments. Components can be test beds, digital real-time simulators, software tools, and physical devices. It is designed for the co-simulation of power system and related energy applications.
+VILLASnode was originally designed for co-simulation of electrical networks, but was developed to bigger variety of use cases and domains.
+Whereas distributed computing, systems or algortihms aim to solve a common task, geographically distributed experiments link infrastructures with different components to make these components accessible to other infrastructures. Thus, data exchanges are possible which would not be possible in one single infrastructure.
+VILLASnode serves as the gateway that connects components across different infrastructures by providing a set of protocols and customized third-party implementations, e.g., different simulators. It enables seamless collaboration in research and testing environments while safeguarding the intellectual property of the infrastructures. The components at every infrastructure appear as a black box. The infrastructure does not need to share models or confidential information.
+
+VILLASnode is a Linux command line tool and can run as installation from source or as container. It is written in C/C++ and designed in a modular and extensible way.
+All components which are interfaced by the VILLASnode gateway are represented by nodes ($n$). These nodes act as sinks or sources for data specific to the component. Every node is an instance of a node-type. In a single VILLASnode instance, multiple instances of the same node-type can co-exist at the same time.
+The basic data package, common for all node-types, includes timestamped data, constituting a sample. Up to 64 values can form a sample.
+Samples may need modification or filtering. VILLASnode supports hooks ($h$) for this purpose. Hooks are simple callback functions, which are called whenever a message is processed.
+Paths ($p$) take care of the processing and define the connections and dataflows between nodes.
+Node-types, hooks, and paths need to be initalized in a JSON configuration file which is passed when starting VILLASnode.
+Figure 1 shows an example of an experiment where five different node-types are used, connected by three paths, using three hooks.
+It includes queues ($q$) and registers ($r$). Queues temporarily store data before data is forwarded to registers. Registers provide the possibility to (de-)mulitplex data and to create new samples.
+
+![Example of modular experimental design with nodes, paths, and hooks [@villasnode_docs].](figures/VILLASnode_paths.svg)
+
+External software tools and programming languages can be interfaced with VILLASnode via several methods: Locally, they can be spawned as sub-processes and exchange data via shared-memory or standard I/O streams. Remotely, they can be interfaced via any of the supported node-types and protocols, such as MQTT or e.g. plain TCP sockets.
+Additionally, VILLASnode can be configured and controlled remotely by an HTTP REST-style Application Programming Interface (API). An OpenAPI specification of the API is provided in order to generate API bindings for a variety of different programming languages.
+Since VILLASnode is written in C/C++ it supports real-time capabilites and can supports real-time tuning for Linux systems.
+To provide all necassary information, VILLASnode has a detailed documentation [@villasnode_docs]. It includes installation recommendations and best practices for development as well as example configurations and beginners guides, so-called labs.
+
+Other open-source co-simulation tools are available like Mosaik [@rohjans_mosaik_2013] or Helics [@hardy_helics_2024]. Mosaik uses a SimAPI to communicate with other simulators based on fixed timesteps. Integrated simulators need to support the SimAPI which requires extra implementations. Simulators cannot reuse existing supported protocols which VILLASnode makes use of and takes core of protocol conversion.
+Helics is designed for large-scale testing and supports bindings for different languages. It uses a broker which manages the communication between the simulators, whereas VILLASnode has a peer-to-peer architecture.
+
+# Statement of need
+
+VILLASnode supports the coupling of real-time simulators of different hardware and software vendors, specifications and implementations [@monti_global_2018]. They play a crucial role in both academic research and industrial applications, especially within simulation of electrical power networks. They are primarily utilized for hardware-in-the-loop (HiL) simulations. As an example, in the scope of the ENSURE project, the German electrical grid is emulated with the ability to couple dynamically simulators and physical components which can be interfaced safely via analog input and output signals [@Mehlmann2023].
+This approach not only reduces development costs but also allows for the validation of components under scenarios that are difficult or unsafe to replicate real-world field scenarios. Moreover, VILLASnode supports the linking of simulators and real-time simulators of different vendors so that models do not need to be shared. It allows for conversation of intellectual property during collaboration. Local simulator and simulation infrastructure can be combined in a powerful arrangement unavailable at any individual infrastructure. This approach has the additional advantage of allowing to co-simulate with heterogeneus methods, algorithms and communication protocols. The communication with the components, sensors or actuators can also be implemented using VILLASnode.
+
+This can be extended to geographically distributed experiments. In this case, VILLASnode takes care of the communication between the different participants to the experiment which spans multiple infrastructures. Not only simulators can be included, but also physical devices can be integrated [@Bach2025]. Although communication latencies constrain the dynamics of the experiment for real-time applications, VILLASnode offers significant advantages such as leveraging existing infrastructure across sites and facilitating collaboration among interdisciplinary teams. Manufacturers, customers, and certifiers benefit from remote access and distributed testing while maintaining data confidentiality and intellectual property. Current work includes automation of integration of VILLASnode in practical field devices [@Pitz2024].
+
+# Features
+
+VILLASnode is a part of the VILLASframework, which offers several key features.
+Firstly, it includes VILLASweb, a tool designed for the visualization and monitoring of experiments.
+Secondly, there is VILLASfpga, which provides hard real-time capabilities for VILLASnode.
+Lastly, VILLAScontroller is currently under development and aims to automate simulation equipment.
+
+The gateway supports a wide range of established data exchange protocols. Support for various message brokers like MQTT, AMQP, nanomsg, ZeroMQ, Redis or Kafka provide connectivity to existing software platforms. Support for process bus protocols such as CAN, EtherCAT, Modbus, IEC 61850-8-1 (GOOSE), IEC 61850-9-2 (Sampled Values) enable connectivity to physical devices. A range of web-based protocols like WebRTC, WebSockets, NGSI or a HTTP REST API facilitate integration into web-based interfaces. Lastly, a set of generic protocols add support for plain UDP/TCP/Ethernet sockets, Infiniband, file-based I/O or communication with other processes via standard I/O or shared memory regions.
+
+# Acknowledgements
+
+We like to thank several colleagues and students who supported us. Especially, we thank Leonardo Carreras, Laura Fuentes Grau, Andres Acosta, and Felix Wege.
+
+- [RESERVE](http://re-serve.eu/): European Unions Horizon 2020 research and innovation programme under grant agreement No. 727481.
+- [VILLAS](https://villas.fein-aachen.org/website/): Funding provided by [JARA-ENERGY](http://www.jara.org/en/research/energy). Jülich-Aachen Research Alliance (JARA) is an initiative of RWTH Aachen University and Forschungszentrum Jülich.
+- [Urban Energy Lab 4.0](https://www.uel4-0.de/Home/): Funding is provided by the [European Regional Development Fund (EFRE)](https://ec.europa.eu/regional_policy/en/funding/erdf/).
+- [ERIGrid2.0](https://erigrid2.eu/): European Unions Horizon 2020 research and innovation programme under grant agreement No. 870620.
+- [ENSURE](https://www.kopernikus-projekte.de/projekte/ensure): Federal Ministry of Education and Research supports the project under identification 03SFK1C0-3.
+- [NFDI4Energy](https://nfdi4energy.uol.de/): Funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) – 501865131.
+- [HYPERRIDE](https://hyperride.eu/): European Unions Horizon 2020 research and innovation programme under grant agreement No. 957788.
+- [AI-EFFECT](https://ai-effect.eu/): European Unions Horizon 2020 research and innovation programme under grant agreement No. 101172952.
+- [EnerTEF](https://enertef.eu/): European Unions Horizon 2020 research and innovation programme under grant agreement No. 101172887.
+- [Target-X](https://target-x.eu/): European Unions Horizon 2020 research and innovation programme under grant agreement No. 101096614.
+
+# References