Bosch XDK in Industrial Automation
10.09.16 13:10


Our project makes use of the XDK’s Internet-of-Things capabilities in Industrial Automation Systems. Essentially, we convert industrial mechanical units such as valves, pumps, belts, robot arms, etc., into smart objects that can be integrated using IoT to compose the industrial automation system.


How does it work? The mechanical unit’s properties that should be exported to the environment either for  sensing or actuation are connected to the XDK which acts both a) as controller of the mechanical unit to convert the mechanical unit into a smart object, and b) as a lightweight-m2m client that will export the properties of the smart object to the environment through an IoT compliant interface. A lightweight-m2m server that may run on the local Cloud coordinates the collaboration of smart objects to perform the industrial system’s functionality. Users of the industrial automation system may easily describe through the web the desired properties of the products they order from the plant. The lightweight-m2m server acts as a process controller of industrial automation system. This control is very dynamic. For instance, the process could change depending on the user and market needs.


As a case study, we have used two XDKs to develop a Liqueur production system that will accept liqueur orders from clients through the web. The YouTube video presents this example application scenario.


Which problem are you solving with your solution?

Non-smart components are designed for a very specific use and their re-adjustment for some other use is a time and resource consuming process. This is a very apparent problem when in need for scalable solutions in order to satisfy the constant changing market needs.


By transforming industrial automation mechanical units into smart components, we significantly increase the flexibility, give them extensive customizability and increased control over the industrial system.


Also, by using the REST architectural style we obtain a loose coupling between the industrial automation system components.


Whilst our example is a simple demonstration of 2 silos cooperating for liqueur generation, it is evident that this can be a scalable solution for factories. The generation process can always change on the fly, without the need to change the firmware of any of the smart components.


How does your idea work on the software side?

In short, our controller (the XDK) transforms the unit (silo) into a smart object. The IoT wrapper allows the component to export its functionality through an IoT compliant interface, thus the smart object’s resources are made available to the lightweight m2m server.


On the XDK’s side, we started working on top of the lightweight m2m example, available in the Workbench examples. We added our own code so as to implement the functionality we needed.


We created a struct for the lwm2m resources, which are registered to the server, as well as the appropriate functions.


During runtime, the lwm2m task is constantly running, awaiting commands from the server. Meanwhile, another task is running which is reading the pins’ values, changing values to variables such as the Silo’s state.


On the server’s side, we modified the Leshan server code, which was available in github, written in Java. The server implements the production process by observing the states of the smart objects (as lwm2m resources) and sends the appropriate commands through the lightweight m2m protocol. The whole process is on a loop, so liqueur is constantly being generated. If the “Stop” button is pressed through our server’s control GUI, any action performed by the Silos immediately stops and the operator has the option to execute commands manually or restart the process.


How does your idea work on the hardware side?

First of all, to transform an object into a smart one, a communication interface must be made available to a controller, giving the controller the necessary status information and the ability to modify the object’s internal state. In addition, the controller itself must be ready to receive commands from a server and respond to them.


All in all, our hardware consists of the lightweight m2m server, the controller and our (now smart) object.


In general, each component's pins are connected to those of the controller.


In our case study, we used a Silo Simulator hardware, which runs in cooperation with an Arduino Nano board. It has GPIO pins in order to indicate its components' values, such as the liquid detection, and to enable/disable components, such as the valves. These pins are to be connected to the controller, and function at 3.3V.


The Silo’s controller is the XDK. Since the XDK’s pins function at 2.5V, we used a level-shifting circuit consisting of resistors and diodes for connecting each Silo’s pins to the XDK.


Our custom leshan server was tested on a usual laptop running Linux.



Youtube video:

Case study (UML4IoT website):

Leshan GitHub:

This project was created by Jason Athanasoglou & Alex Solanos, students of University of Patras, Department of Electrical & Computer Engineering.

[X] I accept the XDK competition terms and conditions

+2 (2 Stimmen)
RE: Bosch XDK in Industrial Automation
07.08.16 13:51 als Antwort auf Jason Athanasoglou.

Hello Jason,

thank you for submitting your XDK use case, it sounds great!
You accepted the BCDS terms and conditions correctly and your idea Bosch XDK in Industrial Automation will participate in the Ideation Jam.

Kind regards,

0 (0 Stimmen)