-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
86 lines (69 loc) · 3.74 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
DISTRIO
=======
Manuel Traut <[email protected]>
Abstract
^^^^^^^^
distrio is an open-source software framework that uses (Real-time) CORBA to
group and control digital and analog inputs and outputs that are available on
different embedded Linux boards. distrio can be used for example to control
modelrailroads, do home-automation, or replace a SPS based system. Several
Inputs and Outputs represent a device. A device implements control functions
(e.g. in C). The fucntion names can be explored and called by LAN. All
currently available functions can be called by a webinterface. It is feasable
to implement bridges to other control standards like DLNA.
There are generic distrio modules that use the Linux sysfs functions to export
available LEDs and GPIOs. Also hardware development is part of the distrio
open-source project. E.g. a lowcost I/O Expander for the Raspberry PI board.
This paper describes the architecture and real-time performance of the distrio
framework. It presents an I/O Expander for the Raspberry PI board. Also the
real-time performance of distrio will be discussed.
distrio ist ein auf (Real-time) CORBA basierendes open-source software
Framework um digitale und analoge Ein- und Ausgaenge zu steuern, welche sich
auf verschiedenen embedded Linux Boards befinden. distrio kann in
Modelleisenbahnsteuerungen oder in der Heimautomatisierung eingesetzt werden.
Es ist auch denkbar eine SPS basierte Steuerung zu ersetzen. Mehrere Ein- und
Ausgaenge bilden ein Geraet. Ein Geraet implementiert Regelungsfunktionen.
Diese Funktionen koennen ueber ein (W)LAN aufgerufen werden. Es gibt ein Web-
interface ueber welches alle derzeit im Netz verfuegbaren Funktionen aufgerufen
werden koennen. Es ist denkbar bridges zu anderen Standards wie DLNA zu
implementieren.
Generische distrio Module nutzen die Linux sysfs Funktionen um verfuegbare
LEDs und GPIOs via distrio zugaenglich zu machen. Auch Hardware wurde im Rahmen
des open-source Projekts distrio entwickelt. So z.b. ein lowcost I/O Expander
fuer das Raspberry PI Board.
Dieses Paper beschreibt die Architektur des distrio frameworks. Ausserdem wird
der Raspberry I/O Expander vorgestellt und die real-time Performance von
distrio diskutiert.
Components
^^^^^^^^^^
There is a central component called 'Manager' running on one board. Each I/O
pin of each board in the system is registered with a common name at the
'Manager'. A I/O pin can either be 'Digital' or 'Analog'. All registered pins
can be retrieved from the 'Manager'.
A 'Device' represents a real world object. For example a model railroad turnout.
It can use several I/O pins from different boards. It gets the I/O pins from the
'Manager' by a common name. A 'Device' can export 'Functions'; a turnout for
example 'left()' and 'straight()'. A 'Device' can implement a 'Callback' and
register it at several 'Analog' or 'Digital' Inputs with a trigger condition.
The callback is called by the input object, as soon as the trigger matches. The
'Callback' is called with the triggered input object as a paramter.
A 'Device' needs to be registered at the 'Manager' with a common name.
A 'Controller' can retrieve a list of all registered 'Devices' from the
'Manager'. The exported 'Functions' are also iteratable.
The interfaces
* 'Digital'
* 'Analog'
* 'Device'
* 'Manager'
* 'Controller'
are defined in CORBA IDL.
The 'Digital' and 'Analog' interface needs to be implemented if new hardware
should be supported.
The 'Device' interface needs to be implemented for each logical/complex device
that should be controllable by the distrio framework.
The 'Manager' interface needs to be implemented once and can be reused in each
distrio system.
The 'Controller' interface is the user interface. It can for example host a
webinterface or mobile application.
Performance
^^^^^^^^^^^