====== Automatic Train Stop system - version 1 ====== Automatic Train Stop system (ATS system) is a kind of an Automatic Train Protection system used to guarantee a train safety even if the driver is not capable of controlling the train. ATS system turns on a light signal every 60 seconds to check whether the driver controls the train. If the driver fails to acknowledge the signal within 6 seconds, a sound signal is turned on. Then, if the driver does not disactivate the signals within 3 seconds, using the acknowledge button, the emergency brakes are applied automatically to stop the train. ===== Files ===== * {{:alvis:cases:ats1.alvis|Alvis model}} * {{:alvis:cases:ats1e.dot|LTS graph}} ===== Model ===== {{:alvis:cases:ats1.png|}} environment { in wakeup [] (map (60000*) [0..]) durable; in off [] (map (1000*) [1..]) signal; out warning [0,1,2] []; out brake [] []; } agent ATS { loop { in wakeup; out warning 1; select { alt (ready [in(off)]) { in off; out warning 0; } alt(delay 6000) { out warning 2; select { alt (ready [in(off)]) { in off; out warning 0; } alt (delay 3000) { out brake; exit; } } } } } } ====== Automatic Train Stop System - version 2 ====== ===== Files ===== * {{:alvis:cases:ats2.alvis|Alvis model}} * {{:alvis:cases:ats2e.dot|LTS graph}} ===== Model ===== {{:alvis:cases:ats2.png|}} environment { in off [] (map (1000*) [1..]) signal; out brake [] []; } agent ATS { loop { in wakeup; out warning 1; select { alt (ready [in(off)]) { in off; out warning 0; } alt(delay 6000) { out warning 2; select { alt (ready [in(off)]) { in off; out warning 0; } alt (delay 3000) { out brake; exit; } } } } } } agent Timer { loop (every 6000) { out tick; } } agent Console { state ::Int = 0; proc setState { in setState state ; } }