VILLASframework
Modular co-simulation framework
Getting Started with VILLASnode

We put some effort in getting you started as smooth as possible. This tutorial introduces the basic concepts and terminologies of VILLASnode and shows some examples.

Please look below for a video recording of a webinar covering the topics of this guide.

Preparation

The Installation page lists several ways to install VILLASnode on your machine.

For this guide, we recommend to use the VILLASnode Docker image on your workstation.

To open an interactive terminal in the VILLASnode Docker container run:

$ docker run --privileged --tty --interactive --entrypoint bash --volume C:\path\to\configs:/configs -p 80:80 registry.git.rwth-aachen.de/acs/public/villas/node

For some Lab assignments two interactive shells are required. To open a second shell, run the following command:

$ docker exec --tty --interactive $(docker ps -qn1) bash

Terminology

Before we start to use the VILLASnode tools, we will introduce some terminology:

  • A super node is an instance of the VILLASnode daemon which runs on a physical machine.
  • A node is an interface to a local or remote simulator, file, database etc. A super node consists of one or more nodes. A node acts as a sink and as a source of samples.
  • A sample is an array of floating point or integer values with an associated timestamp and sequence number.
  • A path connects one or more nodes within a super node and forwards samples from one or more source nodes to one or more destination nodes.
  • A hook manipulates or filters samples which are processed by a path.
VILLASnode_large.svg
Two site scenario with VILLASfpga.

Tools

VILLASnode is a collection of command line tools which follow the Unix philosophy:

  1. Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".
  2. Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.
  3. Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.
  4. Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them.

In this guide we will show the following tools:

Tool Purpose
villas node The main VILLASnode deamon.
villas signal A signal generator for testing and training purposes.
villas pipe Send / receive samples to / from nodes via standard IO streams.
villas hook Filter or manipulate samples provided via standard IO streams.
villas compare Compare multiple files/streams containing sample data.
villas conf2json Convert libconfig-style formatted configuration files to JSON format.
villas convert Convert sample data files/streams between different supported formats.
villas graph Generate a graphical representation of the VILLASnode configuration file with Graphviz.

A complete reference of all available options for those tools can be found on the Usage page.

Lab assignments

To get you started quickly, we prepared a series of small demos which you can try yourself.

All configurations files are available here: https://git.rwth-aachen.de/acs/public/villas/node/tree/master/etc/labs

Video

This webinar was recorded during the preparation of the RT-SuperLab demonstration.

  • Date: 8th May 2017
  • Versions: VILLASnode v0.3
  • Speaker: Steffen Vogel