Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 7. openETCS Meta Model<br />
can be only used at the beginning of a telegram to define a telegram hea<strong>der</strong> [85]. Therefore,<br />
they only can be modelled in the or<strong>der</strong> between the oRootNode object and the first oPacket or<br />
oAnyPacket instance. The VariableOr<strong>der</strong> relationship is used between the connection between<br />
two oVariableInstance objects. PacketOr<strong>der</strong> is valid between oAnyPacket and/or oPacket typ<strong>es</strong>,<br />
and between the last oVariableInstace and the two packet typ<strong>es</strong>.<br />
The oAnyPacket object type is different from the others because it cannot be directly found<br />
in SRS [85]. It can be used to model that at a certain point in the variable-packet or<strong>der</strong><br />
several oPacket objects are possible. The concrete set of oPacket objects is specified in the<br />
decomposition of the oAnyPacket instance. In that way, ETCS telegrams only differing from<br />
each other in a certain packet can be easier and faster modelled.<br />
7.3.7. gPacket Graph Type<br />
Similar to the gTelegram graph type, the gPacket graph type is used to specify the or<strong>der</strong> of<br />
oVariableInstance objects in a certain ETCS packet [85]. Three object typ<strong>es</strong> are provided:<br />
oRootNode defin<strong>es</strong> the start point of a packet or<strong>der</strong>.<br />
oVariableInstance defin<strong>es</strong> a certain ETCS variable of a certain type [85]. Therefore, the<br />
oVariableInstance object type holds an oVariableType object as property. The oVariableType<br />
type is not graphically used (only as property) and specifi<strong>es</strong> the type of an<br />
oVariableInstance object, which is similar to a template-mechanism [79] in object-oriented<br />
programming languag<strong>es</strong>. The oVariableType type holds several properti<strong>es</strong> for defining<br />
the attribut<strong>es</strong> of an oVariableInstance object:<br />
1. size in bits<br />
2. the variable’s r<strong>es</strong>olution [85]<br />
3. the variable’s physical unit<br />
oLeafNode determin<strong>es</strong> the last gPacket object in an or<strong>der</strong>.<br />
The advantage of defining a property of oVariableType object type is that the concrete<br />
oVariableType objects can be reused for several oVariableInstance objects.<br />
Apart from enabling the specification of variable or<strong>der</strong>s according to the ETCS specifications<br />
[85], also a possibility to model the scaling of certain variabl<strong>es</strong> is needed. Scaling means<br />
that a value of a certain variable can scale (by multiplication) the value of another. This is<br />
modelled by the additional Scaling relationship while the VariableOr<strong>der</strong> is used for specifying<br />
the oVariableInstance object or<strong>der</strong>. The full syntax is illustrated in Figure 7.12.<br />
Moreover, the ETCS language specification [85] defin<strong>es</strong> so-called iterating variabl<strong>es</strong>. This<br />
concept is similar to arrays in C/C++ [79] or other high-level programming languag<strong>es</strong>. A<br />
certain variable holds the size of an array and the following variabl<strong>es</strong> are components of an<br />
array of the specified size. An iterating variable is not modelled by a relationship but by<br />
graphical containment, as introduced in Chapter 4. Therefore, oVariableInstance objects that<br />
are iterated by another oVariableInstance object are drawn within the iterating instance. In<br />
this way, it is also possible to specify n<strong>es</strong>ted iterations.<br />
A specialisation of iterating variabl<strong>es</strong> are so-called conditional iterator variabl<strong>es</strong>. In contrast<br />
to the normal iteration concept, conditional iterators do not iterate the graphically contained<br />
96