<?xml version="1.0" encoding="utf-8"?><!DOCTYPE nta PUBLIC '-//Uppaal Team//DTD Flat System 1.1//EN' 'http://www.it.uu.se/research/group/darts/uppaal/flat-1_1.dtd'><nta><declaration>const int ctime = 75;


int[0,1] active;
clock x, time;

chan   eject, ok;
urgent chan blck, red, remove, go;</declaration><template><name x="32" y="16">TaskMAIN</name><location id="id0" x="128" y="96"><name x="118" y="66">S0</name></location><init ref="id0"/><transition><source ref="id0"/><target ref="id0"/><label kind="synchronisation" x="32" y="88">red?</label><nail x="80" y="80"/><nail x="80" y="112"/></transition><transition><source ref="id0"/><target ref="id0"/><label kind="synchronisation" x="192" y="72">blck?</label><label kind="assignment" x="192" y="96">x=0, 
active=true</label><nail x="176" y="80"/><nail x="176" y="112"/></transition></template><template><name x="32" y="16">TaskPUSH</name><location id="id1" x="248" y="96"><name x="240" y="112">passive</name></location><location id="id2" x="72" y="104"><name x="40" y="120">wait</name><label kind="invariant" x="40" y="136">x&lt;=ctime</label></location><init ref="id1"/><transition><source ref="id2"/><target ref="id1"/><label kind="guard" x="56" y="44">x==ctime</label><label kind="synchronisation" x="136" y="44">eject!</label><label kind="assignment" x="200" y="44">active=false</label><nail x="96" y="68"/><nail x="224" y="68"/></transition><transition><source ref="id1"/><target ref="id2"/><label kind="guard" x="104" y="140">active==true</label><label kind="synchronisation" x="208" y="140">go?</label><nail x="224" y="132"/><nail x="96" y="132"/></transition></template><template><name x="32" y="16">Piston</name><declaration>clock y;</declaration><location id="id3" x="96" y="208"><name x="104" y="216">s2</name><label kind="invariant" x="104" y="232">y&lt;=1</label></location><location id="id4" x="96" y="64"><name x="104" y="72">s1</name></location><init ref="id4"/><transition><source ref="id4"/><target ref="id3"/><label kind="synchronisation" x="104" y="108">eject?</label><label kind="assignment" x="104" y="168">y=0</label></transition><transition><source ref="id3"/><target ref="id4"/><label kind="guard" x="152" y="216">y==1</label><nail x="160" y="208"/><nail x="160" y="64"/></transition><transition><source ref="id3"/><target ref="id4"/><label kind="synchronisation" x="16" y="216">remove!</label><nail x="32" y="208"/><nail x="32" y="64"/></transition></template><template><name x="32" y="16">Dumb</name><location id="id5" x="64" y="64"><name x="32" y="56">S0</name></location><init ref="id5"/><transition><source ref="id5"/><target ref="id5"/><label kind="synchronisation" x="120" y="56">go!</label><nail x="112" y="48"/><nail x="112" y="80"/></transition></template><template><name x="32" y="16">BlackBox</name><declaration>clock pos;</declaration><location id="id6" x="304" y="80"><name x="312" y="88">on2</name><label kind="invariant" x="312" y="104">pos&lt;=81</label></location><location id="id7" x="560" y="80"><name x="568" y="88">end</name></location><location id="id8" x="48" y="80"><name x="56" y="88">on1</name><label kind="invariant" x="56" y="104">pos&lt;=9</label></location><location id="id9" x="176" y="80"><name x="184" y="88">sensor</name><label kind="invariant" x="184" y="104">pos&lt;=18</label></location><location id="id10" x="432" y="208"><name x="440" y="216">off</name></location><location id="id11" x="432" y="80"><name x="440" y="88">piston</name><label kind="invariant" x="440" y="104">pos&lt;=90</label></location><location id="id12" x="48" y="208"><name x="56" y="216">start</name></location><init ref="id12"/><transition><source ref="id9"/><target ref="id6"/><label kind="guard" x="216" y="56">pos==18</label></transition><transition><source ref="id6"/><target ref="id11"/><label kind="guard" x="344" y="56">pos==81</label></transition><transition><source ref="id11"/><target ref="id10"/><label kind="synchronisation" x="440" y="144">remove?</label></transition><transition><source ref="id11"/><target ref="id7"/><label kind="guard" x="448" y="56">pos==90</label></transition><transition><source ref="id12"/><target ref="id8"/><label kind="synchronisation" x="24" y="128">ok?</label><label kind="assignment" x="56" y="168">pos=0</label></transition><transition><source ref="id8"/><target ref="id9"/><label kind="guard" x="96" y="56">pos==9</label></transition><transition><source ref="id9"/><target ref="id6"/><label kind="synchronisation" x="232" y="136">blck!</label><nail x="176" y="128"/><nail x="304" y="128"/></transition></template><template><name x="32" y="16">RedBox</name><declaration>clock pos;</declaration><location id="id13" x="304" y="112"><name x="312" y="120">on2</name><label kind="invariant" x="312" y="136">pos&lt;=81</label></location><location id="id14" x="560" y="112"><name x="568" y="120">end</name></location><location id="id15" x="48" y="112"><name x="56" y="120">on1</name><label kind="invariant" x="56" y="136">pos&lt;=9</label></location><location id="id16" x="176" y="112"><name x="160" y="120">sensor</name><label kind="invariant" x="152" y="136">pos&lt;=18</label></location><location id="id17" x="432" y="240"><name x="440" y="248">off</name></location><location id="id18" x="432" y="112"><name x="440" y="120">piston</name><label kind="invariant" x="440" y="136">pos&lt;=90</label></location><location id="id19" x="48" y="240"><name x="56" y="248">start</name></location><init ref="id19"/><transition><source ref="id16"/><target ref="id13"/><label kind="guard" x="200" y="88">pos==18</label></transition><transition><source ref="id13"/><target ref="id18"/><label kind="guard" x="344" y="88">pos==81</label></transition><transition><source ref="id18"/><target ref="id17"/><label kind="synchronisation" x="440" y="176">remove?</label></transition><transition><source ref="id18"/><target ref="id14"/><label kind="guard" x="448" y="88">pos==90</label></transition><transition><source ref="id19"/><target ref="id15"/><label kind="synchronisation" x="24" y="168">ok?</label><label kind="assignment" x="56" y="200">pos=0</label></transition><transition><source ref="id15"/><target ref="id16"/><label kind="guard" x="96" y="88">pos==9</label></transition><transition><source ref="id16"/><target ref="id13"/><label kind="synchronisation" x="232" y="48">red!</label><nail x="176" y="72"/><nail x="304" y="72"/></transition></template><template><name x="5" y="5">Guard</name><declaration>clock z;</declaration><location id="id20" x="128" y="96"><name x="118" y="66">S0</name></location><init ref="id20"/><transition><source ref="id20"/><target ref="id20"/><label kind="guard" x="80" y="104">z&gt;=10</label><label kind="synchronisation" x="120" y="160">ok!</label><label kind="assignment" x="152" y="104">z=0</label><nail x="96" y="160"/><nail x="160" y="160"/></transition></template><system>B1=BlackBox();
B2=BlackBox();
R1=RedBox();
R2=RedBox();
system 
     TaskMAIN, TaskPUSH, 
     Piston,
     B1, B2, 
     R1, R2,  Dumb, Guard;</system></nta>