A Thesis
Presented to
The Graduate Faculty of The University of Akron
In Partial Fulfillment
of the Requirements for the Degree
Master of Science
Nunzio Hayslip
December, 2006
Thesis
Approved:
Accepted:
Advisor
Dr. Shivakumar Sastry
Department Chair
Dr. Alex De Abreu Garcia
Committee Member
Dr. Nathan Ida
Committee Member
Dr. James E. Grover
Date
ii
ABSTRACT
Emerging trends in tiny embedded microcontrollers and transceivers provide
the impetus for networked embedded automation. To facilitate these investigations,
this thesis proposes a compositional approach, called Coupled Conveyors, to realize
reconfigurable conveyor systems. A discrete-event simulator for Coupled Conveyors
is presented.
Coupled Conveyors is based on three building blocks that are called Segment,
Turnaround, and Crossover. Each block is regulated by a unique microcontroller
that interacts with other microcontrollers, over wireless links, to coordinate operations. Reconfigurable conveyor systems are achieved by embedding the building
blocks in a two-dimensional grid. Using the OMNeT++ discrete-event simulation
framework, software modules were developed to model and represent the behavior of Segment, Turnaround, and Crossover. These modules were used to compose conveyor systems using the Network Description language in OMNeT++. The
conveyor system achieved is reconfigurable because the number of modules in the
conveyor system, the speed at which entities move in the system, the number of
entities, injection rates, length and type of entities are all parameters that can be
changed without requiring any software changes in the simulator. The approach
and the simulator were validated by composing conveyor systems for applications
such as Inspection and Package Sorting.
In the future, the simulator can be extended to improve the fidelity of the
dynamics of the electromechanical systems and investigate the computational and
communication foundations of networked embedded automation.
iii
ACKNOWLEDGEMENTS
I would like to express much gratitude to my advisor, Dr. Shiva Sastry. His
constant enthusiasm, support and direction were invaluable for my research and
have taught me many lessons about life.
I am grateful to Dr. Grover and Dr. Ida for agreeing to read this thesis and
for letting me borrow all sorts of debuggers, in-circuit emulators and oscilloscopes
at a moments notice.
Thanks are due to my colleagues, both past and present. To Jack Chu for his
assistance in the lab and Ruan for helping with a redesign of the simulator. Thanks
to Minlan and Kranthi for their advice and assistance with this work.
I would like to thank the ECE department for supporting me as a TA for the
Circuits I and II Labs. On that note, Id like to thank Professor Kult for making the
afore mentioned labs an enjoyable teaching experience.
Also, I would like to acknowledge Ohio ICE for financial support and for
bringing industry focused research opportunities to students.
iv
TABLE OF CONTENTS
Page
LIST OF TABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
LIST OF FIGURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ix
CHAPTER
I.
II.
III.
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BACKGROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.3 OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
COUPLED CONVEYORS . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
15
3.1.1 Segment . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.1.2 Turnaround . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.1.3 Crossover . . . . . . . . . . . . . . . . . . . . . . . . . .
17
18
19
21
22
23
IV.
V.
23
24
29
4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
30
32
32
4.4.1 Metal . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.4.2 Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.5 Medium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
38
38
42
42
43
VI.
. . . . . . . . . . . . . . . . . . . .
43
46
49
. . . . . . . . . . . .
52
54
57
. . . . . . . . . . . . . . . . . . . . .
57
59
61
61
62
. . . . . . . . . . . . . . . . . . . . .
63
64
5.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
CONCLUSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
vi
BIBLIOGRAPHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
70
LIST OF TABLES
Table
Page
22
43
44
47
48
48
50
50
50
51
53
54
56
58
58
60
61
63
65
65
viii
LIST OF FIGURES
Figure
Page
15
20
25
26
27
28
34
36
41
. . . . . .
45
46
47
51
52
53
55
59
62
ix
64
66
67
CHAPTER I
INTRODUCTION
Supervisory Controller
Automation System
Input
Output
Control Behavior
Specification
HCI
Logic Processing
Controller1
Controller3
Programming
Tool 1
Programming
Tool 3
Sensors &
Actuators 1
PB Panel 1
Controller2
Programming
Tool 2
Zone 1
Sensors &
Actuators 3
PB Panel 3
Zone 3
PB Panel 2
t
Sensors &
Actuators 2
Zone 2
Inherent Distribution
Performance
Incremental Growth
Economics
Distributed
Computing
Safety
Predictability
Reliability
Maintainability
Automation
Systems
Networked
Embedded
Systems
Mobile
Computing
Mobile Devices
Wireless
Energy Awareness
Location Awareness
Sensor Networks
Resource Limited
Energy Conserving
Motivation
The overriding question that motivated this investigation is whether it was
feasible to develop a reconfigurable discrete event simulator that is useful to simulate and study the performance of a variety of conveyor systems. In addition, it
was necessary to validate the compositional approach advocated for Coupled Conveyors by ensuring that it was scalable and not restricted to a particular instance of
conveyor systems.
The Coupled Conveyors approach was originally developed as a part of this
research [2]. Thus, it was clear that there was no existing simulator for Coupled
Conveyors. The state of the art in discrete event simulators is discussed in Chapter
II. These simulators largely focus on the networking issues. To support the simulation of a system such as a conveyor system, or a traffic system, it is necessary
to simulate the dynamics of the physical system independently and create a data
set that can be used to exercise the sensor network simulator. Such an approach
cannot capture the dynamic interaction between the physical system and the networked embedded system that regulates its operation.
3
Automation System
Input
Output
Retargetable
Programming
Devices
HMI
Logic Processing
Monitoring Specific
Behavior
Module
Wired
Retargetable
Push Button Panel 1
Communication Media
(Wireless with wired
segments)
Wireless
Retargetable
Push Button Panel 2
Research Approach
Discrete event simulation is a robust technology that has evolved over the
last thirty years. A well-known framework for discrete event simulation called OMNeT++ was selected. Using object-oriented design principles, the building blocks,
i.e., Segment, Turnaround, and Crossover, were modeled as software modules in
the C++ programming language. The Network Description language supported by
OMNeT++ was used to specify Coupled Conveyor topologies for conveyor systems
that are useful in a variety of material movement applications. The performance of
the conveyor systems was characterized both at the level of entities moving over the
conveyor system and at the level of electronic events that occurred in the networked
embedded system.
1.3
Contributions
The contributions of this thesis are:
Overview of Thesis
Chapter II describes discrete event simulation and provides an introduction
CHAPTER II
BACKGROUND
This chapter briefly describes discrete event simulation and surveys the literature of available simulators. A framework called OMNeT++ was selected as the
simulation platform for this investigation. This framework and its capabilities are
also described.
2.1
quence of events. Fundamental assumptions in this approach are that (a) events
occur instantaneously and without duration, and (b) nothing significant occurs between two successive events. Such a system of events is referred to as a Discrete
Event System [3].
Simulation is the art of mimicking behavior of systems in a computing environment. There are two approaches to simulation - the first based on time-driven
execution and the second based on event-driven execution [4]. Because of the
tremendous success in using discrete event framework for representing a variety
of systems such as biological systems, manufacturing systems, telecommunication
systems, and social systems, the event-driven approach has become the dominant
approach for simulation.
The critical activity that is necessary for discrete event simulation is to maintain a queue of events that must be processed in the time-order they were generated. This activity can be accomplished in software by designing proprietary data
structures or by using a framework for simulation.
6
Before discussing the simulation method in this thesis, the following sections
outline current simulators and their limitations.
2.2
Network Simulators
Many simulators have been reported in the literature. Traditional network
ment environment, it is known that the models for radio simulation and the energy
used in TOSSIM do not reflect the observations on testbeds and experiments [6, 9].
PowerTOSSIM [10] is an extension to the TinyOS simulator, TOSSIM, focused on modeling energy usage. It calculates power consumption at the node
level by interfacing with TinyOS components and taking into account the usage of
hardware such as LEDs and the radio. A code-transformation technique removes
the need for instruction-level simulation by estimating the number of CPU cycles
used. To evaluate the accuracy of the simulator, the authors ran various TinyOS
example applications for one minute and measured the actual power usage. This
data was compared with the power consumption predicted by the simulator and an
average error of 4.7% was reported.
ATEMU is a fine grained sensor network simulator [11] which relies on a
hybrid approach where the nodes are emulated on an instruction by instruction
basis and the wireless communication is simulated in a realistic manner. Heterogeneous networks, those with multiple hardware platforms, are also supported,
though this support is limited to AVR processor based systems. A graphical debugger, called XATDB, is provided and can step through instructions on each node in
either C or at assembly level. To perform simulation, ATEMU uses the binary file
that would normally be used to program a node along with an XML configuration
file to set up the network. It is emphasized by the authors that the high-level of
detail sought by the simulator requires long run times to attain. Results show that
it takes 50, 125, and 250 real seconds to simulate 1 second in a network with 25,
50, and 80 nodes, respectively.
Avrora [12] is a cycle-accurate sensor network simulator that can scale up
to 10,000 nodes and run up to 25 nodes in real-time. An event queue is used
to handle instruction-level simulation. Such simulations are used when there is
no access to the actual hardware or when prototyping. Some existing simulators
instead use models of the nodes rather than actual software: this is sufficient for
determining network characteristics and power usage on the order of 10,000 nodes.
Each node is executed as a separate thread and this approach can impose a limit on
the simulation. Avrora does not model clock drift that is inherent in the nodes.
Simulators, such as TOSSIM and ATEMU, that run the application source
code unchanged (or nearly unchanged) have more accuracy. TOSSIM loses timing/interrupt information, while ATEMU retains it but runs 30 times slower. Avrora
maintains per node timing information but achieves performance gains over ATEMU
by only synchronizing when necessary, as opposed to ATEMU, which synchronizes the timing amongst nodes every cycle. The synchronization is necessary to
ensure proper ordering of radio communications and the global time scale. The
event-queue structure Avrora uses is ideal for sensor nodes whose programs have
them sleep often to conserve power. Their results show Avrova as 50% slower than
TOSSIM and 20 times faster than ATEMU.
SensorSim [13] is a framework whose goal is to model military tactical
environment scenarios, such as using a sensor network to monitor enemy tank
movements. It uses a sensor function model to abstract the details of sensor node
software, and as a parallel layer it uses a power model to simulate hardware. SensorSims network protocol stack simulates a WaveLAN wireless card with an 802.11
MAC Layer. These models are implemented as objects in the NS-2 simulator.
Hybrid simulation is supported, where network traffic is sent and received
from real nodes. A middleware (SensorWare) platform is also provided and runs
on the Tcl scripting language. By running SensorWare on nodes in SensorSim,
the power efficiency of SensorWare applications can be assessed. SensorSim is no
longer supported or available.
Global Mobile system Simulator (GloMoSim) [14] is a library built for the
sequential and parallel simulation of wireless networks. The provided API simulates a number of wireless communication protocols. Different types of protocols
operate on different layers. Simulations can then be reconfigured with different
protocols at one layer while keeping the same protocols on other layers. GloMoSim
is written in PARSEC, a C-based language for parallel simulation [15]. To allow for
parallel simulation, a network is split into partitions, each of which are then mapped
to a processor. Favorable Speedup from parallelization is shown by spreading sim-
10
OMNeT++
OMNeT++ has been use for a wide variety of purposes, from IPv6 and MAC
Protocols to Wireless Sensor Networks and Wireless Channel Simulators [23]. OMNet++ has been used successfully for simulating wireless networks [24], mobile
networks [25], and MAC protocols [26]. The simulator in this thesis is designed
and implemented within the OMNeT++ framework to take advantage of its features.
To simulate a system in OMNet++, it is necessary to design and implement
modules. For example modules may represent the network, protocols, specialized
hardware, radio transceivers, microcontrollers, etc. Each module has a fixed number of input or output ports that are also referred to as gates. Instances of such
modules are composed together to form large systems by wiring the outputs of certain modules to the inputs of other modules.
11
OMNet++ supports simple and compound modules. For each simple module, it is necessary to precisely describe the behavior of the module using a simple
extension of the C++ programming language. Compound modules are defined by
composing two or more simple modules or previously defined compound modules.
The behavior of the compound module is derived from the behavior of its simple
modules and the interactions between the simple modules. No additional behaviors
can be specified for compound modules.
OMNet++ is based on a message-passing paradigm. The communication
between modules is specified using gates. The number and type of each gate used
in a module is defined. The output gates of one module are connected to input gates
of other modules using connections. The connection can model the characteristics
of a channel using parameters such as bandwidth, bit error rates and propagation
delay [27].
A simulation entity called a message is passed between the instances of two
modules that communicate. Custom messages can be defined by subclassing cMessage or by generating C++ code from the compact syntax of a message definition
file using the message subclassing compiler.
A high-level interpreted language called NED is used to define compound
modules, interfaces for simple modules and parameters and connections for or between both. While a compound module is solely defined in a NED file as a wiring
between other modules, the behavior of simple modules must be defined in C++ by
creating a class which inherits the cSimpleModule class from the library. Further
configuration and parameter values can be specified in the omnetpp.ini file, which
allows for different sets of parameter values during different Runs.
Simulations can be run in a graphical environment, called Tkenv, for visual
inspection and animation of networks of modules. Icons and colors can be specified
for different modules, and messages are shown as they are sent: moving from one
module to another. Varying levels of detail can be observed: clicking on a compound module will open a new window showing its contents and the messages sent
therein. Clicking on a simple module will provide a window showing its parameters,
12
gates and their connections. This Graphical User Interface (GUI) and OMNeT++
itself are both cross-platform, meaning that the same code can be compiled to create executables for Windows, Linux or other platforms without the overhead of a
Virtual Machine (a l`
a Java).
The OMNet++ framework was used to simulate the behavior of the building
blocks and conveyor systems based on the compositional method described in the
next chapter.
13
CHAPTER III
COUPLED CONVEYORS
14
ps
pd Port D
Port A
e1
uA
uB
Port B
e2
dD
dC
Port C
Segment 2
Segment 1
(a) Segment
(b) Turnaround
(c) Crossover
These blocks are referred to as a Segment (Figure 3.1a), Turnaround (Figure 3.1b
and Crossover (Figure 3.1c).
The building blocks use sensing and actuation components with similar behavior. Sensors are used to detect the presence or absence of an entity. A sensor is
nominally assumed to be in an inactive state. When an entity is present in the proximity of a sensor, the sensor is in an active state. An actuator is said to be energized
when it is asserted. When energized, the associated component such as a motor or
a valve is operated. Otherwise the actuator is said to be deenergized.
3.1.1 Segment
A Segment is a module of fixed length along which an entity may move in a
specified direction. Nominally, entities arrive at the upstream end and leave via the
downstream end. Two sensors, one called the upstream sensor (u) and the other
15
called downstream sensor (d)1 are attached to the segment at fixed locations. These
sensors detect the presence or absence of an entity at their respective locations. The
actuator of a segment (a) may be energized to move the belt (of the segment) in
either a clockwise or a counterclockwise direction in one of several preset speeds.
When an entity arrives, the upstream sensor (u) detects the entity. The entity
moves along the segment as long as the actuator is energized. When the entity
arrives at the downstream end of the segment, the downstream sensor (d) detects
the entity. The duration for which the sensors remain in the active state and the
duration over which an entity moves along the segment are a function of the belt
speed and length of the entity along the direction of motion.
A Segment may be composed with other Segments, Turnarounds or Crossovers.
A set S is used to represent all the segments in an instance of coupled conveyors.
Given si S, si .a denotes the actuator of the segment; si .u denotes the upstream
sensor and si .d denotes the downstream sensor.
3.1.2
Turnaround
A Turnaround is a module of fixed length over which an entity moves. A
One may use redundant sensors if desired instead of a single upstream and downstream sensor.
16
as a camera, weighing scale, or an RFID scanner. Once such a decision has been
made, the part deflection sensor (ps) can be used to determine the duration over
which the spring-loaded part deflector (pd) must be energized to deflect a part to
port C. Similar to a segment, there is an actuator (a) that can be energized to turn
the belt either in the clockwise direction or the counterclockwise direction in one
of several speeds.
A Turnaround can be composed with either a segment or another turnaround
at any of the ports, as long as the direction of motion of the entities is compatible.
Such a module, i.e., a Segment or another Turnaround, must be present at least at
one input port and at one output port. The set of Turnarounds in an instance of
coupled conveyors is represented as T . For ti T , ti .a refers to the actuator that
turns the belt and ti .pd refers to the actuator of the part deflector. The upstream
sensor on ports A and B are referred to as ti .uA and ti .uB and the downstream
sensors on ports C and D are ti .dC and ti .dD. The part deflection sensor is ti .ps.
3.1.3 Crossover
A Crossover is a module that is used to transfer an entity from one segment
to another. The two segments at either end of a Crossover are referred to as end
segments. There are two end sensors, e1 and e2, for every Crossover; these sensors
detect the presence of a part that is ready to be transfered. As in a Turnaround, the
decision to transfer a part from one Segment to another must be made by the NEA
Node. The Crossover is used to carry out such a decision, after it has been made.
This module features an essential difference in behavior from the other two
modules. In the case of both the Segment and the Turnaround, when a part passes
from one module to the next, the modules interacting must both be moving, and
in the same direction. In the case of the Crossover, however, this is not true. For a
part to be properly moved out of an end segment and on to the Crossover (and the
other way around), the end segment must be stopped. So when a part is identified
to be moved on to a Crossover, the Segment that the part is currently on must be
ordered to stop, along with the Segment at the other end of the Crossover.
17
Let G1 be the Segment at the location of end sensor e1 and G2 be the Segment
at e2. When an entity arrives at e1 on G1, e1 transitions to an active state; similarly
at e2. There is an actuator on every Crossover that is used to move the entity from
G1 to G2 or from G2 to G1. To emphasize the bi-directional transfers, the actuator
is referred to as a1,2 when it is moving an entity from e1 to e2 and a2,1 when it is
moving from e2 to e1.
The symbol C is used to represent the set of all Crossovers in an instance of
coupled conveyors. Given ci C, ci .a1,2 and ci .a2,1 refer to the actuator; ci .e1 and
ci .e2 refer to the end sensors of the Crossover.
3.2
18
source. A member of ESink represents points at which entities leave CCS. For example, a loading dock where material is loaded on a truck is an entity sink.
HCI devices, H, are monitoring stations or operator panels. A monitoring
station is used to observe the status of every module in CCS; an operator panel is
used to interact with CCS. Typically HCI devices are used to change the mode of
CCS, perform diagnostic or fault management tasks.
3.2.1
In addition to the sensors and actuators on the modules such an application would use additional
devices such as cameras, RFID tags and scanners, weighing scales, etc. to inspect the entities that
are being moved.
19
0,5
H2
0,4
S1
S2
S3
S4
S5
S8
S7
S6
0,3
T1
T2
C1
S10
S9
0,2
Manual
Inspection
S12
S11
S16
S15
0,1
S13
T4
S18
S14
S17
T3
North
H1
0,0
H3
1,0
2,0
3,0
4,0
5,0
20
6,0
damage the inspection devices along the subpath < S10 , T1 > may be diverted using
C1 . Entities coming into T3 can be moved along the subpath < T3 , S14 , S15 >, or
deflected at port C of T3 for manual inspection. Manually inspected entities may be
re-inserted into the system via port B of T4 . The HCI devices are used to monitor
the status of all modules and the operator panels can be used to issue commands
such as start, stop, or force manual inspection for all entities over a duration of
time. There are several other possibilities for moving entities in coupled conveyors
that are not discussed in the examples in this paper.
3.3
Note that these specifications only cover the automatic mode of operation.
21
Symbol
s
s
s%
s&
a
a
*a
+ a
Meaning
Sensor s is active
Sensor s is inactive
Sensor s made a transition from inactive to active
Sensor s made a transition from active to inactive
Actuator a is energized
Actuator a is de-energized
Actuator a is being energized
Actuator a is being deEnergized
Table 3.1: Notation for Specifications
3.3.1
22
23
3.4
signing and implementing conveyor systems. The reduction in wiring costs because
of using a wireless media for communication is obvious. Further, wireless connectivity improves safety because it eliminates the need to install and maintain wired
access points in hazardous environments. Because the blocks are self-contained and
pre-programmed, the interaction between two blocks for an application depends
only on where the block is placed in the grid. There are no other configuration,
commissioning or setup costs. This advantage allows one to create flexible topologies for systems.
For example, in the material inspection application shown in Figure 3.2, suppose in some seasons that a higher volume of materials are received. To reduce
latency, the conveyor systems can be reconfigured simply by adding more blocks
to form additional paths. When the high volume season has passed, the same blocks
can be removed to reduce power usage. There is no reprogramming or configuration involved when the topology changes in this manner because the interactions
between blocks are designed to accommodate such changes.
24
BuildingBlock Segment
var
beltFull: Boolean
numEntities: Integer
initially
beltFull (numEntities = lenm /lene )
assign
S1 : d %
OutChanneld := Req-Actuator-On
[]
S2 : InChannelu = Req-Actuator-On beltFull
*a
;
mW DT.Start
[]
S3 : mW DT.done u a
+ a
[]
S4 : mW DT.tt u %
mW DT.Stop
numEntities := numEntities + 1
[]
S5 : u &
OutChanneld := Req-Actuator-Off
[]
S6 : InChanneld = Req-Actuator-Off numEntities = 0
+ a
[]
S7 : d &
numEntities := numparts 1;
[]
S8 : numEntities = 0 a
+ a
[]
end Segment
Figure 3.3: Specification for Segment
25
BuildingBlock Turnaround
var
beltFull: Boolean
acceptingEntity: Boolean
deflectEntity: Boolean
numEntities: Integer
initially
beltFull (numEntities = lenm /lene )
assign
T1 : dC %
OutChannelC := Req-Actuator-On;
[]
T2 : dD %
OutChannelD := Req-Actuator-On;
[]
T3 : InChannelA = Req-Actuator-On beltFull acceptingEntity
*a
;
acceptingEntity := true;
mW DT.Start;
[]
T4 : InChannelB = Req-Actuator-On beltFull acceptingEntity
*a
;
acceptingEntity := true;
mW DT.Start;
[]
T5 : mW DT.done uA uB a
+ a;
mW DT.Stop;
[]
T6 : mW DT.tt uA % a
mW DT.Stop;
numEntities := numEntities + 1
[]
T7 : uA &
acceptingEntity := false;
OutChannelA := Actuator-Off;
[]
T8 : mW DT.tt uB % a
mW DT.Stop;
numEntities := numEntities + 1;
[]
26
T9 :
uB &
acceptingEntity := false;
OutChannelB := Actuator-Off;
[]
T10 : InChannelC = Req-Actuator-Off numEntities = 0
+ a;
[]
T11 : InChannelD = Req-Actuator-Off numEntities = 0
+ a;
[]
T12 : dC &
numEntities := numEntities 1;
[]
T13 : dD &
numEntities := numEntities 1;
[]
T14 : def lectEntity ps%
*f
pd;
[]
T15 : numEntities = 0 a
+ a;
[]
end Turnaround
Figure 3.5: Specification for Turnaround - Continued
27
BuildingBlock Crossover c
assign
C1 : e1% a 12 a 21
OutChannels1 := ForceStop;
OutChannels2 := ForceStop
[]
C2 : e2% a21 a 12
OutChannels1 := ForceStop;
OutChannels2 := ForceStop
[]
C3 : e2 af
12
+ a12 ;
OutChannels1 := ReleaseStop;
OutChannels2 := ReleaseStop
[]
C4 : e1 af
21
+ a21 ;
OutChannels1 := ReleaseStop;
OutChannels2 := ReleaseStop
[]
C5 : InChannels1 = Stopped
InChannels2 = Stopped e1
* af
12
[]
C6 : InChannels1 = Stopped
InChannels2 = Stopped e2
* af
21
end Crossover
Figure 3.6: Specification for Crossover
28
CHAPTER IV
SIMULATOR DESIGN AND IMPLEMENTATION
Overview
To simulate an instance of Coupled Conveyors a user of this simulator must
29
Entity Source
In OMNeT++, events are triggered whenever two modules exchange a mes-
sage. Each entity that traverses through Coupled Conveyors is represented in the
simulator as two messages: the first indicates the beginning or arrival of an entity,
EntityBegin, and the second indicates the end or departure of an entity, EntityEnd .
To initiate the simulation, an EntitySource module generates these messages.
The rate at which entities are injected, the length and type of the entity and configurable parameters that can be specified before the simulation begins.
30
There are many other random number generators and distributions supported in OMNeT++.
See Section 6.4.4 of the OMNeT++ Manual [27] for a full listing.
31
[Parameters]
factory.source.value = intuniform(1,10);
The assignment of values to entities is useful in simulations of applications
that use Turnarounds and Crossovers. This is because these blocks can alter the
flow of entities and the decision to alter the flow can be made using the value of the
entity. For example, in a package sorting application, it may be necessary to divert
small entities to one output dock and large entities to another dock. Similarly, the
value field can also represent attributes such as weight, size, quality, etc.
4.3
Entity Sink
The EntitySink module sinks or consumes entities that arrive at its input.
Like the EntitySource, this module has been designed to make it convenient to carry
out the simulations. The time at which an entity arrives at the EntitySink is recorded.
By comparing this time to the time at which the entity was injected into the system
by a source, we calculated the entity latency in the conveyor system2 .
4.4
ing blocks: Segment, Turnaround and Crossover. Unlike Source and Sink, they are
compound: built from a hierarchy of submodules. CCSegment, CCTurnaround and
CCCrossover are all similar in design, but differ in the specific parameter values
sent to sub-modules.
OMNet++ supports a rich set of classes that make it easier to collect statistics.
32
module CCSegment
parameters:
x, y: const; // location of the module
gates:
in: entitiesIn[], commIn[];
out: entitiesOut[], commOut[];
submodules:
node: NSASNode
parameters:
moduleType = 1,
x = x,
y = y;
metal: Metal
parameters:
moduleType = 1,
SensorAdaptorType = "SegmentSensorAdaptor",
ActuatorAdaptorType = "SegmentActuatorAdaptor",
InteractorType = "SegmentInteractor";
gatesizes:
entitiesIn[2], entitiesOut[2];
connections nocheck:
for i=0..1 do
metal.entitiesIn[i] <-- entitiesIn[i];
metal.entitiesOut[i] --> entitiesOut[i];
endfor;
commIn --> node.commIn;
commOut <-- node.commOut;
metal.interactorOut --> node.metalIn;
metal.interactorIn <-- node.metalOut;
endmodule
33
The parameters x and y are used to indicate the position of the block in the
grid. The commIn and commOut gates are used for bidirectional communication
with the medium(s), and hence other modules. The entitiesIn and entitiesOut gates
are used to receive and send entities (i.e., EntityBegin and EntityEnd messages).
In the case of CCTurnaround and CCCrossover, the entitiesIn and entitiesOut arrays
contain multiple elements.
All the three Coupled Conveyors modules contain NEANode and Metal as submodules. The NEANode represents the microcontroller with its integrated transceiver
and the software that executes on an NEA node.
Communications Medium
Segment
Node
Transceiver
Microprocessor
LocalActor
Coordinator
Metal
Downstream
Sensor
Lip
Upstream
Sensor
Lip
Sensor
Adaptor
Interactor
Actuator
Adaptor
Motor
34
4.4.1 Metal
As shown in Figure 4.1, the Metal module is composed of an Interactor, a
SensorAdaptor, and an ActuatorAdaptor. The sensors are connected through the SensorAdaptor, while the actuators are connected through the ActuatorAdaptor.
The Metal module is used to simulate the mechanical entities of the building
block and their physical interactions with entities. The moduleType parameter is
used to disambiguate between a Segment, Turnaround or Crossover with a value
of 1,2 or 3, respectively, in modules such as LocalActor. The other parameters in
Metal specify the appropriate submodules based on the moduleType. EntityBegin
and EntityEnd messages from upstream blocks in the conveyor system come in to
Metal through entitiesIn gates. Entities leaving the block, i.e. EntityBegin and EntityEnd messages which are sent to downstream blocks, are sent via the entitiesOut
gate. The Interactor sub-module in Metal is connected to the SensorAdaptor and ActuatorAdaptor sub-modules in Metal, and Microcontroller sub-module in Node. Figure
4.1 depicts the relationships between the sub-modules in the building block for
Segment.
The internal details of Metal of a Turnaround, as it appears during the OMNeT++ simulation, is shown in Figure 4.2.
ConveyorLip
ConveyorLip modules are placed in-line between Sensors and the connections
to the entitiesIn and entitiesOut gates. The lip represents the distance on the conveyor from the edge of the belt to the sensor at that end of the belt. The ConveyorLip
module then acts as a simple delay block that entities have to go through before
they get picked up by the sensor. The actual delay time depends on the length of
the lip (defined by a parameter of the module) and the speed of the module.
Interactor
The Interactor handles the physical interactions between the entities and a
block and relays the messages between the sensors and actuators and the Node
35
Node
The Node is a compound module consisting of Microcontroller and Transceiver
as sub-modules. While these two sub-modules are connected to each other, Microcontroller has a connection to the Interactor sub-module of Metal and Transceiver has
a connection to a Medium.
36
same times. The integration of other MAC protocols with this simulator is discussed
as a part of future work in Chapter VI.
4.5
Medium
The Medium acts as a local hub for nodes that can communicate to each
Monitoring Station
The MonitoringStation is a human interaction device and displays the status
Building an Application
The simulator becomes configured for a specific instance of Coupled Con-
veyors by putting together the appropriate modules and specifying their parameters. There is some variety in the exact procedure for setting up an application,
depending on how or where the user wants to define parameters or what optional
statements they want to include. The general steps to configuring the simulator for
a Simple Conveyor System shown in Figure 4.3 are outlined in this section.
38
Start off by creating a new Network Description (NED) file and including in
it the CCModules.ned file using the command import "CCModules";.
Next, create a new compound module that will hold all the other modules
for the simulation. This should include at least one source, sink and medium and
several Coupled Conveyors modules; a monitoring station is optional. Figure 4.3
shows that the Simple Conveyor System requires five Segments, one Turnaround
and one Crossover. The Coupled Conveyors modules will be declared in three arrays, one for each type. Three parameters are added to specify the size of each of
these arrays. The entitiesIn and entitiesOut gatesizes are set to 2 for Crossovers
and Turnarounds, since they both have two input and two output ports, and set to
1 for Segments.
module SCS
parameters:
numSegments: const,
numTurnarounds: const,
numCrossovers: const;
submodules:
medium : CommMedium;
ccsegments : CCSegment[numSegments];
gatesizes: entitiesIn[1], entitiesOut[1];
ccturnarounds : CCTurnaround[numTurnarounds];
gatesizes: entitiesIn[2], entitiesOut[2];
cccrossovers : CCCrossover[numCrossovers];
gatesizes: entitiesIn[2], entitiesOut[2];
source : Source;
sink : Sink;
endmodule
Now, add a connections section to the SCS module. Connect the Coupled Conveyors modules together as needed along with the sources and sinks; all Coupled
39
Conveyors modules should be wired to the same CommMedium, since only one is
used this example. These connections are made with lines like the following:
source.out++ --> ccsegments[0].entitiesIn[0];
ccsegments[0].entitiesOut[0] --> ccsegments[1].entitiesIn[0];
In the above section of code, a source module is connected to the input port
of Segment0. On the second line, the output port of Segment0 is connected to
input port of Segment1. Many more connections need to be established in order to
construct the Simple Conveyor System shown in Figure 4.3, but those lines will be
omitted for brevity.
OMNeT++ allows for for loops in NED files, these can be handy in situations
like:
entitiesIn[1] are referred to as Port A and Port B while entitiesOut[0] and
entitiesOut[1] are referred to as Port D and Port C, respectively.
for i=0..numSegments-1 do
medium.in++ <-- ccsegments[i].commOut
medium.out++ --> ccsegments[i].commIn
endfor;
This code connects every Segment to the medium in only four lines. Similar
loops are used to connect the Turnarounds and Crossovers to the medium. After
this code is added to the SCS module, and the monitoring station is connected to
the medium, a network needs to be defined for the SCS with parameter values with
the sizes of the arrays.
network scs : SCS
parameters:
numSegments = 5,
numTurnarounds = 1,
numCrossovers = 1;
endnetwork
40
From here the NED file is finished. Now all the remaining unspecified parameters and simulation settings need to be defined in the omnetpp.ini file. OMNeT++ is versatile in the way that it allows parameter settings in the omnetpp.ini
file, pattern matching can be used to greatly reduce the number of configuration
lines needed.
[Parameters]
scs.ccsegments[0].metal.motorSpeed = 5;
scs.ccsegments[*].metal.motorSpeed = 5;
scs.*.metal.motorSpeed = 5;
For example, in the first line above only the motorSpeed of Segment0 is set.
In the second line, the motorSpeed for all Segments is set and in the third line, the
motorSpeed for all Segments, Turnarounds and Crossovers is set.
Once all the simulation settings are specified, everything is now in place for
simulation. Simulation results for the Simple Conveyor System, and other applications of Coupled Conveyors, are discussed in the next chapter.
S0
S1
S4
Src
Sink
S2
0,1
S3
H1
C0
Test
Factory
0,0
1,0
4,0
SrcB
SinkB
41
CHAPTER V
APPLICATIONS AND RESULTS
parameters. Examples of such parameters are length of the building block, entity
length, and speed of movement. Table 5.1 shows a list of parameters and their
values.
With reference to Table 5.1, note that the length of a building block does not
42
Parameter
Entity Length
Belt/Motor Speed
Lip Length
Segment Length
Turnaround Length
Turnaround Leg Length
Turnaround Leg Width
Crossover Length
Crossover Arm Offset
Crossover Arm Travel Distance
Crossover Arm Speed
Transceiver Data Rate
Monitoring Station Polling Interval
Value
1.0 unit
5.0 units/sec
5.0e-2 units
10.0 units
10.0 units
1.0 units
1.0 units
12.0 units
6.0 units
5.0 units
5.0 units/sec
2.4 kbytes/sec
Every 5 seconds
scribed in Section 4.7. This is a simple conveyor system that has been designed to
demonstrate the simulator. Using this system, simulations were executed to verify
the functionality of Segment, Turnaround and Crossover.
5.2.1 Baseline Experiment
Purpose:
chapter.
The Simple Conveyor System was simulated using the parameters shown in Table
5.2. The Interval for SrcB was chosen to ensure that all the entities from SrcB were
not always coming out at the same times as entities from Src. Entities injected by
43
Src are assigned random Values between 1 and 15 while the entities injected by
SrcB are assigned values between 6 and 20. The range parameters shown in Table
5.2 for Turnaround and Crossover blocks, were chosen to allow entities from both
Src and SrcB to arrive at either Sink or SinkB .
Parameter
Simulation Time
Src
Interval
Value
SrcB
Interval
Value
Turnaround Deflect Range
Crossover AD to BC Range
Crossover BC to AD Range
Value
100.0s
1.0
intunif orm(1, 15)
2.2
intunif orm(6, 20)
11. . . 20
15. . . 20
0. . . 0
because the Crossover length is 12 units while Segment length and Turnaround
length are 10 units. The entities that traversed along Path 2 and Path 5 required
10.7s and 11.1s to arrive at SinkB .
TestFactory Endtoend Part Travel Time
10
20
40
60
80
45
Entity Value
15
10
20
40
60
80
46
0.1
0.05
20
40
60
80
Time (s)
Value
150.0s
100
1.0
intunif orm(1, 15)
0. . . 0
0. . . 0
0. . . 0
47
Property
Src Entities Generated
SrcB Entities Generated
Sink Entities Consumed
SinkB Entities Consumed
Entity Travel Time
Value
100
0
100
0
8.28s
40.4units
5.0
= 8.08 seconds
sidering this more closely, the time reported is the time when the front of an entity
leaves an EntitySource and the back of the entity arrives at an EntitySink. Consequently, the time reported accounts for the length of the entity when it traverses
the distance along some path. After accounting for the entity length, i.e., adding
one entity length to the length of traversal along a path travel, the time required is
8.08 + 0.2 = 8.28 seconds, which agrees with the results shown in Table 5.5.
5.2.3
tity is the same as that used in the CCSegment. Consequently, this experiment was
focused on demonstrating the unique attributes of the Turnaround. The experiment
was designed to verify that the deflector will only deflect values in the specified
range. Further it is demonstrated that the Turnaround implements mutual exclusion to prevent entities from arriving via Port A and Port B simultaneously. The
effect of this mutual exclusion on the performance of the conveyor systems is also
demonstrated.
The topology shown in Figure 4.3 is used with C0 disabled. The Turnaround
T0 is specified to deflect entities with values in the range [11, 20]. The parameters
used for this are shown in Table 5.6. In this simulation, entities may traverse along
Path 1, Path 2, Path 3, and Path 5 only since Path 4 is disabled.
The results of this simulation are shown in Table 5.7. It can be noticed that,
of the 200 entities generated, all 200 arrived at an EntitySink. The Turnaround
deflected 109 entities toward SinkB , while the remaining 91 arrived at Sink.
Figure 5.4 shows the values of entities that arrived at each EntitySink. This
confirms that only entities with values in the range [1, 10] arrived at Sink and all
the entities deflected to SinkB had values in the range [11, 20] as expected.
Figure 5.5 shows that the end-to-end travel times were 8.28, 8.68, 10.7 and
11.1s for entities traversing along Path 1, Path 2, Path 3, and Path 5, respectively.
49
Parameter
Simulation Time
Src
Entities To Generate
Interval
Value
SrcB
Entities To Generate
Interval
Value
Turnaround Deflect Range
Crossover AD to BC Range
Crossover BC to AD Range
Value
250.0s
100
1.0
intunif orm(1, 15)
100
2.2
intunif orm(6, 20)
11. . . 20
0. . . 0
0. . . 0
Value
100
100
91
109
109
50
Entity Value
15
10
100
200
11
10
100
200
11
10
50
100
Simulation Time (s)
Value
450.0s
100
4.0
intunif orm(1, 20)
0. . . 0
53
then the total distance traveled for Path 4, from source to sink, is 6.0 + 5.0 + 6.0 +
1.0 + 0.05 + 0.05 = 18.1 units and hence the travel time is 18.1/5.0 = 3.62 seconds.
The results in Table 5.11 confirm that this is the case.
Since the arm travel distance, as defined in Table 5.1, is 5.0 units, the arm
speed is 5.0 units, and the entity length is 1.0 unit then it will take an entity
(5.0 + 1.0)/5.0 = 1.2 seconds to fully cross between the two end-segments. As a
result, any other entities on the Crossovers end-segments are delayed by up to 1.2
seconds. However, in this case, since the time between the end of one entity and
the beginning another is greater than 3.62 seconds, no other entities are on the
Crossovers end-segments at the same time, and hence, none are delayed.
Crossover AD to BC Range
0. . . 0 (0%)
1. . . 20 (100%)
1. . . 5 (25%)
1. . . 10 (50%)
1. . . 15 (75%)
Sink Entities
100
0
75
48
26
SinkB Entities
0
100
25
52
74
Path 3 Path 4
8.68s
- 3.62s
8.68s 3.62s
8.68s 3.62s
8.68s 3.62s
Inspection Station
Figure 5.7 shows an instance of Coupled Conveyors that is useful for for
material inspection and/or sorting [2]. There are 18 Segments, 4 Turnarounds and
one Crossover. For example, port D of Turnaround T4 is embedded at grid location
(1,1), and port A of Turnaround T2 is at grid location (5,3). Crossover C1 is at grid
location (3,3); HCI devices H1 , H2 , and H3 are at grid locations (1,0), (3,4) and
54
0,5
H2
0,4
S1
S2
S3
S4
S5
S8
S7
S6
0,3
T1
T2
C1
S10
S9
0,2
Manual
Inspection
S12
S11
S16
S15
0,1
S13
T4
S18
S14
S17
T3
North
H1
0,0
H3
1,0
2,0
3,0
4,0
55
5,0
6,0
SrcB Interval
1.0s
1.0s
1.0s
1.0s
1.0s
1.5s
1.5s
1.5s
1.5s
1.5s
Crossover AD to BC Range
0. . . 0
1. . . 5
1. . . 10
1. . . 15
1. . . 20
0. . . 0
1. . . 5
1. . . 10
1. . . 15
1. . . 20
Path 3
8.68
8.72
8.96
9.18
8.68
8.78
9.00
9.01
-
Path 4
3.65
3.83
4.10
4.62
3.84
3.91
4.02
4.06
In addition to the sensors and actuators on the building blocks such an application will require
additional devices such as cameras, RFID tags and scanners, weighing scales, etc. to inspect the
entities that are being moved.
56
Parameter
Simulation Time
Monitoring Message Request
For source6 :
Entities To Generate
Interval
Value
For source17 :
Entities To Generate
Interval
Value
T1 Deflect Range
T2 Deflect Range
T3 Deflect Range
T4 Deflect Range
C0 BC to AD Range
Value
110.0s
Every 5 seconds
50
1.0
intunif orm(1, 15)
25
3.5
intunif orm(6, 20)
intunif orm(0, 2)
1. . . 10
11. . . 20
1. . . 10
intunif orm(0, 2)
Value
42
33
5 out of 47 (10.63%)
47 out of 62 (75.81%)
33 out of 40 (82.50%)
7 out of 40 (17.50%)
7 out of 52 (13.46%)
58
5.3.3
Experiment 4 - Communication
Purpose: Demonstrate the use of the simulator to evaluate communications in a realistic application of Coupled Conveyors.
Modeling the network communication between NEA Nodes is a crucial as59
pect of this simulator since Coupled Conveyors relies upon this connectivity for all
control and monitoring messages. A node that is connected to a Medium broadcasts
every message that must be sent to every other node on that medium, regardless
of whether or not the message was intended for the receiving node. With a large
number of nodes this can create significant overhead in the microcontroller, as the
receiving node needs to check every packet to see if it was the intended recipient.
Also, no two nodes can successfully transmit messages on the same medium at the
same time, so MAC delays will increase with the number of nodes on the medium.
It was expected that not all NEA nodes will be able to, or need to, communicate with every other node. The were divided among a number of Medium modules,
where some nodes may be connected to multiple Mediums. In this experiment, a
reduction in MAC-related packet latency was observed as a result of distributing
the nodes among a number of mediums. The parameters shown in Table 5.13 were
used for this experiment.
Number of Mediums
One
Two
Four
5.4
ing application [2]. There are 22 Segments, eight Turnarounds and one Crossover.
Although some Turnarounds such as T1 , T2 , T3 and T8 appear to be different from
other Turnarounds, all the Turnarounds have two input ports and two output ports.
The behavior of these Turnarounds are not different from the behavior of other
61
62
Parameter
Value
Simulation Time
100.0s
For sourceI1 . . . sourceI5 :
Parts To Generate
30
Interval
1.0
Value
intunif orm(1, 30)
T1 Deflect Range
11. . . 30
T2 Deflect Range
21. . . 30
T3 Deflect Range
1. . . 10
T4 Deflect Range
11. . . 30
T5 Deflect Range
n/a
T6 Deflect Range
1. . . 20
T7 Deflect Range
11. . . 20
T8 Deflect Range
21. . . 30
C0 AD to BC Range
11. . . 30
C0 BC to AD Range
1. . . 10
Table 5.17: Package Sorting Simulation Parameters
5.4.2 Simulation Results
The number of entities that arrived at each sink along with the amount of
entities that were deflected by Turnarounds or crossed by the Crossover are reported
in Table 5.18.
The total number of entities that arrived at a sink, 44+54+53 = 150, matches
the number of entities generated by all five sources, 5 30 = 150. This shows that
no entities were lost in the simulation. No entities were deflected by T5 because its
deflector is disabled. The Turnaround, T4 deflected 0 entities because all Medium or
Large entities are directed away from it by the other Turnarounds and the Crossover.
Similarly, T7 and T8 deflect all entities because only Medium and Large enter the
respective Turnarounds.
Figure 5.11 shows the values of all entities that arrived at each sink. It confirms that the topology and the configuration correctly directed Small, Medium, and
Large entities to sinkSmall , sinkM edium , and sinkLarge , respectively.
The mean travel times for entities that arrived at each sink are plotted in
Figure 5.12. It suggests that Small entities have the shortest paths, while Medium
and Large entities have paths that are somewhat longer.
63
Such a demand can be met by using additional pathways from the loading docks
to the sinkSmall . One such option is to replace S8 with a new Turnaround, T9 , and
connect Port C of T5 to Port B of T9 via two new segments, S24 and S25 . This forms
a new pathway allowing Small entities to flow toward sinkSmall from sourceI1 and
sourceI2 , reducing the load on T6 . Formerly it was T6 that handled all Small and
Medium sized entities. In this experiment, the Package Sorter was simulated with
these topology changes to observe the impact that reconfiguration has upon the
travel time of the entities.
The simulation results in Table 5.19 show small improvements in mean travel
time for all entities. This suggests that too much traffic through T6 was slowing
down a lot of entities.
64
Property
sinkSmall Entities Arrived
sinkM edium Entities Arrived
sinkLarge Entities Arrived
T1 Deflected
T2 Deflected
T3 Deflected
T4 Deflected
T5 Deflected
T6 Deflected
T7 Deflected
T8 Deflected
C0 Crossed AD to BC
C0 Crossed BC to AD
Small Travel Time
Medium Travel Time
Large Travel Time
Value
44
54
52
21 out of 45
31 out of 66
20 out of 74
0 out of 44
0 out of 60
39 out of 91
54 out of 54
52 out of 52
21 out of 60
7 out of 60
16.52s
18.31s
18.94s
Value
16.27s
17.93s
18.39s
Discussion
Results in the preceding sections of this chapter show that the building blocks
of Coupled Conveyors were simulated correctly. Experiment 1 validated the behavior of the Segment module in three ways. Entities that entered a series of segments
were shown to have eventually left. The amount of time for an entity to travel
through the system was manually calculated and matched with the simulation results. Changes in motor speed and entity length yielded the correct responses to
entity travel time.
Experiment 2 showed that the Turnaround module is functionally correct.
First, the deflector was tested, and it was confirmed that only the entities within
the specified deflection range were deflected. Then the entity travel times were
analyzed and shown to be related to the four possible paths through the system.
65
Entity Value
20
10
20
30
40
50
66
18
16
14
20
30
40
50
67
CHAPTER VI
CONCLUSION
68
the fault tolerance capabilities of the conveyor systems. The experiment with the
Package Sorting application showed that reconfigurability is beneficial to seasonally
improve throughput. These results are encouraging and motivate the development
of middleware and system software for networked embedded platforms.
In the future, this simulator can be extended in a number of directions: the
incorporation of highly detailed mechanical models, more accurate coupling between electrical and mechanical components of conveyor systems, Media Access
Control (MAC) protocols for the transceivers and methods for scheduling and the
synchronization of large-scale networked embedded systems.
69
BIBLIOGRAPHY
[1] J. Agre, L. Clare, and S. Sastry, A Taxonomy for Distributed Real-time Control
Systems, in Advances in Computers, M. Zelkowitz, Ed., vol. 49, pp. 303352.
Academic Press, 1999.
[2] Nunzio Hayslip, Shivakumar Sastry, and Jon S. Gerhardt, Networked embedded automation, Assembly Automation, vol. 26, no. 3, pp. 235241, 2006.
[3] Bernard P. Zeigler, Theory of Modelling and Simulation, Krieger Publishing
Co., Inc., 1984.
[4] David R. Jefferson, Virtual time, ACM Trans. Program. Lang. Syst., vol. 7,
no. 3, pp. 404425, 1985.
[5] K. Fall and K. Varadhan, The NS Manual (Formerly NS Notes and Documentation), 2002.
[6] K. Langendoen, A. Baggio, and O. Visser, Murphy loves potatoes: Experiences
from a pilot sensor network deployment in precision agriculture, in 14th
International Workshop on Parallel and Distributed Real-time Systems, Rhodes,
Greece, April 2006, 2006.
[7] J. Hill, R. Szewczyk, A. Woo, S. Hollar, D. Culler, and K. Pister, System
Architecture Directions for Networked Sensors, ACM Sigplan Notices, vol. 35,
no. 11, pp. 93104, 2000.
[8] Philip Levis, Nelson Lee, Matt Welsh, and David Culler, TOSSIM: Accurate
and scalable simulation of entire TinyOS applications, in SenSys 03: Proceedings of the 1st international conference on Embedded networked sensor systems,
New York, NY, USA, 2003, pp. 126137, ACM Press.
[9] Gang Zhou, Tian He, Sudha Krishnamurthy, and John A. Stankovic, Impact
of radio irregularity on wireless sensor networks, in MobiSys 04: Proceedings
of the 2nd international conference on Mobile systems, applications, and services,
New York, NY, USA, 2004, pp. 125138, ACM Press.
[10] Victor Shnayder, Mark Hempstead, Bor rong Chen, Geoff Werner Allen, and
Matt Welsh, Simulating the power consumption of large-scale sensor network
applications, in SenSys 04: Proceedings of the 2nd international conference on
Embedded networked sensor systems, New York, NY, USA, 2004, pp. 188200,
ACM Press.
[11] J. Polley, D. Blazakis, J. McGee, D. Rusk, and J. S. Baras, ATEMU: a finegrained sensor network simulator, in Proceedings of First Annual IEEE Communications Society Conference on Sensor and Ad Hoc Communications and Networks, 2004.
70
[12] Ben L. Titzer, Daniel K. Lee, and Jens Palsberg, Avrora: scalable sensor network simulation with precise timing, in IPSN 05: Proceedings of the 4th international symposium on Information processing in sensor networks, Piscataway,
NJ, USA, 2005, p. 67, IEEE Press.
[13] S. Park, A. Savvides, and M. Srivastava, SensorSim: A simulation framework
for sensor networks, in Proc. of the ACM international Workshop on Modeling,
Analysis and Simulation of Wireless and Mobile Systems, 2000.
[14] Xiang Zeng, Rajive Bagrodia, and Mario Gerla, GloMoSim: a library for
parallel simulation of large-scale wireless networks, in PADS 98: Proceedings
of the twelfth workshop on Parallel and distributed simulation, Washington, DC,
USA, 1998, pp. 154161, IEEE Computer Society.
[15] R. Bagrodia, R. Meyer, M. Takai, Y. Chen, X. Zeng, J. Martin, B. Park, and
H. Song, Parsec: A parallel simulation environment for complex systems,
IEEE Computer, vol. 31, no. 10, pp. 7785, October 1998.
[16] Ahmed Sobeih, Wei P. Chen, Jennifer C. Hou, Lu C. Kung, Ning Li, Hyuk
Lim, Hung Y. Tyan, and Honghai Zhang, J-Sim: A simulation environment
for wireless sensor networks, in Annual Simulation Symposium, 2005, pp.
175187.
[17] Jean-Baptiste Filippi and Paul Bisgambiglia, JDEVS: an implementation of a
DEVS based formal framework for environmental modelling, Environmental
Modelling and Software, vol. 19, no. 3, pp. 261274, 2004.
[18] Costas Simatos, Making simJava count, M.Sc. Project Report, University of
Edinburgh, School of Informatics, September 2002.
[19] Philip Baldwin, Sanjeev Kohli, Edward A. Lee, Xiaojun Liu, and Yang Zhao,
Visualsense: Visual modeling for wireless and sensor network systems, Tech.
Rep. 25, EECS Dept., UC Berkeley, July 2005.
[20] Xiaojun Liu, Yuhong Xiong, and Edward A. Lee, The Ptolemy II framework
for visual languages, in HCC 01: Proceedings of the IEEE 2001 Symposia on
Human Centric Computing Languages and Environments (HCC01), Washington, DC, USA, 2001, p. 50, IEEE Computer Society.
[21] Judy Rathmell and David T. Sturrock, Arena: the arena product family: enterprise modeling solutions, in WSC 02: Proceedings of the 34th conference
on Winter simulation. 2002, pp. 165172, Winter Simulation Conference.
[22] Xinjie Chang, Network simulations with OPNET, in WSC 99: Proceedings
of the 31st conference on Winter simulation, New York, NY, USA, 1999, pp.
307314, ACM Press.
Projects that use OMNeT++,
[23] Andras Varga,
http://www.omnetpp.org/index.php?topic=Projects.
October 2006,
71
for
OMNet++,
2006,
http://mobility-
[26] Stefan Dulman, Omer Sinan Kaya, and Georgi Koprinkov, EYES WSN Simulation Framework, September 2005, http://wwwes.cs.utwente.nl/ewsnsim/.
[27] Andras Varga, OMNeT++ User Manual, 2006.
[28] H.P. Bloch and C. Soares, Process Plant Machinery, Butterworth-Heinemann,
1998.
[29] K. M. Chandy and J. Misra, Parallel Program Design: A Foundation, Addison
Wesley, 1988.
[30] L. Bass, P. Clements, and R. Kazman,
Addison-Wesley, 1998.
[31] Jason Hill, Mike Horton, Ralph Kling, and Lakshman Krishnamurthy, The
platforms enabling wireless sensor networks, Commun. ACM, vol. 47, no. 6,
pp. 4146, 2004.
72